001    package net.minecraft.src;
002    
003    import cpw.mods.fml.common.Side;
004    import cpw.mods.fml.common.asm.SideOnly;
005    import org.lwjgl.opengl.GL11;
006    
007    @SideOnly(Side.CLIENT)
008    public class TileEntitySignRenderer extends TileEntitySpecialRenderer
009    {
010        /** The ModelSign instance used by the TileEntitySignRenderer */
011        private ModelSign modelSign = new ModelSign();
012    
013        public void renderTileEntitySignAt(TileEntitySign par1TileEntitySign, double par2, double par4, double par6, float par8)
014        {
015            Block var9 = par1TileEntitySign.getBlockType();
016            GL11.glPushMatrix();
017            float var10 = 0.6666667F;
018            float var12;
019    
020            if (var9 == Block.signPost)
021            {
022                GL11.glTranslatef((float)par2 + 0.5F, (float)par4 + 0.75F * var10, (float)par6 + 0.5F);
023                float var11 = (float)(par1TileEntitySign.getBlockMetadata() * 360) / 16.0F;
024                GL11.glRotatef(-var11, 0.0F, 1.0F, 0.0F);
025                this.modelSign.signStick.showModel = true;
026            }
027            else
028            {
029                int var16 = par1TileEntitySign.getBlockMetadata();
030                var12 = 0.0F;
031    
032                if (var16 == 2)
033                {
034                    var12 = 180.0F;
035                }
036    
037                if (var16 == 4)
038                {
039                    var12 = 90.0F;
040                }
041    
042                if (var16 == 5)
043                {
044                    var12 = -90.0F;
045                }
046    
047                GL11.glTranslatef((float)par2 + 0.5F, (float)par4 + 0.75F * var10, (float)par6 + 0.5F);
048                GL11.glRotatef(-var12, 0.0F, 1.0F, 0.0F);
049                GL11.glTranslatef(0.0F, -0.3125F, -0.4375F);
050                this.modelSign.signStick.showModel = false;
051            }
052    
053            this.bindTextureByName("/item/sign.png");
054            GL11.glPushMatrix();
055            GL11.glScalef(var10, -var10, -var10);
056            this.modelSign.renderSign();
057            GL11.glPopMatrix();
058            FontRenderer var17 = this.getFontRenderer();
059            var12 = 0.016666668F * var10;
060            GL11.glTranslatef(0.0F, 0.5F * var10, 0.07F * var10);
061            GL11.glScalef(var12, -var12, var12);
062            GL11.glNormal3f(0.0F, 0.0F, -1.0F * var12);
063            GL11.glDepthMask(false);
064            byte var13 = 0;
065    
066            for (int var14 = 0; var14 < par1TileEntitySign.signText.length; ++var14)
067            {
068                String var15 = par1TileEntitySign.signText[var14];
069    
070                if (var14 == par1TileEntitySign.lineBeingEdited)
071                {
072                    var15 = "> " + var15 + " <";
073                    var17.drawString(var15, -var17.getStringWidth(var15) / 2, var14 * 10 - par1TileEntitySign.signText.length * 5, var13);
074                }
075                else
076                {
077                    var17.drawString(var15, -var17.getStringWidth(var15) / 2, var14 * 10 - par1TileEntitySign.signText.length * 5, var13);
078                }
079            }
080    
081            GL11.glDepthMask(true);
082            GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
083            GL11.glPopMatrix();
084        }
085    
086        public void renderTileEntityAt(TileEntity par1TileEntity, double par2, double par4, double par6, float par8)
087        {
088            this.renderTileEntitySignAt((TileEntitySign)par1TileEntity, par2, par4, par6, par8);
089        }
090    }