Ejemplo n.º 1
0
  public void doRenderLiving(
      EntityLiving par1EntityLiving,
      double par2,
      double par4,
      double par6,
      float par8,
      float par9) {
    GL11.glPushMatrix();
    GL11.glDisable(GL11.GL_CULL_FACE);
    mainModel.onGround = renderSwingProgress(par1EntityLiving, par9);

    if (renderPassModel != null) {
      renderPassModel.onGround = mainModel.onGround;
    }

    mainModel.isRiding = par1EntityLiving.isRiding();

    if (renderPassModel != null) {
      renderPassModel.isRiding = mainModel.isRiding;
    }

    mainModel.isChild = par1EntityLiving.isChild();

    if (renderPassModel != null) {
      renderPassModel.isChild = mainModel.isChild;
    }

    try {
      float f =
          func_48418_a(
              par1EntityLiving.prevRenderYawOffset, par1EntityLiving.renderYawOffset, par9);
      float f1 =
          func_48418_a(
              par1EntityLiving.prevRotationYawHead, par1EntityLiving.rotationYawHead, par9);
      float f2 =
          par1EntityLiving.prevRotationPitch
              + (par1EntityLiving.rotationPitch - par1EntityLiving.prevRotationPitch) * par9;
      renderLivingAt(par1EntityLiving, par2, par4, par6);
      float f3 = handleRotationFloat(par1EntityLiving, par9);
      rotateCorpse(par1EntityLiving, f3, f, par9);
      float f4 = 0.0625F;
      GL11.glEnable(GL12.GL_RESCALE_NORMAL);
      GL11.glScalef(-1F, -1F, 1.0F);
      preRenderCallback(par1EntityLiving, par9);
      if (!bobbing) {
        GL11.glTranslatef(0.0F, -24F * f4 - 0.0078125F, 0.0F);
      }
      float f5 =
          par1EntityLiving.field_705_Q
              + (par1EntityLiving.field_704_R - par1EntityLiving.field_705_Q) * par9;
      float f6;
      if (bobbing) {
        f6 =
            par1EntityLiving.field_9359_x
                + (par1EntityLiving.field_9360_w - par1EntityLiving.field_9359_x) * par9;
        if (par1EntityLiving.isChild()) {
          f6 *= 3F;
        }
        float bobStrength = 0F;
        if ((par1EntityLiving instanceof EntityZombie
                || par1EntityLiving instanceof EntitySkeleton
                || par1EntityLiving instanceof EntityCreeper
                || par1EntityLiving instanceof EntityPig
                || par1EntityLiving instanceof EntitySheep
                || par1EntityLiving instanceof EntityPlayer
                || par1EntityLiving instanceof EntityOtherPlayerMP)
            && !par1EntityLiving.isChild()) {
          bobStrength = 1.0F;
        }
        float f32 =
            par1EntityLiving.field_9362_u
                + (par1EntityLiving.field_9361_v - par1EntityLiving.field_9362_u) * par9;
        float bob = -Math.abs(MathHelper.cos(f6 * 0.6662F)) * 5F * f32 * bobStrength - 23F;
        GL11.glTranslatef(0.0F, bob * f4 - 0.0078125F, 0.0F);
      } else {
        f6 = par1EntityLiving.field_703_S - par1EntityLiving.field_704_R * (1.0F - par9);
        if (par1EntityLiving.isChild()) {
          f6 *= 3F;
        }
      }

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

      GL11.glEnable(GL11.GL_ALPHA_TEST);
      mainModel.setLivingAnimations(par1EntityLiving, f6, f5, par9);
      renderModel(par1EntityLiving, f6, f5, f3, f1 - f, f2, f4);

      for (int i = 0; i < 4; i++) {
        int j = shouldRenderPass(par1EntityLiving, i, par9);

        if (j <= 0) {
          continue;
        }

        renderPassModel.setLivingAnimations(par1EntityLiving, f6, f5, par9);
        renderPassModel.render(par1EntityLiving, f6, f5, f3, f1 - f, f2, f4);

        if (j == 15) {
          float f8 = (float) par1EntityLiving.ticksExisted + par9;
          loadTexture("%blur%/misc/glint.png");
          GL11.glEnable(GL11.GL_BLEND);
          float f10 = 0.5F;
          GL11.glColor4f(f10, f10, f10, 1.0F);
          GL11.glDepthFunc(GL11.GL_EQUAL);
          GL11.glDepthMask(false);

          for (int i1 = 0; i1 < 2; i1++) {
            GL11.glDisable(GL11.GL_LIGHTING);
            float f13 = 0.76F;
            GL11.glColor4f(0.5F * f13, 0.25F * f13, 0.8F * f13, 1.0F);
            GL11.glBlendFunc(GL11.GL_SRC_COLOR, GL11.GL_ONE);
            GL11.glMatrixMode(GL11.GL_TEXTURE);
            GL11.glLoadIdentity();
            float f15 = f8 * (0.001F + (float) i1 * 0.003F) * 20F;
            float f16 = 0.3333333F;
            GL11.glScalef(f16, f16, f16);
            GL11.glRotatef(30F - (float) i1 * 60F, 0.0F, 0.0F, 1.0F);
            GL11.glTranslatef(0.0F, f15, 0.0F);
            GL11.glMatrixMode(GL11.GL_MODELVIEW);
            renderPassModel.render(par1EntityLiving, f6, f5, f3, f1 - f, f2, f4);
          }

          GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
          GL11.glMatrixMode(GL11.GL_TEXTURE);
          GL11.glDepthMask(true);
          GL11.glLoadIdentity();
          GL11.glMatrixMode(GL11.GL_MODELVIEW);
          GL11.glEnable(GL11.GL_LIGHTING);
          GL11.glDisable(GL11.GL_BLEND);
          GL11.glDepthFunc(GL11.GL_LEQUAL);
        }

        GL11.glDisable(GL11.GL_BLEND);
        GL11.glEnable(GL11.GL_ALPHA_TEST);
      }

      renderEquippedItems(par1EntityLiving, par9);
      float f7 = par1EntityLiving.getBrightness(par9);
      int k = getColorMultiplier(par1EntityLiving, f7, par9);
      OpenGlHelper.setActiveTexture(OpenGlHelper.lightmapTexUnit);
      GL11.glDisable(GL11.GL_TEXTURE_2D);
      OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit);

      if ((k >> 24 & 0xff) > 0 || par1EntityLiving.hurtTime > 0 || par1EntityLiving.deathTime > 0) {
        GL11.glDisable(GL11.GL_TEXTURE_2D);
        GL11.glDisable(GL11.GL_ALPHA_TEST);
        GL11.glEnable(GL11.GL_BLEND);
        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        GL11.glDepthFunc(GL11.GL_EQUAL);

        if (par1EntityLiving.hurtTime > 0 || par1EntityLiving.deathTime > 0) {
          GL11.glColor4f(f7, 0.0F, 0.0F, 0.4F);
          mainModel.render(par1EntityLiving, f6, f5, f3, f1 - f, f2, f4);

          for (int l = 0; l < 4; l++) {
            if (inheritRenderPass(par1EntityLiving, l, par9) >= 0) {
              GL11.glColor4f(f7, 0.0F, 0.0F, 0.4F);
              renderPassModel.render(par1EntityLiving, f6, f5, f3, f1 - f, f2, f4);
            }
          }
        }

        if ((k >> 24 & 0xff) > 0) {
          float f9 = (float) (k >> 16 & 0xff) / 255F;
          float f11 = (float) (k >> 8 & 0xff) / 255F;
          float f12 = (float) (k & 0xff) / 255F;
          float f14 = (float) (k >> 24 & 0xff) / 255F;
          GL11.glColor4f(f9, f11, f12, f14);
          mainModel.render(par1EntityLiving, f6, f5, f3, f1 - f, f2, f4);

          for (int j1 = 0; j1 < 4; j1++) {
            if (inheritRenderPass(par1EntityLiving, j1, par9) >= 0) {
              GL11.glColor4f(f9, f11, f12, f14);
              renderPassModel.render(par1EntityLiving, f6, f5, f3, f1 - f, f2, f4);
            }
          }
        }

        GL11.glDepthFunc(GL11.GL_LEQUAL);
        GL11.glDisable(GL11.GL_BLEND);
        GL11.glEnable(GL11.GL_ALPHA_TEST);
        GL11.glEnable(GL11.GL_TEXTURE_2D);
      }

      GL11.glDisable(GL12.GL_RESCALE_NORMAL);
    } catch (Exception exception) {
      exception.printStackTrace();
    }

    OpenGlHelper.setActiveTexture(OpenGlHelper.lightmapTexUnit);
    GL11.glEnable(GL11.GL_TEXTURE_2D);
    OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit);
    GL11.glEnable(GL11.GL_CULL_FACE);
    GL11.glPopMatrix();
    passSpecialRender(par1EntityLiving, par2, par4, par6);
  }