]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/commitdiff
Fix #1
authorIrtimaled <irtimaled@gmail.com>
Thu, 5 Feb 2015 10:47:39 +0000 (10:47 +0000)
committerIrtimaled <irtimaled@gmail.com>
Thu, 5 Feb 2015 10:58:35 +0000 (10:58 +0000)
Need to use the value sent from the server/loaded from level.dat as this won't change. Also cached the world spawn and spawn chunk bounding boxes as these don't change!

java/com/irtimaled/bbor/ClientProxy.java
java/com/irtimaled/bbor/messages/BoundingBoxDeserializer.java
java/com/irtimaled/bbor/messages/BoundingBoxSerializer.java

index fdc2ce4c228f2b6bf66d499015bcc7294fae9ac3..bb4146f595b94c0eede58e8a740e5b4ddb8af42c 100644 (file)
@@ -39,6 +39,8 @@ public class ClientProxy extends CommonProxy {
     private double playerX;
     private double playerY;
     private double playerZ;
+    private BoundingBox worldSpawnBoundingBox;
+    private BoundingBox spawnChunksBoundingBox;
 
     @SubscribeEvent
     public void onKeyInputEvent(InputEvent.KeyInputEvent evt) {
@@ -67,6 +69,13 @@ public class ClientProxy extends CommonProxy {
         return true;
     }
 
+    @Override
+    public void setWorldData(long seed, int spawnX, int spawnZ) {
+        worldSpawnBoundingBox = null;
+        spawnChunksBoundingBox = null;
+        super.setWorldData(seed, spawnX, spawnZ);
+    }
+
     @SubscribeEvent
     public void renderWorldLastEvent(RenderWorldLastEvent event) {
         EntityPlayer entityPlayer = Minecraft.getMinecraft().thePlayer;
@@ -233,6 +242,8 @@ public class ClientProxy extends CommonProxy {
         active = false;
         if (configManager.keepCacheBetweenSessions.getBoolean()) return;
         initialized = false;
+        worldSpawnBoundingBox = null;
+        spawnChunksBoundingBox = null;
         for (BoundingBoxCache cache : boundingBoxCacheMap.values()) {
             cache.close();
         }
@@ -299,6 +310,7 @@ public class ClientProxy extends CommonProxy {
                     renderSlimeChunk((BoundingBoxSlimeChunk) bb);
                 } else if (bb instanceof BoundingBoxWorldSpawn) {
                     renderWorldSpawn((BoundingBoxWorldSpawn) bb);
+
                 } else {
                     renderBoundingBox(bb);
                 }
@@ -318,11 +330,9 @@ public class ClientProxy extends CommonProxy {
 
     private void renderWorldSpawn(BoundingBoxWorldSpawn bb) {
         AxisAlignedBB aaBB = bb.toAxisAlignedBB(false);
-        double maxY = getMaxY(configManager.worldSpawnMaxY.getInt());
-        aaBB = new AxisAlignedBB(aaBB.minX, maxY, aaBB.minZ, aaBB.maxX, maxY, aaBB.maxZ);
         Color color = bb.getColor();
-        renderCuboid(aaBB, color, fill());
-
+        double y = getMaxY(configManager.worldSpawnMaxY.getInt());
+        renderRectangle(aaBB, y, y, color);
     }
 
     private void renderSlimeChunk(BoundingBoxSlimeChunk bb) {
@@ -332,8 +342,7 @@ public class ClientProxy extends CommonProxy {
 
         double maxY = getMaxY(configManager.slimeChunkMaxY.getInt());
         if (maxY > 39) {
-            aaBB = new AxisAlignedBB(aaBB.minX, 39, aaBB.minZ, aaBB.maxX, maxY, aaBB.maxZ);
-            renderCuboid(aaBB, color, fill());
+            renderRectangle(aaBB, 39, maxY, color);
         }
     }
 
@@ -347,6 +356,11 @@ public class ClientProxy extends CommonProxy {
         return configMaxY;
     }
 
+    private void renderRectangle(AxisAlignedBB aaBB, double minY, double maxY, Color color) {
+        aaBB = new AxisAlignedBB(aaBB.minX, minY, aaBB.minZ, aaBB.maxX, maxY, aaBB.maxZ);
+        renderCuboid(aaBB, color, fill());
+    }
+
     private boolean fill() {
         return configManager.fill.getBoolean();
     }
@@ -529,9 +543,7 @@ public class ClientProxy extends CommonProxy {
             int dimensionId = world.provider.getDimensionId();
             if (dimensionId == 0) {
                 if (configManager.drawWorldSpawn.getBoolean()) {
-                    int spawnX = world.getWorldInfo().getSpawnX();
-                    int spawnZ = world.getWorldInfo().getSpawnZ();
-                    boundingBoxes.add(getSpawnBoundingBox(spawnX, spawnZ));
+                    boundingBoxes.add(getWorldSpawnBoundingBox(spawnX, spawnZ));
                     boundingBoxes.add(getSpawnChunksBoundingBox(spawnX, spawnZ));
 
                 }
@@ -559,6 +571,9 @@ public class ClientProxy extends CommonProxy {
     }
 
     private BoundingBox getSpawnChunksBoundingBox(int spawnX, int spawnZ) {
+        if(spawnChunksBoundingBox != null)
+            return spawnChunksBoundingBox;
+
         double chunkSize = 16;
         double midOffset = chunkSize * 6;
         double midX = Math.round((float) (spawnX / chunkSize)) * chunkSize;
@@ -569,13 +584,20 @@ public class ClientProxy extends CommonProxy {
             midZ += chunkSize;
         }
         BlockPos maxBlockPos = new BlockPos(midX + midOffset, 0, midZ + midOffset);
-        return new BoundingBoxWorldSpawn(minBlockPos, maxBlockPos, Color.RED);
+        BoundingBox boundingBox =  BoundingBoxWorldSpawn.from(minBlockPos, maxBlockPos, Color.RED);
+        spawnChunksBoundingBox = boundingBox;
+        return boundingBox;
     }
 
-    private BoundingBoxWorldSpawn getSpawnBoundingBox(int spawnX, int spawnZ) {
+    private BoundingBox getWorldSpawnBoundingBox(int spawnX, int spawnZ) {
+        if(worldSpawnBoundingBox != null)
+            return worldSpawnBoundingBox;
+
         BlockPos minBlockPos = new BlockPos(spawnX - 10, 0, spawnZ - 10);
         BlockPos maxBlockPos = new BlockPos(spawnX + 10, 0, spawnZ + 10);
 
-        return new BoundingBoxWorldSpawn(minBlockPos, maxBlockPos, Color.RED);
+        BoundingBox boundingBox = BoundingBoxWorldSpawn.from(minBlockPos, maxBlockPos, Color.RED);
+        worldSpawnBoundingBox = boundingBox;
+        return boundingBox;
     }
 }
index 0098d06a2800968164ae4dfd7092d4c9a1088136..c56a8841c06115e4fb0a96ea61905893c8a0f7c1 100644 (file)
@@ -15,28 +15,10 @@ public class BoundingBoxDeserializer {
                 return deserializeVillage(buf);
             case 'S':
                 return deserializeStructure(buf);
-            case 'C':
-                return deserializeSlimeChunk(buf);
-            case 'W':
-                return deserializeWorldSpawn(buf);
         }
         return null;
     }
 
-    private static BoundingBox deserializeWorldSpawn(ByteBuf buf) {
-        BlockPos minBlockPos = deserializeBlockPos(buf);
-        BlockPos maxBlockPos = deserializeBlockPos(buf);
-        Color color = new Color(ByteBufUtils.readVarInt(buf, 5));
-        return BoundingBoxWorldSpawn.from(minBlockPos, maxBlockPos, color);
-    }
-
-    private static BoundingBox deserializeSlimeChunk(ByteBuf buf) {
-        BlockPos minBlockPos = deserializeBlockPos(buf);
-        BlockPos maxBlockPos = deserializeBlockPos(buf);
-        Color color = new Color(ByteBufUtils.readVarInt(buf, 5));
-        return BoundingBoxSlimeChunk.from(minBlockPos, maxBlockPos, color);
-    }
-
     private static BoundingBox deserializeStructure(ByteBuf buf) {
         BlockPos minBlockPos = deserializeBlockPos(buf);
         BlockPos maxBlockPos = deserializeBlockPos(buf);
index 0297ead9879521db4eb18a0d515a4a6738026f47..eefb0f19461c2aad01a42cbaca168676d0a01549 100644 (file)
@@ -10,12 +10,6 @@ import java.awt.*;
 public class BoundingBoxSerializer {
 
     public static void serialize(BoundingBox boundingBox, ByteBuf buf) {
-        if (boundingBox instanceof BoundingBoxWorldSpawn) {
-            serializeWorldSpawn((BoundingBoxWorldSpawn) boundingBox, buf);
-        }
-        if (boundingBox instanceof BoundingBoxSlimeChunk) {
-            serializeSlimeChunk((BoundingBoxSlimeChunk) boundingBox, buf);
-        }
         if (boundingBox instanceof BoundingBoxVillage) {
             serializeVillage((BoundingBoxVillage) boundingBox, buf);
         }
@@ -39,18 +33,6 @@ public class BoundingBoxSerializer {
         serializeColor(boundingBox.getColor(), buf);
     }
 
-    private static void serializeSlimeChunk(BoundingBoxSlimeChunk boundingBox, ByteBuf buf) {
-        ByteBufUtils.writeVarShort(buf, 'C');
-        serializeCuboid(boundingBox, buf);
-        serializeColor(boundingBox.getColor(), buf);
-    }
-
-    private static void serializeWorldSpawn(BoundingBoxWorldSpawn boundingBox, ByteBuf buf) {
-        ByteBufUtils.writeVarShort(buf, 'W');
-        serializeCuboid(boundingBox, buf);
-        serializeColor(boundingBox.getColor(), buf);
-    }
-
     private static void serializeColor(Color color, ByteBuf buf) {
         ByteBufUtils.writeVarInt(buf, color.getRGB(), 5);
     }
@@ -65,59 +47,4 @@ public class BoundingBoxSerializer {
         ByteBufUtils.writeVarInt(buf, blockPos.getY(), 5);
         ByteBufUtils.writeVarInt(buf, blockPos.getZ(), 5);
     }
-    /*
-
-
-        public static void serialize(BoundingBox         boundingBox, StringBuilder sb) {
-            if (boundingBox instanceof BoundingBoxSlimeChunk) {
-                serializeSlimeChunk((BoundingBoxSlimeChunk) boundingBox, sb);
-            } else if (boundingBox instanceof BoundingBoxVillage) {
-                serializeVillage((BoundingBoxVillage) boundingBox, sb);
-            } else if (boundingBox instanceof BoundingBoxStructure) {
-                serializeStructure((BoundingBoxStructure) boundingBox, sb);
-            }
-        }
-
-        private static void serializeVillage(BoundingBoxVillage boundingBox, StringBuilder sb) {
-        sb.append("V/");
-        serializeBlockPos(boundingBox.getCenter(), sb);
-        sb.append('/');
-        sb.append(boundingBox.getRadius());
-        sb.append('/');
-        sb.append(boundingBox.getSpawnsIronGolems());
-        sb.append('/');
-        serializeColor(boundingBox.getColor(), sb);
-    }
-
-    private static void serializeStructure(BoundingBoxStructure boundingBox, StringBuilder sb) {
-        sb.append("S/");
-        serializeCuboid(boundingBox, sb);
-        sb.append('/');
-        serializeColor(boundingBox.getColor(), sb);
-    }
-
-    private static void serializeSlimeChunk(BoundingBoxSlimeChunk boundingBox, StringBuilder sb) {
-        sb.append("SC/");
-        serializeCuboid(boundingBox, sb);
-        sb.append('/');
-        serializeColor(boundingBox.getColor(), sb);
-    }
-
-    private static void serializeColor(Color color, StringBuilder sb) {
-        sb.append(color.getRGB());
-    }
-
-    private static void serializeCuboid(BoundingBox boundingBox, StringBuilder sb) {
-        serializeBlockPos(boundingBox.getMinBlockPos(), sb);
-        sb.append('/');
-        serializeBlockPos(boundingBox.getMaxBlockPos(), sb);
-    }
-
-    private static void serializeBlockPos(BlockPos blockPos, StringBuilder sb) {
-        sb.append(blockPos.getX());
-        sb.append(',');
-        sb.append(blockPos.getY());
-        sb.append(',');
-        sb.append(blockPos.getZ());
-    }*/
 }