package mekanism.client.model; import mekanism.client.render.MekanismRenderer; import mekanism.client.render.tileentity.RenderEnergyCube; import mekanism.common.SideData.IOState; import mekanism.common.Tier.EnergyCubeTier; 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.EnumFacing; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class ModelEnergyCube extends ModelBase { public static ResourceLocation OVERLAY_ON = MekanismUtils.getResource(ResourceType.RENDER, "EnergyCube_OverlayOn.png"); public static ResourceLocation OVERLAY_OFF = MekanismUtils.getResource(ResourceType.RENDER, "EnergyCube_OverlayOff.png"); ModelRenderer frame12; ModelRenderer frame11; ModelRenderer frame10; ModelRenderer frame9; ModelRenderer frame8; ModelRenderer frame7; ModelRenderer frame6; ModelRenderer frame5; ModelRenderer frame4; ModelRenderer frame3; ModelRenderer frame2; ModelRenderer frame1; ModelRenderer corner8; ModelRenderer corner7; ModelRenderer corner6; ModelRenderer corner5; ModelRenderer corner4; ModelRenderer corner3; ModelRenderer corner2; ModelRenderer corner1; ModelRenderer connectorBackToggle; ModelRenderer connectorRightToggle; ModelRenderer connectorBottomToggle; ModelRenderer connectorLeftToggle; ModelRenderer connectorFrontToggle; ModelRenderer connectorTopToggle; ModelRenderer portBackToggle; ModelRenderer portBottomToggle; ModelRenderer portFrontToggle; ModelRenderer portLeftToggle; ModelRenderer portRightToggle; ModelRenderer portTopToggle; ModelRenderer ledTop1; ModelRenderer ledTop2; ModelRenderer ledBack1; ModelRenderer ledBack2; ModelRenderer ledBottom2; ModelRenderer ledBottom1; ModelRenderer ledFront1; ModelRenderer ledFront2; ModelRenderer ledRight2; ModelRenderer ledRight1; ModelRenderer ledLeft1; ModelRenderer ledLeft2; public ModelRenderer[] leds1; public ModelRenderer[] leds2; public ModelRenderer[] ports; public ModelRenderer[] connectors; public ModelEnergyCube() { textureWidth = 64; textureHeight = 64; frame12 = new ModelRenderer(this, 0, 0); frame12.addBox(0F, 0F, 0F, 3, 10, 3); frame12.setRotationPoint(-8F, 11F, 5F); frame12.setTextureSize(64, 64); frame12.mirror = true; setRotation(frame12, 0F, 0F, 0F); frame11 = new ModelRenderer(this, 0, 0); frame11.addBox(0F, 0F, 0F, 3, 10, 3); frame11.setRotationPoint(5F, 11F, -8F); frame11.setTextureSize(64, 64); frame11.mirror = true; setRotation(frame11, 0F, 0F, 0F); frame10 = new ModelRenderer(this, 0, 13); frame10.addBox(0F, 0F, 0F, 10, 3, 3); frame10.setRotationPoint(-5F, 21F, 5F); frame10.setTextureSize(64, 64); frame10.mirror = true; setRotation(frame10, 0F, 0F, 0F); frame9 = new ModelRenderer(this, 12, 0); frame9.addBox(0F, 0F, 0F, 3, 3, 10); frame9.setRotationPoint(5F, 21F, -5F); frame9.setTextureSize(64, 64); frame9.mirror = true; setRotation(frame9, 0F, 0F, 0F); frame8 = new ModelRenderer(this, 0, 13); frame8.addBox(0F, 0F, 0F, 10, 3, 3); frame8.setRotationPoint(-5F, 8F, 5F); frame8.setTextureSize(64, 64); frame8.mirror = true; setRotation(frame8, 0F, 0F, 0F); frame7 = new ModelRenderer(this, 0, 13); frame7.addBox(0F, 0F, 0F, 10, 3, 3); frame7.setRotationPoint(-5F, 21F, -8F); frame7.setTextureSize(64, 64); frame7.mirror = true; setRotation(frame7, 0F, 0F, 0F); frame6 = new ModelRenderer(this, 0, 0); frame6.addBox(0F, 0F, 0F, 3, 10, 3); frame6.setRotationPoint(5F, 11F, 5F); frame6.setTextureSize(64, 64); frame6.mirror = true; setRotation(frame6, 0F, 0F, 0F); frame5 = new ModelRenderer(this, 0, 0); frame5.addBox(0F, 0F, 0F, 3, 10, 3); frame5.setRotationPoint(-8F, 11F, -8F); frame5.setTextureSize(64, 64); frame5.mirror = true; setRotation(frame5, 0F, 0F, 0F); frame4 = new ModelRenderer(this, 12, 0); frame4.addBox(0F, 0F, 0F, 3, 3, 10); frame4.setRotationPoint(5F, 8F, -5F); frame4.setTextureSize(64, 64); frame4.mirror = true; setRotation(frame4, 0F, 0F, 0F); frame3 = new ModelRenderer(this, 12, 0); frame3.addBox(0F, 0F, 0F, 3, 3, 10); frame3.setRotationPoint(-8F, 21F, -5F); frame3.setTextureSize(64, 64); frame3.mirror = true; setRotation(frame3, 0F, 0F, 0F); frame2 = new ModelRenderer(this, 12, 0); frame2.addBox(0F, 0F, 0F, 3, 3, 10); frame2.setRotationPoint(-8F, 8F, -5F); frame2.setTextureSize(64, 64); frame2.mirror = true; setRotation(frame2, 0F, 0F, 0F); frame1 = new ModelRenderer(this, 0, 13); frame1.addBox(0F, 0F, 0F, 10, 3, 3); frame1.setRotationPoint(-5F, 8F, -8F); frame1.setTextureSize(64, 64); frame1.mirror = true; setRotation(frame1, 0F, 0F, 0F); corner8 = new ModelRenderer(this, 26, 13); corner8.addBox(0F, 0F, 0F, 3, 3, 3); corner8.setRotationPoint(5F, 21F, 5F); corner8.setTextureSize(64, 64); corner8.mirror = true; setRotation(corner8, 0F, 0F, 0F); corner7 = new ModelRenderer(this, 26, 13); corner7.addBox(0F, 0F, 0F, 3, 3, 3); corner7.setRotationPoint(5F, 21F, -8F); corner7.setTextureSize(64, 64); corner7.mirror = true; setRotation(corner7, 0F, 0F, 0F); corner6 = new ModelRenderer(this, 26, 13); corner6.addBox(0F, 0F, 0F, 3, 3, 3); corner6.setRotationPoint(-8F, 21F, 5F); corner6.setTextureSize(64, 64); corner6.mirror = true; setRotation(corner6, 0F, 0F, 0F); corner5 = new ModelRenderer(this, 26, 13); corner5.addBox(0F, 0F, 0F, 3, 3, 3); corner5.setRotationPoint(-8F, 21F, -8F); corner5.setTextureSize(64, 64); corner5.mirror = true; setRotation(corner5, 0F, 0F, 0F); corner4 = new ModelRenderer(this, 26, 13); corner4.addBox(0F, 0F, 0F, 3, 3, 3); corner4.setRotationPoint(5F, 8F, 5F); corner4.setTextureSize(64, 64); corner4.mirror = true; setRotation(corner4, 0F, 0F, 0F); corner3 = new ModelRenderer(this, 26, 13); corner3.addBox(0F, 0F, 0F, 3, 3, 3); corner3.setRotationPoint(5F, 8F, -8F); corner3.setTextureSize(64, 64); corner3.mirror = true; setRotation(corner3, 0F, 0F, 0F); corner2 = new ModelRenderer(this, 26, 13); corner2.addBox(0F, 0F, 0F, 3, 3, 3); corner2.setRotationPoint(-8F, 8F, 5F); corner2.setTextureSize(64, 64); corner2.mirror = true; setRotation(corner2, 0F, 0F, 0F); corner1 = new ModelRenderer(this, 26, 13); corner1.addBox(0F, 0F, 0F, 3, 3, 3); corner1.setRotationPoint(-8F, 8F, -8F); corner1.setTextureSize(64, 64); corner1.mirror = true; setRotation(corner1, 0F, 0F, 0F); connectorBackToggle = new ModelRenderer(this, 38, 16); connectorBackToggle.addBox(0F, 0F, 0F, 10, 6, 1); connectorBackToggle.setRotationPoint(-5F, 13F, 6F); connectorBackToggle.setTextureSize(64, 64); connectorBackToggle.mirror = true; setRotation(connectorBackToggle, 0F, 0F, 0F); connectorRightToggle = new ModelRenderer(this, 38, 0); connectorRightToggle.addBox(0F, 0F, 0F, 1, 6, 10); connectorRightToggle.setRotationPoint(6F, 13F, -5F); connectorRightToggle.setTextureSize(64, 64); connectorRightToggle.mirror = true; setRotation(connectorRightToggle, 0F, 0F, 0F); connectorBottomToggle = new ModelRenderer(this, 0, 19); connectorBottomToggle.addBox(0F, 0F, 0F, 10, 1, 6); connectorBottomToggle.setRotationPoint(-5F, 22F, -3F); connectorBottomToggle.setTextureSize(64, 64); connectorBottomToggle.mirror = true; setRotation(connectorBottomToggle, 0F, 0F, 0F); connectorLeftToggle = new ModelRenderer(this, 38, 0); connectorLeftToggle.addBox(0F, 0F, 0F, 1, 6, 10); connectorLeftToggle.setRotationPoint(-7F, 13F, -5F); connectorLeftToggle.setTextureSize(64, 64); connectorLeftToggle.mirror = true; setRotation(connectorLeftToggle, 0F, 0F, 0F); connectorFrontToggle = new ModelRenderer(this, 38, 16); connectorFrontToggle.addBox(0F, 0F, 0F, 10, 6, 1); connectorFrontToggle.setRotationPoint(-5F, 13F, -7F); connectorFrontToggle.setTextureSize(64, 64); connectorFrontToggle.mirror = true; setRotation(connectorFrontToggle, 0F, 0F, 0F); connectorTopToggle = new ModelRenderer(this, 0, 19); connectorTopToggle.addBox(0F, 0F, 0F, 10, 1, 6); connectorTopToggle.setRotationPoint(-5F, 9F, -3F); connectorTopToggle.setTextureSize(64, 64); connectorTopToggle.mirror = true; setRotation(connectorTopToggle, 0F, 0F, 0F); portBackToggle = new ModelRenderer(this, 18, 35); portBackToggle.addBox(0F, 0F, 0F, 8, 8, 1); portBackToggle.setRotationPoint(-4F, 12F, 7F); portBackToggle.setTextureSize(64, 64); portBackToggle.mirror = true; setRotation(portBackToggle, 0F, 0F, 0F); portBottomToggle = new ModelRenderer(this, 0, 26); portBottomToggle.addBox(0F, 0F, 0F, 8, 1, 8); portBottomToggle.setRotationPoint(-4F, 23F, -4F); portBottomToggle.setTextureSize(64, 64); portBottomToggle.mirror = true; setRotation(portBottomToggle, 0F, 0F, 0F); portFrontToggle = new ModelRenderer(this, 18, 35); portFrontToggle.addBox(0F, 0F, 0F, 8, 8, 1); portFrontToggle.setRotationPoint(-4F, 12F, -8F); portFrontToggle.setTextureSize(64, 64); portFrontToggle.mirror = true; setRotation(portFrontToggle, 0F, 0F, 0F); portLeftToggle = new ModelRenderer(this, 0, 35); portLeftToggle.addBox(0F, 0F, 0F, 1, 8, 8); portLeftToggle.setRotationPoint(-8F, 12F, -4F); portLeftToggle.setTextureSize(64, 64); portLeftToggle.mirror = true; setRotation(portLeftToggle, 0F, 0F, 0F); portRightToggle = new ModelRenderer(this, 0, 35); portRightToggle.addBox(0F, 0F, 0F, 1, 8, 8); portRightToggle.setRotationPoint(7F, 12F, -4F); portRightToggle.setTextureSize(64, 64); portRightToggle.mirror = true; setRotation(portRightToggle, 0F, 0F, 0F); portTopToggle = new ModelRenderer(this, 0, 26); portTopToggle.addBox(0F, 0F, 0F, 8, 1, 8); portTopToggle.setRotationPoint(-4F, 8F, -4F); portTopToggle.setTextureSize(64, 64); portTopToggle.mirror = true; setRotation(portTopToggle, 0F, 0F, 0F); ledTop1 = new ModelRenderer(this, 0, 51); ledTop1.addBox(0F, 0F, 0F, 1, 1, 1); ledTop1.setRotationPoint(-5.5F, 8.1F, -0.5F); ledTop1.setTextureSize(64, 64); ledTop1.mirror = true; setRotation(ledTop1, 0F, 0F, 0F); ledTop2 = new ModelRenderer(this, 0, 51); ledTop2.addBox(0F, 0F, 0F, 1, 1, 1); ledTop2.setRotationPoint(4.5F, 8.1F, -0.5F); ledTop2.setTextureSize(64, 64); ledTop2.mirror = true; setRotation(ledTop2, 0F, 0F, 0F); ledBack1 = new ModelRenderer(this, 0, 51); ledBack1.addBox(0F, 0F, 0F, 1, 1, 1); ledBack1.setRotationPoint(-5.5F, 15.5F, 6.9F); ledBack1.setTextureSize(64, 64); ledBack1.mirror = true; setRotation(ledBack1, 0F, 0F, 0F); ledBack2 = new ModelRenderer(this, 0, 51); ledBack2.addBox(0F, 0F, 0F, 1, 1, 1); ledBack2.setRotationPoint(4.5F, 15.5F, 6.9F); ledBack2.setTextureSize(64, 64); ledBack2.mirror = true; setRotation(ledBack2, 0F, 0F, 0F); ledBottom2 = new ModelRenderer(this, 0, 51); ledBottom2.addBox(0F, 0F, 0F, 1, 1, 1); ledBottom2.setRotationPoint(4.5F, 22.9F, -0.5F); ledBottom2.setTextureSize(64, 64); ledBottom2.mirror = true; setRotation(ledBottom2, 0F, 0F, 0F); ledBottom1 = new ModelRenderer(this, 0, 51); ledBottom1.addBox(0F, 0F, 0F, 1, 1, 1); ledBottom1.setRotationPoint(-5.5F, 22.9F, -0.5F); ledBottom1.setTextureSize(64, 64); ledBottom1.mirror = true; setRotation(ledBottom1, 0F, 0F, 0F); ledFront1 = new ModelRenderer(this, 0, 51); ledFront1.addBox(0F, 0F, 0F, 1, 1, 1); ledFront1.setRotationPoint(-5.5F, 15.5F, -7.9F); ledFront1.setTextureSize(64, 64); ledFront1.mirror = true; setRotation(ledFront1, 0F, 0F, 0F); ledFront2 = new ModelRenderer(this, 0, 51); ledFront2.addBox(0F, 0F, 0F, 1, 1, 1); ledFront2.setRotationPoint(4.5F, 15.5F, -7.9F); ledFront2.setTextureSize(64, 64); ledFront2.mirror = true; setRotation(ledFront2, 0F, 0F, 0F); ledRight2 = new ModelRenderer(this, 0, 51); ledRight2.addBox(0F, 0F, 0F, 1, 1, 1); ledRight2.setRotationPoint(6.9F, 15.5F, 4.5F); ledRight2.setTextureSize(64, 64); ledRight2.mirror = true; setRotation(ledRight2, 0F, 0F, 0F); ledRight1 = new ModelRenderer(this, 0, 51); ledRight1.addBox(0F, 0F, 0F, 1, 1, 1); ledRight1.setRotationPoint(6.9F, 15.5F, -5.5F); ledRight1.setTextureSize(64, 64); ledRight1.mirror = true; setRotation(ledRight1, 0F, 0F, 0F); ledLeft1 = new ModelRenderer(this, 0, 51); ledLeft1.addBox(0F, 0F, 0F, 1, 1, 1); ledLeft1.setRotationPoint(-7.9F, 15.5F, 4.5F); ledLeft1.setTextureSize(64, 64); ledLeft1.mirror = true; setRotation(ledLeft1, 0F, 0F, 0F); ledLeft2 = new ModelRenderer(this, 0, 51); ledLeft2.addBox(0F, 0F, 0F, 1, 1, 1); ledLeft2.setRotationPoint(-7.9F, 15.5F, -5.5F); ledLeft2.setTextureSize(64, 64); ledLeft2.mirror = true; setRotation(ledLeft2, 0F, 0F, 0F); leds1 = new ModelRenderer[] {ledBottom1, ledTop1, ledFront1, ledBack1, ledLeft1, ledRight1}; leds2 = new ModelRenderer[] {ledBottom2, ledTop2, ledFront2, ledBack2, ledLeft2, ledRight2}; ports = new ModelRenderer[] {portBottomToggle, portTopToggle, portFrontToggle, portBackToggle, portLeftToggle, portRightToggle}; connectors = new ModelRenderer[] {connectorBottomToggle, connectorTopToggle, connectorFrontToggle, connectorBackToggle, connectorLeftToggle, connectorRightToggle}; } public void render(float size, EnergyCubeTier tier, TextureManager manager, boolean renderMain) { if(renderMain) { frame12.render(size); frame11.render(size); frame10.render(size); frame9.render(size); frame8.render(size); frame7.render(size); frame6.render(size); frame5.render(size); frame4.render(size); frame3.render(size); frame2.render(size); frame1.render(size); corner8.render(size); corner7.render(size); corner6.render(size); corner5.render(size); corner4.render(size); corner3.render(size); corner2.render(size); corner1.render(size); } GlStateManager.pushMatrix(); GlStateManager.scale(1.001F, 1.005F, 1.001F); GlStateManager.translate(0, -0.0061F, 0); manager.bindTexture(RenderEnergyCube.resources.get(tier)); MekanismRenderer.glowOn(); corner8.render(size); corner7.render(size); corner6.render(size); corner5.render(size); corner4.render(size); corner3.render(size); corner2.render(size); corner1.render(size); MekanismRenderer.glowOff(); GlStateManager.popMatrix(); } public void renderSide(float size, EnumFacing side, IOState state, EnergyCubeTier tier, TextureManager renderer) { if(state != IOState.OFF) { connectors[side.ordinal()].render(size); ports[side.ordinal()].render(size); if(state == IOState.OUTPUT) { MekanismRenderer.glowOn(); renderer.bindTexture(RenderEnergyCube.resources.get(tier)); ports[side.ordinal()].render(size); MekanismRenderer.glowOff(); } } renderer.bindTexture(state == IOState.OUTPUT ? OVERLAY_ON : OVERLAY_OFF); if(state == IOState.OUTPUT) { MekanismRenderer.glowOn(); } leds1[side.ordinal()].render(size); leds2[side.ordinal()].render(size); if(state == IOState.OUTPUT) { MekanismRenderer.glowOff(); } } private void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = x; model.rotateAngleY = y; model.rotateAngleZ = z; } public static class ModelEnergyCore extends ModelBase { private ModelRenderer cube; public ModelEnergyCore() { textureWidth = 32; textureHeight = 32; cube = new ModelRenderer(this, 0, 0); cube.addBox(-8, -8, -8, 16, 16, 16); cube.setRotationPoint(0, 0, 0); cube.setTextureSize(32, 32); cube.mirror = true; } public void render(float size) { cube.render(0.0625F); } } }