diff --git a/src/main/java/com/seibel/lod/builders/LodBufferBuilder.java b/src/main/java/com/seibel/lod/builders/LodBufferBuilder.java index f21345001..561760984 100644 --- a/src/main/java/com/seibel/lod/builders/LodBufferBuilder.java +++ b/src/main/java/com/seibel/lod/builders/LodBufferBuilder.java @@ -243,7 +243,7 @@ public class LodBufferBuilder int chunkXdist; int chunkZdist; short gameChunkRenderDistance = (short) (renderer.vanillaRenderedChunks.length / 2 - 1); - long lodData; + long dataPoint; long[] adjData; for (int index = 0; index < posToRender.getNumberOfPos(); index++) { @@ -265,18 +265,19 @@ public class LodBufferBuilder { if (lodDim.doesDataExist(detailLevel, posX, posZ)) { - lodData = lodDim.getData(detailLevel, posX, posZ); + dataPoint = lodDim.getData(detailLevel, posX, posZ); + if(DataPoint.getHeight(dataPoint) == LodBuilder.DEFAULT_HEIGHT && DataPoint.getDepth(dataPoint) == LodBuilder.DEFAULT_DEPTH) + continue; adjData = new long[NUMBER_OF_DIRECTION]; for (int direction = 0; direction < NUMBER_OF_DIRECTION; direction++) { xAdj = posX + ADJ_DIRECTION[direction][0]; zAdj = posZ + ADJ_DIRECTION[direction][1]; chunkXdist = LevelPosUtil.getChunkPos(detailLevel,xAdj) - playerChunkPos.x; - chunkZdist = LevelPosUtil.getChunkPos(detailLevel,xAdj) - playerChunkPos.z; + chunkZdist = LevelPosUtil.getChunkPos(detailLevel,zAdj) - playerChunkPos.z; if (gameChunkRenderDistance >= Math.abs(chunkXdist) && gameChunkRenderDistance >= Math.abs(chunkZdist)) { - if (!renderer.vanillaRenderedChunks[chunkXdist + gameChunkRenderDistance + 1][chunkZdist + gameChunkRenderDistance + 1] && posToRender.contains(detailLevel, xAdj, zAdj)) { @@ -290,7 +291,7 @@ public class LodBufferBuilder } } } - LodConfig.CLIENT.graphics.lodTemplate.get().template.addLodToBuffer(currentBuffer, playerBlockPosRounded, lodData, adjData, + LodConfig.CLIENT.graphics.lodTemplate.get().template.addLodToBuffer(currentBuffer, playerBlockPosRounded, dataPoint, adjData, detailLevel, posX, posZ, boxCache[xR][zR],renderer.previousDebugMode); } } catch (ArrayIndexOutOfBoundsException e) diff --git a/src/main/java/com/seibel/lod/builders/LodBuilder.java b/src/main/java/com/seibel/lod/builders/LodBuilder.java index 15f703113..b4c924c5d 100644 --- a/src/main/java/com/seibel/lod/builders/LodBuilder.java +++ b/src/main/java/com/seibel/lod/builders/LodBuilder.java @@ -67,11 +67,11 @@ public class LodBuilder /** * If no blocks are found in the area in determineBottomPointForArea return this */ - public static final short DEFAULT_DEPTH = -1; + public static final short DEFAULT_DEPTH = 0; /** * If no blocks are found in the area in determineHeightPointForArea return this */ - public static final short DEFAULT_HEIGHT = -1; + public static final short DEFAULT_HEIGHT = 0; /** * How wide LodDimensions should be in regions diff --git a/src/main/java/com/seibel/lod/objects/LodRegion.java b/src/main/java/com/seibel/lod/objects/LodRegion.java index 64e8a0cd4..c0d4fbb18 100644 --- a/src/main/java/com/seibel/lod/objects/LodRegion.java +++ b/src/main/java/com/seibel/lod/objects/LodRegion.java @@ -308,8 +308,8 @@ public class LodRegion childDetailLevel = (byte) (detailLevel - 1); if (doesDataExist(childDetailLevel, childPosX, childPosZ)) { - if (DataPoint.getHeight(data[childDetailLevel][childPosX][childPosZ]) != LodBuilder.DEFAULT_HEIGHT - && DataPoint.getDepth(data[childDetailLevel][childPosX][childPosZ]) != LodBuilder.DEFAULT_DEPTH) + if (!(DataPoint.getHeight(data[childDetailLevel][childPosX][childPosZ]) == LodBuilder.DEFAULT_HEIGHT + && DataPoint.getDepth(data[childDetailLevel][childPosX][childPosZ]) == LodBuilder.DEFAULT_DEPTH)) { numberOfChildren++;