package shedar.mods.ic2.nuclearcontrol.renderers; import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.IBlockAccess; import org.lwjgl.opengl.GL11; import shedar.mods.ic2.nuclearcontrol.IC2NuclearControl; import shedar.mods.ic2.nuclearcontrol.IRotation; import shedar.mods.ic2.nuclearcontrol.blocks.BlockNuclearControlMain; import shedar.mods.ic2.nuclearcontrol.renderers.model.ModelInfoPanel; import shedar.mods.ic2.nuclearcontrol.tileentities.TileEntityAdvancedInfoPanel; import shedar.mods.ic2.nuclearcontrol.tileentities.TileEntityAdvancedInfoPanelExtender; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class MainBlockRenderer implements ISimpleBlockRenderingHandler { private int modelId; public MainBlockRenderer(int modelId) { this.modelId = modelId; } @Override public void renderInventoryBlock(Block block, int metadata, int model, RenderBlocks renderer) { if (model == modelId) { float[] size = BlockNuclearControlMain .getBlockBounds(metadata); block.setBlockBounds(size[0], size[1], size[2], size[3], size[4], size[5]); renderer.setRenderBoundsFromBlock(block); Tessellator tesselator = Tessellator.instance; GL11.glTranslatef(-0.5F, -0.5F, -0.5F); tesselator.startDrawingQuads(); tesselator.setNormal(0.0F, -1.0F, 0.0F); renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, block.getIcon(0, metadata)); tesselator.draw(); tesselator.startDrawingQuads(); tesselator.setNormal(0.0F, 1.0F, 0.0F); renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, block.getIcon(1, metadata)); tesselator.draw(); tesselator.startDrawingQuads(); tesselator.setNormal(0.0F, 0.0F, -1.0F); renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, block.getIcon(2, metadata)); tesselator.draw(); tesselator.startDrawingQuads(); tesselator.setNormal(0.0F, 0.0F, 1.0F); renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, block.getIcon(3, metadata)); tesselator.draw(); tesselator.startDrawingQuads(); tesselator.setNormal(-1.0F, 0.0F, 0.0F); renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, block.getIcon(4, metadata)); tesselator.draw(); tesselator.startDrawingQuads(); tesselator.setNormal(1.0F, 0.0F, 0.0F); renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, block.getIcon(5, metadata)); tesselator.draw(); GL11.glTranslatef(0.5F, 0.5F, 0.5F); } } @Override public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int model, RenderBlocks renderer) { if (model == modelId) { TileEntity tileEntity = world.getTileEntity(x, y, z); if (tileEntity instanceof IRotation) { switch (((IRotation) tileEntity).getFacing()) { case 0: renderer.uvRotateBottom = ((IRotation) tileEntity) .getRotation(); break; case 1: renderer.uvRotateTop = ((IRotation) tileEntity) .getRotation(); break; case 2: renderer.uvRotateEast = ((IRotation) tileEntity) .getRotation(); break; case 3: renderer.uvRotateWest = ((IRotation) tileEntity) .getRotation(); break; case 4: renderer.uvRotateNorth = ((IRotation) tileEntity) .getRotation(); break; case 5: renderer.uvRotateSouth = ((IRotation) tileEntity) .getRotation(); break; } } if (tileEntity instanceof TileEntityAdvancedInfoPanel) { TileEntityAdvancedInfoPanel advancedCore = (TileEntityAdvancedInfoPanel) tileEntity; if (advancedCore.getScreen() != null) new ModelInfoPanel().renderScreen(block, advancedCore, x, y, z, renderer); else renderer.renderStandardBlock(block, x, y, z); } else if (tileEntity instanceof TileEntityAdvancedInfoPanelExtender) { TileEntityAdvancedInfoPanelExtender advancedExtender = (TileEntityAdvancedInfoPanelExtender) tileEntity; if (advancedExtender.getScreen() == null || advancedExtender.getScreen().getCore( advancedExtender.getWorldObj()) == null) renderer.renderStandardBlock(block, x, y, z); } else { renderer.renderStandardBlock(block, x, y, z); } renderer.uvRotateBottom = 0; renderer.uvRotateEast = 0; renderer.uvRotateNorth = 0; renderer.uvRotateSouth = 0; renderer.uvRotateTop = 0; renderer.uvRotateWest = 0; return true; } return false; } @Override public boolean shouldRender3DInInventory(int i) { return true; } @Override public int getRenderId() { return IC2NuclearControl.instance.modelId; } }