From b388253a49e74d9fdf87489c38d445f87b0be3e4 Mon Sep 17 00:00:00 2001 From: Moritz Zwerger Date: Tue, 16 Jan 2024 09:09:02 +0100 Subject: [PATCH] fix wrong entity type fixer --- .../minosoft/data/registries/registries/Registries.kt | 5 +++-- .../data/registries/registries/registry/Registry.kt | 9 ++++++--- src/main/java/de/bixilon/minosoft/datafixer/DataFixer.kt | 3 ++- .../resources/assets/minosoft/fixer/entity_type.json | 2 +- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/data/registries/registries/Registries.kt b/src/main/java/de/bixilon/minosoft/data/registries/registries/Registries.kt index 18281466b..5923d6970 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/registries/Registries.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/registries/Registries.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2023 Moritz Zwerger + * Copyright (C) 2020-2024 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -55,6 +55,7 @@ import de.bixilon.minosoft.data.registries.shapes.ShapeRegistry import de.bixilon.minosoft.data.registries.sound.SoundGroup import de.bixilon.minosoft.data.registries.statistics.Statistic import de.bixilon.minosoft.datafixer.enumeration.EntityDataTypesFixer +import de.bixilon.minosoft.datafixer.rls.EntityTypeFixer import de.bixilon.minosoft.datafixer.rls.RegistryFixer.fixRegistry import de.bixilon.minosoft.protocol.packets.c2s.play.entity.EntityActionC2SP import de.bixilon.minosoft.protocol.packets.s2c.play.title.TitleS2CF @@ -117,7 +118,7 @@ class Registries( val blockState = BlockStateRegistry(false) val entityDataIndexMap: MutableMap = mutableMapOf() - val entityType: Registry = register("entity_type", Registry(codec = EntityType)) + val entityType: Registry = register("entity_type", Registry(codec = EntityType, fixer = EntityTypeFixer)) val entityObjectType: Registry = register("entity_object_type", Registry(codec = EntityObjectType)) val damageType: Registry = register("damage_type", Registry(codec = DamageType)) diff --git a/src/main/java/de/bixilon/minosoft/data/registries/registries/registry/Registry.kt b/src/main/java/de/bixilon/minosoft/data/registries/registries/registry/Registry.kt index 694b90ad3..a49bb7022 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/registries/registry/Registry.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/registries/registry/Registry.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2023 Moritz Zwerger + * Copyright (C) 2020-2024 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -23,6 +23,7 @@ import de.bixilon.minosoft.data.registries.identified.ResourceLocation import de.bixilon.minosoft.data.registries.integrated.IntegratedRegistry import de.bixilon.minosoft.data.registries.registries.Registries import de.bixilon.minosoft.data.registries.registries.registry.codec.IdentifierCodec +import de.bixilon.minosoft.datafixer.rls.ResourceLocationFixer import de.bixilon.minosoft.protocol.versions.Version import de.bixilon.minosoft.util.KUtil.toResourceLocation import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap @@ -34,6 +35,7 @@ open class Registry( val integrated: IntegratedRegistry? = null, val metaType: MetaTypes = MetaTypes.NONE, var flattened: Boolean = false, + private val fixer: ResourceLocationFixer? = null, ) : AbstractRegistry { protected val idValueMap: Int2ObjectOpenHashMap = Int2ObjectOpenHashMap() protected val valueIdMap: Object2IntOpenHashMap = Object2IntOpenHashMap() @@ -60,7 +62,8 @@ open class Registry( } open operator fun get(resourceLocation: ResourceLocation): T? { - return resourceLocationMap[resourceLocation] ?: parent?.get(resourceLocation) + val fixed = fixer?.fix(resourceLocation) ?: resourceLocation + return resourceLocationMap[fixed] ?: parent?.get(fixed) } open operator fun set(any: Any, value: T) { @@ -129,7 +132,7 @@ open class Registry( } override fun add(identifier: ResourceLocation, id: Int?, data: JsonObject, version: Version, registries: Registries?): T? { - val item = deserialize(identifier, data, version, registries) ?: return null + val item = deserialize(fixer?.fix(identifier) ?: identifier, data, version, registries) ?: return null add(identifier, id, item) diff --git a/src/main/java/de/bixilon/minosoft/datafixer/DataFixer.kt b/src/main/java/de/bixilon/minosoft/datafixer/DataFixer.kt index 8ec82296c..ff64d7a8b 100644 --- a/src/main/java/de/bixilon/minosoft/datafixer/DataFixer.kt +++ b/src/main/java/de/bixilon/minosoft/datafixer/DataFixer.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2023 Moritz Zwerger + * Copyright (C) 2020-2024 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -19,6 +19,7 @@ import de.bixilon.minosoft.datafixer.rls.* object DataFixer { val fixer = listOf( EntityDataTypesFixer, + EntityTypeFixer, BlockEntityFixer, EntityAttributeFixer, diff --git a/src/main/resources/assets/minosoft/fixer/entity_type.json b/src/main/resources/assets/minosoft/fixer/entity_type.json index 4e229c49b..a69e03b18 100644 --- a/src/main/resources/assets/minosoft/fixer/entity_type.json +++ b/src/main/resources/assets/minosoft/fixer/entity_type.json @@ -1,3 +1,3 @@ { - "zombie_pigman": "zombified_pigman" + "zombie_pigman": "zombified_piglin" }