diff --git a/src/main/java/com/seibel/lod/builders/LodBufferBuilder.java b/src/main/java/com/seibel/lod/builders/LodBufferBuilder.java index 762f43b59..55b0ae361 100644 --- a/src/main/java/com/seibel/lod/builders/LodBufferBuilder.java +++ b/src/main/java/com/seibel/lod/builders/LodBufferBuilder.java @@ -182,6 +182,7 @@ public class LodBufferBuilder { byte detailToRender; boolean zFix; + LevelPos adjPos = new LevelPos(); Set setOfPosToRender = new HashSet<>(); for (byte detail = detailLevel; detail <= LodUtil.REGION_DETAIL_LEVEL; detail++) @@ -223,26 +224,24 @@ public class LodBufferBuilder try { ChunkPos adjChunkPos = new ChunkPos(0, 0); - LevelPos adjPos = new LevelPos(); if (lodDim.doesDataExist(posToRender)) { short[] lodData = lodDim.getData(posToRender); short[][][] adjData = new short[2][2][]; + /* for (int x : new int[]{0, 1}) { adjPos.changeParameters(posToRender.detailLevel, posToRender.posX + x * 2 - 1, posToRender.posZ); - if (!renderer.vanillaRenderedChunks.contains(adjPos.getChunkPos()) - && setOfPosToRender.contains(adjPos)) + if (!renderer.vanillaRenderedChunks.contains(adjPos.getChunkPos())) adjData[0][x] = lodDim.getData(adjPos); } for (int z : new int[]{0, 1}) { adjPos.changeParameters(posToRender.detailLevel, posToRender.posX, posToRender.posZ + z * 2 - 1); - if (!renderer.vanillaRenderedChunks.contains(adjPos.getChunkPos()) - && setOfPosToRender.contains(adjPos)) + if (!renderer.vanillaRenderedChunks.contains(adjPos.getChunkPos())) adjData[1][z] = lodDim.getData(adjPos); - } + }*/ LodConfig.CLIENT.lodTemplate.get().template.addLodToBuffer(currentBuffer, playerBlockPos, lodData, adjData, posToRender, renderer.debugging); diff --git a/src/main/java/com/seibel/lod/builders/LodBuilder.java b/src/main/java/com/seibel/lod/builders/LodBuilder.java index 5ad4aaa14..97f6bdeaa 100644 --- a/src/main/java/com/seibel/lod/builders/LodBuilder.java +++ b/src/main/java/com/seibel/lod/builders/LodBuilder.java @@ -24,6 +24,7 @@ import java.util.concurrent.Executors; import com.seibel.lod.enums.DistanceGenerationMode; import com.seibel.lod.enums.LodDetail; import com.seibel.lod.handlers.LodConfig; +import com.seibel.lod.objects.DataPoint; import com.seibel.lod.objects.LevelPos.LevelPos; import com.seibel.lod.objects.LodDimension; import com.seibel.lod.objects.LodWorld; @@ -152,7 +153,7 @@ public class LodBuilder short[] color; short height; short depth; - LevelPos levelPos = new LevelPos(); + LevelPos levelPos = new LevelPos((byte) 0,0,0); short[] data; for (int i = 0; i < detail.dataPointLengthCount * detail.dataPointLengthCount; i++) @@ -178,7 +179,7 @@ public class LodBuilder chunk.getPos().x * 16 + startX, chunk.getPos().z * 16 + startZ); levelPos.convert(detail.detailLevel); - data = new short[]{height, depth, color[0], color[1], color[2]}; + data = DataPoint.createDataPoint(height, depth, color[0], color[1], color[2]); lodDim.addData(levelPos, data, config.distanceGenerationMode, @@ -385,9 +386,9 @@ public class LodBuilder colorInt = getColorForBlock(x, z, blockState, biome); } - red += (colorInt)&0xFF;; + red += (colorInt>>16)&0xFF; green += (colorInt>>8)&0xFF; - blue += (colorInt>>16)&0xFF; + blue += (colorInt)&0xFF; numbOfBlocks++; diff --git a/src/main/java/com/seibel/lod/objects/LevelPos/LevelPos.java b/src/main/java/com/seibel/lod/objects/LevelPos/LevelPos.java index dd396a097..1a5429d1a 100644 --- a/src/main/java/com/seibel/lod/objects/LevelPos/LevelPos.java +++ b/src/main/java/com/seibel/lod/objects/LevelPos/LevelPos.java @@ -87,7 +87,7 @@ public class LevelPos implements Cloneable, ImmutableLevelPos, MutableLevelPos { int width = 1 << (LodUtil.REGION_DETAIL_LEVEL - detailLevel); posX = Math.floorMod(posX, width); - posX = Math.floorMod(posZ, width); + posZ = Math.floorMod(posZ, width); } /** @@ -106,7 +106,7 @@ public class LevelPos implements Cloneable, ImmutableLevelPos, MutableLevelPos { detailLevel = newDetailLevel; posX = newPosX; - posX = newPosZ; + posZ = newPosZ; } public RegionPos getRegionPos() diff --git a/src/main/java/com/seibel/lod/objects/LodDimension.java b/src/main/java/com/seibel/lod/objects/LodDimension.java index 0507b3428..5a5d481e1 100644 --- a/src/main/java/com/seibel/lod/objects/LodDimension.java +++ b/src/main/java/com/seibel/lod/objects/LodDimension.java @@ -413,7 +413,7 @@ public class LodDimension LodRegion region = getRegion(levelPos); - boolean nodeAdded = region.setData(levelPos, lodDataPoint, generationMode.complexity); + boolean nodeAdded = region.addData(levelPos, lodDataPoint, generationMode.complexity); // only save valid LODs to disk if (!dontSave && fileHandler != null) { diff --git a/src/main/java/com/seibel/lod/objects/LodRegion.java b/src/main/java/com/seibel/lod/objects/LodRegion.java index 42fbf6d04..0d9472c46 100644 --- a/src/main/java/com/seibel/lod/objects/LodRegion.java +++ b/src/main/java/com/seibel/lod/objects/LodRegion.java @@ -128,7 +128,7 @@ public class LodRegion implements Serializable * @param generationType * @return */ - public boolean setData(LevelPos levelPos, short[] dataPoint, byte generationType) + public boolean addData(LevelPos levelPos, short[] dataPoint, byte generationType) { levelPos.performRegionModule(); if ((this.generationType[levelPos.detailLevel][levelPos.posX][levelPos.posZ] == 0) || (generationType >= this.generationType[levelPos.detailLevel][levelPos.posX][levelPos.posZ])) @@ -138,11 +138,11 @@ public class LodRegion implements Serializable if (this.dataExistence[levelPos.detailLevel][levelPos.posX][levelPos.posZ]) numberOfPoints++; //add the node data - this.height[levelPos.detailLevel][levelPos.posX][levelPos.posZ] = dataPoint[0]; - this.depth[levelPos.detailLevel][levelPos.posX][levelPos.posZ] = dataPoint[1]; - this.colors[levelPos.detailLevel][levelPos.posX][levelPos.posZ][0] = (byte) (dataPoint[2] - 128); - this.colors[levelPos.detailLevel][levelPos.posX][levelPos.posZ][1] = (byte) (dataPoint[3] - 128); - this.colors[levelPos.detailLevel][levelPos.posX][levelPos.posZ][2] = (byte) (dataPoint[4] - 128); + this.height[levelPos.detailLevel][levelPos.posX][levelPos.posZ] = DataPoint.getHeight(dataPoint); + this.depth[levelPos.detailLevel][levelPos.posX][levelPos.posZ] = DataPoint.getDepth(dataPoint); + this.colors[levelPos.detailLevel][levelPos.posX][levelPos.posZ][0] = (byte) (DataPoint.getRed(dataPoint) - 128); + this.colors[levelPos.detailLevel][levelPos.posX][levelPos.posZ][1] = (byte) (DataPoint.getGreen(dataPoint) - 128); + this.colors[levelPos.detailLevel][levelPos.posX][levelPos.posZ][2] = (byte) (DataPoint.getBlue(dataPoint) - 128); this.generationType[levelPos.detailLevel][levelPos.posX][levelPos.posZ] = generationType; this.dataExistence[levelPos.detailLevel][levelPos.posX][levelPos.posZ] = true; return true;