From 013077497665576709a7c735183084dca5a6dcf4 Mon Sep 17 00:00:00 2001 From: Sollace Date: Sat, 30 Nov 2019 12:14:52 +0200 Subject: [PATCH] Fixed arm position changes when sneaking --- .../client/model/ClientPonyModel.java | 5 +++-- .../client/model/IPonyMixinModel.java | 5 +++-- .../com/minelittlepony/client/model/IPonyModel.java | 3 ++- .../client/model/entity/ModelSeapony.java | 9 +++++---- .../client/model/entity/ModelWitchPony.java | 5 +++-- .../client/render/EquineRenderManager.java | 13 +++++++++---- .../client/render/entity/RenderPonyPlayer.java | 5 +++-- .../com/minelittlepony/model/ModelAttributes.java | 12 +++++++----- 8 files changed, 35 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/minelittlepony/client/model/ClientPonyModel.java b/src/main/java/com/minelittlepony/client/model/ClientPonyModel.java index 0a7f9d99..be88f494 100644 --- a/src/main/java/com/minelittlepony/client/model/ClientPonyModel.java +++ b/src/main/java/com/minelittlepony/client/model/ClientPonyModel.java @@ -6,6 +6,7 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.util.Arm; import com.minelittlepony.client.pony.PonyData; +import com.minelittlepony.client.render.EquineRenderManager; import com.minelittlepony.model.ModelAttributes; import com.minelittlepony.mson.api.model.biped.MsonPlayer; import com.minelittlepony.pony.IPony; @@ -32,10 +33,10 @@ public abstract class ClientPonyModel extends MsonPlayer protected IPonyData metadata = new PonyData(); @Override - public void updateLivingState(T entity, IPony pony) { + public void updateLivingState(T entity, IPony pony, EquineRenderManager.Mode mode) { isChild = entity.isBaby(); isSneaking = entity.isInSneakingPose(); - attributes.updateLivingState(entity, pony); + attributes.updateLivingState(entity, pony, mode); } @Override diff --git a/src/main/java/com/minelittlepony/client/model/IPonyMixinModel.java b/src/main/java/com/minelittlepony/client/model/IPonyMixinModel.java index 76ae3463..b77545e4 100644 --- a/src/main/java/com/minelittlepony/client/model/IPonyMixinModel.java +++ b/src/main/java/com/minelittlepony/client/model/IPonyMixinModel.java @@ -5,6 +5,7 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.LivingEntity; import net.minecraft.util.Arm; +import com.minelittlepony.client.render.EquineRenderManager; import com.minelittlepony.model.BodyPart; import com.minelittlepony.model.IUnicorn; import com.minelittlepony.model.ModelAttributes; @@ -28,8 +29,8 @@ public interface IPonyMixinModel } @Override - default void updateLivingState(T entity, IPony pony) { - mixin().updateLivingState(entity, pony); + default void updateLivingState(T entity, IPony pony, EquineRenderManager.Mode mode) { + mixin().updateLivingState(entity, pony, mode); } @Override diff --git a/src/main/java/com/minelittlepony/client/model/IPonyModel.java b/src/main/java/com/minelittlepony/client/model/IPonyModel.java index 8217d8fe..46cfabd1 100644 --- a/src/main/java/com/minelittlepony/client/model/IPonyModel.java +++ b/src/main/java/com/minelittlepony/client/model/IPonyModel.java @@ -3,6 +3,7 @@ package com.minelittlepony.client.model; import net.minecraft.client.model.ModelPart; import net.minecraft.entity.LivingEntity; +import com.minelittlepony.client.render.EquineRenderManager; import com.minelittlepony.model.ICapitated; import com.minelittlepony.model.ICompartmented; import com.minelittlepony.model.IModel; @@ -12,7 +13,7 @@ import com.minelittlepony.pony.IPony; public interface IPonyModel extends PonyModelConstants, IModel, ICapitated, ICompartmented, MsonModel { - void updateLivingState(T entity, IPony pony); + void updateLivingState(T entity, IPony pony, EquineRenderManager.Mode mode); @Override default boolean hasHeadGear() { diff --git a/src/main/java/com/minelittlepony/client/model/entity/ModelSeapony.java b/src/main/java/com/minelittlepony/client/model/entity/ModelSeapony.java index f7a5749b..4a56ab5d 100644 --- a/src/main/java/com/minelittlepony/client/model/entity/ModelSeapony.java +++ b/src/main/java/com/minelittlepony/client/model/entity/ModelSeapony.java @@ -2,6 +2,7 @@ package com.minelittlepony.client.model.entity; import com.minelittlepony.client.model.armour.ModelPonyArmour; import com.minelittlepony.client.model.entity.race.ModelUnicorn; +import com.minelittlepony.client.render.EquineRenderManager; import com.minelittlepony.client.model.armour.ArmourWrapper; import com.minelittlepony.model.BodyPart; import com.minelittlepony.model.armour.IEquestrianArmour; @@ -46,8 +47,8 @@ public class ModelSeapony extends ModelUnicorn { } @Override - public void updateLivingState(T entity, IPony pony) { - super.updateLivingState(entity, pony); + public void updateLivingState(T entity, IPony pony, EquineRenderManager.Mode mode) { + super.updateLivingState(entity, pony, mode); // Seaponies can't sneak, silly isSneaking = false; @@ -162,8 +163,8 @@ public class ModelSeapony extends ModelUnicorn { } @Override - public void updateLivingState(T entity, IPony pony) { - super.updateLivingState(entity, pony); + public void updateLivingState(T entity, IPony pony, EquineRenderManager.Mode mode) { + super.updateLivingState(entity, pony, mode); // Seaponies can't sneak, silly isSneaking = false; diff --git a/src/main/java/com/minelittlepony/client/model/entity/ModelWitchPony.java b/src/main/java/com/minelittlepony/client/model/entity/ModelWitchPony.java index 2ac2ba9a..982d1e94 100644 --- a/src/main/java/com/minelittlepony/client/model/entity/ModelWitchPony.java +++ b/src/main/java/com/minelittlepony/client/model/entity/ModelWitchPony.java @@ -4,6 +4,7 @@ import net.minecraft.entity.mob.WitchEntity; import net.minecraft.util.math.MathHelper; import com.minelittlepony.client.model.entity.race.ModelZebra; +import com.minelittlepony.client.render.EquineRenderManager; import com.minelittlepony.pony.IPony; import com.minelittlepony.pony.meta.Wearable; @@ -15,8 +16,8 @@ public class ModelWitchPony extends ModelZebra { } @Override - public void updateLivingState(WitchEntity entity, IPony pony) { - super.updateLivingState(entity, pony); + public void updateLivingState(WitchEntity entity, IPony pony, EquineRenderManager.Mode mode) { + super.updateLivingState(entity, pony, mode); if (entity.hasCustomName() && "Filly".equals(entity.getCustomName().getString())) { isChild = true; diff --git a/src/main/java/com/minelittlepony/client/render/EquineRenderManager.java b/src/main/java/com/minelittlepony/client/render/EquineRenderManager.java index 4e391ac3..52c24d01 100644 --- a/src/main/java/com/minelittlepony/client/render/EquineRenderManager.java +++ b/src/main/java/com/minelittlepony/client/render/EquineRenderManager.java @@ -61,7 +61,7 @@ public class EquineRenderManager { motionLerp = MathUtil.clampLimit(zMotion * 30, 1); } - public void updateLivingState(T entity, IPony pony) { - isCrouching = pony.isCrouching(entity); + public void updateLivingState(T entity, IPony pony, EquineRenderManager.Mode mode) { + isCrouching = mode == Mode.THIRD_PERSON && pony.isCrouching(entity); isSleeping = entity.isSleeping(); - isFlying = pony.isFlying(entity); + isFlying = mode == Mode.THIRD_PERSON && pony.isFlying(entity); isGliding = entity.isFallFlying(); - isSwimming = pony.isSwimming(entity); - isSwimmingRotated = isSwimming && entity instanceof PlayerEntity; + isSwimming = mode == Mode.THIRD_PERSON && pony.isSwimming(entity); + isSwimmingRotated = mode == Mode.THIRD_PERSON && isSwimming && entity instanceof PlayerEntity; hasHeadGear = pony.isWearingHeadgear(entity); isSitting = pony.isRidingInteractive(entity); interpolatorId = entity.getUuid();