diff options
Diffstat (limited to 'src/main/java/moe/nea/firmament/mixins/custommodels/ApplyHeadModelInItemRenderer.java')
-rw-r--r-- | src/main/java/moe/nea/firmament/mixins/custommodels/ApplyHeadModelInItemRenderer.java | 40 |
1 files changed, 21 insertions, 19 deletions
diff --git a/src/main/java/moe/nea/firmament/mixins/custommodels/ApplyHeadModelInItemRenderer.java b/src/main/java/moe/nea/firmament/mixins/custommodels/ApplyHeadModelInItemRenderer.java index 64b358f..ffa59c6 100644 --- a/src/main/java/moe/nea/firmament/mixins/custommodels/ApplyHeadModelInItemRenderer.java +++ b/src/main/java/moe/nea/firmament/mixins/custommodels/ApplyHeadModelInItemRenderer.java @@ -1,33 +1,35 @@ package moe.nea.firmament.mixins.custommodels; -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.llamalad7.mixinextras.sugar.Local; +import com.llamalad7.mixinextras.sugar.ref.LocalRef; import moe.nea.firmament.features.texturepack.BakedModelExtra; +import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.item.ItemRenderer; import net.minecraft.client.render.model.BakedModel; -import net.minecraft.client.render.model.json.ModelTransformationMode; -import net.minecraft.entity.LivingEntity; +import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; -import net.minecraft.world.World; +import net.minecraft.item.ModelTransformationMode; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(ItemRenderer.class) public class ApplyHeadModelInItemRenderer { - @WrapOperation(method = "renderItem(Lnet/minecraft/entity/LivingEntity;Lnet/minecraft/item/ItemStack;Lnet/minecraft/client/render/model/json/ModelTransformationMode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;Lnet/minecraft/world/World;III)V", - at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/item/ItemRenderer;getModel(Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/entity/LivingEntity;I)Lnet/minecraft/client/render/model/BakedModel;")) - private BakedModel applyHeadModel(ItemRenderer instance, ItemStack stack, World world, LivingEntity entity, int seed, Operation<BakedModel> original, - @Local(argsOnly = true) ModelTransformationMode modelTransformationMode) { - var model = original.call(instance, stack, world, entity, seed); - if (modelTransformationMode == ModelTransformationMode.HEAD - && model instanceof BakedModelExtra extra) { - var headModel = extra.getHeadModel_firmament(); - if (headModel != null) { - model = headModel; - } - } - return model; - } + @Inject(method = "renderItem(Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ModelTransformationMode;ZLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;IILnet/minecraft/client/render/model/BakedModel;ZF)V", + at = @At("HEAD")) + private void applyHeadModel(ItemStack stack, ModelTransformationMode transformationMode, boolean leftHanded, + MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay, + BakedModel model, boolean useInventoryModel, float z, CallbackInfo ci, + @Local(argsOnly = true) LocalRef<BakedModel> modelMut + ) { + if (transformationMode == ModelTransformationMode.HEAD + && model instanceof BakedModelExtra extra) { + var headModel = extra.getHeadModel_firmament(); + if (headModel != null) { + modelMut.set(headModel); + } + } + } } |