diff --git a/src/main/java/com/seibel/lod/builders/LodBufferBuilder.java b/src/main/java/com/seibel/lod/builders/LodBufferBuilder.java
index b050f6b63..eaa842eb6 100644
--- a/src/main/java/com/seibel/lod/builders/LodBufferBuilder.java
+++ b/src/main/java/com/seibel/lod/builders/LodBufferBuilder.java
@@ -34,8 +34,6 @@ import com.seibel.lod.util.LodUtil;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.util.math.ChunkPos;
-import net.minecraft.world.biome.BiomeContainer;
-import net.minecraft.world.chunk.ChunkStatus;
import net.minecraft.world.server.ServerWorld;
import net.minecraftforge.common.WorldWorkerManager;
@@ -43,7 +41,7 @@ import net.minecraftforge.common.WorldWorkerManager;
* This object is used to create NearFarBuffer objects.
*
* @author James Seibel
- * @version 06-19-2021
+ * @version 07-25-2021
*/
public class LodBufferBuilder
{
@@ -90,15 +88,11 @@ public class LodBufferBuilder
}
- private BiomeContainer biomeContainer = null;
- private LodDimension previousDimension = null;
-
-
/**
* Create a thread to asynchronously generate LOD buffers
* centered around the given camera X and Z.
*
- * This method will write to the drawableNearBuffers and drawableFarBuffers.
+ * This method will write to the drawable near and far buffers.
*
* After the buildable buffers have been generated they must be
* swapped with the drawable buffers in the LodRenderer to be drawn.
@@ -113,12 +107,6 @@ public class LodBufferBuilder
if (buildableNearBuffer == null || buildableFarBuffer == null)
throw new IllegalStateException("generateLodBuffersAsync was called before the buildableNearBuffer and buildableFarBuffer were created.");
- if (previousDimension != lodDim)
- {
- biomeContainer = LodUtil.getServerWorldFromDimension(lodDim.dimension).getChunk(0, 0, ChunkStatus.EMPTY).getBiomes();
- previousDimension = lodDim;
- }
-
generatingBuffers = true;
@@ -209,8 +197,9 @@ public class LodBufferBuilder
// issue #40
// TODO optimize this code,
// using the purely optimized code above we can achieve close to
- // 100% CPU utilization, this code generally achieves 40 - 50 %
- // I'm sure there is a better data structure for this.
+ // 100% CPU utilization, this code generally achieves 40 - 50%
+ // after a certain point; and I'm sure there is a better data
+ // structure for this.
if (newDistance < minChunkDist)
{
// this chunk is closer, clear any previous
@@ -269,11 +258,12 @@ public class LodBufferBuilder
chunkGenIndex++;
}
}
-
- }
- // don't render this null chunk
+ } // lod null and can generate more chunks
+
+ // don't render this null/empty chunk
continue;
- }
+
+ } // lod null or empty
BufferBuilder currentBuffer = null;
@@ -290,6 +280,7 @@ public class LodBufferBuilder
}
}
+ // issue #19
// TODO add a way for a server side mod to generate chunks requested here
if(mc.hasSingleplayerServer())
{
@@ -315,7 +306,7 @@ public class LodBufferBuilder
numberOfChunksWaitingToGenerate.addAndGet(1);
- LodChunkGenWorker genWorker = new LodChunkGenWorker(chunkPos, renderer, lodChunkBuilder, this, lodDim, serverWorld, biomeContainer);
+ LodChunkGenWorker genWorker = new LodChunkGenWorker(chunkPos, renderer, lodChunkBuilder, this, lodDim, serverWorld);
WorldWorkerManager.addWorker(genWorker);
}
}
diff --git a/src/main/java/com/seibel/lod/builders/worldGeneration/LodChunkGenWorker.java b/src/main/java/com/seibel/lod/builders/worldGeneration/LodChunkGenWorker.java
index 45aaeb53d..7d849e3ea 100644
--- a/src/main/java/com/seibel/lod/builders/worldGeneration/LodChunkGenWorker.java
+++ b/src/main/java/com/seibel/lod/builders/worldGeneration/LodChunkGenWorker.java
@@ -43,7 +43,6 @@ import net.minecraft.util.WeightedList.Entry;
import net.minecraft.util.math.ChunkPos;
import net.minecraft.util.palette.UpgradeData;
import net.minecraft.world.biome.Biome;
-import net.minecraft.world.biome.BiomeContainer;
import net.minecraft.world.chunk.ChunkPrimer;
import net.minecraft.world.chunk.ChunkStatus;
import net.minecraft.world.chunk.IChunk;
@@ -70,7 +69,7 @@ import net.minecraftforge.common.WorldWorkerManager.IWorker;
* This is used to generate a LodChunk at a given ChunkPos.
*
* @author James Seibel
- * @version 7-9-2021
+ * @version 7-25-2021
*/
public class LodChunkGenWorker implements IWorker
{
@@ -88,12 +87,29 @@ public class LodChunkGenWorker implements IWorker
public LodChunkGenWorker(ChunkPos newPos, LodRenderer newLodRenderer,
LodChunkBuilder newLodBuilder, LodBufferBuilder newLodBufferBuilder,
- LodDimension newLodDimension, ServerWorld newServerWorld,
- BiomeContainer newBiomeContainer)
+ LodDimension newLodDimension, ServerWorld newServerWorld)
{
+ // just a few sanity checks
+ if (newPos == null)
+ throw new IllegalArgumentException("LodChunkGenWorker must have a non-null ChunkPos");
+
+ if (newLodRenderer == null)
+ throw new IllegalArgumentException("LodChunkGenWorker must have a non-null LodRenderer");
+
+ if (newLodBuilder == null)
+ throw new IllegalArgumentException("LodChunkGenThread requires a non-null LodChunkBuilder");
+
+ if (newLodBufferBuilder == null)
+ throw new IllegalArgumentException("LodChunkGenThread requires a non-null LodBufferBuilder");
+
+ if (newLodDimension == null)
+ throw new IllegalArgumentException("LodChunkGenThread requires a non-null LodDimension");
+
if (newServerWorld == null)
- throw new IllegalArgumentException("LodChunkGenWorker must have a non-null ServerWorld");
-
+ throw new IllegalArgumentException("LodChunkGenThread requires a non-null ServerWorld");
+
+
+
thread = new LodChunkGenThread(newPos, newLodRenderer,
newLodBuilder, newLodBufferBuilder,
newLodDimension, newServerWorld);
@@ -145,7 +161,7 @@ public class LodChunkGenWorker implements IWorker
public final LodDimension lodDim;
public final LodChunkBuilder lodChunkBuilder;
public final LodRenderer lodRenderer;
- private LodBufferBuilder lodBufferBuilder;
+ private final LodBufferBuilder lodBufferBuilder;
private ChunkPos pos;