/// <summary>
        /// Used to render a player's name above their head
        /// </summary>
        protected virtual void RenderName(EntityPlayer par1EntityPlayer, double par2, double par4, double par6)
        {
            if (Minecraft.IsGuiEnabled() && par1EntityPlayer != RenderManager.LivingPlayer)
            {
                float f  = 1.6F;
                float f1 = 0.01666667F * f;
                float f2 = par1EntityPlayer.GetDistanceToEntity(RenderManager.LivingPlayer);
                float f3 = par1EntityPlayer.IsSneaking() ? 32F : 64F;

                if (f2 < f3)
                {
                    string s = par1EntityPlayer.Username;

                    if (!par1EntityPlayer.IsSneaking())
                    {
                        if (par1EntityPlayer.IsPlayerSleeping())
                        {
                            RenderLivingLabel(par1EntityPlayer, s, par2, par4 - 1.5D, par6, 64);
                        }
                        else
                        {
                            RenderLivingLabel(par1EntityPlayer, s, par2, par4, par6, 64);
                        }
                    }
                    else
                    {
                        FontRenderer fontrenderer = GetFontRendererFromRenderManager();
                        //GL.PushMatrix();
                        //GL.Translate((float)par2 + 0.0F, (float)par4 + 2.3F, (float)par6);
                        //GL.Normal3(0.0F, 1.0F, 0.0F);
                        //GL.Rotate(-RenderManager.PlayerViewY, 0.0F, 1.0F, 0.0F);
                        //GL.Rotate(RenderManager.PlayerViewX, 1.0F, 0.0F, 0.0F);
                        //GL.Scale(-f1, -f1, f1);
                        //GL.Disable(EnableCap.Lighting);
                        //GL.Translate(0.0F, 0.25F / f1, 0.0F);
                        //GL.DepthMask(false);
                        //GL.Enable(EnableCap.Blend);
                        //GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha);
                        Tessellator tessellator = Tessellator.Instance;
                        //GL.Disable(EnableCap.Texture2D);
                        tessellator.StartDrawingQuads();
                        int i = fontrenderer.GetStringWidth(s) / 2;
                        tessellator.SetColorRGBA_F(0.0F, 0.0F, 0.0F, 0.25F);
                        tessellator.AddVertex(-i - 1, -1D, 0.0F);
                        tessellator.AddVertex(-i - 1, 8D, 0.0F);
                        tessellator.AddVertex(i + 1, 8D, 0.0F);
                        tessellator.AddVertex(i + 1, -1D, 0.0F);
                        tessellator.Draw();
                        //GL.Enable(EnableCap.Texture2D);
                        //GL.DepthMask(true);
                        fontrenderer.DrawString(s, -fontrenderer.GetStringWidth(s) / 2, 0, 0x20ffffff);
                        //GL.Enable(EnableCap.Lighting);
                        //GL.Disable(EnableCap.Blend);
                        //GL.Color4(1.0F, 1.0F, 1.0F, 1.0F);
                        //GL.PopMatrix();
                    }
                }
            }
        }
        public virtual void DoRenderPlayer(EntityPlayer par1EntityPlayer, double par2, double par4, double par6, float par8, float par9)
        {
            ItemStack itemstack = par1EntityPlayer.Inventory.GetCurrentItem();

            ModelArmorChestplate.HeldItemRight = ModelArmor.HeldItemRight = ModelBipedMain.HeldItemRight = itemstack == null ? 0 : 1;

            if (itemstack != null && par1EntityPlayer.GetItemInUseCount() > 0)
            {
                EnumAction enumaction = itemstack.GetItemUseAction();

                if (enumaction == EnumAction.Block)
                {
                    ModelArmorChestplate.HeldItemRight = ModelArmor.HeldItemRight = ModelBipedMain.HeldItemRight = 3;
                }
                else if (enumaction == EnumAction.Bow)
                {
                    ModelArmorChestplate.AimedBow = ModelArmor.AimedBow = ModelBipedMain.AimedBow = true;
                }
            }

            ModelArmorChestplate.IsSneak = ModelArmor.IsSneak = ModelBipedMain.IsSneak = par1EntityPlayer.IsSneaking();
            double d = par4 - (double)par1EntityPlayer.YOffset;

            if (par1EntityPlayer.IsSneaking() && !(par1EntityPlayer is EntityPlayerSP))
            {
                d -= 0.125D;
            }

            base.DoRenderLiving(par1EntityPlayer, par2, d, par6, par8, par9);
            ModelArmorChestplate.AimedBow      = ModelArmor.AimedBow = ModelBipedMain.AimedBow = false;
            ModelArmorChestplate.IsSneak       = ModelArmor.IsSneak = ModelBipedMain.IsSneak = false;
            ModelArmorChestplate.HeldItemRight = ModelArmor.HeldItemRight = ModelBipedMain.HeldItemRight = 0;
        }
        /// <summary>
        /// Method for adding special render rules
        /// </summary>
        protected virtual void RenderSpecials(EntityPlayer par1EntityPlayer, float par2)
        {
            base.RenderEquippedItems(par1EntityPlayer, par2);
            ItemStack itemstack = par1EntityPlayer.Inventory.ArmorItemInSlot(3);

            if (itemstack != null && itemstack.GetItem().ShiftedIndex < 256)
            {
                //GL.PushMatrix();
                ModelBipedMain.BipedHead.PostRender(0.0625F);

                if (RenderBlocks.RenderItemIn3d(Block.BlocksList[itemstack.ItemID].GetRenderType()))
                {
                    float f = 0.625F;
                    //GL.Translate(0.0F, -0.25F, 0.0F);
                    //GL.Rotate(180F, 0.0F, 1.0F, 0.0F);
                    //GL.Scale(f, -f, f);
                }

                RenderManager.ItemRenderer.RenderItem(par1EntityPlayer, itemstack, 0);
                //GL.PopMatrix();
            }

            if (par1EntityPlayer.Username.Equals("deadmau5") && LoadDownloadableImageTexture(par1EntityPlayer.SkinUrl, null))
            {
                for (int i = 0; i < 2; i++)
                {
                    float f1 = (par1EntityPlayer.PrevRotationYaw + (par1EntityPlayer.RotationYaw - par1EntityPlayer.PrevRotationYaw) * par2) - (par1EntityPlayer.PrevRenderYawOffset + (par1EntityPlayer.RenderYawOffset - par1EntityPlayer.PrevRenderYawOffset) * par2);
                    float f2 = par1EntityPlayer.PrevRotationPitch + (par1EntityPlayer.RotationPitch - par1EntityPlayer.PrevRotationPitch) * par2;
                    //GL.PushMatrix();
                    //GL.Rotate(f1, 0.0F, 1.0F, 0.0F);
                    //GL.Rotate(f2, 1.0F, 0.0F, 0.0F);
                    //GL.Translate(0.375F * (float)(i * 2 - 1), 0.0F, 0.0F);
                    //GL.Translate(0.0F, -0.375F, 0.0F);
                    //GL.Rotate(-f2, 1.0F, 0.0F, 0.0F);
                    //GL.Rotate(-f1, 0.0F, 1.0F, 0.0F);
                    float f7 = 1.333333F;
                    //GL.Scale(f7, f7, f7);
                    ModelBipedMain.RenderEars(0.0625F);
                    //GL.PopMatrix();
                }
            }

            if (LoadDownloadableImageTexture(par1EntityPlayer.PlayerCloakUrl, null))
            {
                //GL.PushMatrix();
                //GL.Translate(0.0F, 0.0F, 0.125F);
                double d   = (par1EntityPlayer.Field_20066_r + (par1EntityPlayer.Field_20063_u - par1EntityPlayer.Field_20066_r) * (double)par2) - (par1EntityPlayer.PrevPosX + (par1EntityPlayer.PosX - par1EntityPlayer.PrevPosX) * (double)par2);
                double d1  = (par1EntityPlayer.Field_20065_s + (par1EntityPlayer.Field_20062_v - par1EntityPlayer.Field_20065_s) * (double)par2) - (par1EntityPlayer.PrevPosY + (par1EntityPlayer.PosY - par1EntityPlayer.PrevPosY) * (double)par2);
                double d2  = (par1EntityPlayer.Field_20064_t + (par1EntityPlayer.Field_20061_w - par1EntityPlayer.Field_20064_t) * (double)par2) - (par1EntityPlayer.PrevPosZ + (par1EntityPlayer.PosZ - par1EntityPlayer.PrevPosZ) * (double)par2);
                float  f10 = par1EntityPlayer.PrevRenderYawOffset + (par1EntityPlayer.RenderYawOffset - par1EntityPlayer.PrevRenderYawOffset) * par2;
                double d3  = MathHelper2.Sin((f10 * (float)Math.PI) / 180F);
                double d4  = -MathHelper2.Cos((f10 * (float)Math.PI) / 180F);
                float  f12 = (float)d1 * 10F;

                if (f12 < -6F)
                {
                    f12 = -6F;
                }

                if (f12 > 32F)
                {
                    f12 = 32F;
                }

                float f13 = (float)(d * d3 + d2 * d4) * 100F;
                float f14 = (float)(d * d4 - d2 * d3) * 100F;

                if (f13 < 0.0F)
                {
                    f13 = 0.0F;
                }

                float f15 = par1EntityPlayer.PrevCameraYaw + (par1EntityPlayer.CameraYaw - par1EntityPlayer.PrevCameraYaw) * par2;
                f12 += MathHelper2.Sin((par1EntityPlayer.PrevDistanceWalkedModified + (par1EntityPlayer.DistanceWalkedModified - par1EntityPlayer.PrevDistanceWalkedModified) * par2) * 6F) * 32F * f15;

                if (par1EntityPlayer.IsSneaking())
                {
                    f12 += 25F;
                }

                //GL.Rotate(6F + f13 / 2.0F + f12, 1.0F, 0.0F, 0.0F);
                //GL.Rotate(f14 / 2.0F, 0.0F, 0.0F, 1.0F);
                //GL.Rotate(-f14 / 2.0F, 0.0F, 1.0F, 0.0F);
                //GL.Rotate(180F, 0.0F, 1.0F, 0.0F);
                ModelBipedMain.RenderCloak(0.0625F);
                //GL.PopMatrix();
            }

            ItemStack itemstack1 = par1EntityPlayer.Inventory.GetCurrentItem();

            if (itemstack1 != null)
            {
                //GL.PushMatrix();
                ModelBipedMain.BipedRightArm.PostRender(0.0625F);
                //GL.Translate(-0.0625F, 0.4375F, 0.0625F);

                if (par1EntityPlayer.FishEntity != null)
                {
                    itemstack1 = new ItemStack(Item.Stick);
                }

                EnumAction enumaction = EnumAction.None;

                if (par1EntityPlayer.GetItemInUseCount() > 0)
                {
                    enumaction = itemstack1.GetItemUseAction();
                }

                if (itemstack1.ItemID < 256 && RenderBlocks.RenderItemIn3d(Block.BlocksList[itemstack1.ItemID].GetRenderType()))
                {
                    float f3 = 0.5F;
                    //GL.Translate(0.0F, 0.1875F, -0.3125F);
                    f3 *= 0.75F;
                    //GL.Rotate(20F, 1.0F, 0.0F, 0.0F);
                    //GL.Rotate(45F, 0.0F, 1.0F, 0.0F);
                    //GL.Scale(f3, -f3, f3);
                }
                else if (itemstack1.ItemID == Item.Bow.ShiftedIndex)
                {
                    float f4 = 0.625F;
                    //GL.Translate(0.0F, 0.125F, 0.3125F);
                    //GL.Rotate(-20F, 0.0F, 1.0F, 0.0F);
                    //GL.Scale(f4, -f4, f4);
                    //GL.Rotate(-100F, 1.0F, 0.0F, 0.0F);
                    //GL.Rotate(45F, 0.0F, 1.0F, 0.0F);
                }
                else if (Item.ItemsList[itemstack1.ItemID].IsFull3D())
                {
                    float f5 = 0.625F;

                    if (Item.ItemsList[itemstack1.ItemID].ShouldRotateAroundWhenRendering())
                    {
                        //GL.Rotate(180F, 0.0F, 0.0F, 1.0F);
                        //GL.Translate(0.0F, -0.125F, 0.0F);
                    }

                    if (par1EntityPlayer.GetItemInUseCount() > 0 && enumaction == EnumAction.Block)
                    {
                        //GL.Translate(0.05F, 0.0F, -0.1F);
                        //GL.Rotate(-50F, 0.0F, 1.0F, 0.0F);
                        //GL.Rotate(-10F, 1.0F, 0.0F, 0.0F);
                        //GL.Rotate(-60F, 0.0F, 0.0F, 1.0F);
                    }

                    //GL.Translate(0.0F, 0.1875F, 0.0F);
                    //GL.Scale(f5, -f5, f5);
                    //GL.Rotate(-100F, 1.0F, 0.0F, 0.0F);
                    //GL.Rotate(45F, 0.0F, 1.0F, 0.0F);
                }
                else
                {
                    float f6 = 0.375F;
                    //GL.Translate(0.25F, 0.1875F, -0.1875F);
                    //GL.Scale(f6, f6, f6);
                    //GL.Rotate(60F, 0.0F, 0.0F, 1.0F);
                    //GL.Rotate(-90F, 1.0F, 0.0F, 0.0F);
                    //GL.Rotate(20F, 0.0F, 0.0F, 1.0F);
                }

                if (itemstack1.GetItem().Func_46058_c())
                {
                    for (int j = 0; j <= 1; j++)
                    {
                        int   k   = itemstack1.GetItem().GetColorFromDamage(itemstack1.GetItemDamage(), j);
                        float f8  = (float)(k >> 16 & 0xff) / 255F;
                        float f9  = (float)(k >> 8 & 0xff) / 255F;
                        float f11 = (float)(k & 0xff) / 255F;
                        //GL.Color4(f8, f9, f11, 1.0F);
                        RenderManager.ItemRenderer.RenderItem(par1EntityPlayer, itemstack1, j);
                    }
                }
                else
                {
                    RenderManager.ItemRenderer.RenderItem(par1EntityPlayer, itemstack1, 0);
                }

                //GL.PopMatrix();
            }
        }