Posted April 8, 201411 yr Hi, I would like to render a tooltip for the GuiButtons in my mod´s menu. Looking through the MinecraftForge forums I found that the MouseUpOrMoved() in my GuiScreen extending class could be used for that. But it does not react until I use a mouse button. My problem is: How do i check for the mouse hovering a GuiButton in Forge 1.7.2 (#1047)? That is the code I used, but it is not working except for when using a mouse button, but not hovering: @Override protected void mouseMovedOrUp(int mouseX, int mouseY, int mouseBtn) { if (mouseX >= 0 && mouseX <= 500 && mouseY >= 0 && mouseY <= 200) { System.out.println("Test"); } } EDIT: The problem was solved like this: http://pastebin.com/wJ1vBJXf Thanks to diesieben07 and sudwood for your help!
April 8, 201411 yr Add this to your gui class, it is how you display tooltips in a gui. @Override public void drawScreen(int par1, int par2, float par3) { super.drawScreen(par1, par2, par3); int var5 = (this.width - this.xSize) / 2; int var6 = (this.height - this.ySize) / 2; if(par1 >= LEFT_X_VALUE+var5 && par2 >= TOP_Y_VALUE+var6 && par1 <= RIGHT_X_VALUE+var5 && par2 <= BOTTOM_Y_VALUE+var6) // these values form a box where it will render { String[] text = {"YOUR_TEXT_HERE"}; List temp = Arrays.asList(text); drawHoveringText(temp, par1, par2, fontRendererObj); // makes all that nice default tool tip box from vanilla minecraft } }
April 8, 201411 yr Author Thanks guys, it is working except for the lightning being strange. Do you know a way to fix it? Everything is getting darker when hovering a button. And the hover text is drawn behind (in the background of) the buttons. This is my drawScreen method (GuiButtonAdvanced extends GuiButton and has just a String "description" in its constructor): @Override public void drawScreen(int x, int y, float f) { this.drawDefaultBackground(); drawRect(width / 2 - 105, 60, width / 2 - 35, height / 2 + 5, new Color(50, 170, 170, 70).getRGB()); drawRect(width / 2 + 35, 60, width / 2 + 105, height / 2 + 30, new Color(85, 75, 170, 70).getRGB()); drawRect(width / 2 - 105, height / 2 + 10, width / 2 - 35, height / 2 + 105, new Color(170, 155, 75, 70).getRGB()); drawRect(width / 2 + 125, 60, width / 2 + 195, height / 2 + 30, new Color(185, 35, 50, 70).getRGB()); this.drawCenteredString(fontRendererObj, I18n.format("menu.title"), width / 2, 25, Color.WHITE.getRGB()); this.drawCenteredString(fontRendererObj, I18n.format("label.buff"), width / 2 - 70, 63, Color.WHITE.getRGB()); this.drawCenteredString(fontRendererObj, I18n.format("label.armor"), width / 2 + 71, 63, Color.WHITE.getRGB()); this.drawCenteredString(fontRendererObj, I18n.format("label.tool"), width / 2 + 161, 63, Color.WHITE.getRGB()); this.drawCenteredString(fontRendererObj, I18n.format("label.options"), width / 2 - 69, height / 2 + 15, Color.WHITE.getRGB()); for (int i = 0; i < buttonList.size(); i++) { if (buttonList.get(i) instanceof GuiButtonAdvanced) { GuiButtonAdvanced btn = (GuiButtonAdvanced) buttonList.get(i); if (btn.func_146115_a()) { String[] desc = { btn.description }; @SuppressWarnings("rawtypes") List temp = Arrays.asList(desc); drawHoveringText(temp, x, y, fontRendererObj); } } } super.drawScreen(x, y, f); }
April 8, 201411 yr Author a) Sorry but could you give the concret code for my drawScreen()? I don´t know where and how I need to add this. EDIT: Oh, I see now. It must be called in the drawHoveringText() itself, but the question on where exactly and how remains. b) I am using the GuiScreen.drawHoveringText() directly from my GuiScreen extending class. Here is my whole class: http://pastebin.com/uFHZbhqB And here the vanilla drawHoweringText() from GuiScreen so you don´t have to look it up: http://pastebin.com/qbb0Eid5 I hope that is all the information you need.
April 8, 201411 yr Author I´m sorry that I cannot see it, but please tell me where I actually call the super.drawString? I cannot see me calling anything but super.drawScreen in the drawScreen(...) method of my GuiSreen class. Maybe I call it without actually noticing it but is it in the drawScreen() or in the drawHoveringText() method and which line?
April 9, 201411 yr Author Thank you for your help. I was able to fix it and posted the solution on the first post in this thread as a pastebin link.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.