]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blobdiff - src/main/java/com/irtimaled/bbor/client/providers/WorldSpawnProvider.java
Don't provide client side boxes if they are off
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / client / providers / WorldSpawnProvider.java
index 560423e8b42587c1c353f684e71c86fb9fc4d6b9..3586ba5caf4d28ee1a8779a89831e2d41b72f01c 100644 (file)
@@ -1,5 +1,6 @@
 package com.irtimaled.bbor.client.providers;
 
+import com.irtimaled.bbor.client.config.BoundingBoxTypeHelper;
 import com.irtimaled.bbor.client.models.BoundingBoxWorldSpawn;
 import com.irtimaled.bbor.common.BoundingBoxType;
 import com.irtimaled.bbor.common.Dimensions;
@@ -10,22 +11,20 @@ import java.util.Set;
 
 public class WorldSpawnProvider implements IBoundingBoxProvider<BoundingBoxWorldSpawn> {
     private static final double CHUNK_SIZE = 16d;
-    private static Set<BoundingBoxWorldSpawn> spawnChunks = new HashSet<>();
+    private static BoundingBoxWorldSpawn spawnChunks;
+    private static BoundingBoxWorldSpawn lazyChunks;
+    private static BoundingBoxWorldSpawn worldSpawn;
 
     public static void setWorldSpawn(int spawnX, int spawnZ) {
-        spawnChunks = getSpawnChunkBoundingBoxes(spawnX, spawnZ);
+        worldSpawn = getWorldSpawnBoundingBox(spawnX, spawnZ);
+        spawnChunks = buildSpawnChunksBoundingBox(spawnX, spawnZ, 12, BoundingBoxType.SpawnChunks);
+        lazyChunks = buildSpawnChunksBoundingBox(spawnX, spawnZ, 16, BoundingBoxType.LazySpawnChunks);
     }
 
     public static void clear() {
-        spawnChunks = new HashSet<>();
-    }
-
-    private static Set<BoundingBoxWorldSpawn> getSpawnChunkBoundingBoxes(int spawnX, int spawnZ) {
-        Set<BoundingBoxWorldSpawn> boundingBoxes = new HashSet<>();
-        boundingBoxes.add(getWorldSpawnBoundingBox(spawnX, spawnZ));
-        boundingBoxes.add(buildSpawnChunksBoundingBox(spawnX, spawnZ, 12, BoundingBoxType.SpawnChunks));
-        boundingBoxes.add(buildSpawnChunksBoundingBox(spawnX, spawnZ, 16, BoundingBoxType.LazySpawnChunks));
-        return boundingBoxes;
+        worldSpawn = null;
+        spawnChunks = null;
+        lazyChunks = null;
     }
 
     private static BoundingBoxWorldSpawn getWorldSpawnBoundingBox(int spawnX, int spawnZ) {
@@ -50,7 +49,21 @@ public class WorldSpawnProvider implements IBoundingBoxProvider<BoundingBoxWorld
         return BoundingBoxWorldSpawn.from(minCoords, maxCoords, type);
     }
 
+    @Override
+    public boolean canProvide(int dimensionId) {
+        return dimensionId == Dimensions.OVERWORLD;
+    }
+
+    @Override
     public Iterable<BoundingBoxWorldSpawn> get(int dimensionId) {
-        return dimensionId == Dimensions.OVERWORLD ? spawnChunks : Iterators.empty();
+        Set<BoundingBoxWorldSpawn> boundingBoxes = new HashSet<>();
+        if (BoundingBoxTypeHelper.shouldRender(BoundingBoxType.WorldSpawn)) {
+            if (worldSpawn != null) boundingBoxes.add(worldSpawn);
+            if (spawnChunks != null) boundingBoxes.add(spawnChunks);
+        }
+        if (BoundingBoxTypeHelper.shouldRender(BoundingBoxType.LazySpawnChunks)) {
+            if (lazyChunks != null) boundingBoxes.add(lazyChunks);
+        }
+        return boundingBoxes;
     }
 }