001    package net.minecraft.src;
002    
003    import net.minecraftforge.client.IItemRenderer;
004    import static net.minecraftforge.client.IItemRenderer.ItemRenderType.*;
005    import static net.minecraftforge.client.IItemRenderer.ItemRendererHelper.*;
006    import net.minecraftforge.client.MinecraftForgeClient;
007    
008    import cpw.mods.fml.common.Side;
009    import cpw.mods.fml.common.asm.SideOnly;
010    import org.lwjgl.opengl.GL11;
011    
012    @SideOnly(Side.CLIENT)
013    public class RenderSnowMan extends RenderLiving
014    {
015        /** A reference to the Snowman model in RenderSnowMan. */
016        private ModelSnowMan snowmanModel;
017    
018        public RenderSnowMan()
019        {
020            super(new ModelSnowMan(), 0.5F);
021            this.snowmanModel = (ModelSnowMan)super.mainModel;
022            this.setRenderPassModel(this.snowmanModel);
023        }
024    
025        /**
026         * Renders this snowman's pumpkin.
027         */
028        protected void renderSnowmanPumpkin(EntitySnowman par1EntitySnowman, float par2)
029        {
030            super.renderEquippedItems(par1EntitySnowman, par2);
031            ItemStack var3 = new ItemStack(Block.pumpkin, 1);
032    
033            if (var3 != null && var3.getItem() instanceof ItemBlock)
034            {
035                GL11.glPushMatrix();
036                this.snowmanModel.head.postRender(0.0625F);
037    
038                IItemRenderer customRenderer = MinecraftForgeClient.getItemRenderer(var3, EQUIPPED);
039                boolean is3D = (customRenderer != null && customRenderer.shouldUseRenderHelper(EQUIPPED, var3, BLOCK_3D));
040    
041                if (is3D || RenderBlocks.renderItemIn3d(Block.blocksList[var3.itemID].getRenderType()))
042                {
043                    float var4 = 0.625F;
044                    GL11.glTranslatef(0.0F, -0.34375F, 0.0F);
045                    GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F);
046                    GL11.glScalef(var4, -var4, var4);
047                }
048    
049                this.renderManager.itemRenderer.renderItem(par1EntitySnowman, var3, 0);
050                GL11.glPopMatrix();
051            }
052        }
053    
054        protected void renderEquippedItems(EntityLiving par1EntityLiving, float par2)
055        {
056            this.renderSnowmanPumpkin((EntitySnowman)par1EntityLiving, par2);
057        }
058    }