From c1395c1ffe2d2e8f8646c178fb04ffdb7ab28b8b Mon Sep 17 00:00:00 2001
From: Yannick Marcotte-Gourde <yannickmg@gmail.com>
Date: Thu, 23 Jan 2025 18:28:32 -0500
Subject: [PATCH] Don't display "Fuel" instead of the liquid's name when
 holding shift in the Smeltery UI (#148)

---
 .../tconstruct/smeltery/gui/SmelteryGui.java  | 120 +++++++++---------
 1 file changed, 63 insertions(+), 57 deletions(-)

diff --git a/src/main/java/tconstruct/smeltery/gui/SmelteryGui.java b/src/main/java/tconstruct/smeltery/gui/SmelteryGui.java
index 4c1b02076dd..c2019fa3432 100644
--- a/src/main/java/tconstruct/smeltery/gui/SmelteryGui.java
+++ b/src/main/java/tconstruct/smeltery/gui/SmelteryGui.java
@@ -135,7 +135,10 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
             int topY = (cornerY + 68) - fluidHeights[i] - base;
 
             if (mouseX >= leftX && mouseX <= leftX + 52 && mouseY >= topY && mouseY < topY + fluidHeights[i]) {
-                drawFluidStackTooltip(logic.moltenMetal.get(i), mouseX - cornerX + 36, mouseY - cornerY, false);
+                drawFluidStackTooltip(
+                        getLiquidTooltip(logic.moltenMetal.get(i)),
+                        mouseX - cornerX + 36,
+                        mouseY - cornerY);
             }
             base += fluidHeights[i];
         }
@@ -147,7 +150,7 @@ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
             int sizeX = 12;
             int sizeY = logic.getScaledFuelGague(52);
             if (mouseX >= leftX && mouseX <= leftX + sizeX && mouseY >= topY && mouseY < topY + sizeY) {
-                drawFluidStackTooltip(logic.getFuel(), mouseX - cornerX + 36, mouseY - cornerY, true);
+                drawFluidStackTooltip(getFuelTooltip(logic.getFuel()), mouseX - cornerX + 36, mouseY - cornerY);
             }
         }
     }
@@ -334,63 +337,66 @@ protected int[] calcLiquidHeights() {
         return fluidHeights;
     }
 
-    protected void drawFluidStackTooltip(FluidStack par1ItemStack, int par2, int par3, boolean fuel) {
+    protected void drawFluidStackTooltip(List<String> tooltip, int x, int y) {
         this.zLevel = 100;
-        List<String> list = getLiquidTooltip(par1ItemStack, this.mc.gameSettings.advancedItemTooltips, fuel);
-        for (int k = 0; k < list.size(); ++k) {
-            list.set(k, EnumChatFormatting.GRAY + list.get(k));
+        for (int k = 0; k < tooltip.size(); ++k) {
+            tooltip.set(k, EnumChatFormatting.GRAY + tooltip.get(k));
         }
-        this.drawToolTip(list, par2, par3);
+        this.drawToolTip(tooltip, x, y);
         this.zLevel = 0;
     }
 
-    public List<String> getLiquidTooltip(FluidStack liquid, boolean advanced, boolean fuel) {
+    private List<String> getFuelTooltip(FluidStack liquid) {
         ArrayList<String> list = new ArrayList<>();
-        if (fuel || Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) {
-            list.add("\u00A7f" + StatCollector.translateToLocal("gui.smeltery.fuel"));
+        list.add("\u00A7f" + StatCollector.translateToLocal("gui.smeltery.fuel"));
+        list.add("mB: " + liquid.amount);
+        return list;
+    }
+
+    private List<String> getLiquidTooltip(FluidStack liquid) {
+        ArrayList<String> list = new ArrayList<>();
+        String name = liquid.getFluid().getLocalizedName(liquid);
+        list.add("\u00A7f" + name);
+        if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) {
             list.add("mB: " + liquid.amount);
-        } else {
-            String name = liquid.getFluid().getLocalizedName(liquid);
-            list.add("\u00A7f" + name);
-            if (name.equals(StatCollector.translateToLocal("fluid.emerald.liquid"))) {
-                list.add(StatCollector.translateToLocal("gui.smeltery.emerald") + liquid.amount / 640f);
-            } else if (name.equals(StatCollector.translateToLocal("fluid.quartz.molten"))) {
-                list.add(StatCollector.translateToLocal("gui.smeltery.quartz") + liquid.amount / 250f);
-            } else if (name.equals(StatCollector.translateToLocal("fluid.glass.molten"))) {
-                int blocks = liquid.amount / 1000;
+        } else if (name.equals(StatCollector.translateToLocal("fluid.emerald.liquid"))) {
+            list.add(StatCollector.translateToLocal("gui.smeltery.emerald") + liquid.amount / 640f);
+        } else if (name.equals(StatCollector.translateToLocal("fluid.quartz.molten"))) {
+            list.add(StatCollector.translateToLocal("gui.smeltery.quartz") + liquid.amount / 250f);
+        } else if (name.equals(StatCollector.translateToLocal("fluid.glass.molten"))) {
+            int blocks = liquid.amount / 1000;
+            if (blocks > 0) list.add(StatCollector.translateToLocal("gui.smeltery.glass.block") + blocks);
+            int panels = (liquid.amount % 1000) / 250;
+            if (panels > 0) list.add(StatCollector.translateToLocal("gui.smeltery.glass.pannel") + panels);
+            int mB = (liquid.amount % 1000) % 250;
+            if (mB > 0) list.add("mB: " + mB);
+        } else if (name.equals(StatCollector.translateToLocal("fluid.stone.seared"))) {
+            if (Loader.isModLoaded("dreamcraft")) {
+                int blocks = liquid.amount / 360; // in gtnh each seared stone block is 360 mb of fluid
                 if (blocks > 0) list.add(StatCollector.translateToLocal("gui.smeltery.glass.block") + blocks);
-                int panels = (liquid.amount % 1000) / 250;
-                if (panels > 0) list.add(StatCollector.translateToLocal("gui.smeltery.glass.pannel") + panels);
-                int mB = (liquid.amount % 1000) % 250;
+                // we also have no casting recipe for seared bricks
+                int mB = liquid.amount % 360;
                 if (mB > 0) list.add("mB: " + mB);
-            } else if (name.equals(StatCollector.translateToLocal("fluid.stone.seared"))) {
-                if (Loader.isModLoaded("dreamcraft")) {
-                    int blocks = liquid.amount / 360; // in gtnh each seared stone block is 360 mb of fluid
-                    if (blocks > 0) list.add(StatCollector.translateToLocal("gui.smeltery.glass.block") + blocks);
-                    // we also have no casting recipe for seared bricks
-                    int mB = liquid.amount % 360;
-                    if (mB > 0) list.add("mB: " + mB);
-                } else {
-                    int blocks = liquid.amount / TConstruct.ingotLiquidValue;
-                    if (blocks > 0) list.add(StatCollector.translateToLocal("gui.smeltery.glass.block") + blocks);
-                    int ingots = (liquid.amount % TConstruct.ingotLiquidValue) / (TConstruct.ingotLiquidValue / 4);
-                    if (ingots > 0) list.add(StatCollector.translateToLocal("gui.smeltery.metal.ingot") + ingots);
-                    int mB = (liquid.amount % TConstruct.ingotLiquidValue) % (TConstruct.ingotLiquidValue / 4);
-                    if (mB > 0) list.add("mB: " + mB);
-                }
-            } else if (isMolten(name)) {
-                int ingots = liquid.amount / TConstruct.ingotLiquidValue;
-                if (ingots > 0) list.add(StatCollector.translateToLocal("gui.smeltery.metal.ingot") + ingots);
-                int mB = liquid.amount % TConstruct.ingotLiquidValue;
-                if (mB > 0) {
-                    int nuggets = mB / TConstruct.nuggetLiquidValue;
-                    int junk = (mB % TConstruct.nuggetLiquidValue);
-                    if (nuggets > 0) list.add(StatCollector.translateToLocal("gui.smeltery.metal.nugget") + nuggets);
-                    if (junk > 0) list.add("mB: " + junk);
-                }
             } else {
-                list.add("mB: " + liquid.amount);
+                int blocks = liquid.amount / TConstruct.ingotLiquidValue;
+                if (blocks > 0) list.add(StatCollector.translateToLocal("gui.smeltery.glass.block") + blocks);
+                int ingots = (liquid.amount % TConstruct.ingotLiquidValue) / (TConstruct.ingotLiquidValue / 4);
+                if (ingots > 0) list.add(StatCollector.translateToLocal("gui.smeltery.metal.ingot") + ingots);
+                int mB = (liquid.amount % TConstruct.ingotLiquidValue) % (TConstruct.ingotLiquidValue / 4);
+                if (mB > 0) list.add("mB: " + mB);
             }
+        } else if (isMolten(name)) {
+            int ingots = liquid.amount / TConstruct.ingotLiquidValue;
+            if (ingots > 0) list.add(StatCollector.translateToLocal("gui.smeltery.metal.ingot") + ingots);
+            int mB = liquid.amount % TConstruct.ingotLiquidValue;
+            if (mB > 0) {
+                int nuggets = mB / TConstruct.nuggetLiquidValue;
+                int junk = (mB % TConstruct.nuggetLiquidValue);
+                if (nuggets > 0) list.add(StatCollector.translateToLocal("gui.smeltery.metal.nugget") + nuggets);
+                if (junk > 0) list.add("mB: " + junk);
+            }
+        } else {
+            list.add("mB: " + liquid.amount);
         }
         return list;
     }
@@ -407,27 +413,27 @@ private boolean isMolten(String fluidName) {
         return molten;
     }
 
-    protected void drawToolTip(List<String> par1List, int par2, int par3) {
-        if (!par1List.isEmpty()) {
+    private void drawToolTip(List<String> tooltip, int x, int y) {
+        if (!tooltip.isEmpty()) {
             GL11.glDisable(GL12.GL_RESCALE_NORMAL);
             RenderHelper.disableStandardItemLighting();
             GL11.glDisable(GL11.GL_LIGHTING);
             GL11.glDisable(GL11.GL_DEPTH_TEST);
             int k = 0;
 
-            for (String s : par1List) {
+            for (String s : tooltip) {
                 int l = this.fontRendererObj.getStringWidth(s);
                 if (l > k) {
                     k = l;
                 }
             }
 
-            int i1 = par2 + 12;
-            int j1 = par3 - 12;
+            int i1 = x + 12;
+            int j1 = y - 12;
             int k1 = 8;
 
-            if (par1List.size() > 1) {
-                k1 += 2 + (par1List.size() - 1) * 10;
+            if (tooltip.size() > 1) {
+                k1 += 2 + (tooltip.size() - 1) * 10;
             }
 
             if (i1 + k > this.width) {
@@ -453,8 +459,8 @@ protected void drawToolTip(List<String> par1List, int par2, int par3) {
             this.drawGradientRect(i1 - 3, j1 - 3, i1 + k + 3, j1 - 3 + 1, i2, i2);
             this.drawGradientRect(i1 - 3, j1 + k1 + 2, i1 + k + 3, j1 + k1 + 3, j2, j2);
 
-            for (int k2 = 0; k2 < par1List.size(); ++k2) {
-                String s1 = par1List.get(k2);
+            for (int k2 = 0; k2 < tooltip.size(); ++k2) {
+                String s1 = tooltip.get(k2);
                 this.fontRendererObj.drawStringWithShadow(s1, i1, j1, -1);
 
                 if (k2 == 0) {