diff --git a/src/main/java/com/minelittlepony/model/ModelMobPony.java b/src/main/java/com/minelittlepony/model/ModelMobPony.java index 8cf588bf..1b196f1d 100644 --- a/src/main/java/com/minelittlepony/model/ModelMobPony.java +++ b/src/main/java/com/minelittlepony/model/ModelMobPony.java @@ -3,40 +3,18 @@ package com.minelittlepony.model; import com.minelittlepony.model.player.ModelAlicorn; import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; import net.minecraft.util.math.MathHelper; /** * Common class for all humanoid (ponioid?) non-player enemies. * */ -public class ModelMobPony extends ModelAlicorn { +public abstract class ModelMobPony extends ModelAlicorn { public ModelMobPony() { super(false); } - @Override - protected void rotateLegs(float move, float swing, float ticks, Entity entity) { - super.rotateLegs(move, swing, ticks, entity); - - if (rightArmPose != ArmPose.EMPTY) { - if (canCast()) { - rotateArmHolding(unicornArmRight, -1, swingProgress, ticks); - } else { - rotateArmHolding(bipedRightArm, -1, swingProgress, ticks); - } - } - - if (leftArmPose != ArmPose.EMPTY) { - if (canCast()) { - rotateArmHolding(unicornArmLeft, -1, swingProgress, ticks); - } else { - rotateArmHolding(bipedLeftArm, -1, swingProgress, ticks); - } - } - } - /** * Rotates the provided arm to the correct orientation for holding an item. * diff --git a/src/main/java/com/minelittlepony/model/PMAPI.java b/src/main/java/com/minelittlepony/model/PMAPI.java index 8832de2f..6f2f1b1d 100644 --- a/src/main/java/com/minelittlepony/model/PMAPI.java +++ b/src/main/java/com/minelittlepony/model/PMAPI.java @@ -36,6 +36,7 @@ public interface PMAPI { ModelWrapper zombie = new ModelWrapper(new ModelZombiePony()); ModelWrapper skeleton = new ModelWrapper(new ModelSkeletonPony()); ModelWrapper villager = new ModelWrapper(new ModelVillagerPony()); + ModelWrapper zombieVillager = new ModelWrapper(new ModelZombieVillagerPony()); ModelWrapper illager = new ModelWrapper(new ModelIllagerPony()); ModelWrapper witch = new ModelWrapper(new ModelWitchPony()); ModelWrapper enderman = new ModelWrapper(new ModelEnderStallion()); diff --git a/src/main/java/com/minelittlepony/model/ponies/ModelIllagerPony.java b/src/main/java/com/minelittlepony/model/ponies/ModelIllagerPony.java index 269fffd8..342d4dfc 100644 --- a/src/main/java/com/minelittlepony/model/ponies/ModelIllagerPony.java +++ b/src/main/java/com/minelittlepony/model/ponies/ModelIllagerPony.java @@ -1,6 +1,6 @@ package com.minelittlepony.model.ponies; -import com.minelittlepony.model.player.ModelAlicorn; +import com.minelittlepony.model.ModelMobPony; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; @@ -9,11 +9,7 @@ import net.minecraft.entity.monster.AbstractIllager.IllagerArmPose; import net.minecraft.util.EnumHandSide; import net.minecraft.util.math.MathHelper; -public class ModelIllagerPony extends ModelAlicorn { - - public ModelIllagerPony() { - super(false); - } +public class ModelIllagerPony extends ModelMobPony { @Override public void setRotationAngles(float move, float swing, float ticks, float headYaw, float headPitch, float scale, Entity entity) { diff --git a/src/main/java/com/minelittlepony/model/ponies/ModelSkeletonPony.java b/src/main/java/com/minelittlepony/model/ponies/ModelSkeletonPony.java index 67db0650..9f0f9f43 100644 --- a/src/main/java/com/minelittlepony/model/ponies/ModelSkeletonPony.java +++ b/src/main/java/com/minelittlepony/model/ponies/ModelSkeletonPony.java @@ -2,6 +2,7 @@ package com.minelittlepony.model.ponies; import com.minelittlepony.model.ModelMobPony; +import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.monster.AbstractSkeleton; import net.minecraft.entity.monster.EntityWitherSkeleton; @@ -51,6 +52,26 @@ public class ModelSkeletonPony extends ModelMobPony { super.setLivingAnimations(entity, move, swing, ticks); } + @Override + protected void rotateLegs(float move, float swing, float ticks, Entity entity) { + super.rotateLegs(move, swing, ticks, entity); + if (rightArmPose != ArmPose.EMPTY) { + if (canCast()) { + rotateArmHolding(unicornArmRight, -1, swingProgress, ticks); + } else { + rotateArmHolding(bipedRightArm, -1, swingProgress, ticks); + } + } + + if (leftArmPose != ArmPose.EMPTY) { + if (canCast()) { + rotateArmHolding(unicornArmLeft, -1, swingProgress, ticks); + } else { + rotateArmHolding(bipedLeftArm, -1, swingProgress, ticks); + } + } + } + @Override public boolean canCast() { return isUnicorn; diff --git a/src/main/java/com/minelittlepony/model/ponies/ModelVillagerPony.java b/src/main/java/com/minelittlepony/model/ponies/ModelVillagerPony.java index 746b3992..adc7abd3 100644 --- a/src/main/java/com/minelittlepony/model/ponies/ModelVillagerPony.java +++ b/src/main/java/com/minelittlepony/model/ponies/ModelVillagerPony.java @@ -5,11 +5,11 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.monster.EntityZombieVillager; import net.minecraft.entity.passive.EntityVillager; -import com.minelittlepony.model.player.ModelAlicorn; +import com.minelittlepony.model.ModelMobPony; import com.minelittlepony.pony.data.PonyWearable; import com.minelittlepony.render.model.PlaneRenderer; -public class ModelVillagerPony extends ModelAlicorn { +public class ModelVillagerPony extends ModelMobPony { public PlaneRenderer apron, trinket; @@ -18,10 +18,6 @@ public class ModelVillagerPony extends ModelAlicorn { public boolean special; public boolean special2; - public ModelVillagerPony() { - super(false); - } - @Override protected void shakeBody(float move, float swing, float bodySwing, float ticks) { super.shakeBody(move, swing, bodySwing, ticks); diff --git a/src/main/java/com/minelittlepony/model/ponies/ModelZombieVillagerPony.java b/src/main/java/com/minelittlepony/model/ponies/ModelZombieVillagerPony.java new file mode 100644 index 00000000..526702c9 --- /dev/null +++ b/src/main/java/com/minelittlepony/model/ponies/ModelZombieVillagerPony.java @@ -0,0 +1,27 @@ +package com.minelittlepony.model.ponies; + +import net.minecraft.entity.Entity; +import net.minecraft.util.math.MathHelper; + +import com.minelittlepony.util.render.AbstractBoxRenderer; + +public class ModelZombieVillagerPony extends ModelVillagerPony { + + @Override + protected void rotateLegs(float move, float swing, float ticks, Entity entity) { + super.rotateLegs(move, swing, ticks, entity); + if (rightArmPose != ArmPose.EMPTY) return; + + if (islookAngleRight(move)) { + rotateArmHolding(bipedRightArm, 1, swingProgress, ticks); + AbstractBoxRenderer.shiftRotationPoint(bipedRightArm, 0.5F, 1.5F, 3); + } else { + rotateArmHolding(bipedLeftArm, -1, swingProgress, ticks); + AbstractBoxRenderer.shiftRotationPoint(bipedLeftArm, -0.5F, 1.5F, 3); + } + } + + public boolean islookAngleRight(float move) { + return MathHelper.sin(move / 20) < 0; + } +} diff --git a/src/main/java/com/minelittlepony/render/ponies/RenderPonyZombieVillager.java b/src/main/java/com/minelittlepony/render/ponies/RenderPonyZombieVillager.java index 170a1a70..31aa7ee5 100644 --- a/src/main/java/com/minelittlepony/render/ponies/RenderPonyZombieVillager.java +++ b/src/main/java/com/minelittlepony/render/ponies/RenderPonyZombieVillager.java @@ -19,13 +19,23 @@ public class RenderPonyZombieVillager extends RenderPonyMob