@Override
  protected void rotateCorpse(
      EntityDragonMinion par1EntityDragonMinion, float par2, float par3, float par4) {
    float f3 = (float) par1EntityDragonMinion.getMovementOffsets(7, par4)[0];
    float f4 =
        (float)
            (par1EntityDragonMinion.getMovementOffsets(5, par4)[1]
                - par1EntityDragonMinion.getMovementOffsets(10, par4)[1]);
    GL11.glRotatef(-f3, 0.0F, 1.0F, 0.0F);
    GL11.glRotatef(f4 * 10.0F, 1.0F, 0.0F, 0.0F);
    GL11.glTranslatef(0.0F, 0.0F, 1.0F);

    if (par1EntityDragonMinion.deathTime > 0) {
      float f5 = (par1EntityDragonMinion.deathTime + par4 - 1.0F) / 20.0F * 1.6F;
      f5 = MathHelper.sqrt_float(f5);

      if (f5 > 1.0F) f5 = 1.0F;

      GL11.glRotatef(f5 * getDeathMaxRotation(par1EntityDragonMinion), 0.0F, 0.0F, 1.0F);
    }
  }
  /** Renders the desired {@code T} type Entity. */
  public void doRender(
      EntityFishHook entity, double x, double y, double z, float entityYaw, float partialTicks) {
    GlStateManager.pushMatrix();
    GlStateManager.translate((float) x, (float) y, (float) z);
    GlStateManager.enableRescaleNormal();
    GlStateManager.scale(0.5F, 0.5F, 0.5F);
    this.bindEntityTexture(entity);
    Tessellator tessellator = Tessellator.getInstance();
    VertexBuffer vertexbuffer = tessellator.getBuffer();
    int i = 1;
    int j = 2;
    float f = 0.0625F;
    float f1 = 0.125F;
    float f2 = 0.125F;
    float f3 = 0.1875F;
    float f4 = 1.0F;
    float f5 = 0.5F;
    float f6 = 0.5F;
    GlStateManager.rotate(180.0F - this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
    GlStateManager.rotate(
        (float) (this.renderManager.options.thirdPersonView == 2 ? -1 : 1)
            * -this.renderManager.playerViewX,
        1.0F,
        0.0F,
        0.0F);

    if (this.renderOutlines) {
      GlStateManager.enableColorMaterial();
      GlStateManager.enableOutlineMode(this.getTeamColor(entity));
    }

    vertexbuffer.begin(7, DefaultVertexFormats.POSITION_TEX_NORMAL);
    vertexbuffer.pos(-0.5D, -0.5D, 0.0D).tex(0.0625D, 0.1875D).normal(0.0F, 1.0F, 0.0F).endVertex();
    vertexbuffer.pos(0.5D, -0.5D, 0.0D).tex(0.125D, 0.1875D).normal(0.0F, 1.0F, 0.0F).endVertex();
    vertexbuffer.pos(0.5D, 0.5D, 0.0D).tex(0.125D, 0.125D).normal(0.0F, 1.0F, 0.0F).endVertex();
    vertexbuffer.pos(-0.5D, 0.5D, 0.0D).tex(0.0625D, 0.125D).normal(0.0F, 1.0F, 0.0F).endVertex();
    tessellator.draw();

    if (this.renderOutlines) {
      GlStateManager.disableOutlineMode();
      GlStateManager.disableColorMaterial();
    }

    GlStateManager.disableRescaleNormal();
    GlStateManager.popMatrix();

    if (entity.angler != null && !this.renderOutlines) {
      int k = entity.angler.getPrimaryHand() == EnumHandSide.RIGHT ? 1 : -1;
      float f7 = entity.angler.getSwingProgress(partialTicks);
      float f8 = MathHelper.sin(MathHelper.sqrt_float(f7) * (float) Math.PI);
      float f9 =
          (entity.angler.prevRenderYawOffset
                  + (entity.angler.renderYawOffset - entity.angler.prevRenderYawOffset)
                      * partialTicks)
              * 0.017453292F;
      double d0 = (double) MathHelper.sin(f9);
      double d1 = (double) MathHelper.cos(f9);
      double d2 = (double) k * 0.35D;
      double d3 = 0.8D;
      double d4;
      double d5;
      double d6;
      double d7;

      if ((this.renderManager.options == null || this.renderManager.options.thirdPersonView <= 0)
          && entity.angler == Minecraft.getMinecraft().thePlayer) {
        Vec3d vec3d = new Vec3d((double) k * -0.36D, -0.05D, 0.4D);
        vec3d =
            vec3d.rotatePitch(
                -(entity.angler.prevRotationPitch
                        + (entity.angler.rotationPitch - entity.angler.prevRotationPitch)
                            * partialTicks)
                    * 0.017453292F);
        vec3d =
            vec3d.rotateYaw(
                -(entity.angler.prevRotationYaw
                        + (entity.angler.rotationYaw - entity.angler.prevRotationYaw)
                            * partialTicks)
                    * 0.017453292F);
        vec3d = vec3d.rotateYaw(f8 * 0.5F);
        vec3d = vec3d.rotatePitch(-f8 * 0.7F);
        d4 =
            entity.angler.prevPosX
                + (entity.angler.posX - entity.angler.prevPosX) * (double) partialTicks
                + vec3d.xCoord;
        d5 =
            entity.angler.prevPosY
                + (entity.angler.posY - entity.angler.prevPosY) * (double) partialTicks
                + vec3d.yCoord;
        d6 =
            entity.angler.prevPosZ
                + (entity.angler.posZ - entity.angler.prevPosZ) * (double) partialTicks
                + vec3d.zCoord;
        d7 = (double) entity.angler.getEyeHeight();
      } else {
        d4 =
            entity.angler.prevPosX
                + (entity.angler.posX - entity.angler.prevPosX) * (double) partialTicks
                - d1 * d2
                - d0 * 0.8D;
        d5 =
            entity.angler.prevPosY
                + (double) entity.angler.getEyeHeight()
                + (entity.angler.posY - entity.angler.prevPosY) * (double) partialTicks
                - 0.45D;
        d6 =
            entity.angler.prevPosZ
                + (entity.angler.posZ - entity.angler.prevPosZ) * (double) partialTicks
                - d0 * d2
                + d1 * 0.8D;
        d7 = entity.angler.isSneaking() ? -0.1875D : 0.0D;
      }

      double d13 = entity.prevPosX + (entity.posX - entity.prevPosX) * (double) partialTicks;
      double d8 = entity.prevPosY + (entity.posY - entity.prevPosY) * (double) partialTicks + 0.25D;
      double d9 = entity.prevPosZ + (entity.posZ - entity.prevPosZ) * (double) partialTicks;
      double d10 = (double) ((float) (d4 - d13));
      double d11 = (double) ((float) (d5 - d8)) + d7;
      double d12 = (double) ((float) (d6 - d9));
      GlStateManager.disableTexture2D();
      GlStateManager.disableLighting();
      vertexbuffer.begin(3, DefaultVertexFormats.POSITION_COLOR);
      int l = 16;

      for (int i1 = 0; i1 <= 16; ++i1) {
        float f10 = (float) i1 / 16.0F;
        vertexbuffer
            .pos(
                x + d10 * (double) f10,
                y + d11 * (double) (f10 * f10 + f10) * 0.5D + 0.25D,
                z + d12 * (double) f10)
            .color(0, 0, 0, 255)
            .endVertex();
      }

      tessellator.draw();
      GlStateManager.enableLighting();
      GlStateManager.enableTexture2D();
      super.doRender(entity, x, y, z, entityYaw, partialTicks);
    }
  }