package fr.elias.client; import fr.elias.common.EntityOresBoss; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.util.math.MathHelper; public class ModelOresBoss extends ModelBase { ModelRenderer leftFoot; ModelRenderer rightFoot; ModelRenderer leftLeg1; ModelRenderer leftLeg2; ModelRenderer leftLeg3; ModelRenderer rightLeg1; ModelRenderer rightLeg2; ModelRenderer rightLeg3; ModelRenderer bodyLegConnector; ModelRenderer bodyBottom2; ModelRenderer bodyTopLeft; ModelRenderer bodyTopRight; ModelRenderer leftArm1; ModelRenderer leftArm2; ModelRenderer leftArm3; ModelRenderer leftHand; ModelRenderer rightArm1; ModelRenderer rightArm2; ModelRenderer rightArm3; ModelRenderer rightHand; ModelRenderer head; ModelRenderer spinningGem; public ModelOresBoss() { textureWidth = 136; textureHeight = 160; leftFoot = new ModelRenderer(this, 0, 32); leftFoot.addBox(-8F, 0F, -8F, 16, 16, 16); leftFoot.setRotationPoint(-16F, 8F, 0F); leftFoot.setTextureSize(136, 160); leftFoot.mirror = true; setRotation(leftFoot, 0F, 0F, 0F); rightFoot = new ModelRenderer(this, 0, 64); rightFoot.addBox(-8F, 0F, -8F, 16, 16, 16); rightFoot.setRotationPoint(16F, 8F, 0F); rightFoot.setTextureSize(136, 160); rightFoot.mirror = true; setRotation(rightFoot, 0F, 0F, 0F); leftLeg1 = new ModelRenderer(this, 90, 0); leftLeg1.addBox(-4F, 0F, -4F, 8, 8, 8); leftLeg1.setRotationPoint(-10F, -16F, 0F); leftLeg1.setTextureSize(136, 160); leftLeg1.mirror = true; setRotation(leftLeg1, 0F, 0F, 0F); leftLeg2 = new ModelRenderer(this, 90, 0); leftLeg2.addBox(-4F, 0F, -4F, 8, 8, 8); leftLeg2.setRotationPoint(-14F, -8F, 0F); leftLeg2.setTextureSize(136, 160); leftLeg2.mirror = true; setRotation(leftLeg2, 0F, 0F, 0F); leftLeg3 = new ModelRenderer(this, 90, 0); leftLeg3.addBox(-4F, 0F, -4F, 8, 8, 8); leftLeg3.setRotationPoint(-16F, 0F, 0F); leftLeg3.setTextureSize(136, 160); leftLeg3.mirror = true; setRotation(leftLeg3, 0F, 0F, 0F); leftLeg1.addChild(leftLeg2); leftLeg2.addChild(leftLeg3); leftLeg3.addChild(leftFoot); rightLeg1 = new ModelRenderer(this, 90, 0); rightLeg1.addBox(-4F, 0F, -4F, 8, 8, 8); rightLeg1.setRotationPoint(10F, -16F, 0F); rightLeg1.setTextureSize(136, 160); rightLeg1.mirror = true; setRotation(rightLeg1, 0F, 0F, 0F); rightLeg2 = new ModelRenderer(this, 90, 0); rightLeg2.addBox(-4F, 0F, -4F, 8, 8, 8); rightLeg2.setRotationPoint(14F, -8F, 0F); rightLeg2.setTextureSize(136, 160); rightLeg2.mirror = true; setRotation(rightLeg2, 0F, 0F, 0F); rightLeg3 = new ModelRenderer(this, 90, 0); rightLeg3.addBox(-4F, 0F, -4F, 8, 8, 8); rightLeg3.setRotationPoint(16F, 0F, 0F); rightLeg3.setTextureSize(136, 160); rightLeg3.mirror = true; setRotation(rightLeg3, 0F, 0F, 0F); rightLeg1.addChild(rightLeg2); rightLeg2.addChild(rightLeg3); rightLeg3.addChild(rightFoot); bodyLegConnector = new ModelRenderer(this, 72, 16); bodyLegConnector.addBox(-5.5F, -5.5F, -5.5F, 11, 11, 11); bodyLegConnector.setRotationPoint(0F, -16F, 0F); bodyLegConnector.setTextureSize(136, 160); bodyLegConnector.mirror = true; setRotation(bodyLegConnector, 0F, 0F, 0.7853982F); bodyBottom2 = new ModelRenderer(this, 64, 38); bodyBottom2.addBox(-8F, -8F, -8F, 16, 16, 16); bodyBottom2.setRotationPoint(0F, -24F, 0F); bodyBottom2.setTextureSize(136, 160); bodyBottom2.mirror = true; setRotation(bodyBottom2, 0F, 0F, 0F); bodyTopLeft = new ModelRenderer(this, 64, 70); bodyTopLeft.addBox(-9F, -9F, -9F, 18, 18, 18); bodyTopLeft.setRotationPoint(-9F, -41F, 0F); bodyTopLeft.setTextureSize(136, 160); bodyTopLeft.mirror = true; setRotation(bodyTopLeft, 0F, 0F, -0.1047198F); bodyTopRight = new ModelRenderer(this, 64, 106); bodyTopRight.addBox(-9F, -9F, -9F, 18, 18, 18); bodyTopRight.setRotationPoint(9F, -41F, 0F); bodyTopRight.setTextureSize(136, 160); bodyTopRight.mirror = true; setRotation(bodyTopRight, 0F, 0F, 0.1047198F); leftArm1 = new ModelRenderer(this, 90, 0); leftArm1.addBox(-9F, -2F, -4F, 8, 8, 8); leftArm1.setRotationPoint(-18F, -49F, 0F); leftArm1.setTextureSize(136, 160); leftArm1.mirror = true; setRotation(leftArm1, 0F, 0F, 0F); leftArm2 = new ModelRenderer(this, 90, 0); leftArm2.addBox(-4F, 0F, -4F, 8, 8, 8); leftArm2.setRotationPoint(-25F, -43F, 0F); leftArm2.setTextureSize(136, 160); leftArm2.mirror = true; setRotation(leftArm2, 0F, 0F, 0F); leftArm3 = new ModelRenderer(this, 90, 0); leftArm3.addBox(-4F, 0F, -4F, 8, 8, 8); leftArm3.setRotationPoint(-28F, -35F, 0F); leftArm3.setTextureSize(136, 160); leftArm3.mirror = true; setRotation(leftArm3, 0F, 0F, 0F); leftHand = new ModelRenderer(this, 0, 96); leftHand.addBox(-8F, 0F, -8F, 16, 16, 16); leftHand.setRotationPoint(-28F, -27F, 0F); leftHand.setTextureSize(136, 160); leftHand.mirror = true; setRotation(leftHand, 0F, 0F, 0F); rightArm1 = new ModelRenderer(this, 90, 0); rightArm1.addBox(1F, -2F, -4F, 8, 8, 8); rightArm1.setRotationPoint(18F, -49F, 0F); rightArm1.setTextureSize(136, 160); rightArm1.mirror = true; setRotation(rightArm1, 0F, 0F, 0F); rightArm2 = new ModelRenderer(this, 90, 0); rightArm2.addBox(-4F, 0F, -4F, 8, 8, 8); rightArm2.setRotationPoint(25F, -43F, 0F); rightArm2.setTextureSize(136, 160); rightArm2.mirror = true; setRotation(rightArm2, 0F, 0F, 0F); rightArm3 = new ModelRenderer(this, 90, 0); rightArm3.addBox(-4F, 0F, -4F, 8, 8, 8); rightArm3.setRotationPoint(28F, -35F, 0F); rightArm3.setTextureSize(136, 160); rightArm3.mirror = true; setRotation(rightArm3, 0F, 0F, 0F); rightHand = new ModelRenderer(this, 0, 128); rightHand.addBox(-8F, 0F, -8F, 16, 16, 16); rightHand.setRotationPoint(28F, -27F, 0F); rightHand.setTextureSize(136, 160); rightHand.mirror = true; setRotation(rightHand, 0F, 0F, 0F); head = new ModelRenderer(this, 0, 0); head.addBox(-8F, -16F, -8F, 16, 16, 16); head.setRotationPoint(0F, -50F, 0F); head.setTextureSize(136, 160); head.mirror = true; setRotation(head, 0F, 0F, 0F); spinningGem = new ModelRenderer(this, 48, 0); spinningGem.addBox(-8F, -8F, -1F, 16, 16, 0); spinningGem.setRotationPoint(0F, -33F, -9F); spinningGem.setTextureSize(136, 160); spinningGem.mirror = true; setRotation(spinningGem, 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); //rightFoot.render(f5); leftLeg1.render(f5); rightLeg1.render(f5); //rightLeg2.render(f5); //rightLeg3.render(f5); bodyLegConnector.render(f5); bodyBottom2.render(f5); bodyTopLeft.render(f5); bodyTopRight.render(f5); leftArm1.render(f5); leftArm2.render(f5); leftArm3.render(f5); leftHand.render(f5); rightArm1.render(f5); rightArm2.render(f5); rightArm3.render(f5); rightHand.render(f5); head.render(f5); spinningGem.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 limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scaleFactor, Entity entityIn) { leftLeg2.rotationPointX = -4.0F; leftLeg2.rotationPointY = 8.0F; leftLeg2.rotationPointZ = 0.0F; leftLeg3.rotationPointX = -2.0F; leftLeg3.rotationPointY = 8.0F; leftLeg3.rotationPointZ = 0.0F; leftFoot.rotationPointX = 0F; rightLeg2.rotationPointX = 4.0F; rightLeg2.rotationPointY = 8.0F; rightLeg2.rotationPointZ = 0.0F; rightLeg3.rotationPointX = 2.0F; rightLeg3.rotationPointY = 8.0F; rightLeg3.rotationPointZ = 0.0F; rightFoot.rotationPointX = 0F; boolean flag = entityIn instanceof EntityLivingBase && ((EntityLivingBase)entityIn).getTicksElytraFlying() > 4; if(entityIn instanceof EntityOresBoss) { if(((EntityOresBoss)entityIn).phase == 1) { spinningGem.rotateAngleZ += 0.08F; } if(((EntityOresBoss)entityIn).phase == 2) { spinningGem.rotateAngleZ += 0.16F; } if(((EntityOresBoss)entityIn).phase == 3) { spinningGem.rotateAngleZ += 0.32F; } } this.head.rotateAngleY = netHeadYaw * 0.017453292F; float f = 1.0F; if (flag) { f = (float)(entityIn.motionX * entityIn.motionX + entityIn.motionY * entityIn.motionY + entityIn.motionZ * entityIn.motionZ); f = f / 0.2F; f = f * f * f; } if (f < 1.0F) { f = 1.0F; } this.rightArm1.rotateAngleX = MathHelper.cos(limbSwing * 0.6662F + (float)Math.PI) * 2.0F * limbSwingAmount * 0.5F / f; this.leftArm1.rotateAngleX = MathHelper.cos(limbSwing * 0.6662F) * 2.0F * limbSwingAmount * 0.5F / f; this.rightArm1.rotateAngleZ = 0.0F; this.leftArm1.rotateAngleZ = 0.0F; this.rightLeg1.rotateAngleX = MathHelper.cos(limbSwing * 0.6662F) * 0.4F * limbSwingAmount / f; this.leftLeg1.rotateAngleX = MathHelper.cos(limbSwing * 0.6662F + (float)Math.PI) * 0.4F * limbSwingAmount / f; this.rightLeg1.rotateAngleY = 0.0F; this.leftLeg1.rotateAngleY = 0.0F; this.rightLeg1.rotateAngleZ = 0.0F; this.leftLeg1.rotateAngleZ = 0.0F; this.rightArm1.rotateAngleY = 0.0F; this.rightArm1.rotateAngleZ = 0.0F; this.rightArm1.rotateAngleZ += MathHelper.cos(ageInTicks * 0.09F) * 0.05F + 0.05F; this.leftArm1.rotateAngleZ -= MathHelper.cos(ageInTicks * 0.09F) * 0.05F + 0.05F; this.rightArm1.rotateAngleX += MathHelper.sin(ageInTicks * 0.067F) * 0.05F; this.leftArm1.rotateAngleX -= MathHelper.sin(ageInTicks * 0.067F) * 0.05F; rightArm3.rotateAngleX = rightArm2.rotateAngleX; rightArm2.rotateAngleX = rightArm1.rotateAngleX; leftArm3.rotateAngleX = leftArm2.rotateAngleX; leftArm2.rotateAngleX = leftArm1.rotateAngleX; leftHand.rotateAngleX = leftArm3.rotateAngleX; rightHand.rotateAngleX = rightArm3.rotateAngleX; // rightLeg3.rotateAngleX = rightLeg2.rotateAngleX; rightLeg2.rotateAngleX = rightLeg1.rotateAngleX; leftLeg3.rotateAngleX = leftLeg2.rotateAngleX; leftLeg2.rotateAngleX = leftLeg1.rotateAngleX; leftFoot.rotateAngleX = leftLeg3.rotateAngleX; rightFoot.rotateAngleX = rightLeg3.rotateAngleX; } }