@@ -143,6 +143,7 @@ private static void registerLtrynekCommand(
143143 ));
144144
145145 ctx .getSource ().sendFeedback (ColorUtils .translateColorCodes (msg ));
146+ syncMemoryToConfig ();
146147 return 1 ;
147148 })
148149 )
@@ -162,6 +163,7 @@ private static void registerLtrynekCommand(
162163 "profile" , activeProfile
163164 ));
164165 ctx .getSource ().sendFeedback (ColorUtils .translateColorCodes (msg ));
166+ syncMemoryToConfig ();
165167 return 1 ;
166168 })
167169 )
@@ -260,6 +262,7 @@ private static void registerLtrynekCommand(
260262 LtrynekClient .serversConfig .soundsEnabled = true ;
261263 String msg = Messages .get ("command.sounds.enabled" );
262264 ctx .getSource ().sendFeedback (ColorUtils .translateColorCodes (msg ));
265+ saveAllConfigs (LtrynekClient .serversConfig );
263266 return 1 ;
264267 })
265268 )
@@ -268,6 +271,7 @@ private static void registerLtrynekCommand(
268271 LtrynekClient .serversConfig .soundsEnabled = false ;
269272 String msg = Messages .get ("command.sounds.disabled" );
270273 ctx .getSource ().sendFeedback (ColorUtils .translateColorCodes (msg ));
274+ saveAllConfigs (LtrynekClient .serversConfig );
271275 return 1 ;
272276 })
273277 )
@@ -393,28 +397,29 @@ private static void registerLtrynekCommand(
393397 }
394398
395399 private static void syncMemoryToConfig () {
400+ if (LtrynekClient .serversConfig == null || LtrynekClient .serversConfig .servers == null ) {
401+ return ;
402+ }
396403 Map <String , List <PriceEntry >> allProfiles = ClientPriceListManager .getAllProfiles ();
397- for (Map .Entry <String , List <PriceEntry >> profEntry : allProfiles .entrySet ()) {
398- String profileName = profEntry .getKey ();
399- List <PriceEntry > priceEntries = profEntry .getValue ();
400- ServerEntry se = findServerEntryByProfile (profileName );
401- if (se == null ) continue ;
402- for (PriceEntry storedPe : priceEntries ) {
403- boolean exists = se .prices .stream ().anyMatch (pe -> pe .name .equals (storedPe .name ));
404- if (!exists ) {
405- PriceEntry pe = new PriceEntry ();
406- pe .name = storedPe .name ;
407- pe .maxPrice = storedPe .maxPrice ;
408- pe .lore = storedPe .lore ;
409- pe .material = storedPe .material ;
410- pe .enchants = storedPe .enchants ;
411- se .prices .add (pe );
412- }
404+
405+ for (ServerEntry se : LtrynekClient .serversConfig .servers ) {
406+ List <PriceEntry > memList = allProfiles .getOrDefault (se .profileName , List .of ());
407+ se .prices .clear ();
408+ for (PriceEntry src : memList ) {
409+ PriceEntry pe = new PriceEntry ();
410+ pe .name = src .name ;
411+ pe .maxPrice = src .maxPrice ;
412+ pe .lore = src .lore ;
413+ pe .material = src .material ;
414+ pe .enchants = src .enchants ;
415+ se .prices .add (pe );
413416 }
414417 }
418+
415419 saveAllConfigs (LtrynekClient .serversConfig );
416420 }
417421
422+
418423 private static void reinitProfilesFromConfig () {
419424 for (ServerEntry entry : LtrynekClient .serversConfig .servers ) {
420425 ClientPriceListManager .setActiveProfile (entry .profileName );
0 commit comments