package net.tropicraft.client.entity.model;
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.MathHelper;
public class ModelAshen extends ModelBase {
public ModelRenderer rightLeg;
public ModelRenderer leftLeg;
public ModelRenderer body;
public ModelRenderer head;
public ModelRenderer mask;
public ModelRenderer leftArm;
public ModelRenderer rightArm;
public ModelRenderer leftArmSub;
public ModelRenderer rightArmSub;
public float headAngle;
public boolean swinging;
public int actionState;
public ModelAshen() {
swinging = false;
actionState = 0;
headAngle = 0;
textureWidth = 64;
textureHeight = 32;
setTextureOffset("leftArm.leftArmBase", 0, 24);
setTextureOffset("leftArmSub.leftArmTop", 31, 0);
setTextureOffset("rightArm.rightArmBase", 0, 24);
setTextureOffset("rightArmSub.rightArmTop", 31, 0);
rightLeg = new ModelRenderer(this, 25, 0);
rightLeg.addBox(0F, 0F, 0F, 1, 7, 1);
rightLeg.setRotationPoint(1F, 17F, 0F);
rightLeg.setTextureSize(64, 32);
rightLeg.mirror = true;
setRotation(rightLeg, 0F, 0F, 0F);
leftLeg = new ModelRenderer(this, 25, 0);
leftLeg.addBox(-1F, 0F, 0F, 1, 7, 1);
leftLeg.setRotationPoint(-1F, 17F, 0F);
leftLeg.setTextureSize(64, 32);
leftLeg.mirror = true;
setRotation(leftLeg, 0F, 0F, 0F);
body = new ModelRenderer(this, 24, 8);
body.addBox(-2F, -3F, 0F, 4, 7, 3);
body.setRotationPoint(0F, 13F, 2F);
body.setTextureSize(64, 32);
body.mirror = true;
setRotation(body, 0F, 3.141593F, 0F);
head = new ModelRenderer(this, 24, 18);
head.addBox(-2F, -3F, -1F, 4, 3, 4);
head.setRotationPoint(0F, 10F, 1F);
head.setTextureSize(64, 32);
head.mirror = true;
setRotation(head, 0F, 3.141593F, 0F);
//mask = new ModelRenderer(this, 0, 0);
//mask.addBox(-5.5F, -10F, 3F, 11, 22, 1);
//mask.setRotationPoint(0F, 10F, 1F);
//mask.setTextureSize(64, 32);
//mask.mirror = true;
//setRotation(mask, 0F, 3.141593F, 0F);
leftArm = new ModelRenderer(this, "leftArm");
leftArm.setRotationPoint(-2F, 10.5F, 0.5F);
setRotation(leftArm, 0F, 0F, 0F);
leftArm.mirror = true;
leftArm.addBox("leftArmBase", -6F, -0.5F, -0.5F, 6, 1, 1);
leftArmSub = new ModelRenderer(this, "leftArmSub");
leftArmSub.setRotationPoint(-5.5F, 0F, 0F);
setRotation(leftArmSub, 0F, 0F, 0F);
leftArmSub.mirror = true;
leftArmSub.addBox("leftArmTop", -0.5F, -6F, -0.5F, 1, 6, 1);
leftArm.addChild(leftArmSub);
rightArm = new ModelRenderer(this, "rightArm");
rightArm.setRotationPoint(2F, 10.46667F, 0.5F);
setRotation(rightArm, 0F, 0F, 0F);
rightArm.mirror = true;
rightArm.addBox("rightArmBase", 0F, -0.5F, -0.5F, 6, 1, 1);
rightArmSub = new ModelRenderer(this, "rightArmSub");
rightArmSub.setRotationPoint(5.5F, 0F, 0F);
setRotation(rightArmSub, 0F, 0F, 0F);
rightArmSub.mirror = true;
rightArmSub.addBox("rightArmTop", -0.5F, -6F, -0.5F, 1, 6, 1);
rightArm.addChild(rightArmSub);
}
@Override
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);
rightLeg.render(f5);
leftLeg.render(f5);
body.render(f5);
head.render(f5);
leftArm.render(f5);
rightArm.render(f5);
}
private void setRotation(ModelRenderer model, float x, float y, float z) {
model.rotateAngleX = x;
model.rotateAngleY = y;
model.rotateAngleZ = z;
}
@Override
public void setLivingAnimations(EntityLivingBase entityliving, float f, float f1, float f2) {
rightLeg.rotateAngleX = MathHelper.cos(f * 0.6662F) * 1.25F * f1;
leftLeg.rotateAngleX = MathHelper.cos(f * 0.6662F + 3.141593F) * 1.25F * f1;
}
@Override
public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity ent) {
head.rotateAngleX = f4 / 125F + headAngle;
head.rotateAngleY = f3 / 125F + 3.14159F;
float ArmRotater = 1.247196F;
float subStraight = 1.570795F;
switch (actionState) {
case 1: //Mask off
headAngle = -0.4F;
leftArm.rotateAngleZ = -ArmRotater;
leftArmSub.rotateAngleZ = -5.1F;
rightArm.rotateAngleZ = ArmRotater;
rightArmSub.rotateAngleZ = 5.1F;
rightArm.rotateAngleX = subStraight;
leftArm.rotateAngleX = subStraight;
leftArm.rotateAngleY = -.5F;
rightArm.rotateAngleY = .5F;
break;
case 2:
headAngle = 0.0F;
rightArm.rotateAngleX = 1.65F + f3 / 125F;
rightArm.rotateAngleY = .9F + f4 / 125F;
rightArm.rotateAngleZ = ArmRotater;
rightArmSub.rotateAngleZ = 6.2F;
leftArm.rotateAngleZ = 0.0F - MathHelper.sin(f2 * 0.75F) * 0.0220F;
leftArm.rotateAngleY = 0.0F;
leftArmSub.rotateAngleZ = 0.0F;
if (swinging) {
leftArm.rotateAngleX += MathHelper.sin(f2 * 0.75F) * 0.0520F;
} else {
leftArm.rotateAngleX = 0.0F;
}
break;
default:
headAngle = 0;
leftArm.rotateAngleZ = -ArmRotater;
leftArmSub.rotateAngleZ = -subStraight;
rightArm.rotateAngleZ = ArmRotater;
rightArmSub.rotateAngleZ = subStraight;
leftArm.rotateAngleY = 0F;
rightArm.rotateAngleY = 0F;
break;
}
rightArm.rotateAngleY += MathHelper.sin(f2 * 0.25F) * 0.0020F;
leftArm.rotateAngleY -= MathHelper.sin(f2 * 0.25F) * 0.0020F;
//leftArmSub.rotateAngleY += MathHelper.sin(f2 * 0.25F) * 0.0020F;
//rightArmSub.rotateAngleY += MathHelper.sin(f2 * 0.25F) * 0.0020F;
}
}