From 4e57f6a267f972b46503fd7926cd698b6339f641 Mon Sep 17 00:00:00 2001 From: Sollace Date: Fri, 13 Dec 2024 15:24:45 +0100 Subject: [PATCH] Fixed armour stand rendering --- .../model/entity/PonyArmourStandModel.java | 29 +++++++------- .../render/DebugBoundingBoxRenderer.java | 13 +------ .../render/entity/PlayerPonyRenderer.java | 14 ------- .../render/entity/PonyStandRenderer.java | 38 ++++++++++++++++--- .../render/entity/SkeleponyRenderer.java | 4 +- .../entity/feature/HeldItemFeature.java | 11 +++--- .../entity/state/PlayerPonyRenderState.java | 3 ++ .../render/entity/state/PonyRenderState.java | 6 +-- 8 files changed, 59 insertions(+), 59 deletions(-) diff --git a/src/main/java/com/minelittlepony/client/model/entity/PonyArmourStandModel.java b/src/main/java/com/minelittlepony/client/model/entity/PonyArmourStandModel.java index db29be49..243f3ac2 100644 --- a/src/main/java/com/minelittlepony/client/model/entity/PonyArmourStandModel.java +++ b/src/main/java/com/minelittlepony/client/model/entity/PonyArmourStandModel.java @@ -2,8 +2,8 @@ package com.minelittlepony.client.model.entity; import net.minecraft.client.model.ModelPart; import net.minecraft.client.render.entity.model.ArmorStandEntityModel; +import net.minecraft.client.render.entity.model.BipedEntityModel; import net.minecraft.client.render.entity.state.ArmorStandEntityRenderState; -import net.minecraft.entity.decoration.ArmorStandEntity; import com.minelittlepony.mson.util.PartUtil; @@ -13,19 +13,20 @@ public class PonyArmourStandModel extends ArmorStandEntityModel { } @Override - public void setAngles(ArmorStandEntityRenderState state) { - super.setAngles(state); - leftArm.visible = true; - rightArm.visible = true; - - if (state.leftLegRotation.equals(ArmorStandEntity.DEFAULT_LEFT_LEG_ROTATION)) { - PartUtil.copyAngles(leftArm, leftLeg); - leftLeg.pitch *= -1; - } - - if (state.rightLegRotation.equals(ArmorStandEntity.DEFAULT_RIGHT_LEG_ROTATION)) { - PartUtil.copyAngles(rightArm, rightLeg); - rightLeg.pitch *= -1; + public void copyTransforms(BipedEntityModel model) { + if (model instanceof PonyArmourStandModel) { + super.copyTransforms(model); + } else { + PartUtil.copyAngles(head, model.head); + PartUtil.copyAngles(rightArm, model.rightArm); + PartUtil.copyAngles(leftArm, model.leftArm); + PartUtil.copyAngles(rightArm, model.rightLeg); + PartUtil.copyAngles(leftLeg, model.leftLeg); } } + + @Override + public void setAngles(ArmorStandEntityRenderState state) { + super.setAngles(state); + } } diff --git a/src/main/java/com/minelittlepony/client/render/DebugBoundingBoxRenderer.java b/src/main/java/com/minelittlepony/client/render/DebugBoundingBoxRenderer.java index 4e0b2ed9..8cedddc8 100644 --- a/src/main/java/com/minelittlepony/client/render/DebugBoundingBoxRenderer.java +++ b/src/main/java/com/minelittlepony/client/render/DebugBoundingBoxRenderer.java @@ -4,7 +4,6 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.*; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.math.Box; -import net.minecraft.util.math.Vec3d; import com.minelittlepony.api.model.RenderPass; import com.minelittlepony.client.render.entity.state.PonyRenderState; @@ -21,18 +20,8 @@ public final class DebugBoundingBoxRenderer { return; } - Vec3d offset = state.positionOffset; - stack.push(); - stack.translate(-offset.x, -offset.y, -offset.z); - - double x = -state.x; - double y = -state.y; - double z = -state.z; - - VertexConsumer vertices = matrices.getBuffer(RenderLayer.getLines()); - - VertexRendering.drawBox(stack, vertices, getBoundingBox(state).offset(x, y, z), 1, 1, 0, 1); + VertexRendering.drawBox(stack, matrices.getBuffer(RenderLayer.getLines()), getBoundingBox(state).offset(-state.x, -state.y, -state.z), 1, 1, 0, 1); stack.pop(); } diff --git a/src/main/java/com/minelittlepony/client/render/entity/PlayerPonyRenderer.java b/src/main/java/com/minelittlepony/client/render/entity/PlayerPonyRenderer.java index 5ac3358f..47fdee75 100644 --- a/src/main/java/com/minelittlepony/client/render/entity/PlayerPonyRenderer.java +++ b/src/main/java/com/minelittlepony/client/render/entity/PlayerPonyRenderer.java @@ -101,23 +101,9 @@ public class PlayerPonyRenderer @Override public void render(PlayerEntityRenderState state, MatrixStack stack, VertexConsumerProvider vertices, int light) { - // EntityModelFeatures: We have to force it to use our models otherwise EMF overrides it and breaks pony rendering shadowRadius = ((PlayerPonyRenderState)state).attributes.size.shadowSize(); super.render(state, stack, vertices, light); DebugBoundingBoxRenderer.render((PlayerPonyRenderState)state, stack, vertices); - - // Translate the shadow position after everything is done - // (shadows are drawn after us) - /* - if (!entity.hasVehicle() && !entity.isSleeping()) { - float yaw = MathHelper.lerpAngleDegrees(tickDelta, entity.prevBodyYaw, entity.bodyYaw); - float l = entity.getWidth() / 2 * manager.getScaleFactor(); - - stack.multiply(RotationAxis.NEGATIVE_Y.rotationDegrees(yaw)); - stack.translate(0, 0, -l); - stack.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(yaw)); - } - */ } @Override diff --git a/src/main/java/com/minelittlepony/client/render/entity/PonyStandRenderer.java b/src/main/java/com/minelittlepony/client/render/entity/PonyStandRenderer.java index 6a395277..30c8e534 100644 --- a/src/main/java/com/minelittlepony/client/render/entity/PonyStandRenderer.java +++ b/src/main/java/com/minelittlepony/client/render/entity/PonyStandRenderer.java @@ -10,14 +10,14 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.Entity; import net.minecraft.entity.decoration.ArmorStandEntity; import net.minecraft.util.Identifier; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.RotationAxis; +import net.minecraft.util.math.*; import org.jetbrains.annotations.Nullable; import com.minelittlepony.api.model.ModelAttributes.Mode; import com.minelittlepony.api.pony.Pony; import com.minelittlepony.api.pony.PonyData; +import com.minelittlepony.api.pony.meta.SizePreset; import com.minelittlepony.client.model.ModelType; import com.minelittlepony.client.model.entity.PonyArmourStandModel; import com.minelittlepony.client.model.entity.race.EarthPonyModel; @@ -58,13 +58,40 @@ public class PonyStandRenderer extends LivingEntityRenderer extends PonyRen public void updateState(LivingEntity entity, PonyModel model, Pony pony, ModelAttributes.Mode mode) { super.updateState(entity, model, pony, mode); isAttacking = entity instanceof HostileEntity h && h.isAttacking(); - if (entity.getUuid().getLeastSignificantBits() % 3 == 0) { - race = Race.EARTH; - } + race = entity.getUuid().getLeastSignificantBits() % 3 == 0 ? Race.EARTH : Race.UNICORN; } @Override 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 72ab2d25..e2c20fe3 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 @@ -27,6 +27,12 @@ public class HeldItemFeature< this.context = context; } + @Deprecated + @Override + public final void render(MatrixStack matrices, VertexConsumerProvider vertices, int light, PlayerEntityRenderState state, float limbAngle, float limbDistance) { + render(matrices, vertices, light, (S)state, limbAngle, limbDistance); + } + public void render(MatrixStack matrices, VertexConsumerProvider vertices, int light, S state, float limbAngle, float limbDistance) { if (!state.leftHandStack.isEmpty() || !state.rightHandStack.isEmpty()) { M model = context.getEquineManager().getModels().body(); @@ -44,9 +50,4 @@ public class HeldItemFeature< matrices.pop(); } } - - @Override - public final void render(MatrixStack matrices, VertexConsumerProvider vertices, int light, PlayerEntityRenderState state, float limbAngle, float limbDistance) { - render(matrices, vertices, light, (S)state, limbAngle, limbDistance); - } } diff --git a/src/main/java/com/minelittlepony/client/render/entity/state/PlayerPonyRenderState.java b/src/main/java/com/minelittlepony/client/render/entity/state/PlayerPonyRenderState.java index 2590cf1b..185f4952 100644 --- a/src/main/java/com/minelittlepony/client/render/entity/state/PlayerPonyRenderState.java +++ b/src/main/java/com/minelittlepony/client/render/entity/state/PlayerPonyRenderState.java @@ -1,5 +1,7 @@ package com.minelittlepony.client.render.entity.state; +import net.minecraft.client.network.ClientPlayerEntity; +import net.minecraft.client.util.SkinTextures; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.Identifier; @@ -19,6 +21,7 @@ public class PlayerPonyRenderState extends PonyRenderState { @Override public void updateState(LivingEntity entity, PonyModel model, Pony pony, ModelAttributes.Mode mode) { + smallArms = ((ClientPlayerEntity)entity).getSkinTextures().model() == SkinTextures.Model.SLIM; super.updateState(entity, model, pony, mode); isPreviewModel = entity instanceof PreviewModel; wearabledTextures.clear(); diff --git a/src/main/java/com/minelittlepony/client/render/entity/state/PonyRenderState.java b/src/main/java/com/minelittlepony/client/render/entity/state/PonyRenderState.java index b0d61786..584c7584 100644 --- a/src/main/java/com/minelittlepony/client/render/entity/state/PonyRenderState.java +++ b/src/main/java/com/minelittlepony/client/render/entity/state/PonyRenderState.java @@ -82,11 +82,7 @@ public class PonyRenderState extends PlayerEntityRenderState implements PonyMode protected float getLegOutset() { float outset = attributes.isLyingDown ? 3.6F : attributes.isCrouching ? 1 : 5; - - if (smallArms) { - return Math.max(1, outset - 1); - } - return outset; + return smallArms ? Math.max(1, outset - 1) : outset; } /**