Guest User

Untitled

a guest
Aug 20th, 2018
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 30.45 KB | None | 0 0
  1. package net.minecraft.src;
  2.  
  3. import java.awt.Color;
  4. import java.util.ArrayList;
  5. import java.util.Iterator;
  6. import java.util.Random;
  7. import net.minecraft.client.Minecraft;
  8. import org.lwjgl.opengl.GL11;
  9. import org.lwjgl.opengl.GL12;
  10.  
  11. public class GuiIngame extends Gui
  12. {
  13. private static RenderItem itemRenderer = new RenderItem();
  14.  
  15. /** A list with all the chat messages in. */
  16. private java.util.List chatMessageList;
  17. private java.util.List field_50016_f;
  18. private Random rand;
  19. private Minecraft mc;
  20. private int updateCounter;
  21.  
  22. /** The string specifying which record music is playing */
  23. private String recordPlaying;
  24.  
  25. /** How many ticks the record playing message will be displayed */
  26. private int recordPlayingUpFor;
  27. private boolean recordIsPlaying;
  28. private int field_50017_n;
  29. private boolean field_50018_o;
  30.  
  31. /** Damage partial time (GUI) */
  32. public float damageGuiPartialTime;
  33.  
  34. /** Previous frame vignette brightness (slowly changes by 1% each frame) */
  35. float prevVignetteBrightness;
  36.  
  37. public GuiIngame(Minecraft par1Minecraft)
  38. {
  39. chatMessageList = new ArrayList();
  40. field_50016_f = new ArrayList();
  41. rand = new Random();
  42. updateCounter = 0;
  43. recordPlaying = "";
  44. recordPlayingUpFor = 0;
  45. recordIsPlaying = false;
  46. field_50017_n = 0;
  47. field_50018_o = false;
  48. prevVignetteBrightness = 1.0F;
  49. mc = par1Minecraft;
  50. }
  51.  
  52. /**
  53. * Render the ingame overlay with quick icon bar, ...
  54. */
  55. public void renderGameOverlay(float par1, boolean par2, int par3, int par4)
  56. {
  57. ScaledResolution scaledresolution = new ScaledResolution(mc.gameSettings, mc.displayWidth, mc.displayHeight);
  58. int i = scaledresolution.getScaledWidth();
  59. int j = scaledresolution.getScaledHeight();
  60. FontRenderer fontrenderer = mc.fontRenderer;
  61. mc.entityRenderer.setupOverlayRendering();
  62. GL11.glEnable(GL11.GL_BLEND);
  63.  
  64. if (Minecraft.isFancyGraphicsEnabled())
  65. {
  66. renderVignette(mc.thePlayer.getBrightness(par1), i, j);
  67. }
  68. else
  69. {
  70. GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
  71. }
  72.  
  73. ItemStack itemstack = mc.thePlayer.inventory.armorItemInSlot(3);
  74.  
  75. if (mc.gameSettings.thirdPersonView == 0 && itemstack != null && itemstack.itemID == Block.pumpkin.blockID)
  76. {
  77. renderPumpkinBlur(i, j);
  78. }
  79.  
  80. if (!mc.thePlayer.isPotionActive(Potion.confusion))
  81. {
  82. float f = mc.thePlayer.prevTimeInPortal + (mc.thePlayer.timeInPortal - mc.thePlayer.prevTimeInPortal) * par1;
  83.  
  84. if (f > 0.0F)
  85. {
  86. renderPortalOverlay(f, i, j);
  87. }
  88. }
  89.  
  90. if (!mc.playerController.func_35643_e())
  91. {
  92. GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
  93. GL11.glBindTexture(GL11.GL_TEXTURE_2D, mc.renderEngine.getTexture("/gui/gui.png"));
  94. InventoryPlayer inventoryplayer = mc.thePlayer.inventory;
  95. zLevel = -90F;
  96. drawTexturedModalRect(i / 2 - 91, j - 22, 0, 0, 182, 22);
  97. drawTexturedModalRect((i / 2 - 91 - 1) + inventoryplayer.currentItem * 20, j - 22 - 1, 0, 22, 24, 22);
  98. GL11.glBindTexture(GL11.GL_TEXTURE_2D, mc.renderEngine.getTexture("/gui/icons.png"));
  99. GL11.glEnable(GL11.GL_BLEND);
  100. GL11.glBlendFunc(GL11.GL_ONE_MINUS_DST_COLOR, GL11.GL_ONE_MINUS_SRC_COLOR);
  101. drawTexturedModalRect(i / 2 - 7, j / 2 - 7, 0, 0, 16, 16);
  102. GL11.glDisable(GL11.GL_BLEND);
  103. boolean flag = (mc.thePlayer.heartsLife / 3) % 2 == 1;
  104.  
  105. if (mc.thePlayer.heartsLife < 10)
  106. {
  107. flag = false;
  108. }
  109.  
  110. int i1 = mc.thePlayer.getHealth();
  111. int i2 = mc.thePlayer.prevHealth;
  112. rand.setSeed(updateCounter * 0x4c627);
  113. boolean flag2 = false;
  114. FoodStats foodstats = mc.thePlayer.getFoodStats();
  115. int j4 = foodstats.getFoodLevel();
  116. int l4 = foodstats.getPrevFoodLevel();
  117. renderBossHealth();
  118.  
  119. if (mc.playerController.shouldDrawHUD())
  120. {
  121. int j5 = i / 2 - 91;
  122. int i6 = i / 2 + 91;
  123. int l6 = mc.thePlayer.xpBarCap();
  124.  
  125. if (l6 > 0)
  126. {
  127. char c = '\266';
  128. int j8 = (int)(mc.thePlayer.experience * (float)(c + 1));
  129. int i9 = (j - 32) + 3;
  130. drawTexturedModalRect(j5, i9, 0, 64, c, 5);
  131.  
  132. if (j8 > 0)
  133. {
  134. drawTexturedModalRect(j5, i9, 0, 69, j8, 5);
  135. }
  136. }
  137.  
  138. int k7 = j - 39;
  139. int k8 = k7 - 10;
  140. int j9 = mc.thePlayer.getTotalArmorValue();
  141. int i10 = -1;
  142.  
  143. if (mc.thePlayer.isPotionActive(Potion.regeneration))
  144. {
  145. i10 = updateCounter % 25;
  146. }
  147.  
  148. for (int j10 = 0; j10 < 10; j10++)
  149. {
  150. if (j9 > 0)
  151. {
  152. int i11 = j5 + j10 * 8;
  153.  
  154. if (j10 * 2 + 1 < j9)
  155. {
  156. drawTexturedModalRect(i11, k8, 34, 9, 9, 9);
  157. }
  158.  
  159. if (j10 * 2 + 1 == j9)
  160. {
  161. drawTexturedModalRect(i11, k8, 25, 9, 9, 9);
  162. }
  163.  
  164. if (j10 * 2 + 1 > j9)
  165. {
  166. drawTexturedModalRect(i11, k8, 16, 9, 9, 9);
  167. }
  168. }
  169.  
  170. int j11 = 16;
  171.  
  172. if (mc.thePlayer.isPotionActive(Potion.poison))
  173. {
  174. j11 += 36;
  175. }
  176.  
  177. int i12 = 0;
  178.  
  179. if (flag)
  180. {
  181. i12 = 1;
  182. }
  183.  
  184. int l12 = j5 + j10 * 8;
  185. int j13 = k7;
  186.  
  187. if (i1 <= 4)
  188. {
  189. j13 += rand.nextInt(2);
  190. }
  191.  
  192. if (j10 == i10)
  193. {
  194. j13 -= 2;
  195. }
  196.  
  197. byte byte3 = 0;
  198.  
  199. if (mc.theWorld.getWorldInfo().isHardcoreModeEnabled())
  200. {
  201. byte3 = 5;
  202. }
  203.  
  204. drawTexturedModalRect(l12, j13, 16 + i12 * 9, 9 * byte3, 9, 9);
  205.  
  206. if (flag)
  207. {
  208. if (j10 * 2 + 1 < i2)
  209. {
  210. drawTexturedModalRect(l12, j13, j11 + 54, 9 * byte3, 9, 9);
  211. }
  212.  
  213. if (j10 * 2 + 1 == i2)
  214. {
  215. drawTexturedModalRect(l12, j13, j11 + 63, 9 * byte3, 9, 9);
  216. }
  217. }
  218.  
  219. if (j10 * 2 + 1 < i1)
  220. {
  221. drawTexturedModalRect(l12, j13, j11 + 36, 9 * byte3, 9, 9);
  222. }
  223.  
  224. if (j10 * 2 + 1 == i1)
  225. {
  226. drawTexturedModalRect(l12, j13, j11 + 45, 9 * byte3, 9, 9);
  227. }
  228. }
  229.  
  230. for (int k10 = 0; k10 < 10; k10++)
  231. {
  232. int k11 = k7;
  233. int j12 = 16;
  234. byte byte2 = 0;
  235.  
  236. if (mc.thePlayer.isPotionActive(Potion.hunger))
  237. {
  238. j12 += 36;
  239. byte2 = 13;
  240. }
  241.  
  242. if (mc.thePlayer.getFoodStats().getSaturationLevel() <= 0.0F && updateCounter % (j4 * 3 + 1) == 0)
  243. {
  244. k11 += rand.nextInt(3) - 1;
  245. }
  246.  
  247. if (flag2)
  248. {
  249. byte2 = 1;
  250. }
  251.  
  252. int k13 = i6 - k10 * 8 - 9;
  253. drawTexturedModalRect(k13, k11, 16 + byte2 * 9, 27, 9, 9);
  254.  
  255. if (flag2)
  256. {
  257. if (k10 * 2 + 1 < l4)
  258. {
  259. drawTexturedModalRect(k13, k11, j12 + 54, 27, 9, 9);
  260. }
  261.  
  262. if (k10 * 2 + 1 == l4)
  263. {
  264. drawTexturedModalRect(k13, k11, j12 + 63, 27, 9, 9);
  265. }
  266. }
  267.  
  268. if (k10 * 2 + 1 < j4)
  269. {
  270. drawTexturedModalRect(k13, k11, j12 + 36, 27, 9, 9);
  271. }
  272.  
  273. if (k10 * 2 + 1 == j4)
  274. {
  275. drawTexturedModalRect(k13, k11, j12 + 45, 27, 9, 9);
  276. }
  277. }
  278.  
  279. if (mc.thePlayer.isInsideOfMaterial(Material.water))
  280. {
  281. int l10 = mc.thePlayer.getAir();
  282. int l11 = (int)Math.ceil(((double)(l10 - 2) * 10D) / 300D);
  283. int k12 = (int)Math.ceil(((double)l10 * 10D) / 300D) - l11;
  284.  
  285. for (int i13 = 0; i13 < l11 + k12; i13++)
  286. {
  287. if (i13 < l11)
  288. {
  289. drawTexturedModalRect(i6 - i13 * 8 - 9, k8, 16, 18, 9, 9);
  290. }
  291. else
  292. {
  293. drawTexturedModalRect(i6 - i13 * 8 - 9, k8, 25, 18, 9, 9);
  294. }
  295. }
  296. }
  297. }
  298.  
  299. GL11.glDisable(GL11.GL_BLEND);
  300. GL11.glEnable(GL12.GL_RESCALE_NORMAL);
  301. RenderHelper.enableGUIStandardItemLighting();
  302.  
  303. for (int k5 = 0; k5 < 9; k5++)
  304. {
  305. int j6 = (i / 2 - 90) + k5 * 20 + 2;
  306. int i7 = j - 16 - 3;
  307. renderInventorySlot(k5, j6, i7, par1);
  308. }
  309.  
  310. RenderHelper.disableStandardItemLighting();
  311. GL11.glDisable(GL12.GL_RESCALE_NORMAL);
  312. }
  313.  
  314. if (mc.thePlayer.getSleepTimer() > 0)
  315. {
  316. GL11.glDisable(GL11.GL_DEPTH_TEST);
  317. GL11.glDisable(GL11.GL_ALPHA_TEST);
  318. int k = mc.thePlayer.getSleepTimer();
  319. float f1 = (float)k / 100F;
  320.  
  321. if (f1 > 1.0F)
  322. {
  323. f1 = 1.0F - (float)(k - 100) / 10F;
  324. }
  325.  
  326. int j1 = (int)(220F * f1) << 24 | 0x101020;
  327. drawRect(0, 0, i, j, j1);
  328. GL11.glEnable(GL11.GL_ALPHA_TEST);
  329. GL11.glEnable(GL11.GL_DEPTH_TEST);
  330. }
  331.  
  332. if (mc.playerController.func_35642_f() && mc.thePlayer.experienceLevel > 0)
  333. {
  334. boolean flag1 = false;
  335. int k1 = flag1 ? 0xffffff : 0x80ff20;
  336. String s = (new StringBuilder()).append("").append(mc.thePlayer.experienceLevel).toString();
  337. int i3 = (i - fontrenderer.getStringWidth(s)) / 2;
  338. int k3 = j - 31 - 4;
  339. fontrenderer.drawString(s, i3 + 1, k3, 0);
  340. fontrenderer.drawString(s, i3 - 1, k3, 0);
  341. fontrenderer.drawString(s, i3, k3 + 1, 0);
  342. fontrenderer.drawString(s, i3, k3 - 1, 0);
  343. fontrenderer.drawString(s, i3, k3, k1);
  344. }
  345.  
  346. if (mc.gameSettings.showDebugInfo)
  347. {
  348. GL11.glPushMatrix();
  349.  
  350. if (Minecraft.hasPaidCheckTime > 0L)
  351. {
  352. GL11.glTranslatef(0.0F, 32F, 0.0F);
  353. }
  354.  
  355. fontrenderer.drawStringWithShadow((new StringBuilder()).append("Minecraft 1.2.5 (").append(mc.debug).append(")").toString(), 2, 2, 0xffffff);
  356. fontrenderer.drawStringWithShadow(mc.debugInfoRenders(), 2, 12, 0xffffff);
  357. fontrenderer.drawStringWithShadow(mc.getEntityDebug(), 2, 22, 0xffffff);
  358. fontrenderer.drawStringWithShadow(mc.debugInfoEntities(), 2, 32, 0xffffff);
  359. fontrenderer.drawStringWithShadow(mc.getWorldProviderName(), 2, 42, 0xffffff);
  360. long l = Runtime.getRuntime().maxMemory();
  361. long l2 = Runtime.getRuntime().totalMemory();
  362. long l3 = Runtime.getRuntime().freeMemory();
  363. long l5 = l2 - l3;
  364. String s1 = (new StringBuilder()).append("Used memory: ").append((l5 * 100L) / l).append("% (").append(l5 / 1024L / 1024L).append("MB) of ").append(l / 1024L / 1024L).append("MB").toString();
  365. drawString(fontrenderer, s1, i - fontrenderer.getStringWidth(s1) - 2, 2, 0xe0e0e0);
  366. s1 = (new StringBuilder()).append("Allocated memory: ").append((l2 * 100L) / l).append("% (").append(l2 / 1024L / 1024L).append("MB)").toString();
  367. drawString(fontrenderer, s1, i - fontrenderer.getStringWidth(s1) - 2, 12, 0xe0e0e0);
  368. drawString(fontrenderer, (new StringBuilder()).append("x: ").append(mc.thePlayer.posX).toString(), 2, 64, 0xe0e0e0);
  369. drawString(fontrenderer, (new StringBuilder()).append("y: ").append(mc.thePlayer.posY).toString(), 2, 72, 0xe0e0e0);
  370. drawString(fontrenderer, (new StringBuilder()).append("z: ").append(mc.thePlayer.posZ).toString(), 2, 80, 0xe0e0e0);
  371. drawString(fontrenderer, (new StringBuilder()).append("f: ").append(MathHelper.floor_double((double)((mc.thePlayer.rotationYaw * 4F) / 360F) + 0.5D) & 3).toString(), 2, 88, 0xe0e0e0);
  372. int l7 = MathHelper.floor_double(mc.thePlayer.posX);
  373. int l8 = MathHelper.floor_double(mc.thePlayer.posY);
  374. int k9 = MathHelper.floor_double(mc.thePlayer.posZ);
  375.  
  376. if (mc.theWorld != null && mc.theWorld.blockExists(l7, l8, k9))
  377. {
  378. Chunk chunk = mc.theWorld.getChunkFromBlockCoords(l7, k9);
  379. drawString(fontrenderer, (new StringBuilder()).append("lc: ").append(chunk.getTopFilledSegment() + 15).append(" b: ").append(chunk.func_48490_a(l7 & 0xf, k9 & 0xf, mc.theWorld.getWorldChunkManager()).biomeName).append(" bl: ").append(chunk.getSavedLightValue(EnumSkyBlock.Block, l7 & 0xf, l8, k9 & 0xf)).append(" sl: ").append(chunk.getSavedLightValue(EnumSkyBlock.Sky, l7 & 0xf, l8, k9 & 0xf)).append(" rl: ").append(chunk.getBlockLightValue(l7 & 0xf, l8, k9 & 0xf, 0)).toString(), 2, 96, 0xe0e0e0);
  380. }
  381.  
  382. if (!mc.theWorld.isRemote)
  383. {
  384. drawString(fontrenderer, (new StringBuilder()).append("Seed: ").append(mc.theWorld.getSeed()).toString(), 2, 112, 0xe0e0e0);
  385. }
  386.  
  387. GL11.glPopMatrix();
  388. }else
  389. fontrenderer.drawStringWithShadow("What's in the cube today?", 2, 2, 0xFF9900);
  390.  
  391. if (recordPlayingUpFor > 0)
  392. {
  393. float f2 = (float)recordPlayingUpFor - par1;
  394. int l1 = (int)((f2 * 256F) / 20F);
  395.  
  396. if (l1 > 255)
  397. {
  398. l1 = 255;
  399. }
  400.  
  401. if (l1 > 0)
  402. {
  403. GL11.glPushMatrix();
  404. GL11.glTranslatef(i / 2, j - 48, 0.0F);
  405. GL11.glEnable(GL11.GL_BLEND);
  406. GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
  407. int j2 = 0xffffff;
  408.  
  409. if (recordIsPlaying)
  410. {
  411. j2 = Color.HSBtoRGB(f2 / 50F, 0.7F, 0.6F) & 0xffffff;
  412. }
  413.  
  414. fontrenderer.drawString(recordPlaying, -fontrenderer.getStringWidth(recordPlaying) / 2, -4, j2 + (l1 << 24));
  415. GL11.glDisable(GL11.GL_BLEND);
  416. GL11.glPopMatrix();
  417. }
  418. }
  419.  
  420. GL11.glEnable(GL11.GL_BLEND);
  421. GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
  422. GL11.glDisable(GL11.GL_ALPHA_TEST);
  423. GL11.glPushMatrix();
  424. GL11.glTranslatef(0.0F, j - 48, 0.0F);
  425. func_50010_a(fontrenderer);
  426. GL11.glPopMatrix();
  427.  
  428. if ((mc.thePlayer instanceof EntityClientPlayerMP) && mc.gameSettings.keyBindPlayerList.pressed)
  429. {
  430. NetClientHandler netclienthandler = ((EntityClientPlayerMP)mc.thePlayer).sendQueue;
  431. java.util.List list = netclienthandler.playerNames;
  432. int k2 = netclienthandler.currentServerMaxPlayers;
  433. int j3 = k2;
  434. int i4 = 1;
  435.  
  436. for (; j3 > 20; j3 = ((k2 + i4) - 1) / i4)
  437. {
  438. i4++;
  439. }
  440.  
  441. int k4 = 300 / i4;
  442.  
  443. if (k4 > 150)
  444. {
  445. k4 = 150;
  446. }
  447.  
  448. int i5 = (i - i4 * k4) / 2;
  449. byte byte0 = 10;
  450. drawRect(i5 - 1, byte0 - 1, i5 + k4 * i4, byte0 + 9 * j3, 0x80000000);
  451.  
  452. for (int k6 = 0; k6 < k2; k6++)
  453. {
  454. int j7 = i5 + (k6 % i4) * k4;
  455. int i8 = byte0 + (k6 / i4) * 9;
  456. drawRect(j7, i8, (j7 + k4) - 1, i8 + 8, 0x20ffffff);
  457. GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
  458. GL11.glEnable(GL11.GL_ALPHA_TEST);
  459.  
  460. if (k6 >= list.size())
  461. {
  462. continue;
  463. }
  464.  
  465. GuiPlayerInfo guiplayerinfo = (GuiPlayerInfo)list.get(k6);
  466. fontrenderer.drawStringWithShadow(guiplayerinfo.name, j7, i8, 0xffffff);
  467. mc.renderEngine.bindTexture(mc.renderEngine.getTexture("/gui/icons.png"));
  468. int l9 = 0;
  469. byte byte1 = 0;
  470.  
  471. if (guiplayerinfo.responseTime < 0)
  472. {
  473. byte1 = 5;
  474. }
  475. else if (guiplayerinfo.responseTime < 150)
  476. {
  477. byte1 = 0;
  478. }
  479. else if (guiplayerinfo.responseTime < 300)
  480. {
  481. byte1 = 1;
  482. }
  483. else if (guiplayerinfo.responseTime < 600)
  484. {
  485. byte1 = 2;
  486. }
  487. else if (guiplayerinfo.responseTime < 1000)
  488. {
  489. byte1 = 3;
  490. }
  491. else
  492. {
  493. byte1 = 4;
  494. }
  495.  
  496. zLevel += 100F;
  497. drawTexturedModalRect((j7 + k4) - 12, i8, 0 + l9 * 10, 176 + byte1 * 8, 10, 8);
  498. zLevel -= 100F;
  499. }
  500. }
  501.  
  502. GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
  503. GL11.glDisable(GL11.GL_LIGHTING);
  504. GL11.glEnable(GL11.GL_ALPHA_TEST);
  505. }
  506.  
  507. private void func_50010_a(FontRenderer par1FontRenderer)
  508. {
  509. byte byte0 = 10;
  510. boolean flag = false;
  511. int i = 0;
  512. int j = chatMessageList.size();
  513.  
  514. if (j <= 0)
  515. {
  516. return;
  517. }
  518.  
  519. if (isChatOpen())
  520. {
  521. byte0 = 20;
  522. flag = true;
  523. }
  524.  
  525. for (int k = 0; k + field_50017_n < chatMessageList.size() && k < byte0; k++)
  526. {
  527. if (((ChatLine)chatMessageList.get(k)).updateCounter >= 200 && !flag)
  528. {
  529. continue;
  530. }
  531.  
  532. ChatLine chatline = (ChatLine)chatMessageList.get(k + field_50017_n);
  533. double d = (double)chatline.updateCounter / 200D;
  534. d = 1.0D - d;
  535. d *= 10D;
  536.  
  537. if (d < 0.0D)
  538. {
  539. d = 0.0D;
  540. }
  541.  
  542. if (d > 1.0D)
  543. {
  544. d = 1.0D;
  545. }
  546.  
  547. d *= d;
  548. int l1 = (int)(255D * d);
  549.  
  550. if (flag)
  551. {
  552. l1 = 255;
  553. }
  554.  
  555. i++;
  556.  
  557. if (l1 > 2)
  558. {
  559. byte byte1 = 3;
  560. int j2 = -k * 9;
  561. String s = chatline.message;
  562. drawRect(byte1, j2 - 1, byte1 + 320 + 4, j2 + 8, l1 / 2 << 24);
  563. GL11.glEnable(GL11.GL_BLEND);
  564. par1FontRenderer.drawStringWithShadow(s, byte1, j2, 0xffffff + (l1 << 24));
  565. }
  566. }
  567.  
  568. if (flag)
  569. {
  570. GL11.glTranslatef(0.0F, par1FontRenderer.FONT_HEIGHT, 0.0F);
  571. int l = j * par1FontRenderer.FONT_HEIGHT + j;
  572. int i1 = i * par1FontRenderer.FONT_HEIGHT + i;
  573. int j1 = (field_50017_n * i1) / j;
  574. int k1 = (i1 * i1) / l;
  575.  
  576. if (l != i1)
  577. {
  578. char c = j1 <= 0 ? '`' : '\252';
  579. int i2 = field_50018_o ? 0xcc3333 : 0x3333aa;
  580. drawRect(0, -j1, 2, -j1 - k1, i2 + (c << 24));
  581. drawRect(2, -j1, 1, -j1 - k1, 0xcccccc + (c << 24));
  582. }
  583. }
  584. }
  585.  
  586. /**
  587. * Renders dragon's (boss) health on the HUD
  588. */
  589. private void renderBossHealth()
  590. {
  591. if (RenderDragon.entityDragon == null)
  592. {
  593. return;
  594. }
  595.  
  596. EntityDragon entitydragon = RenderDragon.entityDragon;
  597. RenderDragon.entityDragon = null;
  598. FontRenderer fontrenderer = mc.fontRenderer;
  599. ScaledResolution scaledresolution = new ScaledResolution(mc.gameSettings, mc.displayWidth, mc.displayHeight);
  600. int i = scaledresolution.getScaledWidth();
  601. char c = '\266';
  602. int j = i / 2 - c / 2;
  603. int k = (int)(((float)entitydragon.func_41010_ax() / (float)entitydragon.getMaxHealth()) * (float)(c + 1));
  604. byte byte0 = 12;
  605. drawTexturedModalRect(j, byte0, 0, 74, c, 5);
  606. drawTexturedModalRect(j, byte0, 0, 74, c, 5);
  607.  
  608. if (k > 0)
  609. {
  610. drawTexturedModalRect(j, byte0, 0, 79, k, 5);
  611. }
  612.  
  613. String s = "Boss health";
  614. fontrenderer.drawStringWithShadow(s, i / 2 - fontrenderer.getStringWidth(s) / 2, byte0 - 10, 0xff00ff);
  615. GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
  616. GL11.glBindTexture(GL11.GL_TEXTURE_2D, mc.renderEngine.getTexture("/gui/icons.png"));
  617. }
  618.  
  619. private void renderPumpkinBlur(int par1, int par2)
  620. {
  621. GL11.glDisable(GL11.GL_DEPTH_TEST);
  622. GL11.glDepthMask(false);
  623. GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
  624. GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
  625. GL11.glDisable(GL11.GL_ALPHA_TEST);
  626. GL11.glBindTexture(GL11.GL_TEXTURE_2D, mc.renderEngine.getTexture("%blur%/misc/pumpkinblur.png"));
  627. Tessellator tessellator = Tessellator.instance;
  628. tessellator.startDrawingQuads();
  629. tessellator.addVertexWithUV(0.0D, par2, -90D, 0.0D, 1.0D);
  630. tessellator.addVertexWithUV(par1, par2, -90D, 1.0D, 1.0D);
  631. tessellator.addVertexWithUV(par1, 0.0D, -90D, 1.0D, 0.0D);
  632. tessellator.addVertexWithUV(0.0D, 0.0D, -90D, 0.0D, 0.0D);
  633. tessellator.draw();
  634. GL11.glDepthMask(true);
  635. GL11.glEnable(GL11.GL_DEPTH_TEST);
  636. GL11.glEnable(GL11.GL_ALPHA_TEST);
  637. GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
  638. }
  639.  
  640. /**
  641. * Renders the vignette. Args: vignetteBrightness, width, height
  642. */
  643. private void renderVignette(float par1, int par2, int par3)
  644. {
  645. par1 = 1.0F - par1;
  646.  
  647. if (par1 < 0.0F)
  648. {
  649. par1 = 0.0F;
  650. }
  651.  
  652. if (par1 > 1.0F)
  653. {
  654. par1 = 1.0F;
  655. }
  656.  
  657. prevVignetteBrightness += (double)(par1 - prevVignetteBrightness) * 0.01D;
  658. GL11.glDisable(GL11.GL_DEPTH_TEST);
  659. GL11.glDepthMask(false);
  660. GL11.glBlendFunc(GL11.GL_ZERO, GL11.GL_ONE_MINUS_SRC_COLOR);
  661. GL11.glColor4f(prevVignetteBrightness, prevVignetteBrightness, prevVignetteBrightness, 1.0F);
  662. GL11.glBindTexture(GL11.GL_TEXTURE_2D, mc.renderEngine.getTexture("%blur%/misc/vignette.png"));
  663. Tessellator tessellator = Tessellator.instance;
  664. tessellator.startDrawingQuads();
  665. tessellator.addVertexWithUV(0.0D, par3, -90D, 0.0D, 1.0D);
  666. tessellator.addVertexWithUV(par2, par3, -90D, 1.0D, 1.0D);
  667. tessellator.addVertexWithUV(par2, 0.0D, -90D, 1.0D, 0.0D);
  668. tessellator.addVertexWithUV(0.0D, 0.0D, -90D, 0.0D, 0.0D);
  669. tessellator.draw();
  670. GL11.glDepthMask(true);
  671. GL11.glEnable(GL11.GL_DEPTH_TEST);
  672. GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
  673. GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
  674. }
  675.  
  676. /**
  677. * Renders the portal overlay. Args: portalStrength, width, height
  678. */
  679. private void renderPortalOverlay(float par1, int par2, int par3)
  680. {
  681. if (par1 < 1.0F)
  682. {
  683. par1 *= par1;
  684. par1 *= par1;
  685. par1 = par1 * 0.8F + 0.2F;
  686. }
  687.  
  688. GL11.glDisable(GL11.GL_ALPHA_TEST);
  689. GL11.glDisable(GL11.GL_DEPTH_TEST);
  690. GL11.glDepthMask(false);
  691. GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
  692. GL11.glColor4f(1.0F, 1.0F, 1.0F, par1);
  693. GL11.glBindTexture(GL11.GL_TEXTURE_2D, mc.renderEngine.getTexture("/terrain.png"));
  694. float f = (float)(Block.portal.blockIndexInTexture % 16) / 16F;
  695. float f1 = (float)(Block.portal.blockIndexInTexture / 16) / 16F;
  696. float f2 = (float)(Block.portal.blockIndexInTexture % 16 + 1) / 16F;
  697. float f3 = (float)(Block.portal.blockIndexInTexture / 16 + 1) / 16F;
  698. Tessellator tessellator = Tessellator.instance;
  699. tessellator.startDrawingQuads();
  700. tessellator.addVertexWithUV(0.0D, par3, -90D, f, f3);
  701. tessellator.addVertexWithUV(par2, par3, -90D, f2, f3);
  702. tessellator.addVertexWithUV(par2, 0.0D, -90D, f2, f1);
  703. tessellator.addVertexWithUV(0.0D, 0.0D, -90D, f, f1);
  704. tessellator.draw();
  705. GL11.glDepthMask(true);
  706. GL11.glEnable(GL11.GL_DEPTH_TEST);
  707. GL11.glEnable(GL11.GL_ALPHA_TEST);
  708. GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
  709. }
  710.  
  711. /**
  712. * Renders the specified item of the inventory slot at the specified location. Args: slot, x, y, partialTick
  713. */
  714. private void renderInventorySlot(int par1, int par2, int par3, float par4)
  715. {
  716. ItemStack itemstack = mc.thePlayer.inventory.mainInventory[par1];
  717.  
  718. if (itemstack == null)
  719. {
  720. return;
  721. }
  722.  
  723. float f = (float)itemstack.animationsToGo - par4;
  724.  
  725. if (f > 0.0F)
  726. {
  727. GL11.glPushMatrix();
  728. float f1 = 1.0F + f / 5F;
  729. GL11.glTranslatef(par2 + 8, par3 + 12, 0.0F);
  730. GL11.glScalef(1.0F / f1, (f1 + 1.0F) / 2.0F, 1.0F);
  731. GL11.glTranslatef(-(par2 + 8), -(par3 + 12), 0.0F);
  732. }
  733.  
  734. itemRenderer.renderItemIntoGUI(mc.fontRenderer, mc.renderEngine, itemstack, par2, par3);
  735.  
  736. if (f > 0.0F)
  737. {
  738. GL11.glPopMatrix();
  739. }
  740.  
  741. itemRenderer.renderItemOverlayIntoGUI(mc.fontRenderer, mc.renderEngine, itemstack, par2, par3);
  742. }
  743.  
  744. /**
  745. * The update tick for the ingame UI
  746. */
  747. public void updateTick()
  748. {
  749. if (recordPlayingUpFor > 0)
  750. {
  751. recordPlayingUpFor--;
  752. }
  753.  
  754. updateCounter++;
  755.  
  756. for (int i = 0; i < chatMessageList.size(); i++)
  757. {
  758. ((ChatLine)chatMessageList.get(i)).updateCounter++;
  759. }
  760. }
  761.  
  762. /**
  763. * Clear all chat messages.
  764. */
  765. public void clearChatMessages()
  766. {
  767. chatMessageList.clear();
  768. field_50016_f.clear();
  769. }
  770.  
  771. /**
  772. * Adds a chat message to the list of chat messages. Args: msg
  773. */
  774. public void addChatMessage(String par1Str)
  775. {
  776. boolean flag = isChatOpen();
  777. boolean flag1 = true;
  778. String s;
  779.  
  780. for (Iterator iterator = mc.fontRenderer.func_50108_c(par1Str, 320).iterator(); iterator.hasNext(); chatMessageList.add(0, new ChatLine(s)))
  781. {
  782. s = (String)iterator.next();
  783.  
  784. if (flag && field_50017_n > 0)
  785. {
  786. field_50018_o = true;
  787. func_50011_a(1);
  788. }
  789.  
  790. if (!flag1)
  791. {
  792. s = (new StringBuilder()).append(" ").append(s).toString();
  793. }
  794.  
  795. flag1 = false;
  796. }
  797.  
  798. for (; chatMessageList.size() > 100; chatMessageList.remove(chatMessageList.size() - 1)) { }
  799. }
  800.  
  801. public java.util.List func_50013_c()
  802. {
  803. return field_50016_f;
  804. }
  805.  
  806. public void func_50014_d()
  807. {
  808. field_50017_n = 0;
  809. field_50018_o = false;
  810. }
  811.  
  812. public void func_50011_a(int par1)
  813. {
  814. field_50017_n += par1;
  815. int i = chatMessageList.size();
  816.  
  817. if (field_50017_n > i - 20)
  818. {
  819. field_50017_n = i - 20;
  820. }
  821.  
  822. if (field_50017_n <= 0)
  823. {
  824. field_50017_n = 0;
  825. field_50018_o = false;
  826. }
  827. }
  828.  
  829. public ChatClickData func_50012_a(int par1, int par2)
  830. {
  831. if (!isChatOpen())
  832. {
  833. return null;
  834. }
  835.  
  836. ScaledResolution scaledresolution = new ScaledResolution(mc.gameSettings, mc.displayWidth, mc.displayHeight);
  837. par2 = par2 / scaledresolution.scaleFactor - 40;
  838. par1 = par1 / scaledresolution.scaleFactor - 3;
  839.  
  840. if (par1 < 0 || par2 < 0)
  841. {
  842. return null;
  843. }
  844.  
  845. int i = Math.min(20, chatMessageList.size());
  846.  
  847. if (par1 <= 320 && par2 < mc.fontRenderer.FONT_HEIGHT * i + i)
  848. {
  849. int j = par2 / (mc.fontRenderer.FONT_HEIGHT + 1) + field_50017_n;
  850. return new ChatClickData(mc.fontRenderer, (ChatLine)chatMessageList.get(j), par1, (par2 - (j - field_50017_n) * mc.fontRenderer.FONT_HEIGHT) + j);
  851. }
  852. else
  853. {
  854. return null;
  855. }
  856. }
  857.  
  858. public void setRecordPlayingMessage(String par1Str)
  859. {
  860. recordPlaying = (new StringBuilder()).append("Now playing: ").append(par1Str).toString();
  861. recordPlayingUpFor = 60;
  862. recordIsPlaying = true;
  863. }
  864.  
  865. /**
  866. * Return true if chat gui is open
  867. */
  868. public boolean isChatOpen()
  869. {
  870. return mc.currentScreen instanceof GuiChat;
  871. }
  872.  
  873. /**
  874. * Adds the string to chat message after translate it with the language file.
  875. */
  876. public void addChatMessageTranslate(String par1Str)
  877. {
  878. StringTranslate stringtranslate = StringTranslate.getInstance();
  879. String s = stringtranslate.translateKey(par1Str);
  880. addChatMessage(s);
  881. }
  882. }
Add Comment
Please, Sign In to add comment