diff --git a/src/main/java/de/bixilon/minosoft/data/world/Chunk.kt b/src/main/java/de/bixilon/minosoft/data/world/Chunk.kt index 668d99ac1..278d947f8 100644 --- a/src/main/java/de/bixilon/minosoft/data/world/Chunk.kt +++ b/src/main/java/de/bixilon/minosoft/data/world/Chunk.kt @@ -73,6 +73,8 @@ class Chunk( operator fun get(position: Vec3i): BlockState? = get(position.x, position.y, position.z) + fun unsafeGet(position: Vec3i): BlockState? = unsafeGet(position.x, position.y, position.z) + fun set(x: Int, y: Int, z: Int, blockState: BlockState?, blockEntity: BlockEntity? = null) { val section = getOrPut(y.sectionHeight) ?: return section.blocks[x, y.inSectionHeight, z] = blockState diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/world/preparer/cull/FluidCullSectionPreparer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/world/preparer/cull/FluidCullSectionPreparer.kt index b2240dc69..5aa2a5e17 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/world/preparer/cull/FluidCullSectionPreparer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/world/preparer/cull/FluidCullSectionPreparer.kt @@ -61,11 +61,7 @@ class FluidCullSectionPreparer( // ToDo: Should this be combined with the solid renderer (but we'd need to render faces twice, because of cullface) override fun prepareFluid(chunkPosition: Vec2i, sectionHeight: Int, chunk: Chunk, section: ChunkSection, neighbours: Array, neighbourChunks: Array, mesh: WorldMesh) { - - val isLowestSection = sectionHeight == chunk.lowestSection - val isHighestSection = sectionHeight == chunk.highestSection val blocks = section.blocks - val sectionLight = section.light section.acquire() neighbours.acquire() @@ -284,11 +280,11 @@ class FluidCullSectionPreparer( continue } val inChunkPosition = blockPosition.inChunkPosition - if (fluid.matches(lastChunk[inChunkPosition + Directions.UP])) { + if (fluid.matches(lastChunk.unsafeGet(inChunkPosition + Directions.UP))) { return 1.0f } - val blockState = lastChunk[inChunkPosition] + val blockState = lastChunk.unsafeGet(inChunkPosition) if (blockState == null) { count++ continue