package net.minecraft.client.renderer.entity; import com.mojang.authlib.GameProfile; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import java.util.UUID; import net.minecraft.block.Block; import net.minecraft.client.entity.AbstractClientPlayer; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.tileentity.TileEntitySkullRenderer; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.item.EnumAction; import net.minecraft.item.Item; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTUtil; import net.minecraft.scoreboard.Score; import net.minecraft.scoreboard.ScoreObjective; import net.minecraft.scoreboard.Scoreboard; import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StringUtils; import org.lwjgl.opengl.GL11; @SideOnly(Side.CLIENT) public class RenderPlayer extends RendererLivingEntity { private static final ResourceLocation steveTextures = new ResourceLocation("textures/entity/steve.png"); public ModelBiped modelBipedMain; public ModelBiped modelArmorChestplate; public ModelBiped modelArmor; private static final String __OBFID = "CL_00001020"; public RenderPlayer() { super(new ModelBiped(0.0F), 0.5F); this.modelBipedMain = (ModelBiped)this.mainModel; this.modelArmorChestplate = new ModelBiped(1.0F); this.modelArmor = new ModelBiped(0.5F); } /** * Queries whether should render the specified pass or not. */ protected int shouldRenderPass(AbstractClientPlayer p_77032_1_, int p_77032_2_, float p_77032_3_) { ItemStack itemstack = p_77032_1_.inventory.armorItemInSlot(3 - p_77032_2_); net.minecraftforge.client.event.RenderPlayerEvent.SetArmorModel event = new net.minecraftforge.client.event.RenderPlayerEvent.SetArmorModel(p_77032_1_, this, 3 - p_77032_2_, p_77032_3_, itemstack); net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event); if (event.result != -1) { return event.result; } if (itemstack != null) { Item item = itemstack.getItem(); if (item instanceof ItemArmor) { ItemArmor itemarmor = (ItemArmor)item; this.bindTexture(RenderBiped.getArmorResource(p_77032_1_, itemstack, p_77032_2_, null)); ModelBiped modelbiped = p_77032_2_ == 2 ? this.modelArmor : this.modelArmorChestplate; modelbiped.bipedHead.showModel = p_77032_2_ == 0; modelbiped.bipedHeadwear.showModel = p_77032_2_ == 0; modelbiped.bipedBody.showModel = p_77032_2_ == 1 || p_77032_2_ == 2; modelbiped.bipedRightArm.showModel = p_77032_2_ == 1; modelbiped.bipedLeftArm.showModel = p_77032_2_ == 1; modelbiped.bipedRightLeg.showModel = p_77032_2_ == 2 || p_77032_2_ == 3; modelbiped.bipedLeftLeg.showModel = p_77032_2_ == 2 || p_77032_2_ == 3; modelbiped = net.minecraftforge.client.ForgeHooksClient.getArmorModel(p_77032_1_, itemstack, p_77032_2_, modelbiped); this.setRenderPassModel(modelbiped); modelbiped.swingProgress = this.mainModel.swingProgress; modelbiped.isRiding = this.mainModel.isRiding; modelbiped.isChild = this.mainModel.isChild; //Move outside if to allow for more then just CLOTH int j = itemarmor.getColor(itemstack); if (j != -1) { float f1 = (float)(j >> 16 & 255) / 255.0F; float f2 = (float)(j >> 8 & 255) / 255.0F; float f3 = (float)(j & 255) / 255.0F; GL11.glColor3f(f1, f2, f3); if (itemstack.isItemEnchanted()) { return 31; } return 16; } GL11.glColor3f(1.0F, 1.0F, 1.0F); if (itemstack.isItemEnchanted()) { return 15; } return 1; } } return -1; } protected void func_82408_c(AbstractClientPlayer p_82408_1_, int p_82408_2_, float p_82408_3_) { ItemStack itemstack = p_82408_1_.inventory.armorItemInSlot(3 - p_82408_2_); if (itemstack != null) { Item item = itemstack.getItem(); if (item instanceof ItemArmor) { this.bindTexture(RenderBiped.getArmorResource(p_82408_1_, itemstack, p_82408_2_, "overlay")); GL11.glColor3f(1.0F, 1.0F, 1.0F); } } } /** * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic * (Render<T extends Entity) and this method has signature public void func_76986_a(T entity, double d, double d1, * double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that. */ public void doRender(AbstractClientPlayer p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.RenderPlayerEvent.Pre(p_76986_1_, this, p_76986_9_))) return; GL11.glColor3f(1.0F, 1.0F, 1.0F); ItemStack itemstack = p_76986_1_.inventory.getCurrentItem(); this.modelArmorChestplate.heldItemRight = this.modelArmor.heldItemRight = this.modelBipedMain.heldItemRight = itemstack != null ? 1 : 0; if (itemstack != null && p_76986_1_.getItemInUseCount() > 0) { EnumAction enumaction = itemstack.getItemUseAction(); if (enumaction == EnumAction.block) { this.modelArmorChestplate.heldItemRight = this.modelArmor.heldItemRight = this.modelBipedMain.heldItemRight = 3; } else if (enumaction == EnumAction.bow) { this.modelArmorChestplate.aimedBow = this.modelArmor.aimedBow = this.modelBipedMain.aimedBow = true; } } this.modelArmorChestplate.isSneak = this.modelArmor.isSneak = this.modelBipedMain.isSneak = p_76986_1_.isSneaking(); double d3 = p_76986_4_ - (double)p_76986_1_.yOffset; if (p_76986_1_.isSneaking() && !(p_76986_1_ instanceof EntityPlayerSP)) { d3 -= 0.125D; } super.doRender((EntityLivingBase)p_76986_1_, p_76986_2_, d3, p_76986_6_, p_76986_8_, p_76986_9_); this.modelArmorChestplate.aimedBow = this.modelArmor.aimedBow = this.modelBipedMain.aimedBow = false; this.modelArmorChestplate.isSneak = this.modelArmor.isSneak = this.modelBipedMain.isSneak = false; this.modelArmorChestplate.heldItemRight = this.modelArmor.heldItemRight = this.modelBipedMain.heldItemRight = 0; net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.RenderPlayerEvent.Post(p_76986_1_, this, p_76986_9_)); } /** * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture. */ protected ResourceLocation getEntityTexture(AbstractClientPlayer p_110775_1_) { return p_110775_1_.getLocationSkin(); } protected void renderEquippedItems(AbstractClientPlayer p_77029_1_, float p_77029_2_) { net.minecraftforge.client.event.RenderPlayerEvent.Specials.Pre event = new net.minecraftforge.client.event.RenderPlayerEvent.Specials.Pre(p_77029_1_, this, p_77029_2_); if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event)) return; GL11.glColor3f(1.0F, 1.0F, 1.0F); super.renderEquippedItems(p_77029_1_, p_77029_2_); super.renderArrowsStuckInEntity(p_77029_1_, p_77029_2_); ItemStack itemstack = p_77029_1_.inventory.armorItemInSlot(3); if (itemstack != null && event.renderHelmet) { GL11.glPushMatrix(); this.modelBipedMain.bipedHead.postRender(0.0625F); float f1; if (itemstack.getItem() instanceof ItemBlock) { net.minecraftforge.client.IItemRenderer customRenderer = net.minecraftforge.client.MinecraftForgeClient.getItemRenderer(itemstack, net.minecraftforge.client.IItemRenderer.ItemRenderType.EQUIPPED); boolean is3D = (customRenderer != null && customRenderer.shouldUseRenderHelper(net.minecraftforge.client.IItemRenderer.ItemRenderType.EQUIPPED, itemstack, net.minecraftforge.client.IItemRenderer.ItemRendererHelper.BLOCK_3D)); if (is3D || RenderBlocks.renderItemIn3d(Block.getBlockFromItem(itemstack.getItem()).getRenderType())) { f1 = 0.625F; GL11.glTranslatef(0.0F, -0.25F, 0.0F); GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); GL11.glScalef(f1, -f1, -f1); } this.renderManager.itemRenderer.renderItem(p_77029_1_, itemstack, 0); } else if (itemstack.getItem() == Items.skull) { f1 = 1.0625F; GL11.glScalef(f1, -f1, -f1); GameProfile gameprofile = null; if (itemstack.hasTagCompound()) { NBTTagCompound nbttagcompound = itemstack.getTagCompound(); if (nbttagcompound.hasKey("SkullOwner", 10)) { gameprofile = NBTUtil.readGameProfileFromNBT(nbttagcompound.getCompoundTag("SkullOwner")); } else if (nbttagcompound.hasKey("SkullOwner", 8) && !StringUtils.isNullOrEmpty(nbttagcompound.getString("SkullOwner"))) { gameprofile = new GameProfile((UUID)null, nbttagcompound.getString("SkullOwner")); } } TileEntitySkullRenderer.field_147536_b.func_152674_a(-0.5F, 0.0F, -0.5F, 1, 180.0F, itemstack.getMetadata(), gameprofile); } GL11.glPopMatrix(); } float f2; if (p_77029_1_.getCommandSenderName().equals("deadmau5") && p_77029_1_.hasSkin()) { this.bindTexture(p_77029_1_.getLocationSkin()); for (int j = 0; j < 2; ++j) { float f9 = p_77029_1_.prevRotationYaw + (p_77029_1_.rotationYaw - p_77029_1_.prevRotationYaw) * p_77029_2_ - (p_77029_1_.prevRenderYawOffset + (p_77029_1_.renderYawOffset - p_77029_1_.prevRenderYawOffset) * p_77029_2_); float f10 = p_77029_1_.prevRotationPitch + (p_77029_1_.rotationPitch - p_77029_1_.prevRotationPitch) * p_77029_2_; GL11.glPushMatrix(); GL11.glRotatef(f9, 0.0F, 1.0F, 0.0F); GL11.glRotatef(f10, 1.0F, 0.0F, 0.0F); GL11.glTranslatef(0.375F * (float)(j * 2 - 1), 0.0F, 0.0F); GL11.glTranslatef(0.0F, -0.375F, 0.0F); GL11.glRotatef(-f10, 1.0F, 0.0F, 0.0F); GL11.glRotatef(-f9, 0.0F, 1.0F, 0.0F); f2 = 1.3333334F; GL11.glScalef(f2, f2, f2); this.modelBipedMain.renderEars(0.0625F); GL11.glPopMatrix(); } } boolean flag = p_77029_1_.hasCape(); flag = event.renderCape && flag; float f4; if (flag && !p_77029_1_.isInvisible() && !p_77029_1_.getHideCape()) { this.bindTexture(p_77029_1_.getLocationCape()); GL11.glPushMatrix(); GL11.glTranslatef(0.0F, 0.0F, 0.125F); double d3 = p_77029_1_.field_71091_bM + (p_77029_1_.field_71094_bP - p_77029_1_.field_71091_bM) * (double)p_77029_2_ - (p_77029_1_.prevPosX + (p_77029_1_.posX - p_77029_1_.prevPosX) * (double)p_77029_2_); double d4 = p_77029_1_.field_71096_bN + (p_77029_1_.field_71095_bQ - p_77029_1_.field_71096_bN) * (double)p_77029_2_ - (p_77029_1_.prevPosY + (p_77029_1_.posY - p_77029_1_.prevPosY) * (double)p_77029_2_); double d0 = p_77029_1_.field_71097_bO + (p_77029_1_.field_71085_bR - p_77029_1_.field_71097_bO) * (double)p_77029_2_ - (p_77029_1_.prevPosZ + (p_77029_1_.posZ - p_77029_1_.prevPosZ) * (double)p_77029_2_); f4 = p_77029_1_.prevRenderYawOffset + (p_77029_1_.renderYawOffset - p_77029_1_.prevRenderYawOffset) * p_77029_2_; double d1 = (double)MathHelper.sin(f4 * (float)Math.PI / 180.0F); double d2 = (double)(-MathHelper.cos(f4 * (float)Math.PI / 180.0F)); float f5 = (float)d4 * 10.0F; if (f5 < -6.0F) { f5 = -6.0F; } if (f5 > 32.0F) { f5 = 32.0F; } float f6 = (float)(d3 * d1 + d0 * d2) * 100.0F; float f7 = (float)(d3 * d2 - d0 * d1) * 100.0F; if (f6 < 0.0F) { f6 = 0.0F; } float f8 = p_77029_1_.prevCameraYaw + (p_77029_1_.cameraYaw - p_77029_1_.prevCameraYaw) * p_77029_2_; f5 += MathHelper.sin((p_77029_1_.prevDistanceWalkedModified + (p_77029_1_.distanceWalkedModified - p_77029_1_.prevDistanceWalkedModified) * p_77029_2_) * 6.0F) * 32.0F * f8; if (p_77029_1_.isSneaking()) { f5 += 25.0F; } GL11.glRotatef(6.0F + f6 / 2.0F + f5, 1.0F, 0.0F, 0.0F); GL11.glRotatef(f7 / 2.0F, 0.0F, 0.0F, 1.0F); GL11.glRotatef(-f7 / 2.0F, 0.0F, 1.0F, 0.0F); GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F); this.modelBipedMain.renderCloak(0.0625F); GL11.glPopMatrix(); } ItemStack itemstack1 = p_77029_1_.inventory.getCurrentItem(); if (itemstack1 != null && event.renderItem) { GL11.glPushMatrix(); this.modelBipedMain.bipedRightArm.postRender(0.0625F); GL11.glTranslatef(-0.0625F, 0.4375F, 0.0625F); if (p_77029_1_.fishEntity != null) { itemstack1 = new ItemStack(Items.stick); } EnumAction enumaction = null; if (p_77029_1_.getItemInUseCount() > 0) { enumaction = itemstack1.getItemUseAction(); } net.minecraftforge.client.IItemRenderer customRenderer = net.minecraftforge.client.MinecraftForgeClient.getItemRenderer(itemstack1, net.minecraftforge.client.IItemRenderer.ItemRenderType.EQUIPPED); boolean is3D = (customRenderer != null && customRenderer.shouldUseRenderHelper(net.minecraftforge.client.IItemRenderer.ItemRenderType.EQUIPPED, itemstack1, net.minecraftforge.client.IItemRenderer.ItemRendererHelper.BLOCK_3D)); if (is3D || itemstack1.getItem() instanceof ItemBlock && RenderBlocks.renderItemIn3d(Block.getBlockFromItem(itemstack1.getItem()).getRenderType())) { f2 = 0.5F; GL11.glTranslatef(0.0F, 0.1875F, -0.3125F); f2 *= 0.75F; GL11.glRotatef(20.0F, 1.0F, 0.0F, 0.0F); GL11.glRotatef(45.0F, 0.0F, 1.0F, 0.0F); GL11.glScalef(-f2, -f2, f2); } else if (itemstack1.getItem() == Items.bow) { f2 = 0.625F; GL11.glTranslatef(0.0F, 0.125F, 0.3125F); GL11.glRotatef(-20.0F, 0.0F, 1.0F, 0.0F); GL11.glScalef(f2, -f2, f2); GL11.glRotatef(-100.0F, 1.0F, 0.0F, 0.0F); GL11.glRotatef(45.0F, 0.0F, 1.0F, 0.0F); } else if (itemstack1.getItem().isFull3D()) { f2 = 0.625F; if (itemstack1.getItem().shouldRotateAroundWhenRendering()) { GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F); GL11.glTranslatef(0.0F, -0.125F, 0.0F); } if (p_77029_1_.getItemInUseCount() > 0 && enumaction == EnumAction.block) { GL11.glTranslatef(0.05F, 0.0F, -0.1F); GL11.glRotatef(-50.0F, 0.0F, 1.0F, 0.0F); GL11.glRotatef(-10.0F, 1.0F, 0.0F, 0.0F); GL11.glRotatef(-60.0F, 0.0F, 0.0F, 1.0F); } GL11.glTranslatef(0.0F, 0.1875F, 0.0F); GL11.glScalef(f2, -f2, f2); GL11.glRotatef(-100.0F, 1.0F, 0.0F, 0.0F); GL11.glRotatef(45.0F, 0.0F, 1.0F, 0.0F); } else { f2 = 0.375F; GL11.glTranslatef(0.25F, 0.1875F, -0.1875F); GL11.glScalef(f2, f2, f2); GL11.glRotatef(60.0F, 0.0F, 0.0F, 1.0F); GL11.glRotatef(-90.0F, 1.0F, 0.0F, 0.0F); GL11.glRotatef(20.0F, 0.0F, 0.0F, 1.0F); } float f3; int k; float f12; if (itemstack1.getItem().requiresMultipleRenderPasses()) { for (k = 0; k < itemstack1.getItem().getRenderPasses(itemstack1.getMetadata()); ++k) { int i = itemstack1.getItem().getColorFromItemStack(itemstack1, k); f12 = (float)(i >> 16 & 255) / 255.0F; f3 = (float)(i >> 8 & 255) / 255.0F; f4 = (float)(i & 255) / 255.0F; GL11.glColor4f(f12, f3, f4, 1.0F); this.renderManager.itemRenderer.renderItem(p_77029_1_, itemstack1, k); } } else { k = itemstack1.getItem().getColorFromItemStack(itemstack1, 0); float f11 = (float)(k >> 16 & 255) / 255.0F; f12 = (float)(k >> 8 & 255) / 255.0F; f3 = (float)(k & 255) / 255.0F; GL11.glColor4f(f11, f12, f3, 1.0F); this.renderManager.itemRenderer.renderItem(p_77029_1_, itemstack1, 0); } GL11.glPopMatrix(); } net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.RenderPlayerEvent.Specials.Post(p_77029_1_, this, p_77029_2_)); } /** * Allows the render to do any OpenGL state modifications necessary before the model is rendered. Args: * entityLiving, partialTickTime */ protected void preRenderCallback(AbstractClientPlayer p_77041_1_, float p_77041_2_) { float f1 = 0.9375F; GL11.glScalef(f1, f1, f1); } protected void renderOffsetLivingLabel(AbstractClientPlayer p_96449_1_, double p_96449_2_, double p_96449_4_, double p_96449_6_, String p_96449_8_, float p_96449_9_, double p_96449_10_) { if (p_96449_10_ < 100.0D) { Scoreboard scoreboard = p_96449_1_.getWorldScoreboard(); ScoreObjective scoreobjective = scoreboard.getObjectiveInDisplaySlot(2); if (scoreobjective != null) { Score score = scoreboard.getValueFromObjective(p_96449_1_.getCommandSenderName(), scoreobjective); if (p_96449_1_.isPlayerSleeping()) { this.renderLivingLabel(p_96449_1_, score.getScorePoints() + " " + scoreobjective.getDisplayName(), p_96449_2_, p_96449_4_ - 1.5D, p_96449_6_, 64); } else { this.renderLivingLabel(p_96449_1_, score.getScorePoints() + " " + scoreobjective.getDisplayName(), p_96449_2_, p_96449_4_, p_96449_6_, 64); } p_96449_4_ += (double)((float)this.getFontRendererFromRenderManager().FONT_HEIGHT * 1.15F * p_96449_9_); } } super.renderOffsetLivingLabel(p_96449_1_, p_96449_2_, p_96449_4_, p_96449_6_, p_96449_8_, p_96449_9_, p_96449_10_); } public void renderFirstPersonArm(EntityPlayer p_82441_1_) { float f = 1.0F; GL11.glColor3f(f, f, f); this.modelBipedMain.swingProgress = 0.0F; this.modelBipedMain.setRotationAngles(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, p_82441_1_); this.modelBipedMain.bipedRightArm.render(0.0625F); } /** * Sets a simple glTranslate on a LivingEntity. */ protected void renderLivingAt(AbstractClientPlayer p_77039_1_, double p_77039_2_, double p_77039_4_, double p_77039_6_) { if (p_77039_1_.isEntityAlive() && p_77039_1_.isPlayerSleeping()) { super.renderLivingAt(p_77039_1_, p_77039_2_ + (double)p_77039_1_.field_71079_bU, p_77039_4_ + (double)p_77039_1_.field_71082_cx, p_77039_6_ + (double)p_77039_1_.field_71089_bV); } else { super.renderLivingAt(p_77039_1_, p_77039_2_, p_77039_4_, p_77039_6_); } } protected void rotateCorpse(AbstractClientPlayer p_77043_1_, float p_77043_2_, float p_77043_3_, float p_77043_4_) { if (p_77043_1_.isEntityAlive() && p_77043_1_.isPlayerSleeping()) { GL11.glRotatef(p_77043_1_.getBedOrientationInDegrees(), 0.0F, 1.0F, 0.0F); GL11.glRotatef(this.getDeathMaxRotation(p_77043_1_), 0.0F, 0.0F, 1.0F); GL11.glRotatef(270.0F, 0.0F, 1.0F, 0.0F); } else { super.rotateCorpse(p_77043_1_, p_77043_2_, p_77043_3_, p_77043_4_); } } protected void renderOffsetLivingLabel(EntityLivingBase p_96449_1_, double p_96449_2_, double p_96449_4_, double p_96449_6_, String p_96449_8_, float p_96449_9_, double p_96449_10_) { this.renderOffsetLivingLabel((AbstractClientPlayer)p_96449_1_, p_96449_2_, p_96449_4_, p_96449_6_, p_96449_8_, p_96449_9_, p_96449_10_); } /** * Allows the render to do any OpenGL state modifications necessary before the model is rendered. Args: * entityLiving, partialTickTime */ protected void preRenderCallback(EntityLivingBase p_77041_1_, float p_77041_2_) { this.preRenderCallback((AbstractClientPlayer)p_77041_1_, p_77041_2_); } protected void func_82408_c(EntityLivingBase p_82408_1_, int p_82408_2_, float p_82408_3_) { this.func_82408_c((AbstractClientPlayer)p_82408_1_, p_82408_2_, p_82408_3_); } /** * Queries whether should render the specified pass or not. */ protected int shouldRenderPass(EntityLivingBase p_77032_1_, int p_77032_2_, float p_77032_3_) { return this.shouldRenderPass((AbstractClientPlayer)p_77032_1_, p_77032_2_, p_77032_3_); } protected void renderEquippedItems(EntityLivingBase p_77029_1_, float p_77029_2_) { this.renderEquippedItems((AbstractClientPlayer)p_77029_1_, p_77029_2_); } protected void rotateCorpse(EntityLivingBase p_77043_1_, float p_77043_2_, float p_77043_3_, float p_77043_4_) { this.rotateCorpse((AbstractClientPlayer)p_77043_1_, p_77043_2_, p_77043_3_, p_77043_4_); } /** * Sets a simple glTranslate on a LivingEntity. */ protected void renderLivingAt(EntityLivingBase p_77039_1_, double p_77039_2_, double p_77039_4_, double p_77039_6_) { this.renderLivingAt((AbstractClientPlayer)p_77039_1_, p_77039_2_, p_77039_4_, p_77039_6_); } /** * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic * (Render<T extends Entity) and this method has signature public void func_76986_a(T entity, double d, double d1, * double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that. */ public void doRender(EntityLivingBase p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { this.doRender((AbstractClientPlayer)p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_); } /** * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture. */ protected ResourceLocation getEntityTexture(Entity p_110775_1_) { return this.getEntityTexture((AbstractClientPlayer)p_110775_1_); } /** * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic * (Render<T extends Entity) and this method has signature public void func_76986_a(T entity, double d, double d1, * double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that. */ public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { this.doRender((AbstractClientPlayer)p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_); } }