From 82f52cd6ec7d61d1ca3ef36ae70d418457cf525c Mon Sep 17 00:00:00 2001 From: Brian Neumann-Fopiano Date: Mon, 28 Sep 2026 11:55:13 -0400 Subject: [PATCH] Skip empty chunk compositions - Queued and demand compositions of chunks the occupancy index already knows are empty return without loading tiles --- .../iris/generation/hydrology/HydrologyTileCache.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/art/arcane/iris/generation/hydrology/HydrologyTileCache.java b/core/src/main/java/art/arcane/iris/generation/hydrology/HydrologyTileCache.java index e37b0c67c..e4c202f5c 100644 --- a/core/src/main/java/art/arcane/iris/generation/hydrology/HydrologyTileCache.java +++ b/core/src/main/java/art/arcane/iris/generation/hydrology/HydrologyTileCache.java @@ -933,11 +933,17 @@ public final class HydrologyTileCache implements AutoCloseable { } private ChunkColumns composeChunkColumns(int chunkX, int chunkZ) { + if (knownEmpty(chunkX, chunkZ)) { + return ChunkColumns.empty(chunkX, chunkZ); + } ArrayList relevantKeys = relevantKeys(chunkX, chunkZ); return composeChunkColumns(chunkX, chunkZ, relevantKeys, tiles(relevantKeys)); } private ChunkColumns composeChunkColumnsInline(int chunkX, int chunkZ, long epoch) { + if (knownEmpty(chunkX, chunkZ)) { + return ChunkColumns.empty(chunkX, chunkZ); + } ArrayList keys = relevantKeys(chunkX, chunkZ); ArrayList snapshots = new ArrayList<>(keys.size()); for (HydrologyTileKey key : keys) { @@ -1209,7 +1215,7 @@ public final class HydrologyTileCache implements AutoCloseable { private ChunkCoordinate pollQuery() { while (!queriedChunks.isEmpty()) { ChunkCoordinate chunk = queriedChunks.getFirst(); - if (composedChunks.getIfPresent(chunk.packed()) == null) { + if (composedChunks.getIfPresent(chunk.packed()) == null && !knownEmpty(chunk.x(), chunk.z())) { return chunk; } queriedChunks.removeFirst();