]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/commitdiff
Fix village colors changing on reload local game 1.0.1
authorirtimaled <irtimaled@gmail.com>
Sat, 30 Dec 2017 05:04:13 +0000 (21:04 -0800)
committerirtimaled <irtimaled@gmail.com>
Sat, 30 Dec 2017 05:06:39 +0000 (21:06 -0800)
java/com/irtimaled/bbor/client/ClientProxy.java
java/com/irtimaled/bbor/common/VillageColorCache.java
java/com/irtimaled/bbor/common/VillageProcessor.java

index 430a36d80aba19f5d8a53745c7e566df8cbe5001..f4d9f90df8a673ea4f929751d9b69727a3586d51 100644 (file)
@@ -62,9 +62,11 @@ public class ClientProxy extends CommonProxy {
 
     public void playerDisconnectedFromServer() {
         active = false;
+        villageProcessors.forEach(VillageProcessor::close);
+        villageProcessors.clear();
+
         if (ConfigManager.keepCacheBetweenSessions.getBoolean()) return;
         VillageColorCache.clear();
         dimensionCache.clear();
-        villageProcessors.forEach(VillageProcessor::clear);
     }
 }
index 464773ba42f4094ac0f5b225eb8e6160611dc4f5..d5071a7322485b01b3455d3b357fc5b31c27165f 100644 (file)
@@ -13,8 +13,7 @@ public class VillageColorCache {
     }
 
     private static Color getNextColor() {
-        ++colorIndex;
-        switch (colorIndex % 6) {
+        switch (++colorIndex % 6) {
             case 0:
                 return Color.RED;
             case 1:
index 5dd010994728d34df30a14748cf7c84e6e0a1440..0b6d34c57ddc7454699ab9f1c066519cb82625d6 100644 (file)
@@ -11,11 +11,12 @@ import java.util.List;
 import java.util.Map;
 
 public class VillageProcessor {
-    private final World world;
-    private final DimensionType dimensionType;
-    private final IVillageEventHandler eventHandler;
+    private World world;
+    private DimensionType dimensionType;
+    private IVillageEventHandler eventHandler;
     private BoundingBoxCache boundingBoxCache;
     private Map<Integer, BoundingBoxVillage> villageCache = new HashMap<>();
+    private boolean closed = false;
 
     VillageProcessor(World world, DimensionType dimensionType, IVillageEventHandler eventHandler, BoundingBoxCache boundingBoxCache) {
         this.world = world;
@@ -25,6 +26,8 @@ public class VillageProcessor {
     }
 
     synchronized void process() {
+        if (closed) return;
+
         Map<Integer, BoundingBoxVillage> oldVillages = new HashMap<>(villageCache);
         Map<Integer, BoundingBoxVillage> newVillages = new HashMap<>();
         VillageCollection villageCollection = world.getVillageCollection();
@@ -54,7 +57,11 @@ public class VillageProcessor {
         villageCache = newVillages;
     }
 
-    public void clear() {
+    public void close() {
+        closed = true;
+        world = null;
+        eventHandler = null;
+        boundingBoxCache = null;
         villageCache.clear();
     }
 }