diff --git a/src/main/java/de/bixilon/minosoft/data/world/chunk/ChunkSection.kt b/src/main/java/de/bixilon/minosoft/data/world/chunk/ChunkSection.kt index 8a59681c4..bbe27ab64 100644 --- a/src/main/java/de/bixilon/minosoft/data/world/chunk/ChunkSection.kt +++ b/src/main/java/de/bixilon/minosoft/data/world/chunk/ChunkSection.kt @@ -44,9 +44,8 @@ class ChunkSection( var neighbours: Array? = null fun tick(connection: PlayConnection, chunkPosition: Vec2i, sectionHeight: Int, random: Random) { - if (blockEntities.isEmpty) { - return - } + if (blockEntities.isEmpty) return + val offset = Vec3i.of(chunkPosition, sectionHeight) val position = Vec3i() diff --git a/src/main/java/de/bixilon/minosoft/data/world/container/block/SectionOcclusion.kt b/src/main/java/de/bixilon/minosoft/data/world/container/block/SectionOcclusion.kt index 4297f7409..340e79335 100644 --- a/src/main/java/de/bixilon/minosoft/data/world/container/block/SectionOcclusion.kt +++ b/src/main/java/de/bixilon/minosoft/data/world/container/block/SectionOcclusion.kt @@ -26,6 +26,7 @@ class SectionOcclusion( private val provider: BlockSectionDataProvider, ) { private var occlusion = EMPTY + private var calculate = false fun clear(notify: Boolean) { update(EMPTY, notify) @@ -39,6 +40,8 @@ class SectionOcclusion( } fun recalculate(notify: Boolean) { + if (!calculate) return + if (provider.isEmpty) { clear(notify) return @@ -180,10 +183,14 @@ class SectionOcclusion( if (`in` == out) { return false } - return occlusion[CubeDirections.getIndex(`in`, out)] + return isOccluded(CubeDirections.getIndex(`in`, out)) } fun isOccluded(index: Int): Boolean { + if (!calculate) { + calculate = true + recalculate(false) + } return occlusion[index] }