141 lines
4.4 KiB
Java
141 lines
4.4 KiB
Java
package biomesoplenty.entities.models;
|
|
|
|
import net.minecraft.client.model.ModelBase;
|
|
import net.minecraft.client.model.ModelRenderer;
|
|
import net.minecraft.entity.Entity;
|
|
import net.minecraft.util.MathHelper;
|
|
|
|
public class ModelBird extends ModelBase
|
|
{
|
|
//fields
|
|
ModelRenderer Body;
|
|
ModelRenderer Stomach;
|
|
ModelRenderer Head;
|
|
ModelRenderer Beak;
|
|
ModelRenderer TuftBottom;
|
|
ModelRenderer TuftTop;
|
|
ModelRenderer Tail;
|
|
ModelRenderer WingRight;
|
|
ModelRenderer WingLeft;
|
|
ModelRenderer LegLeft;
|
|
ModelRenderer LegRight;
|
|
|
|
public ModelBird()
|
|
{
|
|
textureWidth = 64;
|
|
textureHeight = 32;
|
|
|
|
Body = new ModelRenderer(this, 0, 0);
|
|
Body.addBox(0F, 0F, 0F, 6, 3, 10);
|
|
Body.setRotationPoint(-3F, 20F, -5F);
|
|
Body.setTextureSize(64, 32);
|
|
Body.mirror = true;
|
|
setRotation(Body, 0F, 0F, 0F);
|
|
Stomach = new ModelRenderer(this, 0, 13);
|
|
Stomach.addBox(0F, 0F, 0F, 4, 1, 8);
|
|
Stomach.setRotationPoint(-2F, 23F, -4F);
|
|
Stomach.setTextureSize(64, 32);
|
|
Stomach.mirror = true;
|
|
setRotation(Stomach, 0F, 0F, 0F);
|
|
Head = new ModelRenderer(this, 0, 22);
|
|
Head.addBox(0F, 0F, 0F, 4, 3, 4);
|
|
Head.setRotationPoint(-2F, 19F, -9F);
|
|
Head.setTextureSize(64, 32);
|
|
Head.mirror = true;
|
|
setRotation(Head, 0F, 0F, 0F);
|
|
Beak = new ModelRenderer(this, 0, 29);
|
|
Beak.addBox(0F, 0F, 0F, 2, 1, 1);
|
|
Beak.setRotationPoint(-1F, 21F, -10F);
|
|
Beak.setTextureSize(64, 32);
|
|
Beak.mirror = true;
|
|
setRotation(Beak, 0F, 0F, 0F);
|
|
TuftBottom = new ModelRenderer(this, 28, 23);
|
|
TuftBottom.addBox(0F, 0F, 0F, 2, 1, 3);
|
|
TuftBottom.setRotationPoint(-1F, 18F, -7F);
|
|
TuftBottom.setTextureSize(64, 32);
|
|
TuftBottom.mirror = true;
|
|
setRotation(TuftBottom, 0F, 0F, 0F);
|
|
TuftTop = new ModelRenderer(this, 20, 27);
|
|
TuftTop.addBox(0F, 0F, 0F, 4, 0, 5);
|
|
TuftTop.setRotationPoint(-2F, 18F, -5F);
|
|
TuftTop.setTextureSize(64, 32);
|
|
TuftTop.mirror = true;
|
|
setRotation(TuftTop, 0F, 0F, 0F);
|
|
Tail = new ModelRenderer(this, 42, 0);
|
|
Tail.addBox(0F, 0F, 0F, 4, 0, 7);
|
|
Tail.setRotationPoint(-2F, 21F, 5F);
|
|
Tail.setTextureSize(64, 32);
|
|
Tail.mirror = true;
|
|
setRotation(Tail, 0F, 0F, 0F);
|
|
|
|
WingLeft = new ModelRenderer(this, 36, 13);
|
|
WingLeft.addBox(0F, 0F, 0F, 8, 0, 6);
|
|
WingLeft.setRotationPoint(3F, 20F, -4F);
|
|
WingLeft.setTextureSize(64, 32);
|
|
|
|
WingRight = new ModelRenderer(this, 36, 7);
|
|
WingRight.addBox(-8F, 0F, 0F, 8, 0, 6);
|
|
WingRight.setRotationPoint(-3F, 20F, -4F);
|
|
WingRight.setTextureSize(64, 32);
|
|
|
|
LegLeft = new ModelRenderer(this, 33, 0);
|
|
LegLeft.addBox(0F, 0F, 0F, 1, 1, 3);
|
|
LegLeft.setRotationPoint(2F, 23F, 0F);
|
|
LegLeft.setTextureSize(64, 32);
|
|
LegLeft.mirror = true;
|
|
setRotation(LegLeft, 0F, 0F, 0F);
|
|
LegRight = new ModelRenderer(this, 33, 0);
|
|
LegRight.addBox(0F, 0F, 0F, 1, 1, 3);
|
|
LegRight.setRotationPoint(-3F, 23F, 0F);
|
|
LegRight.setTextureSize(64, 32);
|
|
LegRight.mirror = true;
|
|
setRotation(LegRight, 0F, 0F, 0F);
|
|
}
|
|
|
|
@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);
|
|
Body.render(f5);
|
|
Stomach.render(f5);
|
|
Head.render(f5);
|
|
Beak.render(f5);
|
|
TuftBottom.render(f5);
|
|
TuftTop.render(f5);
|
|
Tail.render(f5);
|
|
WingRight.render(f5);
|
|
WingLeft.render(f5);
|
|
LegLeft.render(f5);
|
|
LegRight.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 setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity)
|
|
{
|
|
super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
|
|
|
|
int x = MathHelper.floor_double(entity.posX);
|
|
int y = MathHelper.floor_double(entity.posY);
|
|
int z = MathHelper.floor_double(entity.posZ);
|
|
|
|
if (!(entity.posY <= entity.prevPosY && entity.worldObj.isAirBlock(x, y - 1, z)))
|
|
{
|
|
WingRight.rotateAngleZ = MathHelper.cos(f2 * 1.7F) * (float)Math.PI * 0.25F;
|
|
WingLeft.rotateAngleZ = -WingRight.rotateAngleZ;
|
|
}
|
|
else
|
|
{
|
|
WingRight.rotateAngleZ = 0;
|
|
WingLeft.rotateAngleZ = 0;
|
|
}
|
|
}
|
|
|
|
}
|