001    package net.minecraft.src;
002    
003    import cpw.mods.fml.common.Side;
004    import cpw.mods.fml.common.asm.SideOnly;
005    import org.lwjgl.opengl.GL11;
006    import static net.minecraftforge.client.IItemRenderer.ItemRenderType.EQUIPPED;
007    import static net.minecraftforge.client.IItemRenderer.ItemRendererHelper.BLOCK_3D;
008    import net.minecraftforge.client.IItemRenderer;
009    import net.minecraftforge.client.MinecraftForgeClient;
010    
011    @SideOnly(Side.CLIENT)
012    public class RenderBiped extends RenderLiving
013    {
014        protected ModelBiped modelBipedMain;
015        protected float field_77070_b;
016    
017        public RenderBiped(ModelBiped par1ModelBiped, float par2)
018        {
019            this(par1ModelBiped, par2, 1.0F);
020            this.modelBipedMain = par1ModelBiped;
021        }
022    
023        public RenderBiped(ModelBiped par1ModelBiped, float par2, float par3)
024        {
025            super(par1ModelBiped, par2);
026            this.modelBipedMain = par1ModelBiped;
027            this.field_77070_b = par3;
028        }
029    
030        protected void renderEquippedItems(EntityLiving par1EntityLiving, float par2)
031        {
032            super.renderEquippedItems(par1EntityLiving, par2);
033            ItemStack var3 = par1EntityLiving.getHeldItem();
034    
035            if (var3 != null)
036            {
037                GL11.glPushMatrix();
038                this.modelBipedMain.bipedRightArm.postRender(0.0625F);
039                GL11.glTranslatef(-0.0625F, 0.4375F, 0.0625F);
040                float var4;
041    
042                IItemRenderer customRenderer = MinecraftForgeClient.getItemRenderer(var3, EQUIPPED);
043                boolean is3D = (customRenderer != null && customRenderer.shouldUseRenderHelper(EQUIPPED, var3, BLOCK_3D));
044    
045                if (var3.getItem() instanceof ItemBlock && (is3D || RenderBlocks.renderItemIn3d(Block.blocksList[var3.itemID].getRenderType())))
046                {
047                    var4 = 0.5F;
048                    GL11.glTranslatef(0.0F, 0.1875F, -0.3125F);
049                    var4 *= 0.75F;
050                    GL11.glRotatef(20.0F, 1.0F, 0.0F, 0.0F);
051                    GL11.glRotatef(45.0F, 0.0F, 1.0F, 0.0F);
052                    GL11.glScalef(var4, -var4, var4);
053                }
054                else if (var3.itemID == Item.bow.shiftedIndex)
055                {
056                    var4 = 0.625F;
057                    GL11.glTranslatef(0.0F, 0.125F, 0.3125F);
058                    GL11.glRotatef(-20.0F, 0.0F, 1.0F, 0.0F);
059                    GL11.glScalef(var4, -var4, var4);
060                    GL11.glRotatef(-100.0F, 1.0F, 0.0F, 0.0F);
061                    GL11.glRotatef(45.0F, 0.0F, 1.0F, 0.0F);
062                }
063                else if (Item.itemsList[var3.itemID].isFull3D())
064                {
065                    var4 = 0.625F;
066                    GL11.glTranslatef(0.0F, 0.1875F, 0.0F);
067                    GL11.glScalef(var4, -var4, var4);
068                    GL11.glRotatef(-100.0F, 1.0F, 0.0F, 0.0F);
069                    GL11.glRotatef(45.0F, 0.0F, 1.0F, 0.0F);
070                }
071                else
072                {
073                    var4 = 0.375F;
074                    GL11.glTranslatef(0.25F, 0.1875F, -0.1875F);
075                    GL11.glScalef(var4, var4, var4);
076                    GL11.glRotatef(60.0F, 0.0F, 0.0F, 1.0F);
077                    GL11.glRotatef(-90.0F, 1.0F, 0.0F, 0.0F);
078                    GL11.glRotatef(20.0F, 0.0F, 0.0F, 1.0F);
079                }
080    
081                this.renderManager.itemRenderer.renderItem(par1EntityLiving, var3, 0);
082    
083                if (var3.getItem().requiresMultipleRenderPasses())
084                {
085                    for (int x = 1; x < var3.getItem().getRenderPasses(var3.getItemDamage()); x++)
086                    {
087                        this.renderManager.itemRenderer.renderItem(par1EntityLiving, var3, x);
088                    }
089                }
090    
091                GL11.glPopMatrix();
092            }
093        }
094    }