package net.minecraft.client.model;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.Entity;
import net.minecraft.entity.monster.EntityGuardian;
import net.minecraft.util.MathHelper;
import net.minecraft.util.Vec3;
public class ModelGuardian extends ModelBase
{
private ModelRenderer guardianBody;
private ModelRenderer guardianEye;
private ModelRenderer[] guardianSpines;
private ModelRenderer[] guardianTail;
private static final String __OBFID = "CL_00002628";
public ModelGuardian()
{
this.textureWidth = 64;
this.textureHeight = 64;
this.guardianSpines = new ModelRenderer[12];
this.guardianBody = new ModelRenderer(this);
this.guardianBody.setTextureOffset(0, 0).addBox(-6.0F, 10.0F, -8.0F, 12, 12, 16);
this.guardianBody.setTextureOffset(0, 28).addBox(-8.0F, 10.0F, -6.0F, 2, 12, 12);
this.guardianBody.setTextureOffset(0, 28).addBox(6.0F, 10.0F, -6.0F, 2, 12, 12, true);
this.guardianBody.setTextureOffset(16, 40).addBox(-6.0F, 8.0F, -6.0F, 12, 2, 12);
this.guardianBody.setTextureOffset(16, 40).addBox(-6.0F, 22.0F, -6.0F, 12, 2, 12);
for (int var1 = 0; var1 < this.guardianSpines.length; ++var1)
{
this.guardianSpines[var1] = new ModelRenderer(this, 0, 0);
this.guardianSpines[var1].addBox(-1.0F, -4.5F, -1.0F, 2, 9, 2);
this.guardianBody.addChild(this.guardianSpines[var1]);
}
this.guardianEye = new ModelRenderer(this, 8, 0);
this.guardianEye.addBox(-1.0F, 15.0F, 0.0F, 2, 2, 1);
this.guardianBody.addChild(this.guardianEye);
this.guardianTail = new ModelRenderer[3];
this.guardianTail[0] = new ModelRenderer(this, 40, 0);
this.guardianTail[0].addBox(-2.0F, 14.0F, 7.0F, 4, 4, 8);
this.guardianTail[1] = new ModelRenderer(this, 0, 54);
this.guardianTail[1].addBox(0.0F, 14.0F, 0.0F, 3, 3, 7);
this.guardianTail[2] = new ModelRenderer(this);
this.guardianTail[2].setTextureOffset(41, 32).addBox(0.0F, 14.0F, 0.0F, 2, 2, 6);
this.guardianTail[2].setTextureOffset(25, 19).addBox(1.0F, 10.5F, 3.0F, 1, 9, 9);
this.guardianBody.addChild(this.guardianTail[0]);
this.guardianTail[0].addChild(this.guardianTail[1]);
this.guardianTail[1].addChild(this.guardianTail[2]);
}
public int func_178706_a()
{
return 54;
}
/**
* Sets the models various rotation angles then renders the model.
*/
public void render(Entity p_78088_1_, float p_78088_2_, float p_78088_3_, float p_78088_4_, float p_78088_5_, float p_78088_6_, float p_78088_7_)
{
this.setRotationAngles(p_78088_2_, p_78088_3_, p_78088_4_, p_78088_5_, p_78088_6_, p_78088_7_, p_78088_1_);
this.guardianBody.render(p_78088_7_);
}
/**
* Sets the model's various rotation angles. For bipeds, par1 and par2 are used for animating the movement of arms
* and legs, where par1 represents the time(so that arms and legs swing back and forth) and par2 represents how
* "far" arms and legs can swing at most.
*/
public void setRotationAngles(float p_78087_1_, float p_78087_2_, float p_78087_3_, float p_78087_4_, float p_78087_5_, float p_78087_6_, Entity p_78087_7_)
{
EntityGuardian var8 = (EntityGuardian)p_78087_7_;
float var9 = p_78087_3_ - (float)var8.ticksExisted;
this.guardianBody.rotateAngleY = p_78087_4_ / (180F / (float)Math.PI);
this.guardianBody.rotateAngleX = p_78087_5_ / (180F / (float)Math.PI);
float[] var10 = new float[] {1.75F, 0.25F, 0.0F, 0.0F, 0.5F, 0.5F, 0.5F, 0.5F, 1.25F, 0.75F, 0.0F, 0.0F};
float[] var11 = new float[] {0.0F, 0.0F, 0.0F, 0.0F, 0.25F, 1.75F, 1.25F, 0.75F, 0.0F, 0.0F, 0.0F, 0.0F};
float[] var12 = new float[] {0.0F, 0.0F, 0.25F, 1.75F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.75F, 1.25F};
float[] var13 = new float[] {0.0F, 0.0F, 8.0F, -8.0F, -8.0F, 8.0F, 8.0F, -8.0F, 0.0F, 0.0F, 8.0F, -8.0F};
float[] var14 = new float[] { -8.0F, -8.0F, -8.0F, -8.0F, 0.0F, 0.0F, 0.0F, 0.0F, 8.0F, 8.0F, 8.0F, 8.0F};
float[] var15 = new float[] {8.0F, -8.0F, 0.0F, 0.0F, -8.0F, -8.0F, 8.0F, 8.0F, 8.0F, -8.0F, 0.0F, 0.0F};
float var16 = (1.0F - var8.func_175469_o(var9)) * 0.55F;
for (int var17 = 0; var17 < 12; ++var17)
{
this.guardianSpines[var17].rotateAngleX = (float)Math.PI * var10[var17];
this.guardianSpines[var17].rotateAngleY = (float)Math.PI * var11[var17];
this.guardianSpines[var17].rotateAngleZ = (float)Math.PI * var12[var17];
this.guardianSpines[var17].rotationPointX = var13[var17] * (1.0F + MathHelper.cos(p_78087_3_ * 1.5F + (float)var17) * 0.01F - var16);
this.guardianSpines[var17].rotationPointY = 16.0F + var14[var17] * (1.0F + MathHelper.cos(p_78087_3_ * 1.5F + (float)var17) * 0.01F - var16);
this.guardianSpines[var17].rotationPointZ = var15[var17] * (1.0F + MathHelper.cos(p_78087_3_ * 1.5F + (float)var17) * 0.01F - var16);
}
this.guardianEye.rotationPointZ = -8.25F;
Object var26 = Minecraft.getMinecraft().func_175606_aa();
if (var8.func_175474_cn())
{
var26 = var8.func_175466_co();
}
if (var26 != null)
{
Vec3 var18 = ((Entity)var26).func_174824_e(0.0F);
Vec3 var19 = p_78087_7_.func_174824_e(0.0F);
double var20 = var18.yCoord - var19.yCoord;
if (var20 > 0.0D)
{
this.guardianEye.rotationPointY = 0.0F;
}
else
{
this.guardianEye.rotationPointY = 1.0F;
}
Vec3 var22 = p_78087_7_.getLook(0.0F);
var22 = new Vec3(var22.xCoord, 0.0D, var22.zCoord);
Vec3 var23 = (new Vec3(var19.xCoord - var18.xCoord, 0.0D, var19.zCoord - var18.zCoord)).normalize().rotateYaw(((float)Math.PI / 2F));
double var24 = var22.dotProduct(var23);
this.guardianEye.rotationPointX = MathHelper.sqrt_float((float)Math.abs(var24)) * 2.0F * (float)Math.signum(var24);
}
this.guardianEye.showModel = true;
float var27 = var8.func_175471_a(var9);
this.guardianTail[0].rotateAngleY = MathHelper.sin(var27) * (float)Math.PI * 0.05F;
this.guardianTail[1].rotateAngleY = MathHelper.sin(var27) * (float)Math.PI * 0.1F;
this.guardianTail[1].rotationPointX = -1.5F;
this.guardianTail[1].rotationPointY = 0.5F;
this.guardianTail[1].rotationPointZ = 14.0F;
this.guardianTail[2].rotateAngleY = MathHelper.sin(var27) * (float)Math.PI * 0.15F;
this.guardianTail[2].rotationPointX = 0.5F;
this.guardianTail[2].rotationPointY = 0.5F;
this.guardianTail[2].rotationPointZ = 6.0F;
}
}