package mekanism.generators.client.model; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; public class ModelWindGenerator extends ModelBase { ModelRenderer head; ModelRenderer plateConnector2; ModelRenderer plateConnector; ModelRenderer plate; ModelRenderer bladeCap; ModelRenderer bladeCenter; ModelRenderer baseRim; ModelRenderer base; ModelRenderer wire; ModelRenderer rearPlate1; ModelRenderer rearPlate2; ModelRenderer blade1a; ModelRenderer blade2a; ModelRenderer blade3a; ModelRenderer blade1b; ModelRenderer blade2b; ModelRenderer blade3b; ModelRenderer post1a; ModelRenderer post1b; ModelRenderer post1c; ModelRenderer post1d; public ModelWindGenerator() { textureWidth = 128; textureHeight = 128; head = new ModelRenderer(this, 20, 0); head.addBox(-3.5F, -3.5F, 0F, 7, 7, 9); head.setRotationPoint(0F, -48F, -4F); head.setTextureSize(128, 128); head.mirror = true; setRotation(head, 0F, 0F, 0F); plateConnector2 = new ModelRenderer(this, 42, 34); plateConnector2.addBox(0F, 0F, 0F, 6, 6, 10); plateConnector2.setRotationPoint(-3F, 13F, -7F); plateConnector2.setTextureSize(128, 128); plateConnector2.mirror = true; setRotation(plateConnector2, 0F, 0F, 0F); plateConnector = new ModelRenderer(this, 0, 75); plateConnector.addBox(0F, 0F, 0F, 4, 2, 2); plateConnector.setRotationPoint(-2F, 19F, -5.5F); plateConnector.setTextureSize(128, 128); plateConnector.mirror = true; setRotation(plateConnector, 0F, 0F, 0F); plate = new ModelRenderer(this, 42, 25); plate.addBox(0F, 0F, 0F, 8, 8, 1); plate.setRotationPoint(-4F, 12F, -8F); plate.setTextureSize(128, 128); plate.mirror = true; setRotation(plate, 0F, 0F, 0F); bladeCap = new ModelRenderer(this, 22, 0); bladeCap.addBox(-1F, -1F, -8F, 2, 2, 1); bladeCap.setRotationPoint(0F, -48F, 0F); bladeCap.setTextureSize(128, 128); bladeCap.mirror = true; setRotation(bladeCap, 0F, 0F, 0F); bladeCenter = new ModelRenderer(this, 20, 25); bladeCenter.addBox(-2F, -2F, -7F, 4, 4, 3); bladeCenter.setRotationPoint(0F, -48F, 0F); bladeCenter.setTextureSize(128, 128); bladeCenter.mirror = true; setRotation(bladeCenter, 0F, 0F, 0F); baseRim = new ModelRenderer(this, 26, 50); baseRim.addBox(0F, 0F, 0F, 12, 2, 12); baseRim.setRotationPoint(-6F, 21F, -6F); baseRim.setTextureSize(128, 128); baseRim.mirror = true; setRotation(baseRim, 0F, 0F, 0F); base = new ModelRenderer(this, 10, 64); base.addBox(0F, 0F, 0F, 16, 2, 16); base.setRotationPoint(-8F, 22F, -8F); base.setTextureSize(128, 128); base.mirror = true; setRotation(base, 0F, 0F, 0F); wire = new ModelRenderer(this, 74, 0); wire.addBox(-1F, 0F, -1.1F, 2, 65, 2); wire.setRotationPoint(0F, -46F, -1.5F); wire.setTextureSize(128, 128); wire.mirror = true; setRotation(wire, -0.0349066F, 0F, 0F); rearPlate1 = new ModelRenderer(this, 20, 16); rearPlate1.addBox(-2.5F, -6F, 0F, 5, 6, 3); rearPlate1.setRotationPoint(0F, -44.5F, 4F); rearPlate1.setTextureSize(128, 128); rearPlate1.mirror = true; setRotation(rearPlate1, 0.122173F, 0F, 0F); rearPlate2 = new ModelRenderer(this, 36, 16); rearPlate2.addBox(-1.5F, -5F, -1F, 3, 5, 2); rearPlate2.setRotationPoint(0F, -45F, 7F); rearPlate2.setTextureSize(128, 128); rearPlate2.mirror = true; setRotation(rearPlate2, 0.2094395F, 0F, 0F); blade1a = new ModelRenderer(this, 20, 32); blade1a.addBox(-1F, -32F, 0F, 2, 32, 1); blade1a.setRotationPoint(0F, -48F, -5.99F); blade1a.setTextureSize(128, 128); blade1a.mirror = true; setRotation(blade1a, 0F, 0F, 0F); blade2a = new ModelRenderer(this, 20, 32); blade2a.addBox(-1F, 0F, 0F, 2, 32, 1); blade2a.setRotationPoint(0F, -48F, -6F); blade2a.setTextureSize(128, 128); blade2a.mirror = true; setRotation(blade2a, 0F, 0F, 1.047198F); blade3a = new ModelRenderer(this, 20, 32); blade3a.addBox(-1F, 0F, 0F, 2, 32, 1); blade3a.setRotationPoint(0F, -48F, -6F); blade3a.setTextureSize(128, 128); blade3a.mirror = true; setRotation(blade3a, 0F, 0F, -1.047198F); blade1b = new ModelRenderer(this, 26, 32); blade1b.addBox(-2F, -28F, 0F, 2, 28, 1); blade1b.setRotationPoint(0F, -48F, -6F); blade1b.setTextureSize(128, 128); blade1b.mirror = true; setRotation(blade1b, 0F, 0F, 0.0349066F); blade2b = new ModelRenderer(this, 26, 32); blade2b.addBox(0F, 0F, 0F, 2, 28, 1); blade2b.setRotationPoint(0F, -48F, -6.01F); blade2b.setTextureSize(128, 128); blade2b.mirror = true; setRotation(blade2b, 0F, 0F, 1.082104F); blade3b = new ModelRenderer(this, 26, 32); blade3b.addBox(0F, 0F, 0F, 2, 28, 1); blade3b.setRotationPoint(0F, -48F, -6.01F); blade3b.setTextureSize(128, 128); blade3b.mirror = true; setRotation(blade3b, 0F, 0F, -1.012291F); post1a = new ModelRenderer(this, 0, 0); post1a.addBox(-2.5F, 0F, -2.5F, 5, 68, 5); post1a.setRotationPoint(0F, -46F, 0F); post1a.setTextureSize(128, 128); post1a.mirror = true; setRotation(post1a, -0.0349066F, 0F, 0.0349066F); post1b = new ModelRenderer(this, 0, 0); post1b.addBox(-2.5F, 0F, -2.5F, 5, 68, 5); post1b.setRotationPoint(0F, -46F, 0F); post1b.setTextureSize(128, 128); post1b.mirror = true; setRotation(post1b, 0.0349066F, 0F, -0.0349066F); post1c = new ModelRenderer(this, 0, 0); post1c.addBox(-2.5F, 0F, -2.5F, 5, 68, 5); post1c.setRotationPoint(0F, -46F, 0F); post1c.setTextureSize(128, 128); post1c.mirror = true; setRotation(post1c, 0.0347321F, 0F, 0.0347321F); post1d = new ModelRenderer(this, 0, 0); post1d.addBox(-2.5F, 0F, -2.5F, 5, 68, 5); post1d.setRotationPoint(0F, -46F, 0F); post1d.setTextureSize(128, 128); post1d.mirror = true; setRotation(post1d, -0.0347321F, 0F, -0.0347321F); } public void render(float size, double angle) { head.render(size); plateConnector2.render(size); plateConnector.render(size); plate.render(size); baseRim.render(size); base.render(size); wire.render(size); rearPlate1.render(size); rearPlate2.render(size); post1a.render(size); post1b.render(size); post1c.render(size); post1d.render(size); setRotation(blade1a, 0F, 0F, getRotation(getAbsoluteAngle(angle))); setRotation(blade1b, 0F, 0F, 0.0349066F + getRotation(getAbsoluteAngle(angle))); setRotation(blade2a, 0F, 0F, getRotation(getAbsoluteAngle(angle - 60))); setRotation(blade2b, 0F, 0F, 0.0349066F + getRotation(getAbsoluteAngle(angle - 60))); setRotation(blade3a, 0F, 0F, getRotation(getAbsoluteAngle(angle + 60))); setRotation(blade3b, 0F, 0F, 0.0349066F + getRotation(getAbsoluteAngle(angle + 60))); setRotation(bladeCap, 0F, 0F, getRotation(getAbsoluteAngle(angle))); setRotation(bladeCenter, 0F, 0F, getRotation(getAbsoluteAngle(angle))); blade1a.render(size); blade2a.render(size); blade3a.render(size); blade1b.render(size); blade2b.render(size); blade3b.render(size); bladeCap.render(size); bladeCenter.render(size); } public float getRotation(double angle) { return ((float)angle / (float) 180) * (float)Math.PI; } public double getAbsoluteAngle(double angle) { return angle % 360; } private void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = x; model.rotateAngleY = y; model.rotateAngleZ = z; } }