Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.minecraft.client.gui;
- import com.google.common.collect.Lists;
- import java.util.Iterator;
- import java.util.List;
- import net.minecraft.client.Minecraft;
- import net.minecraft.client.renderer.GlStateManager;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.util.ChatComponentText;
- import net.minecraft.util.IChatComponent;
- import net.minecraft.util.MathHelper;
- import org.apache.logging.log4j.LogManager;
- import org.apache.logging.log4j.Logger;
- public class GuiNewChat extends Gui
- {
- private static final Logger logger = LogManager.getLogger();
- private final Minecraft mc;
- /** A list of messages previously sent through the chat GUI */
- private final List sentMessages = Lists.newArrayList();
- /** Chat lines to be displayed in the chat box */
- private final List chatLines = Lists.newArrayList();
- private final List field_146253_i = Lists.newArrayList();
- private int scrollPos;
- private boolean isScrolled;
- private static final String __OBFID = "CL_00000669";
- public GuiNewChat(Minecraft mcIn)
- {
- this.mc = mcIn;
- }
- public void drawChat(int p_146230_1_)
- {
- if (this.mc.gameSettings.chatVisibility != EntityPlayer.EnumChatVisibility.HIDDEN)
- {
- int var2 = this.getLineCount();
- boolean var3 = false;
- int var4 = 0;
- int var5 = this.field_146253_i.size();
- float var6 = this.mc.gameSettings.chatOpacity * 0.9F + 0.1F;
- if (var5 > 0)
- {
- if (this.getChatOpen())
- {
- var3 = true;
- }
- float var7 = this.getChatScale();
- int var8 = MathHelper.ceiling_float_int((float)this.getChatWidth() / var7);
- GlStateManager.pushMatrix();
- GlStateManager.translate(2.0F, 20.0F, 0.0F);
- GlStateManager.scale(var7, var7, 1.0F);
- int var9;
- int var11;
- int var14;
- for (var9 = 0; var9 + this.scrollPos < this.field_146253_i.size() && var9 < var2; ++var9)
- {
- ChatLine var10 = (ChatLine)this.field_146253_i.get(var9 + this.scrollPos);
- if (var10 != null)
- {
- var11 = p_146230_1_ - var10.getUpdatedCounter();
- if (var11 < 200 || var3)
- {
- double var12 = (double)var11 / 200.0D;
- var12 = 1.0D - var12;
- var12 *= 10.0D;
- var12 = MathHelper.clamp_double(var12, 0.0D, 1.0D);
- var12 *= var12;
- var14 = (int)(255.0D * var12);
- if (var3)
- {
- var14 = 255;
- }
- var14 = (int)((float)var14 * var6);
- ++var4;
- if (var14 > 3)
- {
- byte var15 = 0;
- int var16 = -var9 * 9;
- drawRect(var15, var16 - 9, var15 + var8 + 4, var16, var14 / 2 << 24);
- String var17 = var10.getChatComponent().getFormattedText();
- GlStateManager.enableBlend();
- this.mc.fontRendererObj.func_175063_a(var17, (float)var15, (float)(var16 - 8), 16777215 + (var14 << 24));
- this.mc.fontRendererObj.func_175063_a("§b✐", (float)var15 + 317, (float)(var16 - 8), 16777215 + (var14 << 24));
- GlStateManager.disableAlpha();
- GlStateManager.disableBlend();
- }
- }
- }
- }
- if (var3)
- {
- var9 = this.mc.fontRendererObj.FONT_HEIGHT;
- GlStateManager.translate(-3.0F, 0.0F, 0.0F);
- int var18 = var5 * var9 + var5;
- var11 = var4 * var9 + var4;
- int var19 = this.scrollPos * var11 / var5;
- int var13 = var11 * var11 / var18;
- if (var18 != var11)
- {
- var14 = var19 > 0 ? 170 : 96;
- int var20 = this.isScrolled ? 13382451 : 3355562;
- drawRect(0, -var19, 2, -var19 - var13, var20 + (var14 << 24));
- drawRect(2, -var19, 1, -var19 - var13, 13421772 + (var14 << 24));
- }
- }
- GlStateManager.popMatrix();
- }
- }
- }
- /**
- * Clears the chat.
- */
- public void clearChatMessages()
- {
- this.field_146253_i.clear();
- this.chatLines.clear();
- this.sentMessages.clear();
- }
- public void printChatMessage(IChatComponent p_146227_1_)
- {
- this.printChatMessageWithOptionalDeletion(p_146227_1_, 0);
- }
- /**
- * prints the ChatComponent to Chat. If the ID is not 0, deletes an existing Chat Line of that ID from the GUI
- */
- public void printChatMessageWithOptionalDeletion(IChatComponent p_146234_1_, int p_146234_2_)
- {
- this.setChatLine(p_146234_1_, p_146234_2_, this.mc.ingameGUI.getUpdateCounter(), false);
- logger.info("[CHAT] " + p_146234_1_.getUnformattedText());
- }
- private void setChatLine(IChatComponent p_146237_1_, int p_146237_2_, int p_146237_3_, boolean p_146237_4_)
- {
- if (p_146237_2_ != 0)
- {
- this.deleteChatLine(p_146237_2_);
- }
- int var5 = MathHelper.floor_float((float)this.getChatWidth() / this.getChatScale());
- List var6 = GuiUtilRenderComponents.func_178908_a(p_146237_1_, var5, this.mc.fontRendererObj, false, false);
- boolean var7 = this.getChatOpen();
- IChatComponent var9;
- for (Iterator var8 = var6.iterator(); var8.hasNext(); this.field_146253_i.add(0, new ChatLine(p_146237_3_, var9, p_146237_2_)))
- {
- var9 = (IChatComponent)var8.next();
- if (var7 && this.scrollPos > 0)
- {
- this.isScrolled = true;
- this.scroll(1);
- }
- }
- while (this.field_146253_i.size() > 100)
- {
- this.field_146253_i.remove(this.field_146253_i.size() - 1);
- }
- if (!p_146237_4_)
- {
- this.chatLines.add(0, new ChatLine(p_146237_3_, p_146237_1_, p_146237_2_));
- while (this.chatLines.size() > 100)
- {
- this.chatLines.remove(this.chatLines.size() - 1);
- }
- }
- }
- public void refreshChat()
- {
- this.field_146253_i.clear();
- this.resetScroll();
- for (int var1 = this.chatLines.size() - 1; var1 >= 0; --var1)
- {
- ChatLine var2 = (ChatLine)this.chatLines.get(var1);
- this.setChatLine(var2.getChatComponent(), var2.getChatLineID(), var2.getUpdatedCounter(), true);
- }
- }
- /**
- * Gets the list of messages previously sent through the chat GUI
- */
- public List getSentMessages()
- {
- return this.sentMessages;
- }
- /**
- * Adds this string to the list of sent messages, for recall using the up/down arrow keys
- */
- public void addToSentMessages(String p_146239_1_)
- {
- if (this.sentMessages.isEmpty() || !((String)this.sentMessages.get(this.sentMessages.size() - 1)).equals(p_146239_1_))
- {
- this.sentMessages.add(p_146239_1_);
- }
- }
- /**
- * Resets the chat scroll (executed when the GUI is closed, among others)
- */
- public void resetScroll()
- {
- this.scrollPos = 0;
- this.isScrolled = false;
- }
- /**
- * Scrolls the chat by the given number of lines.
- */
- public void scroll(int p_146229_1_)
- {
- this.scrollPos += p_146229_1_;
- int var2 = this.field_146253_i.size();
- if (this.scrollPos > var2 - this.getLineCount())
- {
- this.scrollPos = var2 - this.getLineCount();
- }
- if (this.scrollPos <= 0)
- {
- this.scrollPos = 0;
- this.isScrolled = false;
- }
- }
- /**
- * Gets the chat component under the mouse
- */
- public IChatComponent getChatComponent(int p_146236_1_, int p_146236_2_)
- {
- if (!this.getChatOpen())
- {
- return null;
- }
- else
- {
- ScaledResolution var3 = new ScaledResolution(this.mc, this.mc.displayWidth, this.mc.displayHeight);
- int var4 = var3.getScaleFactor();
- float var5 = this.getChatScale();
- int var6 = p_146236_1_ / var4 - 3;
- int var7 = p_146236_2_ / var4 - 27;
- var6 = MathHelper.floor_float((float)var6 / var5);
- var7 = MathHelper.floor_float((float)var7 / var5);
- if (var6 >= 0 && var7 >= 0)
- {
- int var8 = Math.min(this.getLineCount(), this.field_146253_i.size());
- if (var6 <= MathHelper.floor_float((float)this.getChatWidth() / this.getChatScale()) && var7 < this.mc.fontRendererObj.FONT_HEIGHT * var8 + var8)
- {
- int var9 = var7 / this.mc.fontRendererObj.FONT_HEIGHT + this.scrollPos;
- if (var9 >= 0 && var9 < this.field_146253_i.size())
- {
- ChatLine var10 = (ChatLine)this.field_146253_i.get(var9);
- int var11 = 0;
- Iterator var12 = var10.getChatComponent().iterator();
- while (var12.hasNext())
- {
- IChatComponent var13 = (IChatComponent)var12.next();
- if (var13 instanceof ChatComponentText)
- {
- var11 += this.mc.fontRendererObj.getStringWidth(GuiUtilRenderComponents.func_178909_a(((ChatComponentText)var13).getChatComponentText_TextValue(), false));
- if (var11 > var6)
- {
- return var13;
- }
- }
- }
- }
- return null;
- }
- else
- {
- return null;
- }
- }
- else
- {
- return null;
- }
- }
- }
- /**
- * Returns true if the chat GUI is open
- */
- public boolean getChatOpen()
- {
- return this.mc.currentScreen instanceof GuiChat;
- }
- /**
- * finds and deletes a Chat line by ID
- */
- public void deleteChatLine(int p_146242_1_)
- {
- Iterator var2 = this.field_146253_i.iterator();
- ChatLine var3;
- while (var2.hasNext())
- {
- var3 = (ChatLine)var2.next();
- if (var3.getChatLineID() == p_146242_1_)
- {
- var2.remove();
- }
- }
- var2 = this.chatLines.iterator();
- while (var2.hasNext())
- {
- var3 = (ChatLine)var2.next();
- if (var3.getChatLineID() == p_146242_1_)
- {
- var2.remove();
- break;
- }
- }
- }
- public int getChatWidth()
- {
- return calculateChatboxWidth(this.mc.gameSettings.chatWidth);
- }
- public int getChatHeight()
- {
- return calculateChatboxHeight(this.getChatOpen() ? this.mc.gameSettings.chatHeightFocused : this.mc.gameSettings.chatHeightUnfocused);
- }
- /**
- * Returns the chatscale from mc.gameSettings.chatScale
- */
- public float getChatScale()
- {
- return this.mc.gameSettings.chatScale;
- }
- public static int calculateChatboxWidth(float p_146233_0_)
- {
- short var1 = 320;
- byte var2 = 40;
- return MathHelper.floor_float(p_146233_0_ * (float)(var1 - var2) + (float)var2);
- }
- public static int calculateChatboxHeight(float p_146243_0_)
- {
- short var1 = 180;
- byte var2 = 20;
- return MathHelper.floor_float(p_146243_0_ * (float)(var1 - var2) + (float)var2);
- }
- public int getLineCount()
- {
- return this.getChatHeight() / 9;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement