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