Fixed mobs not heeding the scale of their skins

This commit is contained in:
Sollace 2018-07-26 18:45:22 +02:00
parent 14f98369e8
commit 302a8a22ad
4 changed files with 28 additions and 32 deletions

View file

@ -13,7 +13,6 @@ import com.minelittlepony.pony.data.PonySize;
import com.minelittlepony.render.AbstractPonyRenderer; import com.minelittlepony.render.AbstractPonyRenderer;
import com.minelittlepony.render.PonyRenderer; import com.minelittlepony.render.PonyRenderer;
import com.minelittlepony.render.plane.PlaneRenderer; import com.minelittlepony.render.plane.PlaneRenderer;
import com.minelittlepony.transform.PonyTransformation;
import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelPlayer; 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.client.renderer.GlStateManager;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.EnumHandSide; import net.minecraft.util.EnumHandSide;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
@ -720,8 +718,8 @@ public abstract class AbstractPonyModel extends ModelPlayer implements IModel {
} }
@Override @Override
public PonyTransformation getBodyTransformation() { public PonySize getSize() {
return (isChild ? PonySize.FOAL : metadata.getSize()).getTranformation(); return isChild ? PonySize.FOAL : metadata.getSize();
} }
@Override @Override
@ -844,7 +842,7 @@ public abstract class AbstractPonyModel extends ModelPlayer implements IModel {
rotate(motionPitch, 1, 0, 0); rotate(motionPitch, 1, 0, 0);
} }
getBodyTransformation().transform(this, part); getSize().getTranformation().transform(this, part);
} }
/** /**

View file

@ -3,8 +3,8 @@ package com.minelittlepony.model.capabilities;
import com.minelittlepony.model.BodyPart; import com.minelittlepony.model.BodyPart;
import com.minelittlepony.model.armour.PonyArmor; import com.minelittlepony.model.armour.PonyArmor;
import com.minelittlepony.pony.data.IPonyData; import com.minelittlepony.pony.data.IPonyData;
import com.minelittlepony.pony.data.PonySize;
import com.minelittlepony.pony.data.PonyWearable; import com.minelittlepony.pony.data.PonyWearable;
import com.minelittlepony.transform.PonyTransformation;
public interface IModel extends ICapitated { public interface IModel extends ICapitated {
@ -20,7 +20,7 @@ public interface IModel extends ICapitated {
*/ */
void transform(BodyPart part); 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. * Returns a new pony armour to go with this model. Called on startup by a model wrapper.

View file

@ -21,6 +21,8 @@ import net.minecraft.util.ResourceLocation;
import javax.annotation.Nonnull; 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<T extends EntityLiving> extends RenderLiving<T> implements IRenderPony { public abstract class RenderPonyMob<T extends EntityLiving> extends RenderLiving<T> implements IRenderPony {
protected ModelWrapper playerModel; protected ModelWrapper playerModel;
@ -31,6 +33,7 @@ public abstract class RenderPonyMob<T extends EntityLiving> extends RenderLiving
public RenderPonyMob(RenderManager manager, ModelWrapper model) { public RenderPonyMob(RenderManager manager, ModelWrapper model) {
super(manager, model.getBody(), 0.5F); super(manager, model.getBody(), 0.5F);
setPonyModel(model); setPonyModel(model);
addLayers(); addLayers();
@ -61,8 +64,6 @@ public abstract class RenderPonyMob<T extends EntityLiving> extends RenderLiving
updateModel(entity); updateModel(entity);
ponyModel.updateLivingState(entity, pony); ponyModel.updateLivingState(entity, pony);
super.preRenderCallback(entity, ticks);
shadowSize = getShadowScale(); shadowSize = getShadowScale();
float s = getScaleFactor(); float s = getScaleFactor();
@ -75,22 +76,6 @@ public abstract class RenderPonyMob<T extends EntityLiving> 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 @Override
public ModelWrapper getModelWrapper() { public ModelWrapper getModelWrapper() {
return playerModel; return playerModel;
@ -98,14 +83,28 @@ public abstract class RenderPonyMob<T extends EntityLiving> extends RenderLiving
protected void setPonyModel(ModelWrapper model) { protected void setPonyModel(ModelWrapper model) {
playerModel = 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) { protected void updateModel(T entity) {
pony = MineLittlePony.getInstance().getManager().getPony(getEntityTexture(entity), false); updatePony(entity);
playerModel.apply(pony.getMetadata()); playerModel.apply(pony.getMetadata());
} }
@Override
public float getShadowScale() {
return ponyModel.getSize().getShadowSize();
}
@Override
public float getScaleFactor() {
return ponyModel.getSize().getScaleFactor();
}
@Override @Override
@Nonnull @Nonnull
protected final ResourceLocation getEntityTexture(T entity) { protected final ResourceLocation getEntityTexture(T entity) {

View file

@ -95,11 +95,12 @@ public class RenderPonyPlayer extends RenderPlayer implements IRenderPony {
setPonyModel(model); setPonyModel(model);
layerRenderers.clear();
addLayers(); addLayers();
} }
protected void addLayers() { protected void addLayers() {
layerRenderers.clear();
addLayer(new LayerPonyArmor<>(this)); addLayer(new LayerPonyArmor<>(this));
addLayer(new LayerArrow(this)); addLayer(new LayerArrow(this));
addLayer(new LayerPonyCustomHead<>(this)); addLayer(new LayerPonyCustomHead<>(this));
@ -133,8 +134,6 @@ public class RenderPonyPlayer extends RenderPlayer implements IRenderPony {
updateModel(player); updateModel(player);
ponyModel.updateLivingState(player, pony); ponyModel.updateLivingState(player, pony);
super.preRenderCallback(player, ticks);
shadowSize = getShadowScale(); shadowSize = getShadowScale();
float s = getScaleFactor(); float s = getScaleFactor();
@ -231,11 +230,11 @@ public class RenderPonyPlayer extends RenderPlayer implements IRenderPony {
@Override @Override
public float getShadowScale() { public float getShadowScale() {
return pony.getMetadata().getSize().getShadowSize(); return ponyModel.getSize().getShadowSize();
} }
@Override @Override
public float getScaleFactor() { public float getScaleFactor() {
return pony.getMetadata().getSize().getScaleFactor(); return ponyModel.getSize().getScaleFactor();
} }
} }