package mekanism.generators.client.model; import mekanism.client.render.MekanismRenderer; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class ModelHeatGenerator extends ModelBase { public static ResourceLocation OVERLAY_ON = MekanismUtils.getResource(ResourceType.RENDER, "HeatGenerator_OverlayOn.png"); public static ResourceLocation OVERLAY_OFF = MekanismUtils.getResource(ResourceType.RENDER, "HeatGenerator_OverlayOff.png"); ModelRenderer drum; ModelRenderer ring1; ModelRenderer ring2; ModelRenderer back; ModelRenderer bar1; ModelRenderer bar2; ModelRenderer plate; ModelRenderer fin8; ModelRenderer fin7; ModelRenderer fin1; ModelRenderer fin2; ModelRenderer fin3; ModelRenderer fin4; ModelRenderer fin5; ModelRenderer fin6; ModelRenderer base; public ModelHeatGenerator() { textureWidth = 128; textureHeight = 64; drum = new ModelRenderer(this, 0, 22); drum.addBox(0F, 0F, 0F, 16, 9, 9); drum.setRotationPoint(-8F, 8.5F, -7.5F); drum.setTextureSize(128, 64); drum.mirror = true; setRotation(drum, 0F, 0F, 0F); ring1 = new ModelRenderer(this, 88, 0); ring1.addBox(0F, 0F, 0F, 2, 10, 10); ring1.setRotationPoint(3F, 8F, -8F); ring1.setTextureSize(128, 64); ring1.mirror = true; setRotation(ring1, 0F, 0F, 0F); ring2 = new ModelRenderer(this, 88, 0); ring2.addBox(0F, 0F, 0F, 2, 10, 10); ring2.setRotationPoint(-5F, 8F, -8F); ring2.setTextureSize(128, 64); ring2.mirror = true; setRotation(ring2, 0F, 0F, 0F); back = new ModelRenderer(this, 48, 0); back.addBox(0F, 0F, 0F, 16, 10, 4); back.setRotationPoint(-8F, 8F, 2F); back.setTextureSize(128, 64); back.mirror = true; setRotation(back, 0F, 0F, 0F); bar1 = new ModelRenderer(this, 88, 0); bar1.addBox(0F, 0F, 0F, 2, 9, 1); bar1.setRotationPoint(3F, 9F, 6F); bar1.setTextureSize(128, 64); bar1.mirror = true; setRotation(bar1, 0F, 0F, 0F); bar2 = new ModelRenderer(this, 88, 0); bar2.addBox(0F, 0F, 0F, 2, 9, 1); bar2.setRotationPoint(-5F, 9F, 6F); bar2.setTextureSize(128, 64); bar2.mirror = true; setRotation(bar2, 0F, 0F, 0F); plate = new ModelRenderer(this, 41, 22); plate.addBox(0F, 0F, 0F, 8, 6, 2); plate.setRotationPoint(-4F, 12F, 6F); plate.setTextureSize(128, 64); plate.mirror = true; setRotation(plate, 0F, 0F, 0F); fin8 = new ModelRenderer(this, 14, 40); fin8.addBox(0F, 0F, 0F, 16, 1, 2); fin8.setRotationPoint(-8F, 8F, 6F); fin8.setTextureSize(128, 64); fin8.mirror = true; setRotation(fin8, 0F, 0F, 0F); fin7 = new ModelRenderer(this, 14, 40); fin7.addBox(0F, 0F, 0F, 16, 1, 2); fin7.setRotationPoint(-8F, 10F, 6F); fin7.setTextureSize(128, 64); fin7.mirror = true; setRotation(fin7, 0F, 0F, 0F); fin1 = new ModelRenderer(this, 0, 40); fin1.addBox(0F, 0F, 0F, 4, 1, 2); fin1.setRotationPoint(4F, 12F, 6F); fin1.setTextureSize(128, 64); fin1.mirror = true; setRotation(fin1, 0F, 0F, 0F); fin1.mirror = false; fin2 = new ModelRenderer(this, 0, 40); fin2.addBox(0F, 0F, 0F, 4, 1, 2); fin2.setRotationPoint(4F, 14F, 6F); fin2.setTextureSize(128, 64); fin2.mirror = true; setRotation(fin2, 0F, 0F, 0F); fin2.mirror = false; fin3 = new ModelRenderer(this, 0, 40); fin3.addBox(0F, 0F, 0F, 4, 1, 2); fin3.setRotationPoint(4F, 16F, 6F); fin3.setTextureSize(128, 64); fin3.mirror = true; setRotation(fin3, 0F, 0F, 0F); fin3.mirror = false; fin4 = new ModelRenderer(this, 0, 40); fin4.addBox(0F, 0F, 0F, 4, 1, 2); fin4.setRotationPoint(-8F, 12F, 6F); fin4.setTextureSize(128, 64); fin4.mirror = true; setRotation(fin4, 0F, 0F, 0F); fin5 = new ModelRenderer(this, 0, 40); fin5.addBox(0F, 0F, 0F, 4, 1, 2); fin5.setRotationPoint(-8F, 14F, 6F); fin5.setTextureSize(128, 64); fin5.mirror = true; setRotation(fin5, 0F, 0F, 0F); fin6 = new ModelRenderer(this, 0, 40); fin6.addBox(0F, 0F, 0F, 4, 1, 2); fin6.setRotationPoint(-8F, 16F, 6F); fin6.setTextureSize(128, 64); fin6.mirror = true; setRotation(fin6, 0F, 0F, 0F); base = new ModelRenderer(this, 0, 0); base.addBox(0F, 0F, 0F, 16, 6, 16); base.setRotationPoint(-8F, 18F, -8F); base.setTextureSize(128, 64); base.mirror = true; setRotation(base, 0F, 0F, 0F); } public void render(float size, boolean on, TextureManager manager) { GlStateManager.pushMatrix(); MekanismRenderer.blendOn(); doRender(size); manager.bindTexture(on ? OVERLAY_ON : OVERLAY_OFF); GlStateManager.scale(1.001F, 1.001F, 1.001F); GlStateManager.translate(0, -0.0011F, 0); MekanismRenderer.glowOn(); doRender(size); MekanismRenderer.glowOff(); MekanismRenderer.blendOff(); GlStateManager.popMatrix(); } private void doRender(float size) { drum.render(size); ring1.render(size); ring2.render(size); back.render(size); bar1.render(size); bar2.render(size); plate.render(size); fin8.render(size); fin7.render(size); fin1.render(size); fin2.render(size); fin3.render(size); fin4.render(size); fin5.render(size); fin6.render(size); base.render(size); } private void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = x; model.rotateAngleY = y; model.rotateAngleZ = z; } }