diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/QuadTree/LodQuadTree.java b/core/src/main/java/com/seibel/distanthorizons/core/render/QuadTree/LodQuadTree.java index f2ccbb8b4..1867601ea 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/QuadTree/LodQuadTree.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/QuadTree/LodQuadTree.java @@ -245,14 +245,19 @@ public class LodQuadTree extends QuadTree implements IDebugRen //===================// //region + // remove out of bounds sections this.setCenterBlockPos(playerPos, (renderSection) -> { - // removing out of bounds sections if (renderSection != null) { this.fullDataSourceProvider.removeRetrievalRequestIf((long genPos) -> DhSectionPos.contains(renderSection.pos, genPos)); - this.missingGenerationPosSet.remove(renderSection.pos); - this.queuedGenerationPosSet.remove(renderSection.pos); + + // unfortunately we have to fully go through each set + // since a removed position may be larger than the multiple generated positions + // it contains + this.missingGenerationPosSet.removeIf((Long genPos) -> DhSectionPos.contains(renderSection.pos, genPos)); + this.queuedGenerationPosSet.removeIf((Long genPos) -> DhSectionPos.contains(renderSection.pos, genPos)); + renderSection.close(); } });