]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blobdiff - src/main/java/com/irtimaled/bbor/client/providers/WorldSpawnProvider.java
Tidy up constructors on simple boxes
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / client / providers / WorldSpawnProvider.java
index 560423e8b42587c1c353f684e71c86fb9fc4d6b9..bdccbf5b96466d2620b1a7ac81743721b1b93e82 100644 (file)
@@ -1,38 +1,37 @@
 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;
 import com.irtimaled.bbor.common.models.Coords;
+import com.irtimaled.bbor.common.models.DimensionId;
 
 import java.util.HashSet;
 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) {
         Coords minCoords = new Coords(spawnX - 10, 0, spawnZ - 10);
         Coords maxCoords = new Coords(spawnX + 10, 0, spawnZ + 10);
 
-        return BoundingBoxWorldSpawn.from(minCoords, maxCoords, BoundingBoxType.WorldSpawn);
+        return new BoundingBoxWorldSpawn(minCoords, maxCoords, BoundingBoxType.WorldSpawn);
     }
 
     private static BoundingBoxWorldSpawn buildSpawnChunksBoundingBox(int spawnX, int spawnZ, int size, BoundingBoxType type) {
@@ -47,10 +46,24 @@ public class WorldSpawnProvider implements IBoundingBoxProvider<BoundingBoxWorld
             midZ -= CHUNK_SIZE;
         }
         Coords minCoords = new Coords(midX - midOffset, 0, midZ - midOffset);
-        return BoundingBoxWorldSpawn.from(minCoords, maxCoords, type);
+        return new BoundingBoxWorldSpawn(minCoords, maxCoords, type);
+    }
+
+    @Override
+    public boolean canProvide(DimensionId dimensionId) {
+        return dimensionId == DimensionId.OVERWORLD;
     }
 
-    public Iterable<BoundingBoxWorldSpawn> get(int dimensionId) {
-        return dimensionId == Dimensions.OVERWORLD ? spawnChunks : Iterators.empty();
+    @Override
+    public Iterable<BoundingBoxWorldSpawn> get(DimensionId dimensionId) {
+        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;
     }
 }