diff --git a/src/main/java/com/seibel/lod/builders/worldGeneration/LodWorldGenerator.java b/src/main/java/com/seibel/lod/builders/worldGeneration/LodWorldGenerator.java index 6a755bc85..9538e3bb6 100644 --- a/src/main/java/com/seibel/lod/builders/worldGeneration/LodWorldGenerator.java +++ b/src/main/java/com/seibel/lod/builders/worldGeneration/LodWorldGenerator.java @@ -166,14 +166,20 @@ public class LodWorldGenerator System.out.println(levelPos); nodeToGenerate.remove(levelPos); nodeToGenerateListNear.remove(levelPos); + nodeToGenerateListFar.remove(levelPos); - maxDistance = levelPos.maxDistance( playerBlockPosRounded.getX(), playerBlockPosRounded.getZ()); + maxDistance = levelPos.maxDistance( + playerBlockPosRounded.getX(), + playerBlockPosRounded.getZ()); circle = DetailDistanceUtil.getDistanceGenerationInverse(maxDistance); generationRequestList.add(new GenerationRequest(levelPos, DetailDistanceUtil.getDistanceGenerationMode(circle), DetailDistanceUtil.getLodDetail(circle))); requesting--; if (requestingFar > 0 && !nodeToGenerateListFar.isEmpty()) { levelPos = nodeToGenerateListFar.first(); + nodeToGenerate.remove(levelPos); + nodeToGenerateListNear.remove(levelPos); + nodeToGenerateListFar.remove(levelPos); if (levelPos.detailLevel >= farDetail) { maxDistance = levelPos.maxDistance( playerBlockPosRounded.getX(), playerBlockPosRounded.getZ()); diff --git a/src/main/java/com/seibel/lod/objects/LodRegion.java b/src/main/java/com/seibel/lod/objects/LodRegion.java index 17af2414b..9ab10c142 100644 --- a/src/main/java/com/seibel/lod/objects/LodRegion.java +++ b/src/main/java/com/seibel/lod/objects/LodRegion.java @@ -229,7 +229,7 @@ public class LodRegion implements Serializable if (!doesDataExist(levelPos)) { num++; - levelPos.changeParameters(levelPos.detailLevel, levelPos.posX + regionPosX * childSize, levelPos.posZ + regionPosZ * childSize); + levelPos.changeParameters((byte) (detailLevel - 1), childPosX + x + regionPosX * childSize, childPosZ + z + regionPosZ * childSize); if(dataToGenerate.containsKey(levelPos)){ dataToGenerate.get(levelPos).setTrue(); }else @@ -255,9 +255,11 @@ public class LodRegion implements Serializable } else //now we keep exploring the top right child { - levelPos.changeParameters((byte) (detailLevel-1), levelPos.posX*2 + regionPosX * childSize, levelPos.posZ*2 + regionPosZ * childSize); + levelPos.changeParameters(detailLevel, posX, posZ); + levelPos.convert((byte) (detailLevel - 1)); if (!doesDataExist(levelPos)) { + levelPos.changeParameters(levelPos.detailLevel, levelPos.posX + regionPosX * childSize, levelPos.posZ + regionPosZ * childSize); if(dataToGenerate.containsKey(levelPos)){ dataToGenerate.get(levelPos).setTrue(); }else @@ -345,7 +347,6 @@ public class LodRegion implements Serializable dataToRender.put(new LevelPos(detailLevel, posX + regionPosX * size, posZ + regionPosZ * size), new MutableBoolean(true)); } } - return; }