]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/commitdiff
Make clearing providers easier
authorIrtimaled <irtimaled@gmail.com>
Mon, 14 Sep 2020 06:44:49 +0000 (23:44 -0700)
committerIrtimaled <irtimaled@gmail.com>
Mon, 14 Sep 2020 07:00:21 +0000 (00:00 -0700)
14 files changed:
src/main/java/com/irtimaled/bbor/client/ClientProxy.java
src/main/java/com/irtimaled/bbor/client/ClientRenderer.java
src/main/java/com/irtimaled/bbor/client/commands/SpawningSphereCommand.java
src/main/java/com/irtimaled/bbor/client/providers/BiomeBorderProvider.java
src/main/java/com/irtimaled/bbor/client/providers/CustomBeaconProvider.java
src/main/java/com/irtimaled/bbor/client/providers/CustomBoxProvider.java
src/main/java/com/irtimaled/bbor/client/providers/CustomLineProvider.java
src/main/java/com/irtimaled/bbor/client/providers/CustomSphereProvider.java
src/main/java/com/irtimaled/bbor/client/providers/FlowerForestProvider.java
src/main/java/com/irtimaled/bbor/client/providers/ICachingProvider.java [new file with mode: 0644]
src/main/java/com/irtimaled/bbor/client/providers/SlimeChunkProvider.java
src/main/java/com/irtimaled/bbor/client/providers/SpawnableBlocksProvider.java
src/main/java/com/irtimaled/bbor/client/providers/SpawningSphereProvider.java
src/main/java/com/irtimaled/bbor/client/providers/WorldSpawnProvider.java

index efee94a2b8f889e6f916bdcb95e72b4626500808..72a0a819f18cbbe55cfcf497bea1467e2e2fcebe 100644 (file)
@@ -49,12 +49,7 @@ public class ClientProxy extends CommonProxy {
     }
 
     private void clear() {
-        SlimeChunkProvider.clear();
-        WorldSpawnProvider.clear();
-        SpawningSphereProvider.clear();
-        CustomBeaconProvider.clear();
-        CustomBoxProvider.clear();
-        BiomeBorderProvider.clear();
+        ClientRenderer.clear();
         clearCaches();
     }
 
index fab8e3bbbd3710fc27d60880db800f4df8bc35b5..e4bf5b5bea5488473e23f83b84916179d9ce6fc0 100644 (file)
@@ -5,6 +5,7 @@ import com.irtimaled.bbor.client.models.*;
 import com.irtimaled.bbor.client.providers.*;
 import com.irtimaled.bbor.client.renderers.*;
 import com.irtimaled.bbor.common.MathHelper;
+import com.irtimaled.bbor.common.TypeHelper;
 import com.irtimaled.bbor.common.models.AbstractBoundingBox;
 import com.irtimaled.bbor.common.models.BoundingBoxCuboid;
 import com.irtimaled.bbor.common.models.DimensionId;
@@ -112,4 +113,9 @@ public class ClientRenderer {
                         .comparingDouble((AbstractBoundingBox boundingBox) -> boundingBox.getDistance(point.getX(), point.getY(), point.getZ())).reversed());
     }
 
+    public static void clear() {
+        for(IBoundingBoxProvider<?> provider : providers) {
+            TypeHelper.doIfType(provider, ICachingProvider.class, ICachingProvider::clearCache);
+        }
+    }
 }
index ac823beed2331294659250fd5edc8264e4a522f0..8ab9f1b1e0700301916ec2a06dd47c95bc8e6dc6 100644 (file)
@@ -25,7 +25,7 @@ public class SpawningSphereCommand {
                         .executes(SpawningSphereCommand::setSphere))
                 .then(Commands.literal(ArgumentNames.CLEAR)
                         .executes(context -> {
-                            boolean cleared = SpawningSphereProvider.clear();
+                            boolean cleared = SpawningSphereProvider.clearSphere();
 
                             String format = cleared ? "bbor.commands.spawningSphere.cleared" : "bbor.commands.spawningSphere.notSet";
                             CommandHelper.feedback(context, format);
index 7776c774b893cc635fc3d0413b72a222e705a5fa..8447a4de96cff7109bd34ffd2df5747707f7837a 100644 (file)
@@ -13,7 +13,7 @@ import com.irtimaled.bbor.common.models.DimensionId;
 import java.util.HashMap;
 import java.util.Map;
 
-public class BiomeBorderProvider implements IBoundingBoxProvider<BoundingBoxBiomeBorder> {
+public class BiomeBorderProvider implements IBoundingBoxProvider<BoundingBoxBiomeBorder>, ICachingProvider {
     private static Coords lastPlayerCoords = null;
     private static Boolean lastRenderAllTransitions = null;
     private static Integer lastRenderDistance = null;
@@ -44,7 +44,7 @@ public class BiomeBorderProvider implements IBoundingBoxProvider<BoundingBoxBiom
         return lastBorders.values();
     }
 
-    public static void clear() {
+    public void clearCache() {
         lastBorders = new HashMap<>();
         lastPlayerCoords = null;
     }
index 15a3728d529b08389a9ae3dc55e325cf721d12b0..daf945efa8eb103627ae38c87ed71f0d4d1c45d6 100644 (file)
@@ -10,7 +10,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-public class CustomBeaconProvider implements IBoundingBoxProvider<BoundingBoxBeacon> {
+public class CustomBeaconProvider implements IBoundingBoxProvider<BoundingBoxBeacon>, ICachingProvider {
     private static final Map<DimensionId, Map<Coords, BoundingBoxBeacon>> dimensionsCache = new HashMap<>();
 
     private static Map<Coords, BoundingBoxBeacon> getCache(DimensionId dimensionId) {
@@ -32,6 +32,10 @@ public class CustomBeaconProvider implements IBoundingBoxProvider<BoundingBoxBea
         dimensionsCache.values().forEach(Map::clear);
     }
 
+    public void clearCache() {
+        clear();
+    }
+
     @Override
     public Iterable<BoundingBoxBeacon> get(DimensionId dimensionId) {
         return getCache(dimensionId).values();
index 31c92a18561ab2ce4ca41537f139f149ea0fe9d4..9fb9e098d419a659d2d704910f24340f2cb11a2e 100644 (file)
@@ -10,7 +10,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-public class CustomBoxProvider implements IBoundingBoxProvider<BoundingBoxCuboid> {
+public class CustomBoxProvider implements IBoundingBoxProvider<BoundingBoxCuboid>, ICachingProvider {
     private static final Map<DimensionId, Map<Integer, BoundingBoxCuboid>> dimensionCache = new HashMap<>();
 
     private static int getHashKey(Coords minCoords, Coords maxCoords) {
@@ -38,6 +38,10 @@ public class CustomBoxProvider implements IBoundingBoxProvider<BoundingBoxCuboid
         dimensionCache.values().forEach(Map::clear);
     }
 
+    public void clearCache() {
+        clear();
+    }
+
     @Override
     public Iterable<BoundingBoxCuboid> get(DimensionId dimensionId) {
         return getCache(dimensionId).values();
index 5bcbdc30d2892eee6fad06640759693b6343c0ef..4256b97be48fa0f9763fb13cf395703954a67f4a 100644 (file)
@@ -10,7 +10,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-public class CustomLineProvider implements IBoundingBoxProvider<BoundingBoxLine> {
+public class CustomLineProvider implements IBoundingBoxProvider<BoundingBoxLine>, ICachingProvider {
     private static final Map<DimensionId, Map<Integer, BoundingBoxLine>> dimensionCache = new HashMap<>();
 
     private static int getHashKey(Point minPoint, Point maxPoint) {
@@ -38,6 +38,10 @@ public class CustomLineProvider implements IBoundingBoxProvider<BoundingBoxLine>
         dimensionCache.values().forEach(Map::clear);
     }
 
+    public void clearCache() {
+        clear();
+    }
+
     @Override
     public Iterable<BoundingBoxLine> get(DimensionId dimensionId) {
         return getCache(dimensionId).values();
index 08b944f69aeae67f1a2fb576cf03c2f6e6e81a9b..c1406e83223242bf39dc4449b1c905e27af274c1 100644 (file)
@@ -10,7 +10,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-public class CustomSphereProvider implements IBoundingBoxProvider<BoundingBoxSphere> {
+public class CustomSphereProvider implements IBoundingBoxProvider<BoundingBoxSphere>, ICachingProvider {
     private static final Map<DimensionId, Map<Integer, BoundingBoxSphere>> dimensionCache = new HashMap<>();
 
     private static Map<Integer, BoundingBoxSphere> getCache(DimensionId dimensionId) {
@@ -34,6 +34,10 @@ public class CustomSphereProvider implements IBoundingBoxProvider<BoundingBoxSph
         dimensionCache.values().forEach(Map::clear);
     }
 
+    public void clearCache() {
+        clear();
+    }
+
     @Override
     public Iterable<BoundingBoxSphere> get(DimensionId dimensionId) {
         return getCache(dimensionId).values();
index cd6b46aae2d3e9e4a70c377b15759c822a49d679..3bc7bdc0434be8c12c8447855dbb468aa9f3f142 100644 (file)
@@ -16,7 +16,7 @@ import net.minecraft.world.biome.Biomes;
 import java.util.HashMap;
 import java.util.Map;
 
-public class FlowerForestProvider implements IBoundingBoxProvider<BoundingBoxFlowerForest> {
+public class FlowerForestProvider implements IBoundingBoxProvider<BoundingBoxFlowerForest>, ICachingProvider {
     public static final int FLOWER_FOREST_BIOME_ID = Registry.BIOME.getId(Biomes.FLOWER_FOREST);
     private static Coords lastPlayerCoords = null;
     private static Integer lastRenderDistance = null;
@@ -39,7 +39,7 @@ public class FlowerForestProvider implements IBoundingBoxProvider<BoundingBoxFlo
         return lastBoundingBoxes.values();
     }
 
-    public static void clear() {
+    public void clearCache() {
         lastBoundingBoxes = new HashMap<>();
         lastPlayerCoords = null;
     }
diff --git a/src/main/java/com/irtimaled/bbor/client/providers/ICachingProvider.java b/src/main/java/com/irtimaled/bbor/client/providers/ICachingProvider.java
new file mode 100644 (file)
index 0000000..a48d941
--- /dev/null
@@ -0,0 +1,5 @@
+package com.irtimaled.bbor.client.providers;
+
+public interface ICachingProvider {
+    void clearCache();
+}
index 022671f0c4d7d03a69621a69c748a587b6aa8422..a8d0302e0692adaa36afbb56cb6b9dbb7a3360f3 100644 (file)
@@ -13,7 +13,7 @@ import net.minecraft.util.SharedSeedRandom;
 import java.util.HashSet;
 import java.util.Set;
 
-public class SlimeChunkProvider implements IBoundingBoxProvider<BoundingBoxSlimeChunk> {
+public class SlimeChunkProvider implements IBoundingBoxProvider<BoundingBoxSlimeChunk>, ICachingProvider {
     private static final double CHUNK_SIZE = 16d;
 
     private static Long seed;
@@ -26,7 +26,7 @@ public class SlimeChunkProvider implements IBoundingBoxProvider<BoundingBoxSlime
         return SharedSeedRandom.seedSlimeChunk(chunkX, chunkZ,seed, 987234911L).nextInt(10) == 0;
     }
 
-    public static void clear() {
+    public void clearCache() {
         seed = null;
     }
 
index 13a2fa5ed1fa40555f6b3318d877ca57250e5314..462bf6ef29b96d40a000809ce6290aaba4113ea3 100644 (file)
@@ -13,13 +13,14 @@ import net.minecraft.client.Minecraft;
 import java.util.HashSet;
 import java.util.Set;
 
-public class SpawnableBlocksProvider implements IBoundingBoxProvider<BoundingBoxSpawnableBlocks> {
+public class SpawnableBlocksProvider implements IBoundingBoxProvider<BoundingBoxSpawnableBlocks>, ICachingProvider {
     public static final Minecraft minecraft = Minecraft.getInstance();
     private static Long lastGameTime = null;
 
     private static Set<BoundingBoxSpawnableBlocks> lastBoundingBox = null;
 
-    public static void clear() {
+    public void clearCache() {
+        lastGameTime = null;
         lastBoundingBox = null;
     }
 
index 2ef1cca6721780e7eded64c9fae0ef6051100420..d9782fa5a4c61ed9856c1693d09b6732a4e580fe 100644 (file)
@@ -15,7 +15,7 @@ import net.minecraft.client.Minecraft;
 import java.util.HashSet;
 import java.util.Set;
 
-public class SpawningSphereProvider implements IBoundingBoxProvider<BoundingBoxSpawningSphere> {
+public class SpawningSphereProvider implements IBoundingBoxProvider<BoundingBoxSpawningSphere>, ICachingProvider {
     public static final Minecraft minecraft = Minecraft.getInstance();
     private static Long lastGameTime = null;
 
@@ -25,14 +25,13 @@ public class SpawningSphereProvider implements IBoundingBoxProvider<BoundingBoxS
 
     public static void setSphere(Point point) {
         if (spawningSphere != null && spawningSphere.getPoint().equals(point)) return;
-        clear();
 
         dimensionId = Player.getDimensionId();
         spawningSphere = new BoundingBoxSpawningSphere(point);
         lastBoundingBox = null;
     }
 
-    public static boolean clear() {
+    public static boolean clearSphere() {
         if (spawningSphere != null) {
             lastBoundingBox = null;
             spawningSphere = null;
@@ -42,6 +41,10 @@ public class SpawningSphereProvider implements IBoundingBoxProvider<BoundingBoxS
         return false;
     }
 
+    public void clearCache() {
+        clearSphere();
+    }
+
     public static void calculateSpawnableSpacesCount(BlockProcessor blockProcessor) {
         if (spawningSphere != null) {
             Point sphereCenter = spawningSphere.getPoint();
index bdccbf5b96466d2620b1a7ac81743721b1b93e82..55e89681e0155f250ef9f6be5e6913f9f3739b9e 100644 (file)
@@ -9,7 +9,7 @@ import com.irtimaled.bbor.common.models.DimensionId;
 import java.util.HashSet;
 import java.util.Set;
 
-public class WorldSpawnProvider implements IBoundingBoxProvider<BoundingBoxWorldSpawn> {
+public class WorldSpawnProvider implements IBoundingBoxProvider<BoundingBoxWorldSpawn>, ICachingProvider {
     private static final double CHUNK_SIZE = 16d;
     private static BoundingBoxWorldSpawn spawnChunks;
     private static BoundingBoxWorldSpawn lazyChunks;
@@ -21,7 +21,7 @@ public class WorldSpawnProvider implements IBoundingBoxProvider<BoundingBoxWorld
         lazyChunks = buildSpawnChunksBoundingBox(spawnX, spawnZ, 16, BoundingBoxType.LazySpawnChunks);
     }
 
-    public static void clear() {
+    public void clearCache() {
         worldSpawn = null;
         spawnChunks = null;
         lazyChunks = null;