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 }