package minefantasy.client.entityrender; import minefantasy.entity.EntityDragonSmall; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; import net.minecraft.util.MathHelper; public class ModelSmallDragon extends ModelBase { //fields ModelRenderer footBL; ModelRenderer legBL; ModelRenderer legFR; ModelRenderer footBR; ModelRenderer legBR; ModelRenderer thighBR; ModelRenderer mouth; ModelRenderer tail2; ModelRenderer neck; ModelRenderer horn2; ModelRenderer nose; ModelRenderer horn1; ModelRenderer head; ModelRenderer thighBL; ModelRenderer legFL; ModelRenderer wing2L; ModelRenderer tail1; ModelRenderer body; ModelRenderer wing2R; ModelRenderer wingCR; ModelRenderer wingCL; ModelRenderer wing1L; ModelRenderer wing1R; public ModelSmallDragon() { textureWidth = 128; textureHeight = 128; footBL = new ModelRenderer(this, 102, 29); legBL = new ModelRenderer(this, 108, 16); legFR = new ModelRenderer(this, 86, 0); footBR = new ModelRenderer(this, 102, 29); legBR = new ModelRenderer(this, 108, 16); thighBR = new ModelRenderer(this, 102, 0); mouth = new ModelRenderer(this, 0, 64); tail2 = new ModelRenderer(this, 0, 106); neck = new ModelRenderer(this, 52, 46); wing1R = new ModelRenderer(this, 0, 84); wing1L = new ModelRenderer(this, 0, 84); wingCL = new ModelRenderer(this, 48, 103); wingCR = new ModelRenderer(this, 48, 103); tail1 = new ModelRenderer(this, 47, 19); wing2L = new ModelRenderer(this, 0, 88); legFL = new ModelRenderer(this, 86, 0); thighBL = new ModelRenderer(this, 102, 0); head = new ModelRenderer(this, 24, 48); horn1 = new ModelRenderer(this, 104, 52); nose = new ModelRenderer(this, 0, 74); horn2 = new ModelRenderer(this, 104, 52); wing2R = new ModelRenderer(this, 0, 88); footBL.addBox(-3F, 8F, -6F, 5, 1, 8); footBL.setRotationPoint(6F, 15F, 8F); footBL.setTextureSize(128, 128); footBL.mirror = true; setRotation(footBL, 0F, 0F, 0F); footBL.mirror = false; legBL.mirror = true; legBL.addBox(-3F, 0F, -2F, 5, 8, 5); legBL.setRotationPoint(6F, 15F, 8F); legBL.setTextureSize(128, 128); legBL.mirror = true; setRotation(legBL, 0F, 0F, 0F); legBL.mirror = false; legFR.addBox(0F, -2F, -2F, 4, 12, 4); legFR.setRotationPoint(-6F, 14F, -4F); legFR.setTextureSize(128, 128); legFR.mirror = true; setRotation(legFR, 0F, 0F, 0F); footBR.addBox(-2F, 8F, -6F, 5, 1, 8); footBR.setRotationPoint(-6F, 15F, 8F); footBR.setTextureSize(128, 128); footBR.mirror = true; setRotation(footBR, 0F, 0F, 0F); legBR.addBox(-2F, 0F, -2F, 5, 8, 5); legBR.setRotationPoint(-6F, 15F, 8F); legBR.setTextureSize(128, 128); legBR.mirror = true; setRotation(legBR, 0F, 0F, 0F); thighBR.addBox(-2F, -8F, -4F, 5, 8, 8); thighBR.setRotationPoint(-6F, 15F, 8F); thighBR.setTextureSize(128, 128); thighBR.mirror = true; setRotation(thighBR, 0F, 0F, 0F); mouth.addBox(-1.5F, 1F, -14F, 3, 1, 7); mouth.setRotationPoint(0F, 6F, -14F); mouth.setTextureSize(128, 128); mouth.mirror = true; setRotation(mouth, 0F, 0F, 0F); tail2.addBox(-2F, 2F, 12F, 4, 4, 18); tail2.setRotationPoint(0F, 13F, 14F); tail2.setTextureSize(128, 128); tail2.mirror = true; setRotation(tail2, -0.0174533F, 0F, 0F); neck.addBox(-3F, -3F, -14F, 6, 8, 10); neck.setRotationPoint(0F, 7F, 0F); neck.setTextureSize(128, 128); neck.mirror = true; setRotation(neck, -0.122173F, 0F, 0F); horn2.mirror = true; horn2.addBox(3F, -6F, -3F, 1, 1, 11); horn2.setRotationPoint(0F, 6F, -14F); horn2.setTextureSize(128, 128); horn2.mirror = true; setRotation(horn2, 0.6108652F, 0F, 0F); horn2.mirror = false; nose.addBox(-2F, 2F, -15F, 4, 2, 8); nose.setRotationPoint(0F, 6F, -14F); nose.setTextureSize(128, 128); nose.mirror = true; setRotation(nose, 0F, 0F, 0F); horn1.addBox(-4F, -6F, -3F, 1, 1, 11); horn1.setRotationPoint(0F, 6F, -14F); horn1.setTextureSize(128, 128); horn1.mirror = true; setRotation(horn1, 0.6108652F, 0F, 0F); head.addBox(-3F, -4F, -7F, 6, 8, 8); head.setRotationPoint(0F, 6F, -14F); head.setTextureSize(128, 128); head.mirror = true; setRotation(head, 0F, 0F, 0F); thighBL.mirror = true; thighBL.addBox(-3F, -8F, -4F, 5, 8, 8); thighBL.setRotationPoint(6F, 15F, 8F); thighBL.setTextureSize(128, 128); thighBL.mirror = true; setRotation(thighBL, 0F, 0F, 0F); thighBL.mirror = false; legFL.mirror = true; legFL.addBox(-4F, -2F, -2F, 4, 12, 4); legFL.setRotationPoint(6F, 14F, -4F); legFL.setTextureSize(128, 128); legFL.mirror = true; setRotation(legFL, 0F, 0F, 0F); legFL.mirror = false; wing2L.mirror = true; wing2L.addBox(13F, -1F, 1F, 2, 2, 16); wing2L.setRotationPoint(5F, 4F, -2F); wing2L.setTextureSize(128, 128); wing2L.mirror = true; setRotation(wing2L, 0F, 0.5235988F, -0.3490659F); wing2L.mirror = false; tail1.addBox(-3F, -2F, -1F, 6, 7, 14); tail1.setRotationPoint(0F, 13F, 14F); tail1.setTextureSize(128, 128); tail1.mirror = true; setRotation(tail1, -0.1745329F, 0F, 0F); body = new ModelRenderer(this, 0, 0); body.addBox(-5F, -4F, -5F, 10, 12, 20); body.setRotationPoint(0F, 7F, 0F); body.setTextureSize(128, 128); body.mirror = true; setRotation(body, -0.296706F, 0F, 0F); wing2R.addBox(-15F, -1F, 1F, 2, 2, 16); wing2R.setRotationPoint(-5F, 4F, -2F); wing2R.setTextureSize(128, 128); wing2R.mirror = true; setRotation(wing2R, 0F, -0.5235988F, 0.3490659F); wingCR.addBox(-13F, -1F, 1F, 16, 1, 24); wingCR.setRotationPoint(-5F, 4F, -2F); wingCR.setTextureSize(128, 128); wingCR.mirror = true; setRotation(wingCR, 0F, -0.5235988F, 0.3490659F); wingCL.mirror = true; wingCL.addBox(-3F, -1F, 1F, 16, 1, 24); wingCL.setRotationPoint(5F, 4F, -2F); wingCL.setTextureSize(128, 128); wingCL.mirror = true; setRotation(wingCL, 0F, 0.5235988F, -0.3490659F); wingCL.mirror = false; wing1L.mirror = true; wing1L.addBox(-1F, -1F, -1F, 16, 2, 2); wing1L.setRotationPoint(5F, 4F, -2F); wing1L.setTextureSize(128, 128); wing1L.mirror = true; setRotation(wing1L, 0F, 0.5235988F, -0.3490659F); wing1L.mirror = false; wing1R.addBox(-15F, -1F, -1F, 16, 2, 2); wing1R.setRotationPoint(-5F, 4F, -2F); wing1R.setTextureSize(128, 128); wing1R.mirror = true; setRotation(wing1R, 0F, -0.5235988F, 0.3490659F); mouth.setTextureOffset(0, 55).addBox(-1.5F, 2F, -14F, 3, 2, 7); mouth.setRotationPoint(0F, 6F, -14F); mouth.setTextureSize(128, 128); mouth.mirror = true; setRotation(mouth, 0F, 0F, 0F); nose.setTextureOffset(0, 43).addBox(-2F, -2F, -15F, 4, 4, 8); nose.setRotationPoint(0F, 6F, -14F); nose.setTextureSize(128, 128); nose.mirror = true; setRotation(nose, 0F, 0F, 0F); } 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((EntityDragonSmall) entity, f, f1, f2, f3, f4, f5); footBL.render(f5); legBL.render(f5); legFR.render(f5); footBR.render(f5); legBR.render(f5); thighBR.render(f5); tail2.render(f5); neck.render(f5); horn2.render(f5); horn1.render(f5); head.render(f5); thighBL.render(f5); legFL.render(f5); wing2L.render(f5); tail1.render(f5); body.render(f5); wing2R.render(f5); wingCR.render(f5); wingCL.render(f5); wing1L.render(f5); wing1R.render(f5); mouth.render(f5); nose.render(f5); } private void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = x; model.rotateAngleY = y; model.rotateAngleZ = z; } public void setRotationAngles(EntityDragonSmall dragon, float step1, float step2, float head1, float head2, float head3, float head4) { super.setRotationAngles(step1, step2, head1, head2, head3, head4, dragon); float wingFlap = (float) Math.toRadians(dragon.wingFlap()); float jawAngle = (float)Math.toRadians(dragon.getJawMove()); float neckAngle = -(float)Math.toRadians(4.5F * dragon.getNeckAngle()); this.head.rotateAngleX = head4 / (180F / (float) Math.PI) + neckAngle; this.head.rotateAngleY = head3 / (180F / (float) Math.PI); if (!dragon.isTerrestrial()) { if (dragon.motionX == 0 && dragon.motionZ == 0) { wingFlap = (float) Math.toRadians(dragon.wingFlap()); } else { // wingFlap = MathHelper.cos(step1 * 0.6662F) * 1.4F * step2; } } else { wingFlap = (float) Math.toRadians(-40); this.legBR.rotateAngleX = MathHelper.cos(step1 * 0.6662F) * 1.4F * step2; this.legBL.rotateAngleX = MathHelper.cos(step1 * 0.6662F + (float) Math.PI) * 1.4F * step2; this.legFR.rotateAngleX = MathHelper.cos(step1 * 0.6662F + (float) Math.PI) * 1.4F * step2; this.legFL.rotateAngleX = MathHelper.cos(step1 * 0.6662F) * 1.4F * step2; } this.wing1R.rotateAngleZ = (float) wingFlap; this.wing2R.rotateAngleZ = (float) wingFlap; this.wingCR.rotateAngleZ = (float) wingFlap; this.wing1L.rotateAngleZ = (float) -wingFlap; this.wing2L.rotateAngleZ = (float) -wingFlap; this.wingCL.rotateAngleZ = (float) -wingFlap; this.footBL.rotateAngleX = this.legBL.rotateAngleX; this.footBR.rotateAngleX = this.legBR.rotateAngleX; this.thighBL.rotateAngleX = this.legBL.rotateAngleX; this.thighBR.rotateAngleX = this.legBR.rotateAngleX; double wingSpread = Math.toRadians(dragon.wingAngle()); this.wing1R.rotateAngleY = (float) -wingSpread; this.wing2R.rotateAngleY = (float) -wingSpread; this.wingCR.rotateAngleY = (float) -wingSpread; this.wing1L.rotateAngleY = (float) wingSpread; this.wing2L.rotateAngleY = (float) wingSpread; this.wingCL.rotateAngleY = (float) wingSpread; this.nose.rotateAngleX = this.head.rotateAngleX - (jawAngle/2); this.mouth.rotateAngleX = this.head.rotateAngleX + jawAngle; this.nose.rotateAngleY = this.head.rotateAngleY; this.mouth.rotateAngleY = this.head.rotateAngleY; this.horn1.rotateAngleX = this.horn2.rotateAngleX = this.head.rotateAngleX + 0.6108652F; this.horn1.rotateAngleY = this.horn2.rotateAngleY = this.head.rotateAngleY; } }