]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/commitdiff
Stop using AxisAlignedBB, ChunkPos & MathHelper
authorIrtimaled <irtimaled@gmail.com>
Mon, 18 Mar 2019 04:11:34 +0000 (21:11 -0700)
committerIrtimaled <irtimaled@gmail.com>
Mon, 25 Mar 2019 03:56:28 +0000 (20:56 -0700)
src/main/java/com/irtimaled/bbor/client/ClientRenderer.java
src/main/java/com/irtimaled/bbor/client/Constants.java [deleted file]
src/main/java/com/irtimaled/bbor/client/renderers/MobSpawnerRenderer.java
src/main/java/com/irtimaled/bbor/client/renderers/OffsetBox.java [new file with mode: 0644]
src/main/java/com/irtimaled/bbor/client/renderers/OffsetPoint.java
src/main/java/com/irtimaled/bbor/client/renderers/Renderer.java
src/main/java/com/irtimaled/bbor/client/renderers/SlimeChunkRenderer.java
src/main/java/com/irtimaled/bbor/client/renderers/VillageRenderer.java
src/main/java/com/irtimaled/bbor/client/renderers/WorldSpawnRenderer.java

index d6b7f3abea923dc962a0255c54c6d84e9cf2e62b..e7a26bbf9f23537a381e45467cae76c0e4692963 100644 (file)
@@ -3,21 +3,20 @@ package com.irtimaled.bbor.client;
 import com.irtimaled.bbor.client.renderers.*;
 import com.irtimaled.bbor.common.BoundingBoxCache;
 import com.irtimaled.bbor.common.BoundingBoxType;
+import com.irtimaled.bbor.common.MathHelper;
 import com.irtimaled.bbor.common.models.*;
 import com.irtimaled.bbor.config.ConfigManager;
 import net.minecraft.client.Minecraft;
-import net.minecraft.util.math.ChunkPos;
-import net.minecraft.util.math.MathHelper;
 import net.minecraft.world.dimension.DimensionType;
 import org.lwjgl.opengl.GL11;
 
 import java.util.*;
 
-import static com.irtimaled.bbor.client.Constants.CHUNK_SIZE;
-
 public class ClientRenderer {
-    private final GetCache getCache;
+    private static final int CHUNK_SIZE = 16;
     private static final Map<Class<? extends BoundingBox>, Renderer> boundingBoxRendererMap = new HashMap<>();
+
+    private final GetCache getCache;
     private long seed;
     private Set<BoundingBox> spawnChunkBoundingBoxes = new HashSet<>();
 
@@ -30,8 +29,10 @@ public class ClientRenderer {
         boundingBoxRendererMap.put(BoundingBoxMobSpawner.class, new MobSpawnerRenderer());
     }
 
-    private boolean isWithinRenderDistance(Coords minCoords, Coords maxCoords) {
-        int renderDistanceBlocks = Minecraft.getInstance().gameSettings.renderDistanceChunks * CHUNK_SIZE;
+    private boolean isWithinRenderDistance(BoundingBox boundingBox) {
+        Coords minCoords = boundingBox.getMinCoords();
+        Coords maxCoords = boundingBox.getMaxCoords();
+        int renderDistanceBlocks = getRenderDistanceChunks() * CHUNK_SIZE;
         int minX = MathHelper.floor(PlayerCoords.getX() - renderDistanceBlocks);
         int maxX = MathHelper.floor(PlayerCoords.getX() + renderDistanceBlocks);
         int minZ = MathHelper.floor(PlayerCoords.getZ() - renderDistanceBlocks);
@@ -43,10 +44,6 @@ public class ClientRenderer {
                 minCoords.getZ() <= maxZ;
     }
 
-    private boolean isWithinRenderDistance(BoundingBox boundingBox) {
-        return isWithinRenderDistance(boundingBox.getMinCoords(), boundingBox.getMaxCoords());
-    }
-
     public void render(DimensionType dimensionType, Boolean outerBoxesOnly) {
         Map<BoundingBox, Set<BoundingBox>> boundingBoxes = getBoundingBoxes(dimensionType);
 
@@ -107,22 +104,26 @@ public class ClientRenderer {
     }
 
     private void addSlimeChunks(Map<BoundingBox, Set<BoundingBox>> boundingBoxes) {
-        Minecraft minecraft = Minecraft.getInstance();
-        int renderDistanceChunks = minecraft.gameSettings.renderDistanceChunks;
+        int renderDistanceChunks = getRenderDistanceChunks();
         int playerChunkX = MathHelper.floor(PlayerCoords.getX() / 16.0D);
         int playerChunkZ = MathHelper.floor(PlayerCoords.getZ() / 16.0D);
         for (int chunkX = playerChunkX - renderDistanceChunks; chunkX <= playerChunkX + renderDistanceChunks; ++chunkX) {
             for (int chunkZ = playerChunkZ - renderDistanceChunks; chunkZ <= playerChunkZ + renderDistanceChunks; ++chunkZ) {
                 if (isSlimeChunk(chunkX, chunkZ)) {
-                    ChunkPos chunk = new ChunkPos(chunkX, chunkZ);
-                    Coords minCoords = new Coords(chunk.getXStart(), 1, chunk.getZStart());
-                    Coords maxCoords = new Coords(chunk.getXEnd(), 38, chunk.getZEnd());
+                    int chunkXStart = chunkX << 4;
+                    int chunkZStart = chunkZ << 4;
+                    Coords minCoords = new Coords(chunkXStart, 1, chunkZStart);
+                    Coords maxCoords = new Coords(chunkXStart + 15, 38, chunkZStart + 15);
                     boundingBoxes.put(BoundingBoxSlimeChunk.from(minCoords, maxCoords), null);
                 }
             }
         }
     }
 
+    private int getRenderDistanceChunks() {
+        return Minecraft.getInstance().gameSettings.renderDistanceChunks;
+    }
+
     private boolean isSlimeChunk(int chunkX, int chunkZ) {
         Random r = new Random(seed +
                 (long) (chunkX * chunkX * 4987142) +
diff --git a/src/main/java/com/irtimaled/bbor/client/Constants.java b/src/main/java/com/irtimaled/bbor/client/Constants.java
deleted file mode 100644 (file)
index 7737c4a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.irtimaled.bbor.client;
-
-public class Constants {
-    public static final int CHUNK_SIZE = 16;
-}
index f6213f758db41d1d85f6e3103de005be014f846d..d4425a258450fe32b3349b8fe35059dd3d976c3c 100644 (file)
@@ -16,22 +16,20 @@ public class MobSpawnerRenderer extends Renderer<BoundingBoxMobSpawner> {
         if (ConfigManager.renderMobSpawnerSpawnArea.get()) {
             renderBoundingBox(boundingBox);
         } else {
-            renderCuboid(getAxisAlignedBB(coords, coords, true), color, fill());
+            renderCuboid(new OffsetBox(coords, coords), color, fill());
         }
 
         if (!ConfigManager.renderMobSpawnerActivationLines.get()) return;
 
-        renderActivationLines(coords);
+        renderActivationLine(new OffsetPoint(coords).offset(0.5, 0.5, 0.5));
     }
 
-    private void renderActivationLines(Coords coords) {
-        OffsetPoint centerPoint = new OffsetPoint(coords).add(0.5, 0.5, 0.5);
+    private void renderActivationLine(OffsetPoint centerPoint) {
         OffsetPoint playerPos = new OffsetPoint(PlayerCoords.getX(), PlayerCoords.getY(), PlayerCoords.getZ());
         double distance = centerPoint.getDistance(playerPos);
-        if (distance > 20.0) return;
-
-        Color color = distance <= 18.0 ? distance <= 16.0 ? Color.GREEN : Colors.DARK_ORANGE : Color.RED;
-        renderLine(centerPoint, playerPos.add(0, 0.1, 0), color);
-
+        if (distance <= 20) {
+            Color color = distance > 18 ? Color.RED : distance > 16 ? Colors.DARK_ORANGE : Color.GREEN;
+            renderLine(centerPoint, playerPos.offset(0, 0.1, 0), color);
+        }
     }
 }
diff --git a/src/main/java/com/irtimaled/bbor/client/renderers/OffsetBox.java b/src/main/java/com/irtimaled/bbor/client/renderers/OffsetBox.java
new file mode 100644 (file)
index 0000000..5c0efc4
--- /dev/null
@@ -0,0 +1,44 @@
+package com.irtimaled.bbor.client.renderers;
+
+import com.irtimaled.bbor.common.models.Coords;
+
+class OffsetBox {
+    private final OffsetPoint min;
+    private final OffsetPoint max;
+
+    OffsetBox(Coords minCoords, Coords maxCoords) {
+        this.min = new OffsetPoint(minCoords);
+        this.max = new OffsetPoint(maxCoords).offset(1, 1, 1);
+    }
+
+    OffsetBox(double minX, double minY, double minZ, double maxX, double maxY, double maxZ) {
+        this.min = new OffsetPoint(minX, minY, minZ);
+        this.max = new OffsetPoint(maxX, maxY, maxZ);
+    }
+
+    OffsetBox(OffsetPoint min, OffsetPoint max) {
+        this.min = min;
+        this.max = max;
+    }
+
+    OffsetBox grow(double x, double y, double z) {
+        return new OffsetBox(min.offset(-x, -y, -z), max.offset(x, y, z));
+    }
+
+    OffsetBox nudge() {
+        double growXZ = 0.001F;
+        double growY = 0;
+        if (min.getY() != max.getY()) {
+            growY = growXZ;
+        }
+        return grow(growXZ, growY, growXZ);
+    }
+
+    OffsetPoint getMin() {
+        return min;
+    }
+
+    OffsetPoint getMax() {
+        return max;
+    }
+}
index 49481614057f81568fd6c150b9661905c962cd43..4184faeca35c7019c0fa9d042a3d62b7c1cde124 100644 (file)
@@ -3,7 +3,7 @@ package com.irtimaled.bbor.client.renderers;
 import com.irtimaled.bbor.client.PlayerCoords;
 import com.irtimaled.bbor.common.models.Coords;
 
-public class OffsetPoint {
+class OffsetPoint {
     private final double x;
     private final double y;
     private final double z;
@@ -14,10 +14,10 @@ public class OffsetPoint {
         this.z = z;
     }
 
-    OffsetPoint(Coords coords) {
-        this.x = coords.getX();
-        this.y = coords.getY();
-        this.z = coords.getZ();
+    OffsetPoint(Coords Coords) {
+        this.x = Coords.getX();
+        this.y = Coords.getY();
+        this.z = Coords.getZ();
     }
 
     double getX() {
@@ -32,21 +32,14 @@ public class OffsetPoint {
         return z - PlayerCoords.getZ();
     }
 
-    public OffsetPoint add(double x, double y, double z) {
+    OffsetPoint offset(double x, double y, double z) {
         return new OffsetPoint(this.x + x, this.y + y, this.z + z);
     }
 
-    public double getDistance(OffsetPoint point) {
+    double getDistance(OffsetPoint point) {
         double dx = this.x - point.x;
         double dy = this.y - point.y;
         double dz = this.z - point.z;
         return Math.sqrt(dx * dx + dy * dy + dz * dz);
     }
-
-    public double getDistanceFromPlayer() {
-        double dx = this.x - PlayerCoords.getX();
-        double dy = this.y - PlayerCoords.getY();
-        double dz = this.z - PlayerCoords.getZ();
-        return Math.sqrt(dx * dx + dy * dy + dz * dz);
-    }
 }
index a9b4ef419254309f567b7143e332a17b75f8d0a0..a90cedd9f761725489876ba1b1c8d8a4110266cb 100644 (file)
@@ -1,13 +1,10 @@
 package com.irtimaled.bbor.client.renderers;
 
-import com.irtimaled.bbor.client.PlayerCoords;
 import com.irtimaled.bbor.common.models.BoundingBox;
-import com.irtimaled.bbor.common.models.Coords;
 import com.irtimaled.bbor.config.ConfigManager;
 import net.minecraft.client.renderer.BufferBuilder;
 import net.minecraft.client.renderer.Tessellator;
 import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
-import net.minecraft.util.math.AxisAlignedBB;
 import org.lwjgl.opengl.GL11;
 
 import java.awt.*;
@@ -16,35 +13,14 @@ public abstract class Renderer<T extends BoundingBox> {
     public abstract void render(T boundingBox);
 
     void renderBoundingBox(T boundingBox) {
-        renderCuboid(getAxisAlignedBB(boundingBox), boundingBox.getColor(), fill());
-    }
-
-    AxisAlignedBB getAxisAlignedBB(T boundingBox) {
-        return getAxisAlignedBB(boundingBox, true);
-    }
-
-    AxisAlignedBB getAxisAlignedBB(T boundingBox, boolean extendMaxByOne) {
-        Coords min = boundingBox.getMinCoords();
-        Coords max = boundingBox.getMaxCoords();
-        return getAxisAlignedBB(min, max, extendMaxByOne);
-    }
-
-    AxisAlignedBB getAxisAlignedBB(Coords min, Coords max, boolean extendMaxByOne) {
-        AxisAlignedBB bb = new AxisAlignedBB(min.getX(), min.getY(), min.getZ(), max.getX(), max.getY(), max.getZ());
-        if (extendMaxByOne)
-            return bb.expand(1, 1, 1);
-        return bb;
+        OffsetBox bb = new OffsetBox(boundingBox.getMinCoords(), boundingBox.getMaxCoords());
+        renderCuboid(bb, boundingBox.getColor(), fill());
     }
 
     boolean fill() {
         return ConfigManager.fill.get();
     }
 
-    void renderRectangle(AxisAlignedBB aaBB, double minY, double maxY, Color color, Boolean fill) {
-        aaBB = new AxisAlignedBB(aaBB.minX, minY, aaBB.minZ, aaBB.maxX, maxY, aaBB.maxZ);
-        renderCuboid(aaBB, color, fill);
-    }
-
     void renderLine(OffsetPoint point1, OffsetPoint point2, Color color) {
         int colorR = color.getRed();
         int colorG = color.getGreen();
@@ -58,124 +34,116 @@ public abstract class Renderer<T extends BoundingBox> {
         tessellator.draw();
     }
 
-    void renderCuboid(AxisAlignedBB aaBB, Color color, boolean fill) {
-        aaBB = offsetAxisAlignedBB(aaBB);
+    void renderCuboid(OffsetBox bb, Color color, boolean fill) {
+        bb = bb.nudge();
         if (fill) {
-            renderFilledCuboid(aaBB, color);
-        }
-        renderUnfilledCuboid(aaBB, color);
-    }
-
-    private AxisAlignedBB offsetAxisAlignedBB(AxisAlignedBB axisAlignedBB) {
-        double growXZ = 0.001F;
-        double growY = 0;
-        if (axisAlignedBB.minY != axisAlignedBB.maxY) {
-            growY = growXZ;
+            renderFilledCuboid(bb, color);
         }
-        return axisAlignedBB
-                .grow(growXZ, growY, growXZ)
-                .offset(-PlayerCoords.getX(), -PlayerCoords.getY(), -PlayerCoords.getZ());
+        renderUnfilledCuboid(bb, color);
     }
 
-    private void renderFilledCuboid(AxisAlignedBB aaBB, Color color) {
+    private void renderFilledCuboid(OffsetBox bb, Color color) {
         GL11.glPolygonMode(GL11.GL_FRONT_AND_BACK, GL11.GL_FILL);
         GL11.glEnable(GL11.GL_BLEND);
-        renderCuboid(aaBB, 30, color);
+        renderCuboid(bb, 30, color);
         GL11.glDisable(GL11.GL_BLEND);
         GL11.glEnable(GL11.GL_POLYGON_OFFSET_LINE);
         GL11.glPolygonOffset(-1.f, -1.f);
     }
 
-    private void renderUnfilledCuboid(AxisAlignedBB aaBB, Color color) {
+    private void renderUnfilledCuboid(OffsetBox bb, Color color) {
         GL11.glPolygonMode(GL11.GL_FRONT_AND_BACK, GL11.GL_LINE);
-        renderCuboid(aaBB, 255, color);
+        renderCuboid(bb, 255, color);
     }
 
-    private void renderCuboid(AxisAlignedBB bb, int alphaChannel, Color color) {
-        Tessellator tessellator = Tessellator.getInstance();
-        BufferBuilder worldRenderer = tessellator.getBuffer();
-
+    private void renderCuboid(OffsetBox bb, int alphaChannel, Color color) {
         int colorR = color.getRed();
         int colorG = color.getGreen();
         int colorB = color.getBlue();
 
+        OffsetPoint min = bb.getMin();
+        OffsetPoint max = bb.getMax();
+
+        Tessellator tessellator = Tessellator.getInstance();
+        BufferBuilder worldRenderer = tessellator.getBuffer();
+
         worldRenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_COLOR);
-        worldRenderer.pos(bb.minX, bb.minY, bb.minZ)
+        worldRenderer.pos(min.getX(), min.getY(), min.getZ())
                 .color(colorR, colorG, colorB, alphaChannel)
                 .endVertex();
-        worldRenderer.pos(bb.maxX, bb.minY, bb.minZ)
+        worldRenderer.pos(max.getX(), min.getY(), min.getZ())
                 .color(colorR, colorG, colorB, alphaChannel)
                 .endVertex();
-        worldRenderer.pos(bb.maxX, bb.minY, bb.maxZ)
+        worldRenderer.pos(max.getX(), min.getY(), max.getZ())
                 .color(colorR, colorG, colorB, alphaChannel)
                 .endVertex();
-        worldRenderer.pos(bb.minX, bb.minY, bb.maxZ)
+        worldRenderer.pos(min.getX(), min.getY(), max.getZ())
                 .color(colorR, colorG, colorB, alphaChannel)
                 .endVertex();
 
-        if (bb.minY != bb.maxY) {
-            worldRenderer.pos(bb.minX, bb.maxY, bb.minZ)
+        if (min.getY() != max.getY()) {
+            worldRenderer.pos(min.getX(), max.getY(), min.getZ())
                     .color(colorR, colorG, colorB, alphaChannel)
                     .endVertex();
-            worldRenderer.pos(bb.maxX, bb.maxY, bb.minZ)
+            worldRenderer.pos(max.getX(), max.getY(), min.getZ())
                     .color(colorR, colorG, colorB, alphaChannel)
                     .endVertex();
-            worldRenderer.pos(bb.maxX, bb.maxY, bb.maxZ)
+            worldRenderer.pos(max.getX(), max.getY(), max.getZ())
                     .color(colorR, colorG, colorB, alphaChannel)
                     .endVertex();
-            worldRenderer.pos(bb.minX, bb.maxY, bb.maxZ)
+            worldRenderer.pos(min.getX(), max.getY(), max.getZ())
                     .color(colorR, colorG, colorB, alphaChannel)
                     .endVertex();
 
-            worldRenderer.pos(bb.minX, bb.minY, bb.maxZ)
+            worldRenderer.pos(min.getX(), min.getY(), max.getZ())
                     .color(colorR, colorG, colorB, alphaChannel)
                     .endVertex();
-            worldRenderer.pos(bb.minX, bb.maxY, bb.maxZ)
+            worldRenderer.pos(min.getX(), max.getY(), max.getZ())
                     .color(colorR, colorG, colorB, alphaChannel)
                     .endVertex();
-            worldRenderer.pos(bb.maxX, bb.maxY, bb.maxZ)
+            worldRenderer.pos(max.getX(), max.getY(), max.getZ())
                     .color(colorR, colorG, colorB, alphaChannel)
                     .endVertex();
-            worldRenderer.pos(bb.maxX, bb.minY, bb.maxZ)
+            worldRenderer.pos(max.getX(), min.getY(), max.getZ())
                     .color(colorR, colorG, colorB, alphaChannel)
                     .endVertex();
 
-            worldRenderer.pos(bb.minX, bb.minY, bb.minZ)
+            worldRenderer.pos(min.getX(), min.getY(), min.getZ())
                     .color(colorR, colorG, colorB, alphaChannel)
                     .endVertex();
-            worldRenderer.pos(bb.minX, bb.maxY, bb.minZ)
+            worldRenderer.pos(min.getX(), max.getY(), min.getZ())
                     .color(colorR, colorG, colorB, alphaChannel)
                     .endVertex();
-            worldRenderer.pos(bb.maxX, bb.maxY, bb.minZ)
+            worldRenderer.pos(max.getX(), max.getY(), min.getZ())
                     .color(colorR, colorG, colorB, alphaChannel)
                     .endVertex();
-            worldRenderer.pos(bb.maxX, bb.minY, bb.minZ)
+            worldRenderer.pos(max.getX(), min.getY(), min.getZ())
                     .color(colorR, colorG, colorB, alphaChannel)
                     .endVertex();
 
-            worldRenderer.pos(bb.minX, bb.minY, bb.minZ)
+            worldRenderer.pos(min.getX(), min.getY(), min.getZ())
                     .color(colorR, colorG, colorB, alphaChannel)
                     .endVertex();
-            worldRenderer.pos(bb.minX, bb.minY, bb.maxZ)
+            worldRenderer.pos(min.getX(), min.getY(), max.getZ())
                     .color(colorR, colorG, colorB, alphaChannel)
                     .endVertex();
-            worldRenderer.pos(bb.minX, bb.maxY, bb.maxZ)
+            worldRenderer.pos(min.getX(), max.getY(), max.getZ())
                     .color(colorR, colorG, colorB, alphaChannel)
                     .endVertex();
-            worldRenderer.pos(bb.minX, bb.maxY, bb.minZ)
+            worldRenderer.pos(min.getX(), max.getY(), min.getZ())
                     .color(colorR, colorG, colorB, alphaChannel)
                     .endVertex();
 
-            worldRenderer.pos(bb.maxX, bb.minY, bb.minZ)
+            worldRenderer.pos(max.getX(), min.getY(), min.getZ())
                     .color(colorR, colorG, colorB, alphaChannel)
                     .endVertex();
-            worldRenderer.pos(bb.maxX, bb.minY, bb.maxZ)
+            worldRenderer.pos(max.getX(), min.getY(), max.getZ())
                     .color(colorR, colorG, colorB, alphaChannel)
                     .endVertex();
-            worldRenderer.pos(bb.maxX, bb.maxY, bb.maxZ)
+            worldRenderer.pos(max.getX(), max.getY(), max.getZ())
                     .color(colorR, colorG, colorB, alphaChannel)
                     .endVertex();
-            worldRenderer.pos(bb.maxX, bb.maxY, bb.minZ)
+            worldRenderer.pos(max.getX(), max.getY(), min.getZ())
                     .color(colorR, colorG, colorB, alphaChannel)
                     .endVertex();
         }
index a5f9d0620149571a2872735329cb5d0399feed87..f19040a3b4837644405c894c0c63c0d039dcc9e1 100644 (file)
@@ -3,20 +3,23 @@ package com.irtimaled.bbor.client.renderers;
 import com.irtimaled.bbor.client.PlayerCoords;
 import com.irtimaled.bbor.common.models.BoundingBoxSlimeChunk;
 import com.irtimaled.bbor.config.ConfigManager;
-import net.minecraft.util.math.AxisAlignedBB;
 
 import java.awt.*;
 
 public class SlimeChunkRenderer extends Renderer<BoundingBoxSlimeChunk> {
     @Override
     public void render(BoundingBoxSlimeChunk boundingBox) {
-        AxisAlignedBB aaBB = getAxisAlignedBB(boundingBox);
+        OffsetBox bb = new OffsetBox(boundingBox.getMinCoords(), boundingBox.getMaxCoords());
         Color color = boundingBox.getColor();
-        renderCuboid(aaBB, color, fill());
+        renderCuboid(bb, color, fill());
 
         double maxY = PlayerCoords.getMaxY(ConfigManager.slimeChunkMaxY.get());
-        if (maxY > 39) {
-            renderRectangle(aaBB, 39, maxY, color, fill());
+        double dY = maxY - 39;
+        if (dY > 0) {
+            OffsetPoint min = bb.getMin().offset(0, 38, 0);
+            OffsetPoint max = bb.getMax().offset(0, dY, 0);
+            bb = new OffsetBox(min, max);
+            renderCuboid(bb, color, fill());
         }
     }
 }
index 40c8bc9011d91efc7bbc928159541a5b8be5e243..d9034b4c8e1cc80106713fa22b2fee1c96f8a4ec 100644 (file)
@@ -6,7 +6,6 @@ import com.irtimaled.bbor.config.ConfigManager;
 import net.minecraft.client.renderer.BufferBuilder;
 import net.minecraft.client.renderer.Tessellator;
 import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
-import net.minecraft.util.math.AxisAlignedBB;
 import org.lwjgl.opengl.GL11;
 
 import java.awt.*;
@@ -31,29 +30,29 @@ public class VillageRenderer extends Renderer<BoundingBoxVillage> {
     }
 
     private void renderIronGolemSpawnArea(BoundingBoxVillage boundingBox) {
-        Coords center = boundingBox.getCenter();
-        AxisAlignedBB abb = getAxisAlignedBB(center, center, false)
-                .grow(8, 3, 8)
+        OffsetPoint offsetCenter = new OffsetPoint(boundingBox.getCenter())
                 .offset(boundingBox.getCenterOffsetX(), 0.0, boundingBox.getCenterOffsetZ());
+        OffsetBox bb = new OffsetBox(offsetCenter, offsetCenter)
+                .grow(8, 3, 8);
 
-        renderCuboid(abb, boundingBox.getColor(), false);
+        renderCuboid(bb, boundingBox.getColor(), false);
     }
 
     private void renderVillageDoors(BoundingBoxVillage boundingBox) {
         OffsetPoint center = new OffsetPoint(boundingBox.getCenter())
-                .add(boundingBox.getCenterOffsetX(), 0.0, boundingBox.getCenterOffsetZ());
+                .offset(boundingBox.getCenterOffsetX(), 0.0, boundingBox.getCenterOffsetZ());
         Color color = boundingBox.getColor();
-        GL11.glPolygonMode(GL11.GL_FRONT_AND_BACK, GL11.GL_LINE);
-        Tessellator tessellator = Tessellator.getInstance();
-        BufferBuilder worldRenderer = tessellator.getBuffer();
-
         int colorR = color.getRed();
         int colorG = color.getGreen();
         int colorB = color.getBlue();
 
+        GL11.glPolygonMode(GL11.GL_FRONT_AND_BACK, GL11.GL_LINE);
+        Tessellator tessellator = Tessellator.getInstance();
+        BufferBuilder worldRenderer = tessellator.getBuffer();
+
         worldRenderer.begin(GL11.GL_LINES, worldRenderer.getVertexFormat());
         for (Coords door : boundingBox.getDoors()) {
-            OffsetPoint point = new OffsetPoint(door).add(0.5, 0, 0.5);
+            OffsetPoint point = new OffsetPoint(door).offset(0.5, 0, 0.5);
 
             worldRenderer.pos(point.getX(), point.getY(), point.getZ()).color(colorR, colorG, colorB, 255).endVertex();
             worldRenderer.pos(center.getX(), center.getY(), center.getZ()).color(colorR, colorG, colorB, 255).endVertex();
@@ -63,7 +62,7 @@ public class VillageRenderer extends Renderer<BoundingBoxVillage> {
 
     private void renderBoundingBoxVillageAsSphere(BoundingBoxVillage boundingBox) {
         OffsetPoint center = new OffsetPoint(boundingBox.getCenter())
-                .add(boundingBox.getCenterOffsetX(), 0.0, boundingBox.getCenterOffsetZ());
+                .offset(boundingBox.getCenterOffsetX(), 0.0, boundingBox.getCenterOffsetZ());
         int radius = boundingBox.getRadius();
         Color color = boundingBox.getColor();
         renderSphere(center, radius, color);
@@ -86,14 +85,14 @@ public class VillageRenderer extends Renderer<BoundingBoxVillage> {
 
     private Set<OffsetPoint> buildPoints(OffsetPoint center, double radius) {
         int density = ConfigManager.villageSphereDensity.get();
-        int segments = 24 + (density*8);
+        int segments = 24 + (density * 8);
 
-        Set<OffsetPoint> points = new HashSet<>(segments*segments);
+        Set<OffsetPoint> points = new HashSet<>(segments * segments);
         double tau = 6.283185307179586D;
         double pi = tau / 2D;
 
-        double thetaSegment = pi / (double)segments;
-        double phiSegment = tau / (double)segments;
+        double thetaSegment = pi / (double) segments;
+        double phiSegment = tau / (double) segments;
 
         for (double phi = 0.0D; phi < tau; phi += phiSegment) {
             for (double theta = 0.0D; theta < pi; theta += thetaSegment) {
@@ -101,7 +100,7 @@ public class VillageRenderer extends Renderer<BoundingBoxVillage> {
                 double dz = radius * Math.sin(phi) * Math.sin(theta);
                 double dy = radius * Math.cos(phi);
 
-                points.add(center.add(dx, dy, dz));
+                points.add(center.offset(dx, dy, dz));
             }
         }
         return points;
index de2ac89896c15714a48385351d3fd1699b391a25..696b4c18c7d2aabb235edce43005dfc573b843d5 100644 (file)
@@ -2,17 +2,21 @@ package com.irtimaled.bbor.client.renderers;
 
 import com.irtimaled.bbor.client.PlayerCoords;
 import com.irtimaled.bbor.common.models.BoundingBoxWorldSpawn;
+import com.irtimaled.bbor.common.models.Coords;
 import com.irtimaled.bbor.config.ConfigManager;
-import net.minecraft.util.math.AxisAlignedBB;
 
 import java.awt.*;
 
 public class WorldSpawnRenderer extends Renderer<BoundingBoxWorldSpawn> {
     @Override
     public void render(BoundingBoxWorldSpawn boundingBox) {
-        AxisAlignedBB aaBB = getAxisAlignedBB(boundingBox, false);
         Color color = boundingBox.getColor();
+        Coords minCoords = boundingBox.getMinCoords();
+        Coords maxCoords = boundingBox.getMaxCoords();
+
         double y = PlayerCoords.getMaxY(ConfigManager.worldSpawnMaxY.get()) + 0.001F;
-        renderRectangle(aaBB, y, y, color, false);
+
+        OffsetBox bb = new OffsetBox(minCoords.getX(), y, minCoords.getZ(), maxCoords.getX(), y, maxCoords.getZ());
+        renderCuboid(bb, color, false);
     }
 }