package Oskar13.TheCharacters.ModelSystem;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.MathHelper;
import org.lwjgl.opengl.GL11;
import Oskar13.TheCharacters.Characters;
public class ModelHuman extends ModelPlayerBase
{
public float yOffset = 0F;
public ModelRenderer
head,
headwear,
body,
rightArm,
leftArm,
rightLeg,
leftLeg
;
public ModelRenderer bipedEars;
public ModelRenderer bipedCloak;
public ModelHuman()
{
super("/mob/char.png", Characters.skinURL);
}
public ModelHuman(String texture, String textureUrl)
{
super(texture, textureUrl);
}
public void init(float strech)
{
armorSlowdown = 0;
blockState = 0;
isSneak = false;
hasBow = false;
head = new ModelRenderer(this, 0, 0);
head.addBox(-4F, -8F, -4F, 8, 8, 8, strech);
head.setRotationPoint(0.0F, 0.0F + yOffset, 0.0F);
headwear = new ModelRenderer(this, 32, 0);
headwear.addBox(-4F, -8F, -4F, 8, 8, 8, strech + 0.5F);
headwear.setRotationPoint(0.0F, 0.0F + yOffset, 0.0F);
body = new ModelRenderer(this, 16, 16);
body.addBox(-4F, 0.0F, -2F, 8, 12, 4, strech);
body.setRotationPoint(0.0F, 0.0F + yOffset, 0.0F);
rightArm = new ModelRenderer(this, 40, 16);
rightArm.addBox(-3F, -2F, -2F, 4, 12, 4, strech);
rightArm.setRotationPoint(-5F, 2.0F + yOffset, 0.0F);
leftArm = new ModelRenderer(this, 40, 16);
leftArm.mirror = true;
leftArm.addBox(-1F, -2F, -2F, 4, 12, 4, strech);
leftArm.setRotationPoint(5F, 2.0F + yOffset, 0.0F);
rightLeg = new ModelRenderer(this, 0, 16);
rightLeg.addBox(-2F, 0.0F, -2F, 4, 12, 4, strech);
rightLeg.setRotationPoint(-2F, 12F + yOffset, 0.0F);
leftLeg = new ModelRenderer(this, 0, 16);
leftLeg.mirror = true;
leftLeg.addBox(-2F, 0.0F, -2F, 4, 12, 4, strech);
leftLeg.setRotationPoint(2.0F, 12F + yOffset, 0.0F);
this.bipedCloak = new ModelRenderer(this, 0, 0);
this.bipedCloak.addBox(-5.0F, 0.0F, -1.0F, 10, 16, 1, strech);
this.bipedEars = new ModelRenderer(this, 24, 0);
this.bipedEars.addBox(-3.0F, -6.0F, -1.0F, 6, 6, 1, strech);
}
public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
{
setRotationAngles(f, f1, f2, f3, f4, f5);
head.render(f5);
body.render(f5);
rightArm.render(f5);
leftArm.render(f5);
rightLeg.render(f5);
leftLeg.render(f5);
headwear.render(f5);
}
public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5)
{
head.rotateAngleY = f3 / 57.29578F;
head.rotateAngleX = f4 / 57.29578F;
headwear.rotateAngleY = head.rotateAngleY;
headwear.rotateAngleX = head.rotateAngleX;
rightArm.rotateAngleX = MathHelper.cos(f * 0.6662F + 3.141593F) * 2.0F * f1 * 0.5F;
leftArm.rotateAngleX = MathHelper.cos(f * 0.6662F) * 2.0F * f1 * 0.5F;
rightArm.rotateAngleZ = 0.0F;
leftArm.rotateAngleZ = 0.0F;
rightLeg.rotateAngleX = MathHelper.cos(f * 0.6662F) * 1.4F * f1;
leftLeg.rotateAngleX = MathHelper.cos(f * 0.6662F + 3.141593F) * 1.4F * f1;
rightLeg.rotateAngleY = 0.0F;
leftLeg.rotateAngleY = 0.0F;
if(isRiding)
{
rightArm.rotateAngleX += -0.6283185F;
leftArm.rotateAngleX += -0.6283185F;
rightLeg.rotateAngleX = -1.256637F;
leftLeg.rotateAngleX = -1.256637F;
rightLeg.rotateAngleY = 0.3141593F;
leftLeg.rotateAngleY = -0.3141593F;
}
if(armorSlowdown != 0)
leftArm.rotateAngleX = leftArm.rotateAngleX * 0.5F - 0.3141593F * (float)armorSlowdown;
if(blockState != 0)
rightArm.rotateAngleX = rightArm.rotateAngleX * 0.5F - 0.3141593F * (float)blockState;
rightArm.rotateAngleY = 0.0F;
leftArm.rotateAngleY = 0.0F;
if(onGround > -9990F)
{
float f6 = onGround;
body.rotateAngleY = MathHelper.sin(MathHelper.sqrt_float(f6) * 3.141593F * 2.0F) * 0.2F;
rightArm.rotationPointZ = MathHelper.sin(body.rotateAngleY) * 5F;
rightArm.rotationPointX = -MathHelper.cos(body.rotateAngleY) * 5F;
leftArm.rotationPointZ = -MathHelper.sin(body.rotateAngleY) * 5F;
leftArm.rotationPointX = MathHelper.cos(body.rotateAngleY) * 5F;
rightArm.rotateAngleY += body.rotateAngleY;
leftArm.rotateAngleY += body.rotateAngleY;
leftArm.rotateAngleX += body.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) * -(head.rotateAngleX - 0.7F) * 0.75F;
rightArm.rotateAngleX -= (double)f8 * 1.2D + (double)f10;
rightArm.rotateAngleY += body.rotateAngleY * 2.0F;
rightArm.rotateAngleZ = MathHelper.sin(onGround * 3.141593F) * -0.4F;
}
if(isSneak)
{
body.rotateAngleX = 0.5F;
rightLeg.rotateAngleX -= 0.0F;
leftLeg.rotateAngleX -= 0.0F;
rightArm.rotateAngleX += 0.4F;
leftArm.rotateAngleX += 0.4F;
rightLeg.rotationPointZ = 4F;
leftLeg.rotationPointZ = 4F;
rightLeg.rotationPointY = 9F;
leftLeg.rotationPointY = 9F;
head.rotationPointY = 1.0F;
} else
{
body.rotateAngleX = 0.0F;
rightLeg.rotationPointZ = 0.0F;
leftLeg.rotationPointZ = 0.0F;
rightLeg.rotationPointY = 12F;
leftLeg.rotationPointY = 12F;
head.rotationPointY = 0.0F;
}
rightArm.rotateAngleZ += MathHelper.cos(f2 * 0.09F) * 0.05F + 0.05F;
leftArm.rotateAngleZ -= MathHelper.cos(f2 * 0.09F) * 0.05F + 0.05F;
rightArm.rotateAngleX += MathHelper.sin(f2 * 0.067F) * 0.05F;
leftArm.rotateAngleX -= MathHelper.sin(f2 * 0.067F) * 0.05F;
if(hasBow)
{
float f7 = 0.0F;
float f9 = 0.0F;
rightArm.rotateAngleZ = 0.0F;
leftArm.rotateAngleZ = 0.0F;
rightArm.rotateAngleY = -(0.1F - f7 * 0.6F) + head.rotateAngleY;
leftArm.rotateAngleY = (0.1F - f7 * 0.6F) + head.rotateAngleY + 0.4F;
rightArm.rotateAngleX = -1.570796F + head.rotateAngleX;
leftArm.rotateAngleX = -1.570796F + head.rotateAngleX;
rightArm.rotateAngleX -= f7 * 1.2F - f9 * 0.4F;
leftArm.rotateAngleX -= f7 * 1.2F - f9 * 0.4F;
rightArm.rotateAngleZ += MathHelper.cos(f2 * 0.09F) * 0.05F + 0.05F;
leftArm.rotateAngleZ -= MathHelper.cos(f2 * 0.09F) * 0.05F + 0.05F;
rightArm.rotateAngleX += MathHelper.sin(f2 * 0.067F) * 0.05F;
leftArm.rotateAngleX -= MathHelper.sin(f2 * 0.067F) * 0.05F;
}
}
public void renderEars(float par1)
{
this.bipedEars.rotateAngleY = this.head.rotateAngleY;
this.bipedEars.rotateAngleX = this.head.rotateAngleX;
this.bipedEars.rotationPointX = 0.0F;
this.bipedEars.rotationPointY = 0.0F;
this.bipedEars.render(par1);
}
/**
* Renders the cloak of the current biped (in most cases, it's a player)
*/
public void renderCloak(float par1)
{
this.bipedCloak.render(par1);
}
@Override
public void drawFirstPersonHand()
{
float var2 = 2.0F;
GL11.glColor3f(var2, var2, var2);
this.onGround = 0.0F;
this.setRotationAngles(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0825F);
this.rightArm.render(0.0625F);
}
public void specials(RenderManager renderMan, EntityPlayer player)
{
renderDrop(renderMan, player, rightArm, 0.0625F, 1F, -0.0625F, 0.4375F, 0.0625F);
renderPumpkin(renderMan, player, head, 0.0625F, 0.625F, 0.0F, -0.25F, 0.0F);
}
}