001package net.minecraft.client.renderer.tileentity;
002
003import cpw.mods.fml.relauncher.Side;
004import cpw.mods.fml.relauncher.SideOnly;
005import net.minecraft.block.Block;
006import net.minecraft.client.gui.FontRenderer;
007import net.minecraft.client.model.ModelSign;
008import net.minecraft.tileentity.TileEntity;
009import net.minecraft.tileentity.TileEntitySign;
010import org.lwjgl.opengl.GL11;
011
012@SideOnly(Side.CLIENT)
013public 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}