From b6e8d1f2d8b97fff817f573e24aae6c6b33a65da Mon Sep 17 00:00:00 2001 From: Sollace Date: Tue, 26 Nov 2019 12:18:06 +0200 Subject: [PATCH] Fix loading error when instantiating the pony tail --- .../client/model/part/PonyTail.java | 49 +++++++++---------- 1 file changed, 24 insertions(+), 25 deletions(-) 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 840ba1be..d087b254 100644 --- a/src/main/java/com/minelittlepony/client/model/part/PonyTail.java +++ b/src/main/java/com/minelittlepony/client/model/part/PonyTail.java @@ -14,27 +14,26 @@ import com.minelittlepony.mson.api.MsonModel; import java.util.UUID; import java.util.concurrent.ExecutionException; -public class PonyTail extends ModelPart implements IPart, MsonModel { +public class PonyTail implements IPart, MsonModel { - private final AbstractPonyModel theModel; + private ModelPart tail; + private AbstractPonyModel theModel; private int tailStop = 0; - public PonyTail(AbstractPonyModel model) { - super(model); - theModel = model; - } - - @Override public void init(ModelContext context) { + theModel = (AbstractPonyModel)context.getModel(); + + tail = new ModelPart(theModel); + try { int segments = context.getLocals().getValue("segments").get().intValue(); for (int i = 0; i < segments; i++) { Segment segment = context.findByName("segment_" + i); segment.index = i; - addChild(segment); + tail.addChild(segment); } } catch (InterruptedException | ExecutionException e) { @@ -44,29 +43,29 @@ public class PonyTail extends ModelPart implements IPart, MsonModel { @Override public void setRotationAndAngles(boolean rainboom, UUID interpolatorId, float move, float swing, float bodySwing, float ticks) { - roll = rainboom ? 0 : MathHelper.cos(move * 0.8F) * 0.2f * swing; - yaw = bodySwing; + tail.roll = rainboom ? 0 : MathHelper.cos(move * 0.8F) * 0.2f * swing; + tail.yaw = bodySwing; if (theModel.getAttributes().isCrouching && !rainboom) { rotateSneak(); } else if (theModel.isRiding()) { - pivotZ = TAIL_RP_Z_RIDING; - pivotY = TAIL_RP_Y_RIDING; - pitch = PI / 5; + tail.pivotZ = TAIL_RP_Z_RIDING; + tail.pivotY = TAIL_RP_Y_RIDING; + tail.pitch = PI / 5; } else { - setPivot(TAIL_RP_X, TAIL_RP_Y, TAIL_RP_Z_NOTSNEAK); + tail.setPivot(TAIL_RP_X, TAIL_RP_Y, TAIL_RP_Z_NOTSNEAK); if (rainboom) { - pitch = ROTATE_90 + MathHelper.sin(move) / 10; + tail.pitch = ROTATE_90 + MathHelper.sin(move) / 10; } else { - pitch = swing / 2; + tail.pitch = swing / 2; swingX(ticks); } } if (rainboom) { - pivotY += 6; - pivotZ++; + tail.pivotY += 6; + tail.pivotZ++; } tailStop = theModel.getMetadata().getTail().ordinal(); @@ -74,23 +73,23 @@ public class PonyTail extends ModelPart implements IPart, MsonModel { private void swingX(float ticks) { float sinTickFactor = MathHelper.sin(ticks * 0.067f) * 0.05f; - pitch += sinTickFactor; - yaw += sinTickFactor; + tail.pitch += sinTickFactor; + tail.yaw += sinTickFactor; } private void rotateSneak() { - setPivot(TAIL_RP_X, TAIL_RP_Y, TAIL_RP_Z_SNEAK); - pitch = -BODY_ROT_X_SNEAK + 0.1F; + tail.setPivot(TAIL_RP_X, TAIL_RP_Y, TAIL_RP_Z_SNEAK); + tail.pitch = -BODY_ROT_X_SNEAK + 0.1F; } @Override public void setVisible(boolean visible) { - this.visible = visible; + tail.visible = visible; } @Override public void renderPart(MatrixStack stack, VertexConsumer vertices, int overlayUv, int lightUv, float red, float green, float blue, float alpha, UUID interpolatorId) { - render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha); + tail.render(stack, vertices, overlayUv, lightUv, red, green, blue, alpha); } private static class Segment extends ModelPart implements MsonModel {