package joshie.harvest.animals.render;
import joshie.harvest.core.base.render.ModelHF;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.entity.Entity;
import net.minecraft.util.math.MathHelper;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class ModelHarvestChicken extends ModelBase {
private final Adult adult;
private final Child child;
public ModelHarvestChicken() {
adult = new Adult();
child = new Child();
}
@Override
public void render(Entity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scale) {
if (isChild) child.render(entity, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scale);
else adult.render(entity, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scale);
}
public static class Adult extends ModelHF {
private ModelRenderer legRight;
private ModelRenderer crest1;
private ModelRenderer legLeft;
private ModelRenderer wingLeft;
private ModelRenderer footLeft;
private ModelRenderer wingRight;
private ModelRenderer footRight;
private ModelRenderer head;
private ModelRenderer tail;
private ModelRenderer beak;
private ModelRenderer brest;
private ModelRenderer butt;
private ModelRenderer crest2;
private ModelRenderer back;
private ModelRenderer chest;
public Adult() {
textureWidth = 64;
textureHeight = 32;
legRight = new ModelRenderer(this, 0, 20);
legRight.addBox(-2F, 0F, -3F, 2, 1, 2);
legRight.setRotationPoint(-1F, 22F, 2F);
legRight.setTextureSize(64, 32);
legRight.mirror = false;
crest1 = new ModelRenderer(this, 30, 0);
crest1.addBox(-2F, -7F, -2F, 2, 2, 6);
crest1.setRotationPoint(1F, 13F, -4F);
crest1.setTextureSize(64, 32);
crest1.mirror = true;
legLeft = new ModelRenderer(this, 0, 20);
legLeft.addBox(0F, 0F, -3F, 2, 1, 2);
legLeft.setRotationPoint(1F, 22F, 2F);
legLeft.setTextureSize(64, 32);
legLeft.mirror = true;
wingLeft = new ModelRenderer(this, 0, 23);
wingLeft.addBox(0F, 0F, 0F, 1, 4, 5);
wingLeft.setRotationPoint(4F, 16F, -2F);
wingLeft.setTextureSize(64, 32);
wingLeft.mirror = true;
setRotateAngle(wingLeft, 0F, 0.2617994F, 0F);
footLeft = new ModelRenderer(this, 10, 18);
footLeft.addBox(0F, 1F, -5F, 2, 1, 4);
footLeft.setRotationPoint(1F, 22F, 2F);
footLeft.setTextureSize(64, 32);
wingRight = new ModelRenderer(this, 0, 23);
wingRight.addBox(0F, 0F, 0F, 1, 4, 5);
wingRight.setRotationPoint(-4F, 16F, -2F);
wingRight.setTextureSize(64, 32);
wingRight.mirror = true;
setRotateAngle(wingRight, 0F, -0.2617994F, 0F);
footRight = new ModelRenderer(this, 10, 18);
footRight.addBox(-2F, 1F, -5F, 2, 1, 4);
footRight.setRotationPoint(-1F, 22F, 2F);
footRight.setTextureSize(64, 32);
footRight.mirror = false;
head = new ModelRenderer(this, 0, 0);
head.addBox(-5F, -5F, -4F, 8, 8, 8);
head.setRotationPoint(1F, 13F, -4F);
head.setTextureSize(64, 32);
head.mirror = true;
tail = new ModelRenderer(this, 32, 13);
tail.addBox(-3F, -3F, 7F, 4, 3, 2);
tail.setRotationPoint(1F, 19F, -1F);
tail.setTextureSize(64, 32);
tail.mirror = true;
beak = new ModelRenderer(this, 13, 28);
beak.addBox(-2F, -1F, -6F, 2, 2, 2);
beak.setRotationPoint(1F, 13F, -4F);
beak.setTextureSize(64, 32);
beak.mirror = true;
brest = new ModelRenderer(this, 22, 18);
brest.addBox(-4F, -3F, -6F, 6, 5, 2);
brest.setRotationPoint(1F, 19F, -1F);
brest.setTextureSize(64, 32);
brest.mirror = true;
butt = new ModelRenderer(this, 44, 8);
butt.addBox(-4F, -3F, 3F, 6, 5, 4);
butt.setRotationPoint(1F, 19F, -1F);
butt.setTextureSize(64, 32);
butt.mirror = true;
crest2 = new ModelRenderer(this, 21, 25);
crest2.addBox(-2F, -6F, 4F, 2, 5, 2);
crest2.setRotationPoint(1F, 13F, -4F);
crest2.setTextureSize(64, 32);
crest2.mirror = true;
back = new ModelRenderer(this, 46, 0);
back.addBox(-3F, -5F, 1F, 4, 2, 5);
back.setRotationPoint(1F, 19F, -1F);
back.setTextureSize(64, 32);
back.mirror = true;
chest = new ModelRenderer(this, 34, 19);
chest.addBox(-5F, -3F, -4F, 8, 6, 7);
chest.setRotationPoint(1F, 19F, -1F);
chest.setTextureSize(64, 32);
chest.mirror = true;
}
@Override
public void render(Entity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scale) {
setRotationAngles(limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scale, entity);
GlStateManager.pushMatrix();
GlStateManager.scale(0.7F, 0.7F, 0.7F);
GlStateManager.translate(0F, 0.6F, 0F);
head.render(scale);
legRight.render(scale);
crest1.render(scale);
legLeft.render(scale);
wingLeft.render(scale);
footLeft.render(scale);
wingRight.render(scale);
footRight.render(scale);
head.render(scale);
tail.render(scale);
beak.render(scale);
brest.render(scale);
butt.render(scale);
crest2.render(scale);
back.render(scale);
chest.render(scale);
GlStateManager.popMatrix();
}
@Override
public void setRotationAngles(float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scaleFactor, Entity entity) {
head.rotateAngleX = headPitch * 0.017453292F;
head.rotateAngleY = netHeadYaw * 0.017453292F;
beak.rotateAngleX = head.rotateAngleX;
beak.rotateAngleY = head.rotateAngleY;
crest1.rotateAngleX = head.rotateAngleX;
crest1.rotateAngleY = head.rotateAngleY;
crest2.rotateAngleX = head.rotateAngleX;
crest2.rotateAngleY = head.rotateAngleY;
legRight.rotateAngleX = MathHelper.cos(limbSwing * 0.6662F) * 1.4F * limbSwingAmount;
footRight.rotateAngleX = legRight.rotateAngleX;
legLeft.rotateAngleX = MathHelper.cos(limbSwing * 0.6662F + (float) Math.PI) * 1.4F * limbSwingAmount;
footLeft.rotateAngleX = legLeft.rotateAngleX;
wingRight.rotateAngleZ = ageInTicks;
wingLeft.rotateAngleZ = -ageInTicks;
}
}
public static class Child extends ModelHF {
private ModelRenderer legRight;
private ModelRenderer legLeft;
private ModelRenderer wingLeft;
private ModelRenderer footLeft;
private ModelRenderer wingRight;
private ModelRenderer footRight;
private ModelRenderer tail;
private ModelRenderer beak;
private ModelRenderer chest;
private ModelRenderer head;
public Child() {
textureWidth = 64;
textureHeight = 32;
legRight = new ModelRenderer(this, 0, 20);
legRight.addBox(-2F, 0F, -3F, 1, 1, 1);
legRight.setRotationPoint(0F, 22F, 2F);
legRight.setTextureSize(64, 32);
legRight.mirror = true;
legLeft = new ModelRenderer(this, 0, 20);
legLeft.addBox(0F, 0F, -3F, 1, 1, 1);
legLeft.setRotationPoint(1F, 22F, 2F);
legLeft.setTextureSize(64, 32);
legLeft.mirror = true;
wingLeft = new ModelRenderer(this, 0, 23);
wingLeft.addBox(0F, 0F, 0F, 1, 2, 3);
wingLeft.setRotationPoint(2F, 19F, -1F);
wingLeft.setTextureSize(64, 32);
wingLeft.mirror = true;
setRotateAngle(wingLeft, 0F, 0.2617994F, 0F);
footLeft = new ModelRenderer(this, 10, 18);
footLeft.addBox(0F, 1F, -4F, 1, 1, 2);
footLeft.setRotationPoint(1F, 22F, 2F);
footLeft.setTextureSize(64, 32);
footLeft.mirror = true;
wingRight = new ModelRenderer(this, 0, 23);
wingRight.addBox(0F, 0F, 0F, 1, 2, 3);
wingRight.setRotationPoint(-3F, 19F, -2F);
wingRight.setTextureSize(64, 32);
wingRight.mirror = true;
setRotateAngle(wingRight, 0F, -0.2617994F, 0F);
footRight = new ModelRenderer(this, 10, 18);
footRight.addBox(-2F, 1F, -4F, 1, 1, 2);
footRight.setRotationPoint(0F, 22F, 2F);
footRight.setTextureSize(64, 32);
footRight.mirror = true;
tail = new ModelRenderer(this, 0, 29);
tail.setRotationPoint(0F, 21F, -2F);
tail.setTextureSize(64, 32);
tail.mirror = true;
beak = new ModelRenderer(this, 13, 28);
beak.addBox(-0.5F, -3F, -3F, 1, 1, 1);
beak.setRotationPoint(0F, 20F, -2F);
beak.setTextureSize(64, 32);
beak.mirror = true;
chest = new ModelRenderer(this, 0, 8);
chest.addBox(-2F, -2F, -1F, 4, 3, 5);
chest.setRotationPoint(0F, 21F, -2F);
chest.setTextureSize(64, 32);
chest.mirror = true;
head = new ModelRenderer(this, 0, 0);
head.addBox(-2F, -5F, -2F, 4, 4, 4);
head.setRotationPoint(0F, 20F, -2F);
head.setTextureSize(64, 32);
head.mirror = true;
}
@Override
public void render(Entity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scale) {
setRotationAngles(limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scale, entity);
GlStateManager.pushMatrix();
GlStateManager.scale(0.7F, 0.7F, 0.7F);
GlStateManager.translate(0F, 0.6F, 0F);
head.render(scale);
legRight.render(scale);
beak.render(scale);
chest.render(scale);
footLeft.render(scale);
footRight.render(scale);
legLeft.render(scale);
tail.render(scale);
wingLeft.render(scale);
wingRight.render(scale);
GlStateManager.popMatrix();
}
@Override
public void setRotationAngles(float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scaleFactor, Entity entity) {
head.rotateAngleX = headPitch * 0.017453292F;
head.rotateAngleY = netHeadYaw * 0.017453292F;
beak.rotateAngleX = head.rotateAngleX;
beak.rotateAngleY = head.rotateAngleY;
tail.rotateAngleX = chest.rotateAngleX;
legRight.rotateAngleX = MathHelper.cos(limbSwing * 0.6662F) * 1.4F * limbSwingAmount;
footRight.rotateAngleX = legRight.rotateAngleX;
legLeft.rotateAngleX = MathHelper.cos(limbSwing * 0.6662F + (float) Math.PI) * 1.4F * limbSwingAmount;
footLeft.rotateAngleX = legLeft.rotateAngleX;
wingRight.rotateAngleZ = ageInTicks;
wingLeft.rotateAngleZ = -ageInTicks;
}
}
}