diff --git a/CHANGELOG.md b/CHANGELOG.md index f26f82b3a..4f5a6d835 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ - Fire playerCrafting event when shift clicking in the grid (way2muchnoise) - Fixed controller model warning during launch (raoulvdberge) - Improved memory usage of some models (raoulvdberge) +- Fixed not rendering some tooltips correctly (raoulvdberge) ### 1.4.1 - Added Storage Monitor (raoulvdberge) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiBase.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiBase.java index 65eaa03e7..d2d5d6f14 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiBase.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiBase.java @@ -20,6 +20,7 @@ import net.minecraftforge.fml.client.config.GuiUtils; import net.minecraftforge.items.SlotItemHandler; import org.lwjgl.input.Mouse; +import javax.annotation.Nonnull; import java.io.IOException; import java.util.Arrays; import java.util.HashMap; @@ -293,14 +294,22 @@ public abstract class GuiBase extends GuiContainer { GlStateManager.enableLighting(); } - public void drawTooltip(int x, int y, String message) { - drawTooltip(x, y, Arrays.asList(message.split("\n"))); + public void drawTooltip(@Nonnull ItemStack stack, int x, int y, String lines) { + drawTooltip(stack, x, y, Arrays.asList(lines.split("\n"))); + } + + public void drawTooltip(int x, int y, String lines) { + drawTooltip(ItemStack.EMPTY, x, y, lines); + } + + public void drawTooltip(@Nonnull ItemStack stack, int x, int y, List lines) { + GlStateManager.disableLighting(); + GuiUtils.drawHoveringText(stack, lines, x, y, width - guiLeft, height, -1, fontRendererObj); + GlStateManager.enableLighting(); } public void drawTooltip(int x, int y, List lines) { - GlStateManager.disableLighting(); - GuiUtils.drawHoveringText(null, lines, x, y, width - guiLeft, height, -1, fontRendererObj); - GlStateManager.enableLighting(); + drawTooltip(ItemStack.EMPTY, x, y, lines); } public void drawTexture(int x, int y, int textureX, int textureY, int width, int height) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiCraftingPreview.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiCraftingPreview.java index bc423ab04..7a31dc993 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiCraftingPreview.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiCraftingPreview.java @@ -145,7 +145,7 @@ public class GuiCraftingPreview extends GuiBase { } if (hoveringStack != null) { - drawTooltip(mouseX, mouseY, hoveringStack.getTooltip(Minecraft.getMinecraft().player, false)); + drawTooltip(hoveringStack, mouseX, mouseY, hoveringStack.getTooltip(Minecraft.getMinecraft().player, false)); } else if (hoveringFluid != null) { drawTooltip(mouseX, mouseY, hoveringFluid.getLocalizedName()); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GuiGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GuiGrid.java index d1e2c3944..48c948d8c 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GuiGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/grid/GuiGrid.java @@ -73,16 +73,16 @@ public class GuiGrid extends GuiBase implements IGridDisplay { private int slotNumber; private Deque konami = new ArrayDeque<>(Arrays.asList( - Keyboard.KEY_UP, - Keyboard.KEY_UP, - Keyboard.KEY_DOWN, - Keyboard.KEY_DOWN, - Keyboard.KEY_LEFT, - Keyboard.KEY_RIGHT, - Keyboard.KEY_LEFT, - Keyboard.KEY_RIGHT, - Keyboard.KEY_B, - Keyboard.KEY_A + Keyboard.KEY_UP, + Keyboard.KEY_UP, + Keyboard.KEY_DOWN, + Keyboard.KEY_DOWN, + Keyboard.KEY_LEFT, + Keyboard.KEY_RIGHT, + Keyboard.KEY_LEFT, + Keyboard.KEY_RIGHT, + Keyboard.KEY_B, + Keyboard.KEY_A )); private int[] konamiOffsetsX; @@ -170,9 +170,9 @@ public class GuiGrid extends GuiBase implements IGridDisplay { stacks.addAll(grid.getType() == GridType.FLUID ? FLUIDS.values() : ITEMS.values()); List> filters = GridFilterParser.getFilters( - grid, - searchField.getText(), - (grid.getTabSelected() >= 0 && grid.getTabSelected() < grid.getTabs().size()) ? grid.getTabs().get(grid.getTabSelected()).getFilters() : grid.getFilters() + grid, + searchField.getText(), + (grid.getTabSelected() >= 0 && grid.getTabSelected() < grid.getTabs().size()) ? grid.getTabs().get(grid.getTabSelected()).getFilters() : grid.getFilters() ); Iterator t = stacks.iterator(); @@ -284,7 +284,7 @@ public class GuiGrid extends GuiBase implements IGridDisplay { } } - private boolean isOverSlotWithItem() { + private boolean isOverSlotWithStack() { return grid.isActive() && isOverSlot() && slotNumber < STACKS.size(); } @@ -470,8 +470,10 @@ public class GuiGrid extends GuiBase implements IGridDisplay { } } - if (isOverSlotWithItem()) { - drawTooltip(mouseX, mouseY, STACKS.get(slotNumber).getTooltip()); + if (isOverSlotWithStack()) { + IGridStack stack = STACKS.get(slotNumber); + + drawTooltip(stack instanceof GridStackItem ? ((GridStackItem) stack).getStack() : ItemStack.EMPTY, mouseX, mouseY, stack.getTooltip()); } if (isOverClear(mouseX, mouseY)) { @@ -533,7 +535,7 @@ public class GuiGrid extends GuiBase implements IGridDisplay { RS.INSTANCE.network.sendToServer(grid.getType() == GridType.FLUID ? new MessageGridFluidInsertHeld() : new MessageGridItemInsertHeld(clickedButton == 1)); } - if (isOverSlotWithItem()) { + if (isOverSlotWithStack()) { if (grid.getType() != GridType.FLUID && (held.isEmpty() || (!held.isEmpty() && clickedButton == 2))) { GridStackItem stack = (GridStackItem) STACKS.get(slotNumber);