diff --git a/src/main/java/com/minelittlepony/model/AbstractPonyModel.java b/src/main/java/com/minelittlepony/model/AbstractPonyModel.java index be657e3d..2a0c7f51 100644 --- a/src/main/java/com/minelittlepony/model/AbstractPonyModel.java +++ b/src/main/java/com/minelittlepony/model/AbstractPonyModel.java @@ -13,7 +13,6 @@ import com.minelittlepony.pony.data.PonySize; import com.minelittlepony.render.AbstractPonyRenderer; import com.minelittlepony.render.PonyRenderer; import com.minelittlepony.render.plane.PlaneRenderer; -import com.minelittlepony.transform.PonyTransformation; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelPlayer; @@ -21,7 +20,6 @@ import net.minecraft.client.model.ModelRenderer; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.EnumHandSide; import net.minecraft.util.math.MathHelper; @@ -720,8 +718,8 @@ public abstract class AbstractPonyModel extends ModelPlayer implements IModel { } @Override - public PonyTransformation getBodyTransformation() { - return (isChild ? PonySize.FOAL : metadata.getSize()).getTranformation(); + public PonySize getSize() { + return isChild ? PonySize.FOAL : metadata.getSize(); } @Override @@ -844,7 +842,7 @@ public abstract class AbstractPonyModel extends ModelPlayer implements IModel { rotate(motionPitch, 1, 0, 0); } - getBodyTransformation().transform(this, part); + getSize().getTranformation().transform(this, part); } /** diff --git a/src/main/java/com/minelittlepony/model/capabilities/IModel.java b/src/main/java/com/minelittlepony/model/capabilities/IModel.java index 12d2aec0..c823b7e0 100644 --- a/src/main/java/com/minelittlepony/model/capabilities/IModel.java +++ b/src/main/java/com/minelittlepony/model/capabilities/IModel.java @@ -3,8 +3,8 @@ package com.minelittlepony.model.capabilities; import com.minelittlepony.model.BodyPart; import com.minelittlepony.model.armour.PonyArmor; import com.minelittlepony.pony.data.IPonyData; +import com.minelittlepony.pony.data.PonySize; import com.minelittlepony.pony.data.PonyWearable; -import com.minelittlepony.transform.PonyTransformation; public interface IModel extends ICapitated { @@ -20,7 +20,7 @@ public interface IModel extends ICapitated { */ void transform(BodyPart part); - PonyTransformation getBodyTransformation(); + PonySize getSize(); /** * Returns a new pony armour to go with this model. Called on startup by a model wrapper. diff --git a/src/main/java/com/minelittlepony/render/RenderPonyMob.java b/src/main/java/com/minelittlepony/render/RenderPonyMob.java index 3df537ad..3a25b741 100644 --- a/src/main/java/com/minelittlepony/render/RenderPonyMob.java +++ b/src/main/java/com/minelittlepony/render/RenderPonyMob.java @@ -21,6 +21,8 @@ import net.minecraft.util.ResourceLocation; import javax.annotation.Nonnull; +// TODO: A lot of this duplicates RenderPonyPlayer +// and is the whole reason we had this scaling bug in the first place. public abstract class RenderPonyMob extends RenderLiving implements IRenderPony { protected ModelWrapper playerModel; @@ -31,6 +33,7 @@ public abstract class RenderPonyMob extends RenderLiving public RenderPonyMob(RenderManager manager, ModelWrapper model) { super(manager, model.getBody(), 0.5F); + setPonyModel(model); addLayers(); @@ -61,8 +64,6 @@ public abstract class RenderPonyMob extends RenderLiving updateModel(entity); ponyModel.updateLivingState(entity, pony); - - super.preRenderCallback(entity, ticks); shadowSize = getShadowScale(); float s = getScaleFactor(); @@ -75,22 +76,6 @@ public abstract class RenderPonyMob extends RenderLiving } } - @Override - public float getShadowScale() { - if (mainModel.isChild) { - return 0.25F; - } else if (MineLittlePony.getConfig().showscale) { - return 0.4F; - } - return 0.5F; - } - - @Override - public float getScaleFactor() { - if (MineLittlePony.getConfig().showscale) return 0.9F; - return 1; - } - @Override public ModelWrapper getModelWrapper() { return playerModel; @@ -98,14 +83,28 @@ public abstract class RenderPonyMob extends RenderLiving protected void setPonyModel(ModelWrapper model) { playerModel = model; - ponyModel = playerModel.getBody(); + mainModel = ponyModel = playerModel.getBody(); + } + + protected void updatePony(T entity) { + pony = MineLittlePony.getInstance().getManager().getPony(getEntityTexture(entity), false); } protected void updateModel(T entity) { - pony = MineLittlePony.getInstance().getManager().getPony(getEntityTexture(entity), false); + updatePony(entity); playerModel.apply(pony.getMetadata()); } + @Override + public float getShadowScale() { + return ponyModel.getSize().getShadowSize(); + } + + @Override + public float getScaleFactor() { + return ponyModel.getSize().getScaleFactor(); + } + @Override @Nonnull protected final ResourceLocation getEntityTexture(T entity) { diff --git a/src/main/java/com/minelittlepony/render/player/RenderPonyPlayer.java b/src/main/java/com/minelittlepony/render/player/RenderPonyPlayer.java index d1fac4ad..e6e0c3c7 100644 --- a/src/main/java/com/minelittlepony/render/player/RenderPonyPlayer.java +++ b/src/main/java/com/minelittlepony/render/player/RenderPonyPlayer.java @@ -95,11 +95,12 @@ public class RenderPonyPlayer extends RenderPlayer implements IRenderPony { setPonyModel(model); - layerRenderers.clear(); addLayers(); } protected void addLayers() { + layerRenderers.clear(); + addLayer(new LayerPonyArmor<>(this)); addLayer(new LayerArrow(this)); addLayer(new LayerPonyCustomHead<>(this)); @@ -133,8 +134,6 @@ public class RenderPonyPlayer extends RenderPlayer implements IRenderPony { updateModel(player); ponyModel.updateLivingState(player, pony); - - super.preRenderCallback(player, ticks); shadowSize = getShadowScale(); float s = getScaleFactor(); @@ -231,11 +230,11 @@ public class RenderPonyPlayer extends RenderPlayer implements IRenderPony { @Override public float getShadowScale() { - return pony.getMetadata().getSize().getShadowSize(); + return ponyModel.getSize().getShadowSize(); } @Override public float getScaleFactor() { - return pony.getMetadata().getSize().getScaleFactor(); + return ponyModel.getSize().getScaleFactor(); } }