Advertisement
Guest User

Untitled

a guest
Jul 16th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.67 KB | None | 0 0
  1. package net.minecraft.client.gui;
  2.  
  3. import com.google.common.collect.Lists;
  4. import java.util.Iterator;
  5. import java.util.List;
  6. import net.minecraft.client.Minecraft;
  7. import net.minecraft.client.renderer.GlStateManager;
  8. import net.minecraft.entity.player.EntityPlayer;
  9. import net.minecraft.util.ChatComponentText;
  10. import net.minecraft.util.IChatComponent;
  11. import net.minecraft.util.MathHelper;
  12. import org.apache.logging.log4j.LogManager;
  13. import org.apache.logging.log4j.Logger;
  14.  
  15. public class GuiNewChat extends Gui
  16. {
  17. private static final Logger logger = LogManager.getLogger();
  18. private final Minecraft mc;
  19.  
  20. /** A list of messages previously sent through the chat GUI */
  21. private final List sentMessages = Lists.newArrayList();
  22.  
  23. /** Chat lines to be displayed in the chat box */
  24. private final List chatLines = Lists.newArrayList();
  25. private final List field_146253_i = Lists.newArrayList();
  26. private int scrollPos;
  27. private boolean isScrolled;
  28. private static final String __OBFID = "CL_00000669";
  29.  
  30. public GuiNewChat(Minecraft mcIn)
  31. {
  32. this.mc = mcIn;
  33. }
  34.  
  35. public void drawChat(int p_146230_1_)
  36. {
  37. if (this.mc.gameSettings.chatVisibility != EntityPlayer.EnumChatVisibility.HIDDEN)
  38. {
  39. int var2 = this.getLineCount();
  40. boolean var3 = false;
  41. int var4 = 0;
  42. int var5 = this.field_146253_i.size();
  43. float var6 = this.mc.gameSettings.chatOpacity * 0.9F + 0.1F;
  44.  
  45. if (var5 > 0)
  46. {
  47. if (this.getChatOpen())
  48. {
  49. var3 = true;
  50. }
  51.  
  52. float var7 = this.getChatScale();
  53. int var8 = MathHelper.ceiling_float_int((float)this.getChatWidth() / var7);
  54. GlStateManager.pushMatrix();
  55. GlStateManager.translate(2.0F, 20.0F, 0.0F);
  56. GlStateManager.scale(var7, var7, 1.0F);
  57. int var9;
  58. int var11;
  59. int var14;
  60.  
  61. for (var9 = 0; var9 + this.scrollPos < this.field_146253_i.size() && var9 < var2; ++var9)
  62. {
  63. ChatLine var10 = (ChatLine)this.field_146253_i.get(var9 + this.scrollPos);
  64.  
  65. if (var10 != null)
  66. {
  67. var11 = p_146230_1_ - var10.getUpdatedCounter();
  68.  
  69. if (var11 < 200 || var3)
  70. {
  71. double var12 = (double)var11 / 200.0D;
  72. var12 = 1.0D - var12;
  73. var12 *= 10.0D;
  74. var12 = MathHelper.clamp_double(var12, 0.0D, 1.0D);
  75. var12 *= var12;
  76. var14 = (int)(255.0D * var12);
  77.  
  78. if (var3)
  79. {
  80. var14 = 255;
  81. }
  82.  
  83. var14 = (int)((float)var14 * var6);
  84. ++var4;
  85.  
  86. if (var14 > 3)
  87. {
  88. byte var15 = 0;
  89. int var16 = -var9 * 9;
  90. drawRect(var15, var16 - 9, var15 + var8 + 4, var16, var14 / 2 << 24);
  91. String var17 = var10.getChatComponent().getFormattedText();
  92. GlStateManager.enableBlend();
  93. this.mc.fontRendererObj.func_175063_a(var17, (float)var15, (float)(var16 - 8), 16777215 + (var14 << 24));
  94. this.mc.fontRendererObj.func_175063_a("§b✐", (float)var15 + 317, (float)(var16 - 8), 16777215 + (var14 << 24));
  95. GlStateManager.disableAlpha();
  96. GlStateManager.disableBlend();
  97. }
  98. }
  99. }
  100. }
  101.  
  102. if (var3)
  103. {
  104. var9 = this.mc.fontRendererObj.FONT_HEIGHT;
  105. GlStateManager.translate(-3.0F, 0.0F, 0.0F);
  106. int var18 = var5 * var9 + var5;
  107. var11 = var4 * var9 + var4;
  108. int var19 = this.scrollPos * var11 / var5;
  109. int var13 = var11 * var11 / var18;
  110.  
  111. if (var18 != var11)
  112. {
  113. var14 = var19 > 0 ? 170 : 96;
  114. int var20 = this.isScrolled ? 13382451 : 3355562;
  115. drawRect(0, -var19, 2, -var19 - var13, var20 + (var14 << 24));
  116. drawRect(2, -var19, 1, -var19 - var13, 13421772 + (var14 << 24));
  117. }
  118. }
  119.  
  120. GlStateManager.popMatrix();
  121. }
  122. }
  123. }
  124.  
  125. /**
  126. * Clears the chat.
  127. */
  128. public void clearChatMessages()
  129. {
  130. this.field_146253_i.clear();
  131. this.chatLines.clear();
  132. this.sentMessages.clear();
  133. }
  134.  
  135. public void printChatMessage(IChatComponent p_146227_1_)
  136. {
  137. this.printChatMessageWithOptionalDeletion(p_146227_1_, 0);
  138. }
  139.  
  140. /**
  141. * prints the ChatComponent to Chat. If the ID is not 0, deletes an existing Chat Line of that ID from the GUI
  142. */
  143. public void printChatMessageWithOptionalDeletion(IChatComponent p_146234_1_, int p_146234_2_)
  144. {
  145. this.setChatLine(p_146234_1_, p_146234_2_, this.mc.ingameGUI.getUpdateCounter(), false);
  146. logger.info("[CHAT] " + p_146234_1_.getUnformattedText());
  147. }
  148.  
  149. private void setChatLine(IChatComponent p_146237_1_, int p_146237_2_, int p_146237_3_, boolean p_146237_4_)
  150. {
  151. if (p_146237_2_ != 0)
  152. {
  153. this.deleteChatLine(p_146237_2_);
  154. }
  155.  
  156. int var5 = MathHelper.floor_float((float)this.getChatWidth() / this.getChatScale());
  157. List var6 = GuiUtilRenderComponents.func_178908_a(p_146237_1_, var5, this.mc.fontRendererObj, false, false);
  158. boolean var7 = this.getChatOpen();
  159. IChatComponent var9;
  160.  
  161. for (Iterator var8 = var6.iterator(); var8.hasNext(); this.field_146253_i.add(0, new ChatLine(p_146237_3_, var9, p_146237_2_)))
  162. {
  163. var9 = (IChatComponent)var8.next();
  164.  
  165. if (var7 && this.scrollPos > 0)
  166. {
  167. this.isScrolled = true;
  168. this.scroll(1);
  169. }
  170. }
  171.  
  172. while (this.field_146253_i.size() > 100)
  173. {
  174. this.field_146253_i.remove(this.field_146253_i.size() - 1);
  175. }
  176.  
  177. if (!p_146237_4_)
  178. {
  179. this.chatLines.add(0, new ChatLine(p_146237_3_, p_146237_1_, p_146237_2_));
  180.  
  181. while (this.chatLines.size() > 100)
  182. {
  183. this.chatLines.remove(this.chatLines.size() - 1);
  184. }
  185. }
  186. }
  187.  
  188. public void refreshChat()
  189. {
  190. this.field_146253_i.clear();
  191. this.resetScroll();
  192.  
  193. for (int var1 = this.chatLines.size() - 1; var1 >= 0; --var1)
  194. {
  195. ChatLine var2 = (ChatLine)this.chatLines.get(var1);
  196. this.setChatLine(var2.getChatComponent(), var2.getChatLineID(), var2.getUpdatedCounter(), true);
  197. }
  198. }
  199.  
  200. /**
  201. * Gets the list of messages previously sent through the chat GUI
  202. */
  203. public List getSentMessages()
  204. {
  205. return this.sentMessages;
  206. }
  207.  
  208. /**
  209. * Adds this string to the list of sent messages, for recall using the up/down arrow keys
  210. */
  211. public void addToSentMessages(String p_146239_1_)
  212. {
  213. if (this.sentMessages.isEmpty() || !((String)this.sentMessages.get(this.sentMessages.size() - 1)).equals(p_146239_1_))
  214. {
  215. this.sentMessages.add(p_146239_1_);
  216. }
  217. }
  218.  
  219. /**
  220. * Resets the chat scroll (executed when the GUI is closed, among others)
  221. */
  222. public void resetScroll()
  223. {
  224. this.scrollPos = 0;
  225. this.isScrolled = false;
  226. }
  227.  
  228. /**
  229. * Scrolls the chat by the given number of lines.
  230. */
  231. public void scroll(int p_146229_1_)
  232. {
  233. this.scrollPos += p_146229_1_;
  234. int var2 = this.field_146253_i.size();
  235.  
  236. if (this.scrollPos > var2 - this.getLineCount())
  237. {
  238. this.scrollPos = var2 - this.getLineCount();
  239. }
  240.  
  241. if (this.scrollPos <= 0)
  242. {
  243. this.scrollPos = 0;
  244. this.isScrolled = false;
  245. }
  246. }
  247.  
  248. /**
  249. * Gets the chat component under the mouse
  250. */
  251. public IChatComponent getChatComponent(int p_146236_1_, int p_146236_2_)
  252. {
  253. if (!this.getChatOpen())
  254. {
  255. return null;
  256. }
  257. else
  258. {
  259. ScaledResolution var3 = new ScaledResolution(this.mc, this.mc.displayWidth, this.mc.displayHeight);
  260. int var4 = var3.getScaleFactor();
  261. float var5 = this.getChatScale();
  262. int var6 = p_146236_1_ / var4 - 3;
  263. int var7 = p_146236_2_ / var4 - 27;
  264. var6 = MathHelper.floor_float((float)var6 / var5);
  265. var7 = MathHelper.floor_float((float)var7 / var5);
  266.  
  267. if (var6 >= 0 && var7 >= 0)
  268. {
  269. int var8 = Math.min(this.getLineCount(), this.field_146253_i.size());
  270.  
  271. if (var6 <= MathHelper.floor_float((float)this.getChatWidth() / this.getChatScale()) && var7 < this.mc.fontRendererObj.FONT_HEIGHT * var8 + var8)
  272. {
  273. int var9 = var7 / this.mc.fontRendererObj.FONT_HEIGHT + this.scrollPos;
  274.  
  275. if (var9 >= 0 && var9 < this.field_146253_i.size())
  276. {
  277. ChatLine var10 = (ChatLine)this.field_146253_i.get(var9);
  278. int var11 = 0;
  279. Iterator var12 = var10.getChatComponent().iterator();
  280.  
  281. while (var12.hasNext())
  282. {
  283. IChatComponent var13 = (IChatComponent)var12.next();
  284.  
  285. if (var13 instanceof ChatComponentText)
  286. {
  287. var11 += this.mc.fontRendererObj.getStringWidth(GuiUtilRenderComponents.func_178909_a(((ChatComponentText)var13).getChatComponentText_TextValue(), false));
  288.  
  289. if (var11 > var6)
  290. {
  291. return var13;
  292. }
  293. }
  294. }
  295. }
  296.  
  297. return null;
  298. }
  299. else
  300. {
  301. return null;
  302. }
  303. }
  304. else
  305. {
  306. return null;
  307. }
  308. }
  309. }
  310.  
  311. /**
  312. * Returns true if the chat GUI is open
  313. */
  314. public boolean getChatOpen()
  315. {
  316. return this.mc.currentScreen instanceof GuiChat;
  317. }
  318.  
  319. /**
  320. * finds and deletes a Chat line by ID
  321. */
  322. public void deleteChatLine(int p_146242_1_)
  323. {
  324. Iterator var2 = this.field_146253_i.iterator();
  325. ChatLine var3;
  326.  
  327. while (var2.hasNext())
  328. {
  329. var3 = (ChatLine)var2.next();
  330.  
  331. if (var3.getChatLineID() == p_146242_1_)
  332. {
  333. var2.remove();
  334. }
  335. }
  336.  
  337. var2 = this.chatLines.iterator();
  338.  
  339. while (var2.hasNext())
  340. {
  341. var3 = (ChatLine)var2.next();
  342.  
  343. if (var3.getChatLineID() == p_146242_1_)
  344. {
  345. var2.remove();
  346. break;
  347. }
  348. }
  349. }
  350.  
  351. public int getChatWidth()
  352. {
  353. return calculateChatboxWidth(this.mc.gameSettings.chatWidth);
  354. }
  355.  
  356. public int getChatHeight()
  357. {
  358. return calculateChatboxHeight(this.getChatOpen() ? this.mc.gameSettings.chatHeightFocused : this.mc.gameSettings.chatHeightUnfocused);
  359. }
  360.  
  361. /**
  362. * Returns the chatscale from mc.gameSettings.chatScale
  363. */
  364. public float getChatScale()
  365. {
  366. return this.mc.gameSettings.chatScale;
  367. }
  368.  
  369. public static int calculateChatboxWidth(float p_146233_0_)
  370. {
  371. short var1 = 320;
  372. byte var2 = 40;
  373. return MathHelper.floor_float(p_146233_0_ * (float)(var1 - var2) + (float)var2);
  374. }
  375.  
  376. public static int calculateChatboxHeight(float p_146243_0_)
  377. {
  378. short var1 = 180;
  379. byte var2 = 20;
  380. return MathHelper.floor_float(p_146243_0_ * (float)(var1 - var2) + (float)var2);
  381. }
  382.  
  383. public int getLineCount()
  384. {
  385. return this.getChatHeight() / 9;
  386. }
  387. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement