From d9ef32cc3c0bc096bb69812a841cd1675595794c Mon Sep 17 00:00:00 2001 From: Sollace Date: Wed, 5 Sep 2018 13:56:07 +0200 Subject: [PATCH] Let the models define their heights --- .../java/com/minelittlepony/model/AbstractPonyModel.java | 5 +++++ .../com/minelittlepony/model/capabilities/IModel.java | 2 ++ .../minelittlepony/model/ponies/ModelEnderStallion.java | 5 +++++ .../minelittlepony/model/ponies/ModelSkeletonPony.java | 9 +++++++++ .../minelittlepony/model/ponies/ModelVillagerPony.java | 9 ++++++++- .../com/minelittlepony/model/ponies/ModelWitchPony.java | 5 +++++ src/main/java/com/minelittlepony/render/RenderPony.java | 8 ++------ 7 files changed, 36 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/minelittlepony/model/AbstractPonyModel.java b/src/main/java/com/minelittlepony/model/AbstractPonyModel.java index 0319e558..38a54cbb 100644 --- a/src/main/java/com/minelittlepony/model/AbstractPonyModel.java +++ b/src/main/java/com/minelittlepony/model/AbstractPonyModel.java @@ -755,6 +755,11 @@ public abstract class AbstractPonyModel extends ModelPlayer implements IModel, P } } + @Override + public float getModelHeight() { + return 2; + } + /** * Sets the model's various rotation angles. * diff --git a/src/main/java/com/minelittlepony/model/capabilities/IModel.java b/src/main/java/com/minelittlepony/model/capabilities/IModel.java index 5cc5348a..3e7a4900 100644 --- a/src/main/java/com/minelittlepony/model/capabilities/IModel.java +++ b/src/main/java/com/minelittlepony/model/capabilities/IModel.java @@ -81,6 +81,8 @@ public interface IModel extends ICapitated { float getRiderYOffset(); + float getModelHeight(); + default boolean isWearing(PonyWearable wearable) { return getMetadata().isWearing(wearable); } diff --git a/src/main/java/com/minelittlepony/model/ponies/ModelEnderStallion.java b/src/main/java/com/minelittlepony/model/ponies/ModelEnderStallion.java index 1f84b7a8..1bbfc302 100644 --- a/src/main/java/com/minelittlepony/model/ponies/ModelEnderStallion.java +++ b/src/main/java/com/minelittlepony/model/ponies/ModelEnderStallion.java @@ -145,6 +145,11 @@ public class ModelEnderStallion extends ModelSkeletonPony { return 30; } + @Override + public float getModelHeight() { + return 3; + } + @Override public float getWingRotationFactor(float ticks) { return MathHelper.sin(ticks) + WING_ROT_Z_SNEAK; diff --git a/src/main/java/com/minelittlepony/model/ponies/ModelSkeletonPony.java b/src/main/java/com/minelittlepony/model/ponies/ModelSkeletonPony.java index d1656d26..67db0650 100644 --- a/src/main/java/com/minelittlepony/model/ponies/ModelSkeletonPony.java +++ b/src/main/java/com/minelittlepony/model/ponies/ModelSkeletonPony.java @@ -4,6 +4,7 @@ import com.minelittlepony.model.ModelMobPony; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.monster.AbstractSkeleton; +import net.minecraft.entity.monster.EntityWitherSkeleton; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumHand; @@ -13,9 +14,12 @@ public class ModelSkeletonPony extends ModelMobPony { public boolean isUnicorn; + public boolean isWithered; + @Override public void setLivingAnimations(EntityLivingBase entity, float move, float swing, float ticks) { isUnicorn = entity.getUniqueID().getLeastSignificantBits() % 3 != 0; + isWithered = entity instanceof EntityWitherSkeleton; rightArmPose = ArmPose.EMPTY; leftArmPose = ArmPose.EMPTY; @@ -74,6 +78,11 @@ public class ModelSkeletonPony extends ModelMobPony { return 3; } + @Override + public float getModelHeight() { + return isWithered ? 2.5F : 2; + } + @Override protected float getArmRotationY() { return 8; diff --git a/src/main/java/com/minelittlepony/model/ponies/ModelVillagerPony.java b/src/main/java/com/minelittlepony/model/ponies/ModelVillagerPony.java index 67964a6d..eefd4239 100644 --- a/src/main/java/com/minelittlepony/model/ponies/ModelVillagerPony.java +++ b/src/main/java/com/minelittlepony/model/ponies/ModelVillagerPony.java @@ -20,6 +20,7 @@ public class ModelVillagerPony extends ModelAlicorn { private int profession; public boolean special; + public boolean special2; public ModelVillagerPony() { super(false); @@ -36,6 +37,7 @@ public class ModelVillagerPony extends ModelAlicorn { public void setLivingAnimations(EntityLivingBase entity, float limbSwing, float limbSwingAmount, float partialTickTime) { profession = getProfession(entity); special = "Derpy".equals(entity.getCustomNameTag()); + special2 = special && entity.getUniqueID().getLeastSignificantBits() % 20 == 0; } @Override @@ -55,11 +57,16 @@ public class ModelVillagerPony extends ModelAlicorn { protected void renderHead(Entity entity, float move, float swing, float ticks, float headYaw, float headPitch, float scale) { super.renderHead(entity, move, swing, ticks, headYaw, headPitch, scale); - if (special && entity.getUniqueID().getLeastSignificantBits() % 20 == 0) { + if (special2) { muffin.renderPart(scale); } } + @Override + public float getModelHeight() { + return special2 ? 2.3F : 2; + } + @Override public boolean isWearing(PonyWearable wearable) { if (wearable == PonyWearable.SADDLE_BAGS) { diff --git a/src/main/java/com/minelittlepony/model/ponies/ModelWitchPony.java b/src/main/java/com/minelittlepony/model/ponies/ModelWitchPony.java index e772f443..84675d6e 100644 --- a/src/main/java/com/minelittlepony/model/ponies/ModelWitchPony.java +++ b/src/main/java/com/minelittlepony/model/ponies/ModelWitchPony.java @@ -81,6 +81,11 @@ public class ModelWitchPony extends ModelZebra { return isChild; } + @Override + public float getModelHeight() { + return 2.5F; + } + @Override protected void renderHead(Entity entity, float move, float swing, float ticks, float headYaw, float headPitch, float scale) { super.renderHead(entity, move, swing, ticks, headYaw, headPitch, scale); diff --git a/src/main/java/com/minelittlepony/render/RenderPony.java b/src/main/java/com/minelittlepony/render/RenderPony.java index 0a66e052..59d63246 100644 --- a/src/main/java/com/minelittlepony/render/RenderPony.java +++ b/src/main/java/com/minelittlepony/render/RenderPony.java @@ -102,15 +102,11 @@ public class RenderPony { // We start by negating the height calculation done by mohjong. float y = -(entity.height + 0.5F - (entity.isSneaking() ? 0.25F : 0)); - if (entity.isChild()) { - y += 0.5F; - } - // Then we add our own offsets. - y += entity.height * getScaleFactor() + 0.25F; + y += ponyModel.getModelHeight() * getScaleFactor() + 0.25F; if (entity.isSneaking()) { - y -= 0.125F; + y -= 0.25F; } return initial + y;