package sourcecoded.quantum.client.renderer.block; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.block.Block; import net.minecraft.block.ITileEntityProvider; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.IBlockAccess; import sourcecoded.quantum.client.renderer.tile.TESRStaticHandler; import sourcecoded.quantum.tile.TileQuantum; import static org.lwjgl.opengl.GL11.*; public class AdvancedTileProxy implements ISimpleBlockRenderingHandler{ public static final int renderID = RenderingRegistry.getNextAvailableRenderId(); TileEntity te; @Override public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderBlocks) { if (block instanceof ITileEntityProvider) { ITileEntityProvider prov = (ITileEntityProvider) block; te = prov.createNewTileEntity(null, metadata); te.blockMetadata = metadata; } else return; if (block instanceof IBlockRenderHook) { IBlockRenderHook hook = (IBlockRenderHook) block; hook.callbackInventory(te); } glRotatef(90F, 0F, 1F, 0F); glTranslatef(-0.5F, -0.5F, -0.5F); float scale = 1F; glScalef(scale, scale, scale); glAlphaFunc(GL_GREATER, 0.1F); TESRStaticHandler renderer = (TESRStaticHandler) TileEntityRendererDispatcher.instance.mapSpecialRenderers.get(te.getClass()); renderer.renderTile(te, 0.0, 0.0, 0.0, 0, true, renderBlocks); renderer.renderTile(te, 0.0, 0.0, 0.0, 0, false, renderBlocks); } @Override public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderBlocks) { if (block instanceof ITileEntityProvider) { te = world.getTileEntity(x, y, z); } else return false; Tessellator.instance.draw(); TESRStaticHandler renderer = (TESRStaticHandler) TileEntityRendererDispatcher.instance.mapSpecialRenderers.get(te.getClass()); renderer.renderTile(te, x, y, z, 0, true, renderBlocks); Tessellator.instance.startDrawingQuads(); return true; } @Override public boolean shouldRender3DInInventory(int modelId) { return true; } @Override public int getRenderId() { return renderID; } }