32 lines
1.4 KiB
Java
32 lines
1.4 KiB
Java
|
|
package moe.nea.firmament.mixins.custommodels;
|
|
|
|
import com.google.gson.JsonObject;
|
|
import com.google.gson.JsonPrimitive;
|
|
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
|
|
import com.llamalad7.mixinextras.sugar.Local;
|
|
import moe.nea.firmament.features.texturepack.JsonUnbakedModelFirmExtra;
|
|
import moe.nea.firmament.features.texturepack.TintOverrides;
|
|
import net.minecraft.client.render.model.json.JsonUnbakedModel;
|
|
import net.minecraft.util.Identifier;
|
|
import org.spongepowered.asm.mixin.Mixin;
|
|
import org.spongepowered.asm.mixin.injection.At;
|
|
|
|
@Mixin(JsonUnbakedModel.Deserializer.class)
|
|
public class PatchJsonUnbakedModelDeserializer {
|
|
@ModifyReturnValue(method = "deserialize(Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lnet/minecraft/client/render/model/json/JsonUnbakedModel;",
|
|
at = @At("RETURN"))
|
|
private JsonUnbakedModel addHeadModel(JsonUnbakedModel original, @Local JsonObject jsonObject) {
|
|
var headModel = jsonObject.get("firmament:head_model");
|
|
var extra = ((JsonUnbakedModelFirmExtra) original);
|
|
if (headModel instanceof JsonPrimitive prim && prim.isString()) {
|
|
extra.setHeadModel_firmament(Identifier.of(prim.getAsString()));
|
|
}
|
|
var tintOverrides = jsonObject.get("firmament:tint_overrides");
|
|
if (tintOverrides instanceof JsonObject object) {
|
|
extra.setTintOverrides_firmament(TintOverrides.Companion.parse(object));
|
|
}
|
|
return original;
|
|
}
|
|
}
|