From fa0c903c0fb259f4b07038cde5224c593c136455 Mon Sep 17 00:00:00 2001 From: Sollace Date: Fri, 6 Oct 2023 00:45:48 +0100 Subject: [PATCH] Fixed magic not rendering for items held by other entities --- .../client/render/LevitatingItemRenderer.java | 45 ++++++++++--------- .../entity/feature/HeldItemFeature.java | 1 + 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/minelittlepony/client/render/LevitatingItemRenderer.java b/src/main/java/com/minelittlepony/client/render/LevitatingItemRenderer.java index cb774677..6f8c260a 100644 --- a/src/main/java/com/minelittlepony/client/render/LevitatingItemRenderer.java +++ b/src/main/java/com/minelittlepony/client/render/LevitatingItemRenderer.java @@ -1,7 +1,7 @@ package com.minelittlepony.client.render; +import com.minelittlepony.api.config.PonyConfig; import com.minelittlepony.api.pony.IPony; -import com.minelittlepony.client.MineLittlePony; import com.minelittlepony.client.util.render.RenderLayerUtil; import org.jetbrains.annotations.Nullable; @@ -11,7 +11,6 @@ import net.minecraft.client.render.item.ItemRenderer; import net.minecraft.client.render.model.json.ModelTransformationMode; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.CrossbowItem; import net.minecraft.item.ItemStack; import net.minecraft.screen.PlayerScreenHandler; @@ -37,32 +36,36 @@ public class LevitatingItemRenderer { */ public void renderItem(ItemRenderer itemRenderer, @Nullable LivingEntity entity, ItemStack stack, ModelTransformationMode mode, boolean left, MatrixStack matrix, VertexConsumerProvider renderContext, @Nullable World world, int lightUv, int posLong) { - if (entity instanceof PlayerEntity && (mode.isFirstPerson() || mode == ModelTransformationMode.THIRD_PERSON_LEFT_HAND || mode == ModelTransformationMode.THIRD_PERSON_RIGHT_HAND)) { + if (mode.isFirstPerson() + || mode == ModelTransformationMode.THIRD_PERSON_LEFT_HAND + || mode == ModelTransformationMode.THIRD_PERSON_RIGHT_HAND + ) { + IPony.getManager().getPony(entity).ifPresentOrElse(pony -> { + matrix.push(); - IPony pony = IPony.getManager().getPony((PlayerEntity)entity); + boolean doMagic = PonyConfig.getInstance().fpsmagic.get() && pony.hasMagic(); - matrix.push(); + if (doMagic && mode.isFirstPerson()) { + setupPerspective(itemRenderer, entity, stack, left, matrix); + } - boolean doMagic = MineLittlePony.getInstance().getConfig().fpsmagic.get() && pony.hasMagic(); + itemRenderer.renderItem(entity, stack, mode, left, matrix, renderContext, world, lightUv, OverlayTexture.DEFAULT_UV, posLong); - if (doMagic && mode.isFirstPerson()) { - setupPerspective(itemRenderer, entity, stack, left, matrix); - } + if (doMagic) { + VertexConsumerProvider interceptedContext = getProvider(pony, renderContext); - itemRenderer.renderItem(entity, stack, mode, left, matrix, renderContext, world, lightUv, OverlayTexture.DEFAULT_UV, posLong); + matrix.scale(1.1F, 1.1F, 1.1F); + matrix.translate(0.015F, 0.01F, 0.01F); - if (doMagic) { - VertexConsumerProvider interceptedContext = getProvider(pony, renderContext); + itemRenderer.renderItem(entity, stack, mode, left, matrix, interceptedContext, world, lightUv, OverlayTexture.DEFAULT_UV, posLong); + matrix.translate(-0.03F, -0.02F, -0.02F); + itemRenderer.renderItem(entity, stack, mode, left, matrix, interceptedContext, world, lightUv, OverlayTexture.DEFAULT_UV, posLong); + } - matrix.scale(1.1F, 1.1F, 1.1F); - matrix.translate(0.015F, 0.01F, 0.01F); - - itemRenderer.renderItem(entity, stack, mode, left, matrix, interceptedContext, world, lightUv, OverlayTexture.DEFAULT_UV, posLong); - matrix.translate(-0.03F, -0.02F, -0.02F); - itemRenderer.renderItem(entity, stack, mode, left, matrix, interceptedContext, world, lightUv, OverlayTexture.DEFAULT_UV, posLong); - } - - matrix.pop(); + matrix.pop(); + }, () -> { + itemRenderer.renderItem(entity, stack, mode, left, matrix, renderContext, world, lightUv, OverlayTexture.DEFAULT_UV, posLong); + }); } else { itemRenderer.renderItem(entity, stack, mode, left, matrix, renderContext, world, lightUv, OverlayTexture.DEFAULT_UV, posLong); } diff --git a/src/main/java/com/minelittlepony/client/render/entity/feature/HeldItemFeature.java b/src/main/java/com/minelittlepony/client/render/entity/feature/HeldItemFeature.java index 35b6c063..c6b46280 100644 --- a/src/main/java/com/minelittlepony/client/render/entity/feature/HeldItemFeature.java +++ b/src/main/java/com/minelittlepony/client/render/entity/feature/HeldItemFeature.java @@ -37,6 +37,7 @@ public class HeldItemFeature & return main ? entity.getMainHandStack() : entity.getOffHandStack(); } + @Override public void render(MatrixStack stack, VertexConsumerProvider renderContext, int lightUv, T entity, float limbDistance, float limbAngle, float tickDelta, float age, float headYaw, float headPitch) {