Jump to content

[1.7.10] GUI: My renderToolTip call doesn't include extras from e.g. NEI/Waila


Tuhljin

Recommended Posts

I've got a custom GUI element that acts as a pseudo-item-slot, rendering an item icon and showing the item's tooltip when the cursor is over it. I use the renderToolTip in GuiScreen to do this as that seems to be how vanilla does it. It shows the tooltip as I'd expect for the most part, including whatever the item adds through the addInformation method.

 

The problem is that mods like NEI and Waila are supposed to add to the tooltip (such as one showing the mod the item comes from) but this is not added to my tooltips. I've done extensive searches in NEI to see where addInformation is called and so on to see if there's some other method for me to call instead of renderToolTip, but I don't see anything relevant. I'm quite sure I've got the right method, and yet it doesn't do for my custom GUI element what it does for vanilla Slots.

Link to comment
Share on other sites

GuiScreen.renderToolTip calls ItemStack.getTooltip which in turn calls ForgeEventFactory.onItemTooltip. I've stepped through it to make sure it's called, and it is, yet the result still isn't what I expected. Any idea what might be going wrong?

Link to comment
Share on other sites

Here's the relevant bit:

 

 

 

private GuiButtonPseudoSlot pSlots[] = new GuiButtonPseudoSlot[iNVENTORY_ROWS * INVENTORY_ROW_SIZE];

 

@Override

public void drawScreen(int x, int y, float p_73863_3_) {

super.drawScreen(x, y, p_73863_3_);

 

GL11.glPushMatrix();

GL11.glTranslatef((float)this.guiLeft, (float)this.guiTop, 0.0F);

 

for (int i = 0; i < pSlots.length; i++) {

GuiButtonPseudoSlot pSlot = pSlots[ i ];

if (pSlot.pointIsOver(x, y)) {

 

// This little section based on part of method drawScreen in GuiContainer.

GL11.glDisable(GL11.GL_LIGHTING);

GL11.glDisable(GL11.GL_DEPTH_TEST);

int j1 = pSlot.xPosition - this.guiLeft;

int k1 = pSlot.yPosition - this.guiTop;

GL11.glColorMask(true, true, true, false);

this.drawGradientRect(j1, k1, j1 + 16, k1 + 16, -2130706433, -2130706433);

GL11.glColorMask(true, true, true, true);

GL11.glEnable(GL11.GL_LIGHTING);

GL11.glEnable(GL11.GL_DEPTH_TEST);

 

if (pSlot.stack != null) {

this.renderToolTip(pSlot.stack, x - guiLeft, y - guiTop + 10);

}

 

/*

ArrayList<String> lines = TjUtil.getMultiLineLocalizedString("Automagy.gui.filter.textFilterTooltip");

GL11.glPushMatrix();

GL11.glScalef(scaleFactor, scaleFactor, scaleFactor);

drawScaledHoveringText(lines, x - guiLeft - 20, y - guiTop + 20, fontRendererObj);

GL11.glPopMatrix();

*/

}

}

 

GL11.glPopMatrix();

}

 

 

 

Edit: Somehow this was posted while I was still editing it. I wanted to put it in a spoiler but that doesn't seem to be working, and some of it's in italics for some reason (and I can't turn that off). Getting JavaScript errors when I try to do much editing. Something's wrong with the forums, it seems.

Link to comment
Share on other sites

The italics are caused by getting a value from an array with an index of i, for example, you have this:

GuiButtonPseudoSlot pSlot = pSlots[i];
if (pSlot.pointIsOver(x, y)) {...}

The forums sees the

[i.]

bit (no dot) as a italics sign, so it set's everything after that in italics.

Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support.

 

1.12 -> 1.13 primer by williewillus.

 

1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support.

 

http://www.howoldisminecraft1710.today/

Link to comment
Share on other sites

[quote name="Tuhljin" post="136305" timestamp="1420903085"]
Ah, BBCode, that makes sense. I actually work in BBCode all the time but forgot about it here. Guess I'm used to forums where it only shows when you hit a button for it. I edited the post to clean that up.
[/quote]

The 

tag is magic.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

For the bbcode thingy: the

[nobbc][nobbc][/nobbc]

tag works wonders ;)

 

Haha, and here I see that I tried to cheat with the

[nobbc][code][/nobbc]

tag and it didn't work :D  I did

[nobbc]
[/nobbc][/code]

and thought it would not find the paired open and not parse it (some forums do that)

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.