@@ -144,6 +144,7 @@ private static void registerLtrynekCommand(
144144 ));
145145
146146 ctx .getSource ().sendFeedback (ColorUtils .translateColorCodes (msg ));
147+ syncMemoryToConfig ();
147148 return 1 ;
148149 })
149150 )
@@ -164,6 +165,7 @@ private static void registerLtrynekCommand(
164165 "profile" , activeProfile
165166 ));
166167 ctx .getSource ().sendFeedback (ColorUtils .translateColorCodes (msg ));
168+ syncMemoryToConfig ();
167169 return 1 ;
168170 })
169171 )
@@ -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 )
@@ -392,27 +396,29 @@ private static void registerLtrynekCommand(
392396 }
393397
394398 private static void syncMemoryToConfig () {
399+ if (LtrynekClient .serversConfig == null || LtrynekClient .serversConfig .servers == null ) {
400+ return ;
401+ }
395402 Map <String , List <PriceEntry >> allProfiles = ClientPriceListManager .getAllProfiles ();
396- for (Map .Entry <String , List <PriceEntry >> profEntry : allProfiles .entrySet ()) {
397- String profileName = profEntry .getKey ();
398- List <PriceEntry > priceEntries = profEntry .getValue ();
399- ServerEntry se = findServerEntryByProfile (profileName );
400- if (se == null ) continue ;
401- for (PriceEntry storedPe : priceEntries ) {
402- boolean exists = se .prices .stream ().anyMatch (pe -> pe .name .equals (storedPe .name ));
403- if (!exists ) {
404- PriceEntry pe = new PriceEntry ();
405- pe .name = storedPe .name ;
406- pe .maxPrice = storedPe .maxPrice ;
407- pe .lore = storedPe .lore ;
408- pe .material = storedPe .material ;
409- pe .enchants = storedPe .enchants ;
410- se .prices .add (pe );
411- }
403+
404+ for (ServerEntry se : LtrynekClient .serversConfig .servers ) {
405+ List <PriceEntry > memList = allProfiles .getOrDefault (se .profileName , List .of ());
406+ se .prices .clear ();
407+ for (PriceEntry src : memList ) {
408+ PriceEntry pe = new PriceEntry ();
409+ pe .name = src .name ;
410+ pe .maxPrice = src .maxPrice ;
411+ pe .lore = src .lore ;
412+ pe .material = src .material ;
413+ pe .enchants = src .enchants ;
414+ se .prices .add (pe );
412415 }
413416 }
417+
418+ saveAllConfigs (LtrynekClient .serversConfig );
414419 }
415420
421+
416422 private static void reinitProfilesFromConfig () {
417423 for (ServerEntry entry : LtrynekClient .serversConfig .servers ) {
418424 ClientPriceListManager .setActiveProfile (entry .profileName );
0 commit comments