From 2f0ad4bf3efb3f736608d75342042df775c4fe99 Mon Sep 17 00:00:00 2001 From: Sollace Date: Mon, 16 Dec 2024 22:51:40 +0100 Subject: [PATCH] Fixed tails and necks rendering on spectator mode players, fixed spectators missing snouts and ears, and fixed spectators bodies rotating when flying --- .../minelittlepony/api/model/ModelAttributes.java | 1 + .../client/model/AbstractPonyModel.java | 1 + .../minelittlepony/client/model/part/PonyEars.java | 4 ++-- .../client/model/part/PonySnout.java | 2 +- .../minelittlepony/client/model/part/PonyTail.java | 14 ++++++++------ 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/minelittlepony/api/model/ModelAttributes.java b/src/main/java/com/minelittlepony/api/model/ModelAttributes.java index 9d7306c6..d8c66ac4 100644 --- a/src/main/java/com/minelittlepony/api/model/ModelAttributes.java +++ b/src/main/java/com/minelittlepony/api/model/ModelAttributes.java @@ -144,6 +144,7 @@ public class ModelAttributes { isGoingFast &= zMotion > 0.4F; isGoingFast |= entity.isUsingRiptide(); isGoingFast |= entity.isGliding(); + isGoingFast &= !entity.isSpectator(); motionLerp = MathUtil.clampLimit(zMotion * 30, 1); diff --git a/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java b/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java index 56816934..3543cc0f 100644 --- a/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java +++ b/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java @@ -86,6 +86,7 @@ public abstract class AbstractPonyModel extends Clien protected void setModelVisibilities(T state) { resetPivot(head, neck, leftArm, rightArm, leftLeg, rightLeg); hat.visible = head.visible && !state.attributes.isHorsey; + neck.visible = body.visible; if (state.attributes.isHorsey) { neck.visible = head.visible; } else { diff --git a/src/main/java/com/minelittlepony/client/model/part/PonyEars.java b/src/main/java/com/minelittlepony/client/model/part/PonyEars.java index deefe4dd..b1cc3339 100644 --- a/src/main/java/com/minelittlepony/client/model/part/PonyEars.java +++ b/src/main/java/com/minelittlepony/client/model/part/PonyEars.java @@ -57,8 +57,8 @@ public class PonyEars implements SubModel, MsonModel { @Override public void setVisible(boolean visible, PonyRenderState state) { - right.visible = visible && !state.race.isHuman(); - left.visible = visible && !state.race.isHuman(); + right.visible = !state.race.isHuman(); + left.visible = !state.race.isHuman(); if (state.attributes.isHorsey) { left.pivotX = -1; diff --git a/src/main/java/com/minelittlepony/client/model/part/PonySnout.java b/src/main/java/com/minelittlepony/client/model/part/PonySnout.java index d5e599ea..f46d0aea 100644 --- a/src/main/java/com/minelittlepony/client/model/part/PonySnout.java +++ b/src/main/java/com/minelittlepony/client/model/part/PonySnout.java @@ -39,7 +39,7 @@ public class PonySnout implements SubModel, MsonModel { @Override public void setVisible(boolean visible, PonyRenderState state) { - visible &= !state.attributes.isHorsey + visible = !state.attributes.isHorsey && !state.attributes.metadata.race().isHuman() && PonyConfig.getInstance().snuzzles.get(); Gender gender = state.attributes.metadata.gender(); diff --git a/src/main/java/com/minelittlepony/client/model/part/PonyTail.java b/src/main/java/com/minelittlepony/client/model/part/PonyTail.java index b91acb7e..bed4ac64 100644 --- a/src/main/java/com/minelittlepony/client/model/part/PonyTail.java +++ b/src/main/java/com/minelittlepony/client/model/part/PonyTail.java @@ -92,14 +92,16 @@ public class PonyTail implements SubModel, MsonModel { @Override public void renderPart(MatrixStack stack, VertexConsumer vertices, int overlay, int light, int color) { - stack.push(); - tail.rotate(stack); + if (tail.visible) { + stack.push(); + tail.rotate(stack); - for (int i = 0; i < segments.size(); i++) { - segments.get(i).render(stack, vertices, i, overlay, light, color); + for (int i = 0; i < segments.size(); i++) { + segments.get(i).render(stack, vertices, i, overlay, light, color); + } + + stack.pop(); } - - stack.pop(); } public static class Segment {