diff --git a/src/main/java/com/minelittlepony/model/capabilities/IModelUnicorn.java b/src/main/java/com/minelittlepony/model/capabilities/IModelUnicorn.java index 61751bd7..e27904d8 100644 --- a/src/main/java/com/minelittlepony/model/capabilities/IModelUnicorn.java +++ b/src/main/java/com/minelittlepony/model/capabilities/IModelUnicorn.java @@ -15,6 +15,11 @@ public interface IModelUnicorn extends IModel { */ boolean canCast(); + /** + * Returns true if this model has an visible horns. + */ + boolean hasHorn(); + /** * Returns true if this model is currently using magic (horn is lit). * @return diff --git a/src/main/java/com/minelittlepony/model/components/ModelPonyHead.java b/src/main/java/com/minelittlepony/model/components/ModelPonyHead.java index 322ca435..4e4f171e 100644 --- a/src/main/java/com/minelittlepony/model/components/ModelPonyHead.java +++ b/src/main/java/com/minelittlepony/model/components/ModelPonyHead.java @@ -61,7 +61,7 @@ public class ModelPonyHead extends ModelHumanoidHead implements ICapitated { super.render(entity, move, swing, ticks, headYaw, headPitch, scale); - if (metadata.hasMagic()) { + if (metadata.hasHorn()) { skeletonHead.postRender(scale); horn.renderPart(scale, entity.getUniqueID()); } diff --git a/src/main/java/com/minelittlepony/model/player/ModelUnicorn.java b/src/main/java/com/minelittlepony/model/player/ModelUnicorn.java index 658696b8..72883910 100644 --- a/src/main/java/com/minelittlepony/model/player/ModelUnicorn.java +++ b/src/main/java/com/minelittlepony/model/player/ModelUnicorn.java @@ -116,6 +116,11 @@ public class ModelUnicorn extends ModelEarthPony implements IModelUnicorn { return metadata.hasMagic(); } + @Override + public boolean hasHorn() { + return metadata.hasHorn(); + } + @Override public boolean isCasting() { return rightArmPose != ArmPose.EMPTY || leftArmPose != ArmPose.EMPTY; @@ -137,9 +142,9 @@ public class ModelUnicorn extends ModelEarthPony implements IModelUnicorn { 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 (canCast()) { + if (hasHorn()) { horn.renderPart(scale, entity.getUniqueID()); - if (isCasting()) { + if (canCast() && isCasting()) { horn.renderMagic(getMagicColor(), scale); } } diff --git a/src/main/java/com/minelittlepony/pony/data/IPonyData.java b/src/main/java/com/minelittlepony/pony/data/IPonyData.java index 317deb5e..c7dee7a0 100644 --- a/src/main/java/com/minelittlepony/pony/data/IPonyData.java +++ b/src/main/java/com/minelittlepony/pony/data/IPonyData.java @@ -35,6 +35,11 @@ public interface IPonyData extends IMetadataSection { */ int getGlowColor(); + /** + * Returns true if and only if this metadata represents a pony that has a horn. + */ + boolean hasHorn(); + /** * Returns true if and only if this metadata represents a pony that can cast magic. */ diff --git a/src/main/java/com/minelittlepony/pony/data/PonyData.java b/src/main/java/com/minelittlepony/pony/data/PonyData.java index a8059de0..732a3e26 100644 --- a/src/main/java/com/minelittlepony/pony/data/PonyData.java +++ b/src/main/java/com/minelittlepony/pony/data/PonyData.java @@ -69,9 +69,14 @@ public class PonyData implements IPonyData { return glowColor; } + @Override + public boolean hasHorn() { + return getRace() != null && getRace().getEffectiveRace(false).hasHorn(); + } + @Override public boolean hasMagic() { - return getRace() != null && getRace().getEffectiveRace(false).hasHorn() && getGlowColor() != 0; + return hasHorn() && getGlowColor() != 0; } @Override