From b7becaf3a493e0d1d4d560e13570ca80b4b39a65 Mon Sep 17 00:00:00 2001 From: Sollace Date: Fri, 13 Dec 2024 12:57:23 +0100 Subject: [PATCH] Fixed player head rendering --- .../client/model/AbstractPonyModel.java | 15 +++++++-------- .../render/blockentity/skull/PlayerPonySkull.java | 9 ++++++++- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java b/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java index abf9ade6..47ff7443 100644 --- a/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java +++ b/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java @@ -114,6 +114,11 @@ public abstract class AbstractPonyModel extends Clien protected void setModelVisibilities(T state) { hat.visible = head.visible && !state.attributes.isHorsey; + if (state.attributes.isHorsey) { + neck.visible = head.visible; + } else { + neck.hidden = !head.visible; + } parts.forEach(part -> part.setVisible(body.visible, state)); } @@ -573,14 +578,8 @@ public abstract class AbstractPonyModel extends Clien stack.translate(0, 1.35F, 0); } - if (state.attributes.isHorsey) { - if (part == BodyPart.BODY) { - stack.scale(1.5F, 1, 1.5F); - } - - neck.visible = head.visible; - } else { - neck.hidden = !head.visible; + if (state.attributes.isHorsey && part == BodyPart.BODY) { + stack.scale(1.5F, 1, 1.5F); } PonyTransformation.forSize(state.attributes.size).transform(state.attributes, part, stack); diff --git a/src/main/java/com/minelittlepony/client/render/blockentity/skull/PlayerPonySkull.java b/src/main/java/com/minelittlepony/client/render/blockentity/skull/PlayerPonySkull.java index 9ece08af..a7ae1265 100644 --- a/src/main/java/com/minelittlepony/client/render/blockentity/skull/PlayerPonySkull.java +++ b/src/main/java/com/minelittlepony/client/render/blockentity/skull/PlayerPonySkull.java @@ -7,6 +7,7 @@ import com.minelittlepony.api.pony.SkinsProxy; import com.minelittlepony.api.pony.meta.Race; import com.minelittlepony.client.model.*; import com.minelittlepony.client.render.blockentity.skull.PonySkullRenderer.ISkull; +import com.minelittlepony.client.render.entity.state.PlayerPonyRenderState; import java.util.HashMap; import java.util.Map; @@ -24,6 +25,7 @@ import org.joml.Vector3f; public class PlayerPonySkull implements ISkull { private AbstractPonyModel ponyHead; private final Map>, AbstractPonyModel> modelCache = new HashMap<>(); + private final PlayerPonyRenderState state = new PlayerPonyRenderState(); private final DJPon3EarsModel deadMau5 = ModelType.DJ_PON_3.createModel(); @@ -61,6 +63,10 @@ public class PlayerPonySkull implements ISkull { } } ponyHead = modelCache.computeIfAbsent(ModelType.getPlayerModel(race), key -> key.getKey(false).createModel()); + state.pony = pony; + state.race = pony.race(); + state.attributes.size = pony.size(); + state.attributes.metadata = pony.metadata(); return true; } @@ -68,10 +74,11 @@ public class PlayerPonySkull implements ISkull { public void setAngles(float yaw, float animationProgress) { Vector3f v = new Vector3f(0, -2, 2); v.rotate(RotationAxis.POSITIVE_Y.rotationDegrees(yaw)); + ponyHead.setVisible(true); + ponyHead.setAngles(state); ponyHead.getHead().pivotX = v.x; ponyHead.getHead().pivotY = v.y; ponyHead.getHead().pivotZ = v.z; - ponyHead.setVisible(true); ponyHead.setHeadRotation(animationProgress, yaw, 0); if (renderingEars) { deadMau5.setHeadRotation(animationProgress, yaw, 0);