package drzhark.mocreatures.client.model; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; import net.minecraft.util.MathHelper; import org.lwjgl.opengl.GL11; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import drzhark.mocreatures.entity.passive.MoCEntityFirefly; @SideOnly(Side.CLIENT) public class MoCModelFirefly extends ModelBase { //fields ModelRenderer Antenna; ModelRenderer RearLegs; ModelRenderer MidLegs; ModelRenderer Head; ModelRenderer Tail; ModelRenderer Abdomen; ModelRenderer FrontLegs; ModelRenderer RightShellOpen; ModelRenderer LeftShellOpen; ModelRenderer Thorax; ModelRenderer RightShell; ModelRenderer LeftShell; ModelRenderer LeftWing; ModelRenderer RightWing; public MoCModelFirefly() { textureWidth = 32; textureHeight = 32; Head = new ModelRenderer(this, 0, 4); Head.addBox(-1F, 0F, -1F, 2, 1, 2); Head.setRotationPoint(0F, 22.5F, -2F); setRotation(Head, -2.171231F, 0F, 0F); Antenna = new ModelRenderer(this, 0, 7); Antenna.addBox(-1F, 0F, 0F, 2, 1, 0); Antenna.setRotationPoint(0F, 22.5F, -3F); setRotation(Antenna, -1.665602F, 0F, 0F); Thorax = new ModelRenderer(this, 0, 0); Thorax.addBox(-1F, 0F, -1F, 2, 2, 2); Thorax.setRotationPoint(0F, 21F, -1F); setRotation(Thorax, 0F, 0F, 0F); Abdomen = new ModelRenderer(this, 8, 0); Abdomen.addBox(-1F, 0F, -1F, 2, 2, 2); Abdomen.setRotationPoint(0F, 22F, 0F); setRotation(Abdomen, 1.427659F, 0F, 0F); Tail = new ModelRenderer(this, 8, 17); Tail.addBox(-1F, 0.5F, -1F, 2, 2, 1); Tail.setRotationPoint(0F, 21.3F, 1.5F); setRotation(Tail, 1.13023F, 0F, 0F); FrontLegs = new ModelRenderer(this, 0, 7); FrontLegs.addBox(-1F, 0F, 0F, 2, 2, 0); FrontLegs.setRotationPoint(0F, 23F, -1.8F); setRotation(FrontLegs, -0.8328009F, 0F, 0F); MidLegs = new ModelRenderer(this, 0, 9); MidLegs.addBox(-1F, 0F, 0F, 2, 2, 0); MidLegs.setRotationPoint(0F, 23F, -1.2F); setRotation(MidLegs, 1.070744F, 0F, 0F); RearLegs = new ModelRenderer(this, 0, 9); RearLegs.addBox(-1F, 0F, 0F, 2, 3, 0); RearLegs.setRotationPoint(0F, 23F, -0.4F); setRotation(RearLegs, 1.249201F, 0F, 0F); RightShellOpen = new ModelRenderer(this, 0, 12); RightShellOpen.addBox(-1F, 0F, 0F, 2, 0, 5); RightShellOpen.setRotationPoint(-1F, 21F, -2F); setRotation(RightShellOpen, 1.22F, 0F, -0.6457718F); LeftShellOpen = new ModelRenderer(this, 0, 12); LeftShellOpen.addBox(-1F, 0F, 0F, 2, 0, 5); LeftShellOpen.setRotationPoint(1F, 21F, -2F); setRotation(LeftShellOpen, 1.22F, 0F, 0.6457718F); RightShell = new ModelRenderer(this, 0, 12); RightShell.addBox(-1F, 0F, 0F, 2, 0, 5); RightShell.setRotationPoint(-1F, 21F, -2F); setRotation(RightShell, 0.0174533F, 0F, -0.6457718F); LeftShell = new ModelRenderer(this, 0, 12); LeftShell.addBox(-1F, 0F, 0F, 2, 0, 5); LeftShell.setRotationPoint(1F, 21F, -2F); setRotation(LeftShell, 0.0174533F, 0F, 0.6457718F); LeftWing = new ModelRenderer(this, 15, 12); LeftWing.addBox(-1F, 0F, 0F, 2, 0, 5); LeftWing.setRotationPoint(1F, 21F, -1F); setRotation(LeftWing, 0F, 1.047198F, 0F); RightWing = new ModelRenderer(this, 15, 12); RightWing.addBox(-1F, 0F, 0F, 2, 0, 5); RightWing.setRotationPoint(-1F, 21F, -1F); setRotation(RightWing, 0F, -1.047198F, 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); MoCEntityFirefly entityfirefly = (MoCEntityFirefly) entity; boolean isFlying = (entityfirefly.getIsFlying() || entityfirefly.isOnAir()); //boolean onGround = entityfirefly.onGround; setRotationAngles(f, f1, f2, f3, f4, f5, isFlying); Antenna.render(f5); RearLegs.render(f5); MidLegs.render(f5); Head.render(f5); Abdomen.render(f5); FrontLegs.render(f5); Thorax.render(f5); Tail.render(f5); if (!isFlying) { RightShell.render(f5); LeftShell.render(f5); } else { RightShellOpen.render(f5); LeftShellOpen.render(f5); GL11.glPushMatrix(); GL11.glEnable(3042 /*GL_BLEND*/); float transparency = 0.6F; GL11.glBlendFunc(770, 771); GL11.glColor4f(0.8F, 0.8F, 0.8F, transparency); LeftWing.render(f5); RightWing.render(f5); GL11.glDisable(3042/*GL_BLEND*/); GL11.glPopMatrix(); } //flag = glowing // boolean flag = true; // GL11.glPushMatrix(); // GL11.glEnable(3042 /*GL_BLEND*/ ); // if (!flag) // { // float transparency = 0.4F; // GL11.glBlendFunc(770, 771); // GL11.glColor4f(0.8F, 0.8F, 0.8F, transparency); // } // else // { // GL11.glBlendFunc(770, 1); // //GL11.glBlendFunc(770, GL11.GL_ONE); // } // // GL11.glDisable(3042/*GL_BLEND*/); // // GL11.glPopMatrix(); } private void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = x; model.rotateAngleY = y; model.rotateAngleZ = z; } public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, boolean isFlying) { //super.setRotationAngles(f, f1, f2, f3, f4, f5); //bipedRightArm.rotateAngleX = MathHelper.cos((f * 0.6662F) + 3.141593F) * 2.0F * f1 * 0.5F; //bipedLeftArm.rotateAngleX = MathHelper.cos(f * 0.6662F) * 2.0F * f1 * 0.5F; float legMov = 0F; float legMovB = 0F; float frontLegAdj = 0F; if (isFlying) { float WingRot = MathHelper.cos((f2 * 1.8F)) * 0.8F; RightWing.rotateAngleZ = WingRot; LeftWing.rotateAngleZ = -WingRot; legMov = (f1 * 1.5F); legMovB = legMov; frontLegAdj = 1.4F; } else { legMov = MathHelper.cos((f * 1.5F) + 3.141593F) * 2.0F * f1; legMovB = MathHelper.cos(f * 1.5F) * 2.0F * f1; } FrontLegs.rotateAngleX = -0.8328009F + frontLegAdj + legMov; MidLegs.rotateAngleX = 1.070744F + legMovB; RearLegs.rotateAngleX = 1.249201F + legMov; } }