From 51dc230d1ae24348282e1c4f05259184777f60e8 Mon Sep 17 00:00:00 2001 From: Sollace Date: Sun, 3 Jun 2018 13:23:27 +0200 Subject: [PATCH] Fix alignment of held shields and blocking --- .../com/minelittlepony/model/AbstractPonyModel.java | 11 ++++++----- .../com/minelittlepony/model/player/ModelUnicorn.java | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/minelittlepony/model/AbstractPonyModel.java b/src/main/java/com/minelittlepony/model/AbstractPonyModel.java index e534f8a4..0d1ee69f 100644 --- a/src/main/java/com/minelittlepony/model/AbstractPonyModel.java +++ b/src/main/java/com/minelittlepony/model/AbstractPonyModel.java @@ -330,8 +330,8 @@ public abstract class AbstractPonyModel extends ModelPlayer implements IModel { protected void holdItem(float swing) { boolean both = leftArmPose == ArmPose.ITEM && rightArmPose == ArmPose.ITEM; - alignArmForAction(bipedLeftArm, leftArmPose, both, swing); - alignArmForAction(bipedRightArm, rightArmPose, both, swing); + alignArmForAction(bipedLeftArm, leftArmPose, both, swing, 1); + alignArmForAction(bipedRightArm, rightArmPose, both, swing, -1); } /** @@ -342,7 +342,7 @@ public abstract class AbstractPonyModel extends ModelPlayer implements IModel { * @param both True if we have something in both hands * @param swing Degree to which each 'limb' swings. */ - protected void alignArmForAction(ModelRenderer arm, ArmPose pose, boolean both, float swing) { + protected void alignArmForAction(ModelRenderer arm, ArmPose pose, boolean both, float swing, float reflect) { switch (pose) { case ITEM: float swag = 1; @@ -350,13 +350,14 @@ public abstract class AbstractPonyModel extends ModelPlayer implements IModel { swag -= (float)Math.pow(swing, 2); } float mult = 1 - swag/2; - arm.rotateAngleX = bipedLeftArm.rotateAngleX * mult - (PI / 10) * swag; + arm.rotateAngleX = arm.rotateAngleX * mult - (PI / 10) * swag; + arm.rotateAngleZ = -reflect * (mult - PI / 10); case EMPTY: arm.rotateAngleY = 0; break; case BLOCK: arm.rotateAngleX = arm.rotateAngleX / 2 - 0.9424779F; - arm.rotateAngleY = PI / 6; + arm.rotateAngleY = reflect * PI / 6; break; default: } diff --git a/src/main/java/com/minelittlepony/model/player/ModelUnicorn.java b/src/main/java/com/minelittlepony/model/player/ModelUnicorn.java index 1751c45d..cf755c82 100644 --- a/src/main/java/com/minelittlepony/model/player/ModelUnicorn.java +++ b/src/main/java/com/minelittlepony/model/player/ModelUnicorn.java @@ -61,8 +61,8 @@ public class ModelUnicorn extends ModelEarthPony implements IModelUnicorn { if (canCast()) { boolean both = leftArmPose == ArmPose.ITEM && rightArmPose == ArmPose.ITEM; - alignArmForAction(unicornArmLeft, leftArmPose, both, swing); - alignArmForAction(unicornArmRight, rightArmPose, both, swing); + alignArmForAction(unicornArmLeft, leftArmPose, both, swing, 1); + alignArmForAction(unicornArmRight, rightArmPose, both, swing, -1); } else { super.holdItem(swing); }