private double playerZ;
private BoundingBox worldSpawnBoundingBox;
private BoundingBox spawnChunksBoundingBox;
+ private BoundingBox lazySpawnChunksBoundingBox;
@SubscribeEvent
public void onKeyInputEvent(InputEvent.KeyInputEvent evt) {
public void setWorldData(long seed, int spawnX, int spawnZ) {
worldSpawnBoundingBox = null;
spawnChunksBoundingBox = null;
+ lazySpawnChunksBoundingBox = null;
super.setWorldData(seed, spawnX, spawnZ);
}
if (configManager.drawWorldSpawn.getBoolean()) {
boundingBoxes.add(getWorldSpawnBoundingBox(spawnX, spawnZ));
boundingBoxes.add(getSpawnChunksBoundingBox(spawnX, spawnZ));
-
}
+ if (configManager.drawLazySpawnChunks.getBoolean()) ;
+ boundingBoxes.add(getLazySpawnChunksBoundingBox(spawnX, spawnZ));
if (configManager.drawSlimeChunks.getBoolean()) {
Set<ChunkCoordIntPair> activeChunks = getActiveChunks(world);
private BoundingBox getSpawnChunksBoundingBox(int spawnX, int spawnZ) {
if(spawnChunksBoundingBox != null)
return spawnChunksBoundingBox;
+ }
+ BoundingBox boundingBox = getSpawnChunksBoundingBox(spawnX, spawnZ, 12, Color.RED);
+ spawnChunksBoundingBox = boundingBox;
+ return boundingBox;
+ }
+
+ private BoundingBox getLazySpawnChunksBoundingBox(int spawnX, int spawnZ) {
+ if (lazySpawnChunksBoundingBox != null)
+ return lazySpawnChunksBoundingBox;
+ BoundingBox boundingBox = getSpawnChunksBoundingBox(spawnX, spawnZ, 16, Color.RED);
+ lazySpawnChunksBoundingBox = boundingBox;
+ return boundingBox;
+ }
+
+ private BoundingBox getSpawnChunksBoundingBox(int spawnX, int spawnZ, int size, Color color) {
double chunkSize = 16;
- double midOffset = chunkSize * 6;
+ double midOffset = chunkSize * (size / 2);
double midX = Math.round((float) (spawnX / chunkSize)) * chunkSize;
double midZ = Math.round((float) (spawnZ / chunkSize)) * chunkSize;
BlockPos minBlockPos = new BlockPos(midX - midOffset, 0, midZ - midOffset);
midZ += chunkSize;
}
BlockPos maxBlockPos = new BlockPos(midX + midOffset, 0, midZ + midOffset);
- BoundingBox boundingBox = BoundingBoxWorldSpawn.from(minBlockPos, maxBlockPos, Color.RED);
- spawnChunksBoundingBox = boundingBox;
- return boundingBox;
+ return BoundingBoxWorldSpawn.from(minBlockPos, maxBlockPos, color);
}
private BoundingBox getWorldSpawnBoundingBox(int spawnX, int spawnZ) {
public Property keepCacheBetweenSessions;
public Property drawWorldSpawn;
public Property worldSpawnMaxY;
+ public Property drawLazySpawnChunks;
private Configuration config;
slimeChunkMaxY = SetupIntegerProperty(config, "features", "slimeChunkMaxY", 0, "The maximum top of the slime chunk bounding box. If set to -1 it will use the value when activated, if set to 0 it will always track the player's feet. (default: 0)");
drawWorldSpawn = SetupBooleanProperty(config, "features", "drawWorldSpawn", true, "If set to true world spawn and spawn chunks bounding boxes are drawn. (default: true)");
worldSpawnMaxY = SetupIntegerProperty(config, "features", "worldSpawnMaxY", 0, "The maximum top of the world spawn bounding boxes. If set to -1 it will use the value when activated, if set to 0 it will always track the players feet. (default: 0)");
+ drawLazySpawnChunks = SetupBooleanProperty(config, "features", "drawLazySpawnChunks", false, "If set to true the lazy spawn chunks bounding boxes will be drawn. (default: false)");
config.save();
}