private double playerX;
private double playerY;
private double playerZ;
+ private BoundingBox worldSpawnBoundingBox;
+ private BoundingBox spawnChunksBoundingBox;
@SubscribeEvent
public void onKeyInputEvent(InputEvent.KeyInputEvent evt) {
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;
active = false;
if (configManager.keepCacheBetweenSessions.getBoolean()) return;
initialized = false;
+ worldSpawnBoundingBox = null;
+ spawnChunksBoundingBox = null;
for (BoundingBoxCache cache : boundingBoxCacheMap.values()) {
cache.close();
}
renderSlimeChunk((BoundingBoxSlimeChunk) bb);
} else if (bb instanceof BoundingBoxWorldSpawn) {
renderWorldSpawn((BoundingBoxWorldSpawn) bb);
+
} else {
renderBoundingBox(bb);
}
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) {
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);
}
}
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();
}
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));
}
}
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;
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;
}
}
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);
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);
}
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);
}
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());
- }*/
}