From 42d135b98a39e7ea343ff68db55d3390affeac1a Mon Sep 17 00:00:00 2001 From: Moritz Zwerger Date: Sat, 7 Oct 2023 21:48:45 +0200 Subject: [PATCH] fix integrated block tests and don't replace block states --- .../blocks/factory/VerifyIntegratedBlockRegistry.kt | 2 +- .../registries/versions/registries/RegistryLoadingTest.kt | 4 ++-- .../protocol/packets/s2c/play/InitializeS2CPTest.kt | 2 +- .../minosoft/data/registries/blocks/BlockRegistry.kt | 8 +++++--- .../data/registries/blocks/types/dirt/GrassBlock.kt | 6 +++++- .../registries/registries/registry/BlockStateRegistry.kt | 2 +- 6 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/data/registries/blocks/factory/VerifyIntegratedBlockRegistry.kt b/src/integration-test/kotlin/de/bixilon/minosoft/data/registries/blocks/factory/VerifyIntegratedBlockRegistry.kt index 1f1b0060f..579cbcb05 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/data/registries/blocks/factory/VerifyIntegratedBlockRegistry.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/data/registries/blocks/factory/VerifyIntegratedBlockRegistry.kt @@ -154,7 +154,7 @@ object VerifyIntegratedBlockRegistry { continue } val parsed = PixLyzerBlock.deserialize(registries, identifier, value).unsafeCast() - registries.block.flattened(parsed, value, registries) + registries.block.flattened(parsed, value, registries, false) parsed.postInit(registries) parsed.inject(registries) diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/data/registries/versions/registries/RegistryLoadingTest.kt b/src/integration-test/kotlin/de/bixilon/minosoft/data/registries/versions/registries/RegistryLoadingTest.kt index 63cdf6718..888cf1a6c 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/data/registries/versions/registries/RegistryLoadingTest.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/data/registries/versions/registries/RegistryLoadingTest.kt @@ -20,7 +20,7 @@ import de.bixilon.minosoft.data.registries.blocks.MinecraftBlocks import de.bixilon.minosoft.data.registries.identified.Namespaces.minecraft import de.bixilon.minosoft.data.registries.item.MinecraftItems import de.bixilon.minosoft.data.registries.registries.Registries -import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_1_19_3 +import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_1_17 import de.bixilon.minosoft.protocol.versions.Version import de.bixilon.minosoft.protocol.versions.Versions import org.testng.Assert.assertEquals @@ -57,7 +57,7 @@ abstract class RegistryLoadingTest(val versionName: String) { } fun biome() { - if (version > V_1_19_3) return // biomes are datapack only in those versions -> empty registry + if (version >= V_1_17) throw SkipException("Biomes are datapack only") assertNotNull(registries.biome[minecraft("plains")]?.identifier) } diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/protocol/packets/s2c/play/InitializeS2CPTest.kt b/src/integration-test/kotlin/de/bixilon/minosoft/protocol/packets/s2c/play/InitializeS2CPTest.kt index 7ebbeff48..e3e5c3d8c 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/protocol/packets/s2c/play/InitializeS2CPTest.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/protocol/packets/s2c/play/InitializeS2CPTest.kt @@ -68,7 +68,7 @@ class InitializeS2CPTest { fun vanilla_1_7_10() { val packet = PacketReadingTestUtil.read("initialize/vanilla_1_7_10", "1.7.10", constructor = ::InitializeS2CP) assertEquals(packet.gamemode, Gamemodes.CREATIVE) - assertEquals(packet.dimension?.effects, OverworldEffects.identifier) + assertEquals(packet.dimension?.effects, OverworldEffects) assertNull(packet.registries) } } diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/BlockRegistry.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/BlockRegistry.kt index 5d71964f1..14b3d1806 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/BlockRegistry.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/BlockRegistry.kt @@ -83,7 +83,7 @@ class BlockRegistry( block.updateStates(states, default, properties.mapValues { it.value.toTypedArray() }) } - fun flattened(block: Block, data: JsonObject, registries: Registries) { + fun flattened(block: Block, data: JsonObject, registries: Registries, addBlockStates: Boolean) { val properties: MutableMap, MutableSet> = mutableMapOf() val states: MutableSet = ObjectOpenHashSet() @@ -92,7 +92,9 @@ class BlockRegistry( val state = if (block is BlockStateBuilder) block.buildState(settings) else AdvancedBlockState(block, settings) states += state - registries.blockState[stateId.toInt()] = state + if (addBlockStates) { + registries.blockState[stateId.toInt()] = state + } if (state !is PropertyBlockState) continue @@ -120,7 +122,7 @@ class BlockRegistry( } if (flattened) { - flattened(block, data, registries) + flattened(block, data, registries, true) } else { legacy(block, data, registries) } diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/dirt/GrassBlock.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/dirt/GrassBlock.kt index da764df32..b92b2927d 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/dirt/GrassBlock.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/dirt/GrassBlock.kt @@ -16,12 +16,16 @@ package de.bixilon.minosoft.data.registries.blocks.types.dirt import de.bixilon.minosoft.data.registries.blocks.factory.BlockFactory import de.bixilon.minosoft.data.registries.blocks.settings.BlockSettings import de.bixilon.minosoft.data.registries.blocks.types.legacy.FlatteningRenamedModel +import de.bixilon.minosoft.data.registries.blocks.types.properties.item.BlockWithItem import de.bixilon.minosoft.data.registries.blocks.types.properties.shape.special.FullOpaqueBlock import de.bixilon.minosoft.data.registries.identified.Namespaces.minecraft import de.bixilon.minosoft.data.registries.identified.ResourceLocation +import de.bixilon.minosoft.data.registries.item.items.Item +import de.bixilon.minosoft.data.registries.item.items.tool.shovel.ShovelRequirement import de.bixilon.minosoft.data.registries.registries.Registries -open class GrassBlock(identifier: ResourceLocation = Companion.identifier, settings: BlockSettings) : SnowyBlock(identifier, settings), FullOpaqueBlock, FlatteningRenamedModel { +open class GrassBlock(identifier: ResourceLocation = Companion.identifier, settings: BlockSettings) : SnowyBlock(identifier, settings), FullOpaqueBlock, FlatteningRenamedModel, ShovelRequirement, BlockWithItem { + override val item: Item = this::item.inject(identifier) override val hardness get() = 0.6f override val legacyModelName get() = minecraft("grass") diff --git a/src/main/java/de/bixilon/minosoft/data/registries/registries/registry/BlockStateRegistry.kt b/src/main/java/de/bixilon/minosoft/data/registries/registries/registry/BlockStateRegistry.kt index 64cbbc067..dc19aa132 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/registries/registry/BlockStateRegistry.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/registries/registry/BlockStateRegistry.kt @@ -58,7 +58,7 @@ class BlockStateRegistry(var flattened: Boolean) : AbstractRegistry internal operator fun set(id: Int, state: BlockState) { val previous = idMap.put(id, state) if (previous != null) { - Log.log(LogMessageType.LOADING, LogLevels.WARN) { "Block $state just replaced $previous (id=$id)" } + Log.log(LogMessageType.LOADING, LogLevels.WARN) { "Block state $state just replaced $previous (id=$id)" } } }