From b3a34c0cf021a6f00777f79e6b8b489aa1f2a440 Mon Sep 17 00:00:00 2001 From: Moritz Zwerger Date: Tue, 31 Oct 2023 23:22:26 +0100 Subject: [PATCH] fix chest renderer in <1.13 --- .../gui/rendering/chunk/mesher/SolidSectionMesherTest.kt | 2 +- .../entities/block/container/storage/ChestBlockEntity.kt | 8 ++++++-- .../data/registries/blocks/state/PropertyBlockState.kt | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/gui/rendering/chunk/mesher/SolidSectionMesherTest.kt b/src/integration-test/kotlin/de/bixilon/minosoft/gui/rendering/chunk/mesher/SolidSectionMesherTest.kt index 9ef2ead62..7c2764c7e 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/gui/rendering/chunk/mesher/SolidSectionMesherTest.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/gui/rendering/chunk/mesher/SolidSectionMesherTest.kt @@ -312,7 +312,7 @@ class SolidSectionMesherTest { assertEquals(queue.blocks.size, 7) } // TODO: test sign block entity rendering - // TODO: test skylight (w/ heightmap), fast bedrock, camera offset + // TODO: test skylight (w/ heightmap), fast bedrock, camera offset, block random offset class TestQueue { val blocks: MutableSet = mutableSetOf() diff --git a/src/main/java/de/bixilon/minosoft/data/entities/block/container/storage/ChestBlockEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/block/container/storage/ChestBlockEntity.kt index b60628015..c3c97fdd7 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/block/container/storage/ChestBlockEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/block/container/storage/ChestBlockEntity.kt @@ -18,6 +18,8 @@ import de.bixilon.minosoft.data.entities.block.BlockEntityFactory import de.bixilon.minosoft.data.registries.blocks.properties.BlockProperties import de.bixilon.minosoft.data.registries.blocks.properties.ChestTypes import de.bixilon.minosoft.data.registries.blocks.state.BlockState +import de.bixilon.minosoft.data.registries.blocks.state.PropertyBlockState +import de.bixilon.minosoft.data.registries.blocks.types.entity.storage.WoodenChestBlock import de.bixilon.minosoft.data.registries.identified.Namespaces.minecraft import de.bixilon.minosoft.data.registries.identified.ResourceLocation import de.bixilon.minosoft.gui.rendering.RenderContext @@ -31,8 +33,10 @@ open class ChestBlockEntity(connection: PlayConnection) : StorageBlockEntity(con override var renderer: ChestRenderer? = null override fun createRenderer(context: RenderContext, state: BlockState, position: Vec3i, light: Int): ChestRenderer? { - val type: ChestTypes = state[BlockProperties.CHEST_TYPE] - if (type == ChestTypes.SINGLE) { + if (state.block !is WoodenChestBlock<*>) return null + if (state !is PropertyBlockState) return null + val type = state.properties[BlockProperties.CHEST_TYPE] + if (type == ChestTypes.SINGLE || type == null) { // TODO: type null: check neighbour blocks (<1.13) return SingleChestRenderer(this, context, state, position, context.models.skeletal[getSingleModel()] ?: return null, light) } diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/state/PropertyBlockState.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/state/PropertyBlockState.kt index c3c3263ee..247a5dda4 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/state/PropertyBlockState.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/state/PropertyBlockState.kt @@ -85,7 +85,7 @@ open class PropertyBlockState( } override fun get(property: BlockProperty): T { - val value = this.properties[property] ?: throw IllegalArgumentException("$this has not property $property") + val value = this.properties[property] ?: throw IllegalArgumentException("$this has no property $property") return value.unsafeCast() }