diff --git a/src/main/java/com/brohoof/minelittlepony/model/pony/ModelSkeletonPony.java b/src/main/java/com/brohoof/minelittlepony/model/pony/ModelSkeletonPony.java index 7cb98faf..15cc4f3c 100644 --- a/src/main/java/com/brohoof/minelittlepony/model/pony/ModelSkeletonPony.java +++ b/src/main/java/com/brohoof/minelittlepony/model/pony/ModelSkeletonPony.java @@ -110,9 +110,7 @@ public class ModelSkeletonPony extends ModelPlayerPony { this.unicornArmLeft.rotateAngleX += MathHelper.sin(tick * 0.067F) * 0.1F; } } - if (this.leftArmPose == ArmPose.BOW_AND_ARROW || this.rightArmPose == ArmPose.BOW_AND_ARROW) { - this.aimBow(this.leftArmPose, this.rightArmPose, tick); - } + this.aimBow(this.leftArmPose, this.rightArmPose, tick); } @Override diff --git a/src/main/java/com/brohoof/minelittlepony/renderer/RenderPonyMob.java b/src/main/java/com/brohoof/minelittlepony/renderer/RenderPonyMob.java index 1338ce28..881a6706 100644 --- a/src/main/java/com/brohoof/minelittlepony/renderer/RenderPonyMob.java +++ b/src/main/java/com/brohoof/minelittlepony/renderer/RenderPonyMob.java @@ -15,7 +15,9 @@ import net.minecraft.client.model.ModelBiped.ArmPose; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.entity.EntityLiving; +import net.minecraft.item.EnumAction; import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumHandSide; public abstract class RenderPonyMob extends RenderLiving implements IRenderPony { @@ -44,10 +46,45 @@ public abstract class RenderPonyMob extends RenderLiving } @Override - protected void preRenderCallback(T entitylivingbaseIn, float partialTickTime) { + protected void preRenderCallback(T entity, float partialTickTime) { + ItemStack main = entity.getHeldItemMainhand(); + ItemStack off = entity.getHeldItemOffhand(); + ArmPose mainPose = ArmPose.EMPTY; + ArmPose offPose = ArmPose.EMPTY; - ItemStack heldItem = entitylivingbaseIn.getHeldItemMainhand(); - this.playerModel.getModel().rightArmPose = heldItem == null ? ArmPose.EMPTY : ArmPose.ITEM; + if (main != null) { + mainPose = ArmPose.ITEM; + + if (entity.getItemInUseCount() > 0) { + EnumAction action = main.getItemUseAction(); + + if (action == EnumAction.BLOCK) { + mainPose = ArmPose.BLOCK; + } else if (action == EnumAction.BOW) { + mainPose = ArmPose.BOW_AND_ARROW; + } + } + } + + if (off != null) { + offPose = ArmPose.ITEM; + + if (entity.getItemInUseCount() > 0) { + EnumAction action = off.getItemUseAction(); + + if (action == EnumAction.BLOCK) { + offPose = ArmPose.BLOCK; + } + } + } + + if (entity.getPrimaryHand() == EnumHandSide.RIGHT) { + this.playerModel.getModel().rightArmPose = mainPose; + this.playerModel.getModel().leftArmPose = offPose; + } else { + this.playerModel.getModel().rightArmPose = offPose; + this.playerModel.getModel().leftArmPose = mainPose; + } this.playerModel.getModel().isSneak = false; this.playerModel.getModel().isFlying = false;