diff options
author | Linnea Gräf <nea@nea.moe> | 2024-12-31 16:50:19 +0100 |
---|---|---|
committer | Linnea Gräf <nea@nea.moe> | 2024-12-31 16:50:19 +0100 |
commit | 533fd68e2be8236c842f53fd0cafa52341226226 (patch) | |
tree | 81a466f33316468ea9586ff9c5608e6fa82cdade /src/texturePacks/java/moe/nea/firmament/features/texturepack/PredicateModel.kt | |
parent | 1aa9a14eec09d2f2417806babcfc5bdf2c68a7fb (diff) | |
download | Firmament-533fd68e2be8236c842f53fd0cafa52341226226.tar.gz Firmament-533fd68e2be8236c842f53fd0cafa52341226226.tar.bz2 Firmament-533fd68e2be8236c842f53fd0cafa52341226226.zip |
feat: Add forward port for legacy predicates
Diffstat (limited to 'src/texturePacks/java/moe/nea/firmament/features/texturepack/PredicateModel.kt')
-rw-r--r-- | src/texturePacks/java/moe/nea/firmament/features/texturepack/PredicateModel.kt | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/texturePacks/java/moe/nea/firmament/features/texturepack/PredicateModel.kt b/src/texturePacks/java/moe/nea/firmament/features/texturepack/PredicateModel.kt index e21e69d..b52e96b 100644 --- a/src/texturePacks/java/moe/nea/firmament/features/texturepack/PredicateModel.kt +++ b/src/texturePacks/java/moe/nea/firmament/features/texturepack/PredicateModel.kt @@ -1,17 +1,22 @@ package moe.nea.firmament.features.texturepack +import com.google.gson.JsonObject import com.mojang.serialization.Codec import com.mojang.serialization.MapCodec import com.mojang.serialization.codecs.RecordCodecBuilder import net.minecraft.client.item.ItemModelManager import net.minecraft.client.render.item.ItemRenderState +import net.minecraft.client.render.item.model.BasicItemModel import net.minecraft.client.render.item.model.ItemModel import net.minecraft.client.render.item.model.ItemModelTypes +import net.minecraft.client.render.item.tint.TintSource import net.minecraft.client.render.model.ResolvableModel import net.minecraft.client.world.ClientWorld import net.minecraft.entity.LivingEntity import net.minecraft.item.ItemStack import net.minecraft.item.ModelTransformationMode +import net.minecraft.util.Identifier +import moe.nea.firmament.features.texturepack.predicates.AndPredicate class PredicateModel { data class Baked( @@ -46,6 +51,22 @@ class PredicateModel { val overrides: List<Override>, ) : ItemModel.Unbaked { companion object { + @JvmStatic + fun fromLegacyJson(jsonObject: JsonObject, fallback: ItemModel.Unbaked): ItemModel.Unbaked { + val legacyOverrides = jsonObject.getAsJsonArray("overrides") ?: return fallback + val newOverrides = ArrayList<Override>() + for (legacyOverride in legacyOverrides) { + legacyOverride as JsonObject + val overrideModel = Identifier.tryParse(legacyOverride.get("model")?.asString ?: continue) ?: continue + val predicate = CustomModelOverrideParser.parsePredicates(legacyOverride.getAsJsonObject("predicate")) + newOverrides.add(Override( + BasicItemModel.Unbaked(overrideModel, listOf()), + AndPredicate(predicate.toTypedArray()) + )) + } + return Unbaked(fallback, newOverrides) + } + val OVERRIDE_CODEC: Codec<Override> = RecordCodecBuilder.create { it.group( ItemModelTypes.CODEC.fieldOf("model").forGetter(Override::model), |