Skip empty chunk compositions

- Queued and demand compositions of chunks the occupancy index already knows are empty return without loading tiles
This commit is contained in:
Brian Neumann-Fopiano committed 2026-09-28 11:55:13 -04:00
1 parent d59517aeaa
commit 82f52cd6ec
1 file changed
+7 -1
@@ -933,11 +933,17 @@ public final class HydrologyTileCache implements AutoCloseable {
} }
private ChunkColumns composeChunkColumns(int chunkX, int chunkZ) { private ChunkColumns composeChunkColumns(int chunkX, int chunkZ) {
if (knownEmpty(chunkX, chunkZ)) {
return ChunkColumns.empty(chunkX, chunkZ);
}
ArrayList<HydrologyTileKey> relevantKeys = relevantKeys(chunkX, chunkZ); ArrayList<HydrologyTileKey> relevantKeys = relevantKeys(chunkX, chunkZ);
return composeChunkColumns(chunkX, chunkZ, relevantKeys, tiles(relevantKeys)); return composeChunkColumns(chunkX, chunkZ, relevantKeys, tiles(relevantKeys));
} }
private ChunkColumns composeChunkColumnsInline(int chunkX, int chunkZ, long epoch) { private ChunkColumns composeChunkColumnsInline(int chunkX, int chunkZ, long epoch) {
if (knownEmpty(chunkX, chunkZ)) {
return ChunkColumns.empty(chunkX, chunkZ);
}
ArrayList<HydrologyTileKey> keys = relevantKeys(chunkX, chunkZ); ArrayList<HydrologyTileKey> keys = relevantKeys(chunkX, chunkZ);
ArrayList<HydrologyTile> snapshots = new ArrayList<>(keys.size()); ArrayList<HydrologyTile> snapshots = new ArrayList<>(keys.size());
for (HydrologyTileKey key : keys) { for (HydrologyTileKey key : keys) {
@@ -1209,7 +1215,7 @@ public final class HydrologyTileCache implements AutoCloseable {
private ChunkCoordinate pollQuery() { private ChunkCoordinate pollQuery() {
while (!queriedChunks.isEmpty()) { while (!queriedChunks.isEmpty()) {
ChunkCoordinate chunk = queriedChunks.getFirst(); ChunkCoordinate chunk = queriedChunks.getFirst();
if (composedChunks.getIfPresent(chunk.packed()) == null) { if (composedChunks.getIfPresent(chunk.packed()) == null && !knownEmpty(chunk.x(), chunk.z())) {
return chunk; return chunk;
} }
queriedChunks.removeFirst(); queriedChunks.removeFirst();