package uk.co.wehavecookies56.kk.client.model.mobs; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; public class ModelShadow extends ModelBase { ModelRenderer UpperBody; ModelRenderer LowerBody; ModelRenderer LowerHead; ModelRenderer Head; ModelRenderer LegLeft1; ModelRenderer LegLeft3; ModelRenderer LegLeft2; ModelRenderer LegRight1; ModelRenderer LegRight3; ModelRenderer LegRight2; ModelRenderer ArmLeft1; ModelRenderer ArmLeft2; ModelRenderer ArmRight1; ModelRenderer ArmRight2; ModelRenderer AntenaLeft1; ModelRenderer AntenaLeft2; ModelRenderer AntenaRight1; ModelRenderer AntenaRight2; // Default variables for every model protected double distanceMovedTotal = 0.0D; protected static final double CYCLES_PER_BLOCK = 1.0D; protected int cycleIndex = 0; private int[][] ticksForWalkingAnimation = new int[][] { {0, -90}, {100, 2}, {51, -51} }; // Walking animation protected double[][] animationWalk = new double[][] { { 0 , 100 , 51 , -90 , 2 , -46}, { -40 , 51 , 0 , -40 , 51 , 0}, { -90 , 2 , -46 , 0 , 100 , 51}, { -90 , 2 , -46 , 0 , 100 , 51}, { -40 , 51 , 0 , -40 , 51 , 0}, { 0 , 100 , -51 , -90 , 2 , -46}, }; public ModelShadow() { textureWidth = 32; textureHeight = 32; UpperBody = new ModelRenderer(this, 0, 0); UpperBody.addBox(-1.5F, -4.5F, -1.8F, 3, 5, 4); UpperBody.setRotationPoint(0F, 19F, 2F); UpperBody.setTextureSize(32, 32); UpperBody.mirror = true; setRotation(UpperBody, 0.7063936F, 0F, 0F); LowerBody = new ModelRenderer(this, 0, 0); LowerBody.addBox(-2F, -1F, -2F, 4, 3, 4); LowerBody.setRotationPoint(0F, 19F, 2F); LowerBody.setTextureSize(32, 32); LowerBody.mirror = true; setRotation(LowerBody, 0F, 0F, 0F); LowerHead = new ModelRenderer(this, 0, 0); LowerHead.addBox(-1.5F, -5.066667F, -4.4F, 3, 3, 3); LowerHead.setRotationPoint(0F, 19F, 2F); LowerHead.setTextureSize(32, 32); LowerHead.mirror = true; setRotation(LowerHead, 0F, 0F, 0F); Head = new ModelRenderer(this, 0, 10); Head.addBox(-2.5F, -5.5F, -9F, 5, 5, 5); Head.setRotationPoint(0F, 19F, 2F); Head.setTextureSize(32, 32); Head.mirror = true; setRotation(Head, 0F, 0F, 0F); LegLeft1 = new ModelRenderer(this, 0, 0); LegLeft1.addBox(2F, 0.06666667F, 0.5F, 1, 3, 2); LegLeft1.setRotationPoint(0F, 19F, 2F); LegLeft1.setTextureSize(32, 32); LegLeft1.mirror = true; setRotation(LegLeft1, -0.7063936F, 0F, 0F); LegLeft3 = new ModelRenderer(this, 0, 0); LegLeft3.addBox(1.5F, 4F, -3.5F, 2, 1, 5); LegLeft3.setRotationPoint(0F, 19F, 2F); LegLeft3.setTextureSize(32, 32); LegLeft3.mirror = true; setRotation(LegLeft3, 0F, 0F, 0F); LegLeft2 = new ModelRenderer(this, 0, 0); LegLeft2.addBox(2F, 1.533333F, -3.066667F, 1, 2, 1); LegLeft2.setRotationPoint(0F, 19F, 2F); LegLeft2.setTextureSize(32, 32); LegLeft2.mirror = true; setRotation(LegLeft2, 0.8922867F, 0F, 0F); LegRight1 = new ModelRenderer(this, 0, 0); LegRight1.addBox(-3F, 0.06666667F, 0.5F, 1, 3, 2); LegRight1.setRotationPoint(0F, 19F, 2F); LegRight1.setTextureSize(32, 32); LegRight1.mirror = true; setRotation(LegRight1, -0.7063936F, 0F, 0F); LegRight3 = new ModelRenderer(this, 0, 0); LegRight3.addBox(-3.5F, 4F, -3.5F, 2, 1, 5); LegRight3.setRotationPoint(0F, 19F, 2F); LegRight3.setTextureSize(32, 32); LegRight3.mirror = true; setRotation(LegRight3, 0F, 0F, 0F); LegRight2 = new ModelRenderer(this, 0, 0); LegRight2.addBox(-3F, 1.533333F, -3.066667F, 1, 2, 1); LegRight2.setRotationPoint(0F, 19F, 2F); LegRight2.setTextureSize(32, 32); LegRight2.mirror = true; setRotation(LegRight2, 0.8922867F, 0F, 0F); ArmLeft1 = new ModelRenderer(this, 0, 0); ArmLeft1.addBox(1F, -1.466667F, -2.266667F, 2, 2, 1); ArmLeft1.setRotationPoint(0F, 19F, 2F); ArmLeft1.setTextureSize(32, 32); ArmLeft1.mirror = true; setRotation(ArmLeft1, -0.4089647F, 0F, 0F); ArmLeft2 = new ModelRenderer(this, 0, 0); ArmLeft2.addBox(2F, -1.4F, -4.333333F, 1, 1, 3); ArmLeft2.setRotationPoint(0F, 19F, 2F); ArmLeft2.setTextureSize(32, 32); ArmLeft2.mirror = true; setRotation(ArmLeft2, 0.4461433F, 0F, 0F); ArmRight1 = new ModelRenderer(this, 0, 0); ArmRight1.addBox(-3F, -1.466667F, -2.266667F, 2, 2, 1); ArmRight1.setRotationPoint(0F, 19F, 2F); ArmRight1.setTextureSize(32, 32); ArmRight1.mirror = true; setRotation(ArmRight1, -0.4089647F, 0F, 0F); ArmRight2 = new ModelRenderer(this, 0, 0); ArmRight2.addBox(-3F, -1.4F, -4.333333F, 1, 1, 3); ArmRight2.setRotationPoint(0F, 19F, 2F); ArmRight2.setTextureSize(32, 32); ArmRight2.mirror = true; setRotation(ArmRight2, 0.4461433F, 0F, 0F); AntenaLeft1 = new ModelRenderer(this, 0, 0); AntenaLeft1.addBox(1F, -6.5F, -8F, 1, 2, 1); AntenaLeft1.setRotationPoint(0F, 19F, 2F); AntenaLeft1.setTextureSize(32, 32); AntenaLeft1.mirror = true; setRotation(AntenaLeft1, 0F, 0F, 0F); AntenaLeft2 = new ModelRenderer(this, 0, 0); AntenaLeft2.addBox(1F, -7.5F, -10F, 1, 1, 3); AntenaLeft2.setRotationPoint(0F, 19F, 2F); AntenaLeft2.setTextureSize(32, 32); AntenaLeft2.mirror = true; setRotation(AntenaLeft2, 0F, 0F, 0F); AntenaRight1 = new ModelRenderer(this, 0, 0); AntenaRight1.addBox(-2F, -6.5F, -8F, 1, 2, 1); AntenaRight1.setRotationPoint(0F, 19F, 2F); AntenaRight1.setTextureSize(32, 32); AntenaRight1.mirror = true; setRotation(AntenaRight1, 0F, 0F, 0F); AntenaRight2 = new ModelRenderer(this, 0, 0); AntenaRight2.addBox(-2F, -7.5F, -10F, 1, 1, 3); AntenaRight2.setRotationPoint(0F, 19F, 2F); AntenaRight2.setTextureSize(32, 32); AntenaRight2.mirror = true; setRotation(AntenaRight2, 0F, 0F, 0F); } public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { super.render(entity, f, f1, f2, f3, f4, f5); setRotationAngles(f, f1, f2, f3, f4, f5, entity); //if(EntityHelper.getState(entity) != 1) //{ UpperBody.render(f5); LowerBody.render(f5); LowerHead.render(f5); Head.render(f5); LegLeft1.render(f5); LegLeft3.render(f5); LegLeft2.render(f5); LegRight1.render(f5); LegRight3.render(f5); LegRight2.render(f5); ArmLeft1.render(f5); ArmLeft2.render(f5); ArmRight1.render(f5); ArmRight2.render(f5); AntenaLeft1.render(f5); AntenaLeft2.render(f5); AntenaRight1.render(f5); AntenaRight2.render(f5); //} } private void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = x; model.rotateAngleY = y; model.rotateAngleZ = z; } public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity e) { updateDistanceMovedTotal(e); cycleIndex = (int) ((getDistanceMovedTotal() * CYCLES_PER_BLOCK) % animationWalk.length); if(e.getDistance(e.prevPosX, e.prevPosY, e.prevPosZ) > 0) { LegLeft1.rotateAngleX = degToRad(animationWalk[cycleIndex][0]); LegLeft2.rotateAngleX = degToRad(animationWalk[cycleIndex][1]); LegLeft3.rotateAngleX = degToRad(animationWalk[cycleIndex][2]); LegRight1.rotateAngleX = degToRad(animationWalk[cycleIndex][3]); LegRight2.rotateAngleX = degToRad(animationWalk[cycleIndex][4]); LegRight3.rotateAngleX = degToRad(animationWalk[cycleIndex][5]); } else { LegLeft1.rotateAngleX = LegRight1.rotateAngleX = -0.7063936F; LegLeft2.rotateAngleX = LegRight2.rotateAngleX = 0.8922867F; LegLeft3.rotateAngleX = LegRight3.rotateAngleX = 0; } } // Default methods/functions for every model protected void updateDistanceMovedTotal(Entity e) { distanceMovedTotal += e.getDistance(e.prevPosX, e.prevPosY, e.prevPosZ); } protected double getDistanceMovedTotal() { return (distanceMovedTotal); } protected float degToRad(double degrees) { return (float) (degrees * (double)Math.PI / 180) ; } }