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