001 package net.minecraft.src; 002 003 import cpw.mods.fml.common.Side; 004 import cpw.mods.fml.common.asm.SideOnly; 005 import java.awt.Color; 006 import java.util.List; 007 import java.util.Random; 008 import net.minecraft.client.Minecraft; 009 import net.minecraftforge.common.ForgeHooks; 010 011 import org.lwjgl.opengl.GL11; 012 import org.lwjgl.opengl.GL12; 013 014 @SideOnly(Side.CLIENT) 015 public class GuiIngame extends Gui 016 { 017 private static final RenderItem itemRenderer = new RenderItem(); 018 private final Random rand = new Random(); 019 private final Minecraft mc; 020 021 /** ChatGUI instance that retains all previous chat data */ 022 private final GuiNewChat persistantChatGUI; 023 private int updateCounter = 0; 024 025 /** The string specifying which record music is playing */ 026 private String recordPlaying = ""; 027 028 /** How many ticks the record playing message will be displayed */ 029 private int recordPlayingUpFor = 0; 030 private boolean recordIsPlaying = false; 031 032 /** Previous frame vignette brightness (slowly changes by 1% each frame) */ 033 public float prevVignetteBrightness = 1.0F; 034 035 public GuiIngame(Minecraft par1Minecraft) 036 { 037 this.mc = par1Minecraft; 038 this.persistantChatGUI = new GuiNewChat(par1Minecraft); 039 } 040 041 /** 042 * Render the ingame overlay with quick icon bar, ... 043 */ 044 public void renderGameOverlay(float par1, boolean par2, int par3, int par4) 045 { 046 ScaledResolution var5 = new ScaledResolution(this.mc.gameSettings, this.mc.displayWidth, this.mc.displayHeight); 047 int var6 = var5.getScaledWidth(); 048 int var7 = var5.getScaledHeight(); 049 FontRenderer var8 = this.mc.fontRenderer; 050 this.mc.entityRenderer.setupOverlayRendering(); 051 GL11.glEnable(GL11.GL_BLEND); 052 053 if (Minecraft.isFancyGraphicsEnabled()) 054 { 055 this.renderVignette(this.mc.thePlayer.getBrightness(par1), var6, var7); 056 } 057 else 058 { 059 GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); 060 } 061 062 ItemStack var9 = this.mc.thePlayer.inventory.armorItemInSlot(3); 063 064 if (this.mc.gameSettings.thirdPersonView == 0 && var9 != null && var9.itemID == Block.pumpkin.blockID) 065 { 066 this.renderPumpkinBlur(var6, var7); 067 } 068 069 if (!this.mc.thePlayer.isPotionActive(Potion.confusion)) 070 { 071 float var10 = this.mc.thePlayer.prevTimeInPortal + (this.mc.thePlayer.timeInPortal - this.mc.thePlayer.prevTimeInPortal) * par1; 072 073 if (var10 > 0.0F) 074 { 075 this.renderPortalOverlay(var10, var6, var7); 076 } 077 } 078 079 boolean var11; 080 int var12; 081 int var13; 082 int var17; 083 int var16; 084 int var19; 085 int var20; 086 int var23; 087 int var22; 088 int var47; 089 090 if (!this.mc.playerController.func_78747_a()) 091 { 092 GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); 093 GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/gui/gui.png")); 094 InventoryPlayer var31 = this.mc.thePlayer.inventory; 095 this.zLevel = -90.0F; 096 this.drawTexturedModalRect(var6 / 2 - 91, var7 - 22, 0, 0, 182, 22); 097 this.drawTexturedModalRect(var6 / 2 - 91 - 1 + var31.currentItem * 20, var7 - 22 - 1, 0, 22, 24, 22); 098 GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/gui/icons.png")); 099 GL11.glEnable(GL11.GL_BLEND); 100 GL11.glBlendFunc(GL11.GL_ONE_MINUS_DST_COLOR, GL11.GL_ONE_MINUS_SRC_COLOR); 101 this.drawTexturedModalRect(var6 / 2 - 7, var7 / 2 - 7, 0, 0, 16, 16); 102 GL11.glDisable(GL11.GL_BLEND); 103 var11 = this.mc.thePlayer.hurtResistantTime / 3 % 2 == 1; 104 105 if (this.mc.thePlayer.hurtResistantTime < 10) 106 { 107 var11 = false; 108 } 109 110 var12 = this.mc.thePlayer.getHealth(); 111 var13 = this.mc.thePlayer.prevHealth; 112 this.rand.setSeed((long)(this.updateCounter * 312871)); 113 boolean var14 = false; 114 FoodStats var15 = this.mc.thePlayer.getFoodStats(); 115 var16 = var15.getFoodLevel(); 116 var17 = var15.getPrevFoodLevel(); 117 this.mc.mcProfiler.startSection("bossHealth"); 118 this.renderBossHealth(); 119 this.mc.mcProfiler.endSection(); 120 int var18; 121 122 if (this.mc.playerController.shouldDrawHUD()) 123 { 124 var18 = var6 / 2 - 91; 125 var19 = var6 / 2 + 91; 126 this.mc.mcProfiler.startSection("expBar"); 127 var20 = this.mc.thePlayer.xpBarCap(); 128 129 if (var20 > 0) 130 { 131 short var21 = 182; 132 var22 = (int)(this.mc.thePlayer.experience * (float)(var21 + 1)); 133 var23 = var7 - 32 + 3; 134 this.drawTexturedModalRect(var18, var23, 0, 64, var21, 5); 135 136 if (var22 > 0) 137 { 138 this.drawTexturedModalRect(var18, var23, 0, 69, var22, 5); 139 } 140 } 141 142 var47 = var7 - 39; 143 var22 = var47 - 10; 144 var23 = ForgeHooks.getTotalArmorValue(mc.thePlayer); 145 int var24 = -1; 146 147 if (this.mc.thePlayer.isPotionActive(Potion.regeneration)) 148 { 149 var24 = this.updateCounter % 25; 150 } 151 152 this.mc.mcProfiler.endStartSection("healthArmor"); 153 int var25; 154 int var26; 155 int var29; 156 int var28; 157 158 for (var25 = 0; var25 < 10; ++var25) 159 { 160 if (var23 > 0) 161 { 162 var26 = var18 + var25 * 8; 163 164 if (var25 * 2 + 1 < var23) 165 { 166 this.drawTexturedModalRect(var26, var22, 34, 9, 9, 9); 167 } 168 169 if (var25 * 2 + 1 == var23) 170 { 171 this.drawTexturedModalRect(var26, var22, 25, 9, 9, 9); 172 } 173 174 if (var25 * 2 + 1 > var23) 175 { 176 this.drawTexturedModalRect(var26, var22, 16, 9, 9, 9); 177 } 178 } 179 180 var26 = 16; 181 182 if (this.mc.thePlayer.isPotionActive(Potion.poison)) 183 { 184 var26 += 36; 185 } 186 187 byte var27 = 0; 188 189 if (var11) 190 { 191 var27 = 1; 192 } 193 194 var28 = var18 + var25 * 8; 195 var29 = var47; 196 197 if (var12 <= 4) 198 { 199 var29 = var47 + this.rand.nextInt(2); 200 } 201 202 if (var25 == var24) 203 { 204 var29 -= 2; 205 } 206 207 byte var30 = 0; 208 209 if (this.mc.theWorld.getWorldInfo().isHardcoreModeEnabled()) 210 { 211 var30 = 5; 212 } 213 214 this.drawTexturedModalRect(var28, var29, 16 + var27 * 9, 9 * var30, 9, 9); 215 216 if (var11) 217 { 218 if (var25 * 2 + 1 < var13) 219 { 220 this.drawTexturedModalRect(var28, var29, var26 + 54, 9 * var30, 9, 9); 221 } 222 223 if (var25 * 2 + 1 == var13) 224 { 225 this.drawTexturedModalRect(var28, var29, var26 + 63, 9 * var30, 9, 9); 226 } 227 } 228 229 if (var25 * 2 + 1 < var12) 230 { 231 this.drawTexturedModalRect(var28, var29, var26 + 36, 9 * var30, 9, 9); 232 } 233 234 if (var25 * 2 + 1 == var12) 235 { 236 this.drawTexturedModalRect(var28, var29, var26 + 45, 9 * var30, 9, 9); 237 } 238 } 239 240 this.mc.mcProfiler.endStartSection("food"); 241 int var52; 242 243 for (var25 = 0; var25 < 10; ++var25) 244 { 245 var26 = var47; 246 var52 = 16; 247 byte var53 = 0; 248 249 if (this.mc.thePlayer.isPotionActive(Potion.hunger)) 250 { 251 var52 += 36; 252 var53 = 13; 253 } 254 255 if (this.mc.thePlayer.getFoodStats().getSaturationLevel() <= 0.0F && this.updateCounter % (var16 * 3 + 1) == 0) 256 { 257 var26 = var47 + (this.rand.nextInt(3) - 1); 258 } 259 260 if (var14) 261 { 262 var53 = 1; 263 } 264 265 var29 = var19 - var25 * 8 - 9; 266 this.drawTexturedModalRect(var29, var26, 16 + var53 * 9, 27, 9, 9); 267 268 if (var14) 269 { 270 if (var25 * 2 + 1 < var17) 271 { 272 this.drawTexturedModalRect(var29, var26, var52 + 54, 27, 9, 9); 273 } 274 275 if (var25 * 2 + 1 == var17) 276 { 277 this.drawTexturedModalRect(var29, var26, var52 + 63, 27, 9, 9); 278 } 279 } 280 281 if (var25 * 2 + 1 < var16) 282 { 283 this.drawTexturedModalRect(var29, var26, var52 + 36, 27, 9, 9); 284 } 285 286 if (var25 * 2 + 1 == var16) 287 { 288 this.drawTexturedModalRect(var29, var26, var52 + 45, 27, 9, 9); 289 } 290 } 291 292 this.mc.mcProfiler.endStartSection("air"); 293 294 if (this.mc.thePlayer.isInsideOfMaterial(Material.water)) 295 { 296 var25 = this.mc.thePlayer.getAir(); 297 var26 = MathHelper.ceiling_double_int((double)(var25 - 2) * 10.0D / 300.0D); 298 var52 = MathHelper.ceiling_double_int((double)var25 * 10.0D / 300.0D) - var26; 299 300 for (var28 = 0; var28 < var26 + var52; ++var28) 301 { 302 if (var28 < var26) 303 { 304 this.drawTexturedModalRect(var19 - var28 * 8 - 9, var22, 16, 18, 9, 9); 305 } 306 else 307 { 308 this.drawTexturedModalRect(var19 - var28 * 8 - 9, var22, 25, 18, 9, 9); 309 } 310 } 311 } 312 313 this.mc.mcProfiler.endSection(); 314 } 315 316 GL11.glDisable(GL11.GL_BLEND); 317 this.mc.mcProfiler.startSection("actionBar"); 318 GL11.glEnable(GL12.GL_RESCALE_NORMAL); 319 RenderHelper.enableGUIStandardItemLighting(); 320 321 for (var18 = 0; var18 < 9; ++var18) 322 { 323 var19 = var6 / 2 - 90 + var18 * 20 + 2; 324 var20 = var7 - 16 - 3; 325 this.renderInventorySlot(var18, var19, var20, par1); 326 } 327 328 RenderHelper.disableStandardItemLighting(); 329 GL11.glDisable(GL12.GL_RESCALE_NORMAL); 330 this.mc.mcProfiler.endSection(); 331 } 332 333 float var33; 334 335 if (this.mc.thePlayer.getSleepTimer() > 0) 336 { 337 this.mc.mcProfiler.startSection("sleep"); 338 GL11.glDisable(GL11.GL_DEPTH_TEST); 339 GL11.glDisable(GL11.GL_ALPHA_TEST); 340 int var32 = this.mc.thePlayer.getSleepTimer(); 341 var33 = (float)var32 / 100.0F; 342 343 if (var33 > 1.0F) 344 { 345 var33 = 1.0F - (float)(var32 - 100) / 10.0F; 346 } 347 348 var12 = (int)(220.0F * var33) << 24 | 1052704; 349 drawRect(0, 0, var6, var7, var12); 350 GL11.glEnable(GL11.GL_ALPHA_TEST); 351 GL11.glEnable(GL11.GL_DEPTH_TEST); 352 this.mc.mcProfiler.endSection(); 353 } 354 355 int var38; 356 int var40; 357 358 if (this.mc.playerController.func_78763_f() && this.mc.thePlayer.experienceLevel > 0) 359 { 360 this.mc.mcProfiler.startSection("expLevel"); 361 var11 = false; 362 var12 = var11 ? 16777215 : 8453920; 363 String var35 = "" + this.mc.thePlayer.experienceLevel; 364 var40 = (var6 - var8.getStringWidth(var35)) / 2; 365 var38 = var7 - 31 - 4; 366 var8.drawString(var35, var40 + 1, var38, 0); 367 var8.drawString(var35, var40 - 1, var38, 0); 368 var8.drawString(var35, var40, var38 + 1, 0); 369 var8.drawString(var35, var40, var38 - 1, 0); 370 var8.drawString(var35, var40, var38, var12); 371 this.mc.mcProfiler.endSection(); 372 } 373 374 if (this.mc.isDemo()) 375 { 376 this.mc.mcProfiler.startSection("demo"); 377 String var36 = ""; 378 379 if (this.mc.theWorld.getWorldTime() >= 120500L) 380 { 381 var36 = StatCollector.translateToLocal("demo.demoExpired"); 382 } 383 else 384 { 385 var36 = String.format(StatCollector.translateToLocal("demo.remainingTime"), new Object[] {StringUtils.ticksToElapsedTime((int)(120500L - this.mc.theWorld.getWorldTime()))}); 386 } 387 388 var12 = var8.getStringWidth(var36); 389 var8.drawStringWithShadow(var36, var6 - var12 - 10, 5, 16777215); 390 this.mc.mcProfiler.endSection(); 391 } 392 393 if (this.mc.gameSettings.showDebugInfo) 394 { 395 this.mc.mcProfiler.startSection("debug"); 396 GL11.glPushMatrix(); 397 var8.drawStringWithShadow("Minecraft 1.3.2 (" + this.mc.debug + ")", 2, 2, 16777215); 398 var8.drawStringWithShadow(this.mc.debugInfoRenders(), 2, 12, 16777215); 399 var8.drawStringWithShadow(this.mc.getEntityDebug(), 2, 22, 16777215); 400 var8.drawStringWithShadow(this.mc.debugInfoEntities(), 2, 32, 16777215); 401 var8.drawStringWithShadow(this.mc.getWorldProviderName(), 2, 42, 16777215); 402 long var41 = Runtime.getRuntime().maxMemory(); 403 long var34 = Runtime.getRuntime().totalMemory(); 404 long var42 = Runtime.getRuntime().freeMemory(); 405 long var43 = var34 - var42; 406 String var45 = "Used memory: " + var43 * 100L / var41 + "% (" + var43 / 1024L / 1024L + "MB) of " + var41 / 1024L / 1024L + "MB"; 407 this.drawString(var8, var45, var6 - var8.getStringWidth(var45) - 2, 2, 14737632); 408 var45 = "Allocated memory: " + var34 * 100L / var41 + "% (" + var34 / 1024L / 1024L + "MB)"; 409 this.drawString(var8, var45, var6 - var8.getStringWidth(var45) - 2, 12, 14737632); 410 this.drawString(var8, String.format("x: %.5f", new Object[] {Double.valueOf(this.mc.thePlayer.posX)}), 2, 64, 14737632); 411 this.drawString(var8, String.format("y: %.3f (feet pos, %.3f eyes pos)", new Object[] {Double.valueOf(this.mc.thePlayer.boundingBox.minY), Double.valueOf(this.mc.thePlayer.posY)}), 2, 72, 14737632); 412 this.drawString(var8, String.format("z: %.5f", new Object[] {Double.valueOf(this.mc.thePlayer.posZ)}), 2, 80, 14737632); 413 this.drawString(var8, "f: " + (MathHelper.floor_double((double)(this.mc.thePlayer.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3), 2, 88, 14737632); 414 var47 = MathHelper.floor_double(this.mc.thePlayer.posX); 415 var22 = MathHelper.floor_double(this.mc.thePlayer.posY); 416 var23 = MathHelper.floor_double(this.mc.thePlayer.posZ); 417 418 if (this.mc.theWorld != null && this.mc.theWorld.blockExists(var47, var22, var23)) 419 { 420 Chunk var48 = this.mc.theWorld.getChunkFromBlockCoords(var47, var23); 421 this.drawString(var8, "lc: " + (var48.getTopFilledSegment() + 15) + " b: " + var48.getBiomeGenForWorldCoords(var47 & 15, var23 & 15, this.mc.theWorld.getWorldChunkManager()).biomeName + " bl: " + var48.getSavedLightValue(EnumSkyBlock.Block, var47 & 15, var22, var23 & 15) + " sl: " + var48.getSavedLightValue(EnumSkyBlock.Sky, var47 & 15, var22, var23 & 15) + " rl: " + var48.getBlockLightValue(var47 & 15, var22, var23 & 15, 0), 2, 96, 14737632); 422 } 423 424 this.drawString(var8, String.format("ws: %.3f, fs: %.3f, g: %b", new Object[] {Float.valueOf(this.mc.thePlayer.capabilities.getWalkSpeed()), Float.valueOf(this.mc.thePlayer.capabilities.getFlySpeed()), Boolean.valueOf(this.mc.thePlayer.onGround)}), 2, 104, 14737632); 425 GL11.glPopMatrix(); 426 this.mc.mcProfiler.endSection(); 427 } 428 429 if (this.recordPlayingUpFor > 0) 430 { 431 this.mc.mcProfiler.startSection("overlayMessage"); 432 var33 = (float)this.recordPlayingUpFor - par1; 433 var12 = (int)(var33 * 256.0F / 20.0F); 434 435 if (var12 > 255) 436 { 437 var12 = 255; 438 } 439 440 if (var12 > 0) 441 { 442 GL11.glPushMatrix(); 443 GL11.glTranslatef((float)(var6 / 2), (float)(var7 - 48), 0.0F); 444 GL11.glEnable(GL11.GL_BLEND); 445 GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); 446 var13 = 16777215; 447 448 if (this.recordIsPlaying) 449 { 450 var13 = Color.HSBtoRGB(var33 / 50.0F, 0.7F, 0.6F) & 16777215; 451 } 452 453 var8.drawString(this.recordPlaying, -var8.getStringWidth(this.recordPlaying) / 2, -4, var13 + (var12 << 24)); 454 GL11.glDisable(GL11.GL_BLEND); 455 GL11.glPopMatrix(); 456 } 457 458 this.mc.mcProfiler.endSection(); 459 } 460 461 GL11.glEnable(GL11.GL_BLEND); 462 GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); 463 GL11.glDisable(GL11.GL_ALPHA_TEST); 464 GL11.glPushMatrix(); 465 GL11.glTranslatef(0.0F, (float)(var7 - 48), 0.0F); 466 this.mc.mcProfiler.startSection("chat"); 467 this.persistantChatGUI.func_73762_a(this.updateCounter); 468 this.mc.mcProfiler.endSection(); 469 GL11.glPopMatrix(); 470 471 if (this.mc.gameSettings.keyBindPlayerList.pressed && (!this.mc.isIntegratedServerRunning() || this.mc.thePlayer.sendQueue.playerInfoList.size() > 1)) 472 { 473 this.mc.mcProfiler.startSection("playerList"); 474 NetClientHandler var37 = this.mc.thePlayer.sendQueue; 475 List var39 = var37.playerInfoList; 476 var13 = var37.currentServerMaxPlayers; 477 var40 = var13; 478 479 for (var38 = 1; var40 > 20; var40 = (var13 + var38 - 1) / var38) 480 { 481 ++var38; 482 } 483 484 var16 = 300 / var38; 485 486 if (var16 > 150) 487 { 488 var16 = 150; 489 } 490 491 var17 = (var6 - var38 * var16) / 2; 492 byte var44 = 10; 493 drawRect(var17 - 1, var44 - 1, var17 + var16 * var38, var44 + 9 * var40, Integer.MIN_VALUE); 494 495 for (var19 = 0; var19 < var13; ++var19) 496 { 497 var20 = var17 + var19 % var38 * var16; 498 var47 = var44 + var19 / var38 * 9; 499 drawRect(var20, var47, var20 + var16 - 1, var47 + 8, 553648127); 500 GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); 501 GL11.glEnable(GL11.GL_ALPHA_TEST); 502 503 if (var19 < var39.size()) 504 { 505 GuiPlayerInfo var46 = (GuiPlayerInfo)var39.get(var19); 506 var8.drawStringWithShadow(var46.name, var20, var47, 16777215); 507 this.mc.renderEngine.bindTexture(this.mc.renderEngine.getTexture("/gui/icons.png")); 508 byte var51 = 0; 509 boolean var49 = false; 510 byte var50; 511 512 if (var46.responseTime < 0) 513 { 514 var50 = 5; 515 } 516 else if (var46.responseTime < 150) 517 { 518 var50 = 0; 519 } 520 else if (var46.responseTime < 300) 521 { 522 var50 = 1; 523 } 524 else if (var46.responseTime < 600) 525 { 526 var50 = 2; 527 } 528 else if (var46.responseTime < 1000) 529 { 530 var50 = 3; 531 } 532 else 533 { 534 var50 = 4; 535 } 536 537 this.zLevel += 100.0F; 538 this.drawTexturedModalRect(var20 + var16 - 12, var47, 0 + var51 * 10, 176 + var50 * 8, 10, 8); 539 this.zLevel -= 100.0F; 540 } 541 } 542 } 543 544 GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); 545 GL11.glDisable(GL11.GL_LIGHTING); 546 GL11.glEnable(GL11.GL_ALPHA_TEST); 547 } 548 549 /** 550 * Renders dragon's (boss) health on the HUD 551 */ 552 private void renderBossHealth() 553 { 554 if (RenderDragon.entityDragon != null) 555 { 556 EntityDragon var1 = RenderDragon.entityDragon; 557 RenderDragon.entityDragon = null; 558 FontRenderer var2 = this.mc.fontRenderer; 559 ScaledResolution var3 = new ScaledResolution(this.mc.gameSettings, this.mc.displayWidth, this.mc.displayHeight); 560 int var4 = var3.getScaledWidth(); 561 short var5 = 182; 562 int var6 = var4 / 2 - var5 / 2; 563 int var7 = (int)((float)var1.getDragonHealth() / (float)var1.getMaxHealth() * (float)(var5 + 1)); 564 byte var8 = 12; 565 this.drawTexturedModalRect(var6, var8, 0, 74, var5, 5); 566 this.drawTexturedModalRect(var6, var8, 0, 74, var5, 5); 567 568 if (var7 > 0) 569 { 570 this.drawTexturedModalRect(var6, var8, 0, 79, var7, 5); 571 } 572 573 String var9 = "Boss health"; 574 var2.drawStringWithShadow(var9, var4 / 2 - var2.getStringWidth(var9) / 2, var8 - 10, 16711935); 575 GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); 576 GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/gui/icons.png")); 577 } 578 } 579 580 private void renderPumpkinBlur(int par1, int par2) 581 { 582 GL11.glDisable(GL11.GL_DEPTH_TEST); 583 GL11.glDepthMask(false); 584 GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); 585 GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); 586 GL11.glDisable(GL11.GL_ALPHA_TEST); 587 GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("%blur%/misc/pumpkinblur.png")); 588 Tessellator var3 = Tessellator.instance; 589 var3.startDrawingQuads(); 590 var3.addVertexWithUV(0.0D, (double)par2, -90.0D, 0.0D, 1.0D); 591 var3.addVertexWithUV((double)par1, (double)par2, -90.0D, 1.0D, 1.0D); 592 var3.addVertexWithUV((double)par1, 0.0D, -90.0D, 1.0D, 0.0D); 593 var3.addVertexWithUV(0.0D, 0.0D, -90.0D, 0.0D, 0.0D); 594 var3.draw(); 595 GL11.glDepthMask(true); 596 GL11.glEnable(GL11.GL_DEPTH_TEST); 597 GL11.glEnable(GL11.GL_ALPHA_TEST); 598 GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); 599 } 600 601 /** 602 * Renders the vignette. Args: vignetteBrightness, width, height 603 */ 604 private void renderVignette(float par1, int par2, int par3) 605 { 606 par1 = 1.0F - par1; 607 608 if (par1 < 0.0F) 609 { 610 par1 = 0.0F; 611 } 612 613 if (par1 > 1.0F) 614 { 615 par1 = 1.0F; 616 } 617 618 this.prevVignetteBrightness = (float)((double)this.prevVignetteBrightness + (double)(par1 - this.prevVignetteBrightness) * 0.01D); 619 GL11.glDisable(GL11.GL_DEPTH_TEST); 620 GL11.glDepthMask(false); 621 GL11.glBlendFunc(GL11.GL_ZERO, GL11.GL_ONE_MINUS_SRC_COLOR); 622 GL11.glColor4f(this.prevVignetteBrightness, this.prevVignetteBrightness, this.prevVignetteBrightness, 1.0F); 623 GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("%blur%/misc/vignette.png")); 624 Tessellator var4 = Tessellator.instance; 625 var4.startDrawingQuads(); 626 var4.addVertexWithUV(0.0D, (double)par3, -90.0D, 0.0D, 1.0D); 627 var4.addVertexWithUV((double)par2, (double)par3, -90.0D, 1.0D, 1.0D); 628 var4.addVertexWithUV((double)par2, 0.0D, -90.0D, 1.0D, 0.0D); 629 var4.addVertexWithUV(0.0D, 0.0D, -90.0D, 0.0D, 0.0D); 630 var4.draw(); 631 GL11.glDepthMask(true); 632 GL11.glEnable(GL11.GL_DEPTH_TEST); 633 GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); 634 GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); 635 } 636 637 /** 638 * Renders the portal overlay. Args: portalStrength, width, height 639 */ 640 private void renderPortalOverlay(float par1, int par2, int par3) 641 { 642 if (par1 < 1.0F) 643 { 644 par1 *= par1; 645 par1 *= par1; 646 par1 = par1 * 0.8F + 0.2F; 647 } 648 649 GL11.glDisable(GL11.GL_ALPHA_TEST); 650 GL11.glDisable(GL11.GL_DEPTH_TEST); 651 GL11.glDepthMask(false); 652 GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); 653 GL11.glColor4f(1.0F, 1.0F, 1.0F, par1); 654 GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.mc.renderEngine.getTexture("/terrain.png")); 655 float var4 = (float)(Block.portal.blockIndexInTexture % 16) / 16.0F; 656 float var5 = (float)(Block.portal.blockIndexInTexture / 16) / 16.0F; 657 float var6 = (float)(Block.portal.blockIndexInTexture % 16 + 1) / 16.0F; 658 float var7 = (float)(Block.portal.blockIndexInTexture / 16 + 1) / 16.0F; 659 Tessellator var8 = Tessellator.instance; 660 var8.startDrawingQuads(); 661 var8.addVertexWithUV(0.0D, (double)par3, -90.0D, (double)var4, (double)var7); 662 var8.addVertexWithUV((double)par2, (double)par3, -90.0D, (double)var6, (double)var7); 663 var8.addVertexWithUV((double)par2, 0.0D, -90.0D, (double)var6, (double)var5); 664 var8.addVertexWithUV(0.0D, 0.0D, -90.0D, (double)var4, (double)var5); 665 var8.draw(); 666 GL11.glDepthMask(true); 667 GL11.glEnable(GL11.GL_DEPTH_TEST); 668 GL11.glEnable(GL11.GL_ALPHA_TEST); 669 GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); 670 } 671 672 /** 673 * Renders the specified item of the inventory slot at the specified location. Args: slot, x, y, partialTick 674 */ 675 private void renderInventorySlot(int par1, int par2, int par3, float par4) 676 { 677 ItemStack var5 = this.mc.thePlayer.inventory.mainInventory[par1]; 678 679 if (var5 != null) 680 { 681 float var6 = (float)var5.animationsToGo - par4; 682 683 if (var6 > 0.0F) 684 { 685 GL11.glPushMatrix(); 686 float var7 = 1.0F + var6 / 5.0F; 687 GL11.glTranslatef((float)(par2 + 8), (float)(par3 + 12), 0.0F); 688 GL11.glScalef(1.0F / var7, (var7 + 1.0F) / 2.0F, 1.0F); 689 GL11.glTranslatef((float)(-(par2 + 8)), (float)(-(par3 + 12)), 0.0F); 690 } 691 692 itemRenderer.renderItemIntoGUI(this.mc.fontRenderer, this.mc.renderEngine, var5, par2, par3); 693 694 if (var6 > 0.0F) 695 { 696 GL11.glPopMatrix(); 697 } 698 699 itemRenderer.renderItemOverlayIntoGUI(this.mc.fontRenderer, this.mc.renderEngine, var5, par2, par3); 700 } 701 } 702 703 /** 704 * The update tick for the ingame UI 705 */ 706 public void updateTick() 707 { 708 if (this.recordPlayingUpFor > 0) 709 { 710 --this.recordPlayingUpFor; 711 } 712 713 ++this.updateCounter; 714 } 715 716 public void setRecordPlayingMessage(String par1Str) 717 { 718 this.recordPlaying = "Now playing: " + par1Str; 719 this.recordPlayingUpFor = 60; 720 this.recordIsPlaying = true; 721 } 722 723 /** 724 * returns a pointer to the persistant Chat GUI, containing all previous chat messages and such 725 */ 726 public GuiNewChat getChatGUI() 727 { 728 return this.persistantChatGUI; 729 } 730 731 public int getUpdateCounter() 732 { 733 return this.updateCounter; 734 } 735 }