package minefantasy.mf2.client.render.mob;
import minefantasy.mf2.entity.mob.EntityMinotaur;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;
import net.minecraft.util.MathHelper;
public class ModelMinotaur extends ModelBiped
{
ModelRenderer Nose;
ModelRenderer Mane;
ModelRenderer bipedLeftForearm;
ModelRenderer tailEnd;
ModelRenderer bipedRightThigh;
ModelRenderer Lhorn1;
ModelRenderer Lhorn2;
ModelRenderer Rhorn1;
ModelRenderer Rhorn2;
ModelRenderer bipedLeftThigh;
ModelRenderer bipedLeftFoot;
ModelRenderer bipedRightFoot;
ModelRenderer tail;
ModelRenderer bipedRightForearm;
ModelRenderer shoulders;
ModelRenderer trapezius;
public ModelMinotaur()
{
//AXIAL
textureWidth = 128;
textureHeight = 128;
bipedHead = new ModelRenderer(this, 0, 0);
bipedHead.addBox(-2F, -3F, -5F, 4, 6, 6);
bipedHead.setRotationPoint(0F, -9F, -2F);
bipedHead.setTextureSize(128, 128);
Nose = new ModelRenderer(this, 0, 54);
Nose.addBox(-2F, -1F, -9F, 4, 4, 4);
Nose.setRotationPoint(0F, -9F, -2F);
Nose.setTextureSize(128, 128);
Mane = new ModelRenderer(this, 0, 88);
Mane.addBox(-3F, -3F, -2F, 6, 12, 8);
Mane.setRotationPoint(0F, -8F, 1F);
Mane.setTextureSize(128, 128);
tailEnd = new ModelRenderer(this, 64, 0);
tailEnd.addBox(-1F, 4F, 10F, 2, 2, 11);
tailEnd.setRotationPoint(0F, 4F, 0F);
tailEnd.setTextureSize(128, 128);
setRotation(tailEnd, -0.5363927F, 0F, 0F);
bipedBody = new ModelRenderer(this, 0, 12);
bipedBody.addBox(-5F, 0F, -5F, 10, 14, 9);
bipedBody.setRotationPoint(0F, -8F, 1F);
bipedBody.setTextureSize(128, 128);
tail = new ModelRenderer(this, 64, 17);
tail.addBox(-2F, -3F, 2F, 4, 3, 11);
tail.setRotationPoint(0F, 4F, 0F);
tail.setTextureSize(128, 128);
setRotation(tail, -1.182165F, 0F, 0F);
shoulders = new ModelRenderer(this, 86, 50);
shoulders.addBox(-7.5F, -1F, -4F, 15, 7, 6);
shoulders.setRotationPoint(0F, -8F, 1F);
shoulders.setTextureSize(128, 128);
trapezius = new ModelRenderer(this, 0, 64);
trapezius.addBox(-4F, -2F, -4F, 8, 13, 9);
trapezius.setRotationPoint(0F, -8F, 1F);
trapezius.setTextureSize(128, 128);
//APPENDICULAR - LEFT
Lhorn1 = new ModelRenderer(this, 20, 5);
Lhorn1.mirror = true;
Lhorn1.addBox(2F, -2F, -2F, 5, 2, 2);
Lhorn1.setRotationPoint(0F, -9F, -2F);
Lhorn1.setTextureSize(128, 128);
Lhorn2 = new ModelRenderer(this, 20, 0);
Lhorn2.mirror = true;
Lhorn2.addBox(6F, -6F, -2F, 1, 4, 1);
Lhorn2.setRotationPoint(0F, -9F, -2F);
Lhorn2.setTextureSize(128, 128);
bipedLeftArm = new ModelRenderer(this, 38, 33);
bipedLeftArm.mirror = true;
bipedLeftArm.addBox(-1F, -2F, -3F, 5, 10, 7);
bipedLeftArm.setRotationPoint(7F, -6F, 1F);
bipedLeftArm.setTextureSize(128, 128);
bipedLeftForearm = new ModelRenderer(this, 62, 33);
bipedLeftForearm.mirror = true;
bipedLeftForearm.addBox(0F, 8F, -1F, 4, 10, 4);
bipedLeftForearm.setRotationPoint(7F, -6F, 1F);
bipedLeftForearm.setTextureSize(128, 128);
bipedLeftThigh = new ModelRenderer(this, 38, 0);
bipedLeftThigh.mirror = true;
bipedLeftThigh.addBox(-2F, 0F, -3F, 5, 10, 8);
bipedLeftThigh.setRotationPoint(3F, 4F, 0F);
bipedLeftThigh.setTextureSize(128, 128);
bipedLeftLeg = new ModelRenderer(this, 20, 50);
bipedLeftLeg.mirror = true;
bipedLeftLeg.addBox(-1F, 10F, 0F, 4, 6, 5);
bipedLeftLeg.setRotationPoint(3F, 4F, 0F);
bipedLeftLeg.setTextureSize(128, 128);
bipedLeftFoot = new ModelRenderer(this, 20, 38);
bipedLeftFoot.mirror = true;
bipedLeftFoot.addBox(-1F, 13F, -2F, 4, 7, 5);
bipedLeftFoot.setRotationPoint(3F, 4F, 0F);
bipedLeftFoot.setTextureSize(128, 128);
//APPENDICULAR - RIGHT
Rhorn1 = new ModelRenderer(this, 20, 5);
Rhorn1.addBox(-7F, -2F, -2F, 5, 2, 2);
Rhorn1.setRotationPoint(0F, -9F, -2F);
Rhorn1.setTextureSize(128, 128);
Rhorn2 = new ModelRenderer(this, 20, 0);
Rhorn2.addBox(-7F, -6F, -2F, 1, 4, 1);
Rhorn2.setRotationPoint(0F, -9F, -2F);
Rhorn2.setTextureSize(128, 128);
bipedRightArm = new ModelRenderer(this, 38, 33);
bipedRightArm.addBox(-4F, -2F, -3F, 5, 10, 7);
bipedRightArm.setRotationPoint(-7F, -6F, 1F);
bipedRightArm.setTextureSize(128, 128);
bipedRightForearm = new ModelRenderer(this, 62, 33);
bipedRightForearm.addBox(-4F, 8F, -1F, 4, 10, 4);
bipedRightForearm.setRotationPoint(-7F, -6F, 1F);
bipedRightForearm.setTextureSize(128, 128);
bipedRightThigh = new ModelRenderer(this, 38, 0);
bipedRightThigh.addBox(-3F, 0F, -3F, 5, 10, 8);
bipedRightThigh.setRotationPoint(-3F, 4F, 0F);
bipedRightThigh.setTextureSize(128, 128);
bipedRightLeg = new ModelRenderer(this, 20, 50);
bipedRightLeg.addBox(-3F, 10F, 0F, 4, 6, 5);
bipedRightLeg.setRotationPoint(-3F, 4F, 0F);
bipedRightLeg.setTextureSize(128, 128);
bipedRightFoot = new ModelRenderer(this, 20, 38);
bipedRightFoot.addBox(-3F, 13F, -2F, 4, 7, 5);
bipedRightFoot.setRotationPoint(-3F, 4F, 0F);
bipedRightFoot.setTextureSize(128, 128);
}
private void setRotation(ModelRenderer model, float x, float y, float z)
{
model.rotateAngleX = x;
model.rotateAngleY = y;
model.rotateAngleZ = z;
}
public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
{
renderMinotaur((EntityMinotaur)entity, f, f1, f2, f3, f4, f5);
}
public void renderMinotaur(EntityMinotaur mino, float f, float f1, float f2, float f3, float f4, float f5)
{
setRotationAngles(mino, f, f1, f2, f3, f4, f5);
Nose.render(f5);
tailEnd.render(f5);
bipedLeftFoot.render(f5);
bipedRightFoot.render(f5);
shoulders.render(f5);
bipedLeftThigh.render(f5);
bipedRightThigh.render(f5);
tail.render(f5);
Rhorn1.render(f5);
Rhorn2.render(f5);
Lhorn1.render(f5);
if(!mino.isBloodied())
{
Lhorn2.render(f5);
}
bipedHead.render(f5);
bipedLeftLeg.render(f5);
bipedRightLeg.render(f5);
bipedBody.render(f5);
bipedRightArm.render(f5);
bipedLeftArm.render(f5);
bipedRightForearm.render(f5);
bipedLeftForearm.render(f5);
bipedRightLeg.render(f5);
bipedLeftLeg.render(f5);
Mane.render(f5);
trapezius.render(f5);
}
public void setRotationAngles(EntityMinotaur mino, float f, float f1, float f2, float f3, float f4, float f5)
{
int swingAngle = 28 * mino.swing;
double swingRad = Math.toRadians(swingAngle);
int swingAngleY = 9 * mino.swing;
double swingRadY = Math.toRadians(swingAngleY);
bipedHead.rotateAngleY = f3 / 57.29578F;
bipedHead.rotateAngleX = f4 / 57.29578F + (float)Math.toRadians(mino.getHeadChargeAngle());
if (mino.swing <= 0)
{
bipedRightArm.rotateAngleX = MathHelper.cos(f * 0.6662F + 3.141593F) * 2.0F * f1 * 0.5F;
bipedLeftArm.rotateAngleX = MathHelper.cos(f * 0.6662F) * 2.0F * f1 * 0.5F;
bipedRightArm.rotateAngleY = 0.0F;
bipedLeftArm.rotateAngleY = 0.0F;
}
else
{
bipedRightArm.rotateAngleX = (float) -swingRad;
bipedLeftArm.rotateAngleX = (float) -swingRad;
bipedRightArm.rotateAngleY = (float)swingRadY;
bipedLeftArm.rotateAngleY = (float)-swingRadY;
}
bipedRightArm.rotateAngleZ = 0.0F;
bipedLeftArm.rotateAngleZ = 0.0F;
bipedRightLeg.rotateAngleX = MathHelper.cos(f * 0.6662F) * 1.4F * f1;
bipedLeftLeg.rotateAngleX = MathHelper.cos(f * 0.6662F + 3.141593F) * 1.4F * f1;
bipedRightLeg.rotateAngleY = 0.0F;
bipedLeftLeg.rotateAngleY = 0.0F;
tail.rotateAngleX = -1.182165F;
tailEnd.rotateAngleX = -0.5363927F;
Nose.rotateAngleX = bipedHead.rotateAngleX;
Nose.rotateAngleY = bipedHead.rotateAngleY;
Rhorn1.rotateAngleX = bipedHead.rotateAngleX;
Rhorn1.rotateAngleY = bipedHead.rotateAngleY;
Rhorn2.rotateAngleX = bipedHead.rotateAngleX;
Rhorn2.rotateAngleY = bipedHead.rotateAngleY;
Lhorn1.rotateAngleX = bipedHead.rotateAngleX;
Lhorn1.rotateAngleY = bipedHead.rotateAngleY;
Lhorn2.rotateAngleX = bipedHead.rotateAngleX;
Lhorn2.rotateAngleY = bipedHead.rotateAngleY;
if (onGround > -9990F) {
float f6 = onGround;
bipedBody.rotateAngleY = MathHelper.sin(MathHelper.sqrt_float(f6) * 3.141593F * 2.0F) * 0.2F;
bipedRightArm.rotationPointZ = MathHelper.sin(bipedBody.rotateAngleY) * 5F;
bipedRightArm.rotationPointX = -MathHelper.cos(bipedBody.rotateAngleY) * 5F;
bipedLeftArm.rotationPointZ = -MathHelper.sin(bipedBody.rotateAngleY) * 5F;
bipedLeftArm.rotationPointX = MathHelper.cos(bipedBody.rotateAngleY) * 5F;
bipedRightArm.rotateAngleY += bipedBody.rotateAngleY;
bipedLeftArm.rotateAngleY += bipedBody.rotateAngleY;
bipedLeftArm.rotateAngleX += bipedBody.rotateAngleY;
f6 = 1.0F - onGround;
f6 *= f6;
f6 *= f6;
f6 = 1.0F - f6;
float f8 = MathHelper.sin(f6 * 3.141593F);
float f10 = MathHelper.sin(onGround * 3.141593F) * -(bipedHead.rotateAngleX - 0.7F) * 0.75F;
bipedRightArm.rotateAngleX -= (double) f8 * 1.2D + (double) f10;
bipedRightArm.rotateAngleY += bipedBody.rotateAngleY * 2.0F;
bipedRightArm.rotateAngleZ = MathHelper.sin(onGround * 3.141593F) * -0.4F;
}
if(mino.riddenByEntity != null)
{
bipedLeftArm.rotateAngleX = (float) Math.toRadians(180F);
}
if(mino.getAttack() == 3)//if is power attack
{
bipedLeftArm.rotateAngleX = (float) Math.toRadians(-135F);
bipedRightArm.rotateAngleX = (float) Math.toRadians(-135F);
}
bipedRightArm.rotateAngleZ += MathHelper.cos(f2 * 0.09F) * 0.05F + 0.05F;
bipedLeftArm.rotateAngleZ -= MathHelper.cos(f2 * 0.09F) * 0.05F + 0.05F;
bipedRightArm.rotateAngleX += MathHelper.sin(f2 * 0.067F) * 0.05F;
bipedLeftArm.rotateAngleX -= MathHelper.sin(f2 * 0.067F) * 0.05F;
bipedLeftThigh.rotateAngleX = bipedLeftFoot.rotateAngleX = bipedLeftLeg.rotateAngleX;
bipedRightThigh.rotateAngleX = bipedRightFoot.rotateAngleX = bipedRightLeg.rotateAngleX;
joinBlocks(Mane, bipedBody);
joinBlocks(trapezius, bipedBody);
joinBlocks2(bipedLeftForearm, bipedLeftArm);
joinBlocks2(bipedRightForearm, bipedRightArm);
}
private void joinBlocks(ModelRenderer model, ModelRenderer anchor)
{
joinBlocks(model, anchor, 1.0F);
}
private void joinBlocks2(ModelRenderer model, ModelRenderer anchor)
{
model.rotateAngleX = anchor.rotateAngleX;
model.rotateAngleY = anchor.rotateAngleY;
model.rotateAngleZ = anchor.rotateAngleZ;
model.rotationPointX = anchor.rotationPointX;
model.rotationPointY = anchor.rotationPointY;
model.rotationPointZ = anchor.rotationPointZ;
}
private void joinBlocks(ModelRenderer model, ModelRenderer anchor, float ratio)
{
model.rotateAngleX = anchor.rotateAngleX * ratio;
model.rotateAngleY = anchor.rotateAngleY * ratio;
model.rotateAngleZ = anchor.rotateAngleZ * ratio;
}
}