package emasher.client; import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import emasher.blocks.BlockFluidPipe; import emasher.tileentities.TilePipeBase; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; @SideOnly( Side.CLIENT ) public class PipeRenderer extends TileEntitySpecialRenderer { public static final PipeRenderer instance = new PipeRenderer(); private final Tessellator tessellator = Tessellator.instance; private final RenderBlocks blockRender = new RenderBlocks(); @Override public void renderTileEntityAt( TileEntity t, double x, double y, double z, float counter ) { TilePipeBase p = ( TilePipeBase ) t; BlockFluidPipe bfp = ( BlockFluidPipe ) emasher.blocks.Blocks.blockFluidPipe(); if( p.colour == -1 ) return; FMLClientHandler.instance().getClient().entityRenderer.disableLightmap( 1 ); RenderHelper.disableStandardItemLighting(); for( int side = 0; side < 6; side++ ) { GL11.glPushMatrix(); GL11.glPushAttrib( GL11.GL_ENABLE_BIT ); GL11.glEnable( GL11.GL_CULL_FACE ); GL11.glDisable( GL11.GL_LIGHTING ); GL11.glEnable( GL11.GL_BLEND ); GL11.glBlendFunc( GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA ); GL11.glTranslatef( ( float ) x, ( float ) y, ( float ) z ); switch(side) { case 0: GL11.glRotatef( 270, 1, 0, 0 ); GL11.glRotatef( 180, 0, 0, 1 ); GL11.glTranslatef( -1.0F, 0.0F, -0.001F ); break; case 1: GL11.glRotatef( 90, 1, 0, 0 ); GL11.glTranslatef( 0.0F, 0.0F, -1.001F ); break; case 2: GL11.glRotatef( 180, 0, 0, 1 ); GL11.glTranslatef( -1.0F, -1.0F, -0.001F ); break; case 3: GL11.glRotatef( 180, 0, 0, 1 ); GL11.glRotatef( 180, 0, 1, 0 ); GL11.glTranslatef( 0.0F, -1.0F, -1.001F ); break; case 4: GL11.glRotatef( 180, 0, 0, 1 ); GL11.glRotatef( 270, 0, 1, 0 ); GL11.glTranslatef( 0.0F, -1.0F, -0.001F ); break; case 5: GL11.glRotatef( 180, 0, 0, 1 ); GL11.glRotatef( 90, 0, 1, 0 ); GL11.glTranslatef( -1.0F, -1.0F, -1.001F ); break; } Minecraft.getMinecraft().renderEngine.bindTexture( new ResourceLocation( "textures/atlas/blocks.png" ) ); IIcon icon = bfp.getColIcon( p.colour ); tessellator.startDrawingQuads(); tessellator.addVertexWithUV( 0, 1, 0, icon.getMinU(), icon.getMaxV() ); tessellator.addVertexWithUV( 1, 1, 0, icon.getMaxU(), icon.getMaxV() ); tessellator.addVertexWithUV( 1, 0, 0, icon.getMaxU(), icon.getMinV() ); tessellator.addVertexWithUV( 0, 0, 0, icon.getMinU(), icon.getMinV() ); tessellator.draw(); FMLClientHandler.instance().getClient().entityRenderer.enableLightmap( 1 ); RenderHelper.enableStandardItemLighting(); GL11.glDisable( GL11.GL_CULL_FACE ); GL11.glEnable( GL11.GL_LIGHTING ); GL11.glPopAttrib(); GL11.glPopMatrix(); } FMLClientHandler.instance().getClient().entityRenderer.enableLightmap( ( double ) counter ); RenderHelper.enableStandardItemLighting(); } }