2015-11-17 06:09:04 +01:00
|
|
|
package com.brohoof.minelittlepony.renderer;
|
2015-08-02 00:36:33 +02:00
|
|
|
|
2015-11-17 06:09:04 +01:00
|
|
|
import com.brohoof.minelittlepony.MineLittlePony;
|
2015-12-09 04:14:42 +01:00
|
|
|
import com.brohoof.minelittlepony.PonyGender;
|
|
|
|
import com.brohoof.minelittlepony.PonyRace;
|
|
|
|
import com.brohoof.minelittlepony.TailLengths;
|
2016-03-05 05:55:42 +01:00
|
|
|
import com.brohoof.minelittlepony.ducks.IRenderPony;
|
2015-12-16 05:29:47 +01:00
|
|
|
import com.brohoof.minelittlepony.model.AbstractPonyModel;
|
2015-11-17 06:09:04 +01:00
|
|
|
import com.brohoof.minelittlepony.model.PlayerModel;
|
|
|
|
import com.brohoof.minelittlepony.renderer.layer.LayerHeldPonyItem;
|
|
|
|
import com.brohoof.minelittlepony.renderer.layer.LayerPonyArmor;
|
|
|
|
import com.brohoof.minelittlepony.renderer.layer.LayerPonySkull;
|
2015-08-02 00:36:33 +02:00
|
|
|
|
2016-05-04 03:23:57 +02:00
|
|
|
import net.minecraft.client.model.ModelBiped.ArmPose;
|
2015-08-02 00:36:33 +02:00
|
|
|
import net.minecraft.client.renderer.entity.RenderLiving;
|
|
|
|
import net.minecraft.client.renderer.entity.RenderManager;
|
|
|
|
import net.minecraft.entity.EntityLiving;
|
2016-05-20 19:49:32 +02:00
|
|
|
import net.minecraft.item.EnumAction;
|
2015-08-02 00:36:33 +02:00
|
|
|
import net.minecraft.item.ItemStack;
|
2016-05-20 19:49:32 +02:00
|
|
|
import net.minecraft.util.EnumHandSide;
|
2015-08-02 00:36:33 +02:00
|
|
|
|
2016-03-01 06:33:09 +01:00
|
|
|
public abstract class RenderPonyMob<T extends EntityLiving> extends RenderLiving<T> implements IRenderPony {
|
2015-12-15 06:32:57 +01:00
|
|
|
|
2015-12-16 05:29:47 +01:00
|
|
|
protected AbstractPonyModel mobModel;
|
2015-08-02 00:36:33 +02:00
|
|
|
protected PlayerModel playerModel;
|
|
|
|
|
|
|
|
public RenderPonyMob(RenderManager renderManager, PlayerModel playerModel) {
|
2015-12-09 04:14:42 +01:00
|
|
|
super(renderManager, playerModel.getModel(), playerModel.getShadowsize());
|
|
|
|
this.mobModel = playerModel.getModel();
|
2015-08-02 00:36:33 +02:00
|
|
|
this.playerModel = playerModel;
|
|
|
|
|
|
|
|
this.addLayer(new LayerPonyArmor(this));
|
|
|
|
this.addLayer(new LayerHeldPonyItem(this));
|
|
|
|
// this.addLayer(new LayerArrow(this));
|
|
|
|
this.addLayer(new LayerPonySkull(this));
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2016-03-01 06:33:09 +01:00
|
|
|
public void doRender(T entity, double xPosition, double yPosition, double zPosition, float yaw,
|
2015-08-02 00:36:33 +02:00
|
|
|
float partialTicks) {
|
|
|
|
double yOrigin = yPosition;
|
|
|
|
if (entity.isSneaking()) {
|
|
|
|
yOrigin -= 0.125D;
|
|
|
|
}
|
|
|
|
super.doRender(entity, xPosition, yOrigin, zPosition, yaw, partialTicks);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2016-05-20 19:49:32 +02:00
|
|
|
protected void preRenderCallback(T entity, float partialTickTime) {
|
|
|
|
ItemStack main = entity.getHeldItemMainhand();
|
|
|
|
ItemStack off = entity.getHeldItemOffhand();
|
|
|
|
ArmPose mainPose = ArmPose.EMPTY;
|
|
|
|
ArmPose offPose = ArmPose.EMPTY;
|
2015-12-15 06:32:57 +01:00
|
|
|
|
2016-05-20 19:49:32 +02:00
|
|
|
if (main != null) {
|
|
|
|
mainPose = ArmPose.ITEM;
|
|
|
|
|
|
|
|
if (entity.getItemInUseCount() > 0) {
|
|
|
|
EnumAction action = main.getItemUseAction();
|
|
|
|
|
|
|
|
if (action == EnumAction.BLOCK) {
|
|
|
|
mainPose = ArmPose.BLOCK;
|
|
|
|
} else if (action == EnumAction.BOW) {
|
|
|
|
mainPose = ArmPose.BOW_AND_ARROW;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (off != null) {
|
|
|
|
offPose = ArmPose.ITEM;
|
|
|
|
|
|
|
|
if (entity.getItemInUseCount() > 0) {
|
|
|
|
EnumAction action = off.getItemUseAction();
|
|
|
|
|
|
|
|
if (action == EnumAction.BLOCK) {
|
|
|
|
offPose = ArmPose.BLOCK;
|
2016-06-12 20:19:17 +02:00
|
|
|
} else if (action == EnumAction.BOW) {
|
|
|
|
offPose = ArmPose.BOW_AND_ARROW;
|
2016-05-20 19:49:32 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (entity.getPrimaryHand() == EnumHandSide.RIGHT) {
|
|
|
|
this.playerModel.getModel().rightArmPose = mainPose;
|
|
|
|
this.playerModel.getModel().leftArmPose = offPose;
|
|
|
|
} else {
|
|
|
|
this.playerModel.getModel().rightArmPose = offPose;
|
|
|
|
this.playerModel.getModel().leftArmPose = mainPose;
|
|
|
|
}
|
2015-12-15 06:32:57 +01:00
|
|
|
|
|
|
|
this.playerModel.getModel().isSneak = false;
|
|
|
|
this.playerModel.getModel().isFlying = false;
|
|
|
|
this.playerModel.getModel().isSleeping = false;
|
|
|
|
|
|
|
|
this.playerModel.getModel().metadata.setRace(PonyRace.EARTH);
|
|
|
|
this.playerModel.getModel().metadata.setGender(PonyGender.MARE);
|
|
|
|
this.playerModel.getModel().metadata.setTail(TailLengths.FULL);
|
|
|
|
|
2016-01-26 09:16:11 +01:00
|
|
|
if (MineLittlePony.getConfig().showscale) {
|
2015-12-15 06:32:57 +01:00
|
|
|
this.shadowSize = 0.4F;
|
|
|
|
}
|
2015-08-02 00:36:33 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public PlayerModel getPony() {
|
|
|
|
return playerModel;
|
|
|
|
}
|
|
|
|
}
|