package net.minecraft.client.gui; import java.awt.Toolkit; import java.awt.datatransfer.ClipboardOwner; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.client.event.GuiScreenEvent; import net.minecraftforge.common.MinecraftForge; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class GuiScreen extends Gui { protected static RenderItem itemRender = new RenderItem(); public Minecraft mc; public int width; public int height; public List buttonList = new ArrayList(); protected List labelList = new ArrayList(); public boolean allowUserInput; protected FontRenderer fontRendererObj; private GuiButton selectedButton; private int eventButton; private long lastMouseEvent; private int field_146298_h; private static final String __OBFID = "CL_00000710"; public void drawScreen(int p_73863_1_, int p_73863_2_, float p_73863_3_) { for (int k = 0; k < this.buttonList.size(); k++) { ((GuiButton)this.buttonList.get(k)).drawButton(this.mc, p_73863_1_, p_73863_2_); } for (int k = 0; k < this.labelList.size(); k++) { ((GuiLabel)this.labelList.get(k)).func_146159_a(this.mc, p_73863_1_, p_73863_2_); } } protected void keyTyped(char p_73869_1_, int p_73869_2_) { if (p_73869_2_ == 1) { this.mc.displayGuiScreen((GuiScreen)null); this.mc.setIngameFocus(); } } public static String getClipboardString() { try { Transferable transferable = Toolkit.getDefaultToolkit().getSystemClipboard().getContents((Object)null); if ((transferable != null) && (transferable.isDataFlavorSupported(DataFlavor.stringFlavor))) { return (String)transferable.getTransferData(DataFlavor.stringFlavor); } } catch (Exception exception) {} return ""; } public static void setClipboardString(String p_146275_0_) { try { StringSelection stringselection = new StringSelection(p_146275_0_); Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringselection, (ClipboardOwner)null); } catch (Exception exception) {} } protected void renderToolTip(ItemStack p_146285_1_, int p_146285_2_, int p_146285_3_) { List list = p_146285_1_.getTooltip(this.mc.thePlayer, this.mc.gameSettings.advancedItemTooltips); for (int k = 0; k < list.size(); k++) { if (k == 0) { list.set(k, p_146285_1_.getRarity().rarityColor + (String)list.get(k)); } else { list.set(k, EnumChatFormatting.GRAY + (String)list.get(k)); } } FontRenderer font = p_146285_1_.getItem().getFontRenderer(p_146285_1_); drawHoveringText(list, p_146285_2_, p_146285_3_, font == null ? this.fontRendererObj : font); } protected void drawCreativeTabHoveringText(String p_146279_1_, int p_146279_2_, int p_146279_3_) { func_146283_a(Arrays.asList(new String[] { p_146279_1_ }), p_146279_2_, p_146279_3_); } protected void func_146283_a(List p_146283_1_, int p_146283_2_, int p_146283_3_) { drawHoveringText(p_146283_1_, p_146283_2_, p_146283_3_, this.fontRendererObj); } protected void drawHoveringText(List p_146283_1_, int p_146283_2_, int p_146283_3_, FontRenderer font) { if (!p_146283_1_.isEmpty()) { GL11.glDisable(32826); RenderHelper.disableStandardItemLighting(); GL11.glDisable(2896); GL11.glDisable(2929); int k = 0; Iterator iterator = p_146283_1_.iterator(); while (iterator.hasNext()) { String s = (String)iterator.next(); int l = font.getStringWidth(s); if (l > k) { k = l; } } int j2 = p_146283_2_ + 12; int k2 = p_146283_3_ - 12; int i1 = 8; if (p_146283_1_.size() > 1) { i1 += 2 + (p_146283_1_.size() - 1) * 10; } if (j2 + k > this.width) { j2 -= 28 + k; } if (k2 + i1 + 6 > this.height) { k2 = this.height - i1 - 6; } this.zLevel = 300.0F; itemRender.zLevel = 300.0F; int j1 = -267386864; drawGradientRect(j2 - 3, k2 - 4, j2 + k + 3, k2 - 3, j1, j1); drawGradientRect(j2 - 3, k2 + i1 + 3, j2 + k + 3, k2 + i1 + 4, j1, j1); drawGradientRect(j2 - 3, k2 - 3, j2 + k + 3, k2 + i1 + 3, j1, j1); drawGradientRect(j2 - 4, k2 - 3, j2 - 3, k2 + i1 + 3, j1, j1); drawGradientRect(j2 + k + 3, k2 - 3, j2 + k + 4, k2 + i1 + 3, j1, j1); int k1 = 1347420415; int l1 = (k1 & 0xFEFEFE) >> 1 | k1 & 0xFF000000; drawGradientRect(j2 - 3, k2 - 3 + 1, j2 - 3 + 1, k2 + i1 + 3 - 1, k1, l1); drawGradientRect(j2 + k + 2, k2 - 3 + 1, j2 + k + 3, k2 + i1 + 3 - 1, k1, l1); drawGradientRect(j2 - 3, k2 - 3, j2 + k + 3, k2 - 3 + 1, k1, k1); drawGradientRect(j2 - 3, k2 + i1 + 2, j2 + k + 3, k2 + i1 + 3, l1, l1); for (int i2 = 0; i2 < p_146283_1_.size(); i2++) { String s1 = (String)p_146283_1_.get(i2); font.drawStringWithShadow(s1, j2, k2, -1); if (i2 == 0) { k2 += 2; } k2 += 10; } this.zLevel = 0.0F; itemRender.zLevel = 0.0F; GL11.glEnable(2896); GL11.glEnable(2929); RenderHelper.enableStandardItemLighting(); GL11.glEnable(32826); } } protected void mouseClicked(int p_73864_1_, int p_73864_2_, int p_73864_3_) { if (p_73864_3_ == 0) { for (int l = 0; l < this.buttonList.size(); l++) { GuiButton guibutton = (GuiButton)this.buttonList.get(l); if (guibutton.mousePressed(this.mc, p_73864_1_, p_73864_2_)) { GuiScreenEvent.ActionPerformedEvent.Pre event = new GuiScreenEvent.ActionPerformedEvent.Pre(this, guibutton, this.buttonList); if (MinecraftForge.EVENT_BUS.post(event)) { break; } this.selectedButton = event.button; event.button.func_146113_a(this.mc.getSoundHandler()); actionPerformed(event.button); if (equals(this.mc.currentScreen)) { MinecraftForge.EVENT_BUS.post(new GuiScreenEvent.ActionPerformedEvent.Post(this, event.button, this.buttonList)); } } } } } protected void mouseMovedOrUp(int p_146286_1_, int p_146286_2_, int p_146286_3_) { if ((this.selectedButton != null) && (p_146286_3_ == 0)) { this.selectedButton.mouseReleased(p_146286_1_, p_146286_2_); this.selectedButton = null; } } protected void mouseClickMove(int p_146273_1_, int p_146273_2_, int p_146273_3_, long p_146273_4_) {} protected void actionPerformed(GuiButton p_146284_1_) {} public void setWorldAndResolution(Minecraft p_146280_1_, int p_146280_2_, int p_146280_3_) { this.mc = p_146280_1_; this.fontRendererObj = p_146280_1_.fontRenderer; this.width = p_146280_2_; this.height = p_146280_3_; if (!MinecraftForge.EVENT_BUS.post(new GuiScreenEvent.InitGuiEvent.Pre(this, this.buttonList))) { this.buttonList.clear(); initGui(); } MinecraftForge.EVENT_BUS.post(new GuiScreenEvent.InitGuiEvent.Post(this, this.buttonList)); } public void initGui() {} public void handleInput() { if (Mouse.isCreated()) { while (Mouse.next()) { handleMouseInput(); } } if (Keyboard.isCreated()) { while (Keyboard.next()) { handleKeyboardInput(); } } } public void handleMouseInput() { int i = Mouse.getEventX() * this.width / this.mc.displayWidth; int j = this.height - Mouse.getEventY() * this.height / this.mc.displayHeight - 1; int k = Mouse.getEventButton(); if (Mouse.getEventButtonState()) { if ((this.mc.gameSettings.touchscreen) && (this.field_146298_h++ > 0)) { return; } this.eventButton = k; this.lastMouseEvent = Minecraft.getSystemTime(); mouseClicked(i, j, this.eventButton); } else if (k != -1) { if ((this.mc.gameSettings.touchscreen) && (--this.field_146298_h > 0)) { return; } this.eventButton = -1; mouseMovedOrUp(i, j, k); } else if ((this.eventButton != -1) && (this.lastMouseEvent > 0L)) { long l = Minecraft.getSystemTime() - this.lastMouseEvent; mouseClickMove(i, j, this.eventButton, l); } } public void handleKeyboardInput() { if (Keyboard.getEventKeyState()) { keyTyped(Keyboard.getEventCharacter(), Keyboard.getEventKey()); } this.mc.func_152348_aa(); } public void updateScreen() {} public void onGuiClosed() {} public void drawDefaultBackground() { drawWorldBackground(0); } public void drawWorldBackground(int p_146270_1_) { if (this.mc.theWorld != null) { drawGradientRect(0, 0, this.width, this.height, -1072689136, -804253680); } else { drawBackground(p_146270_1_); } } public void drawBackground(int p_146278_1_) { GL11.glDisable(2896); GL11.glDisable(2912); Tessellator tessellator = Tessellator.instance; this.mc.getTextureManager().bindTexture(optionsBackground); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); float f = 32.0F; tessellator.startDrawingQuads(); tessellator.setColorOpaque_I(4210752); tessellator.addVertexWithUV(0.0D, this.height, 0.0D, 0.0D, this.height / f + p_146278_1_); tessellator.addVertexWithUV(this.width, this.height, 0.0D, this.width / f, this.height / f + p_146278_1_); tessellator.addVertexWithUV(this.width, 0.0D, 0.0D, this.width / f, p_146278_1_); tessellator.addVertexWithUV(0.0D, 0.0D, 0.0D, 0.0D, p_146278_1_); tessellator.draw(); } public boolean doesGuiPauseGame() { return true; } public void confirmClicked(boolean p_73878_1_, int p_73878_2_) {} public static boolean isCtrlKeyDown() { return (Keyboard.isKeyDown(219)) || (Keyboard.isKeyDown(220)); } public static boolean isShiftKeyDown() { return (Keyboard.isKeyDown(42)) || (Keyboard.isKeyDown(54)); } }