From 249cb2b308f07d977e76da19d78288792da28587 Mon Sep 17 00:00:00 2001 From: miozune Date: Sat, 4 Feb 2023 18:35:36 +0900 Subject: [PATCH] Allow using hash for tooltip pagination keybind (#344) --- .../java/codechicken/nei/NEIClientConfig.java | 32 ++++++++++++++++++- .../codechicken/nei/config/OptionKeyBind.java | 31 ++---------------- .../nei/guihook/GuiContainerManager.java | 2 +- 3 files changed, 35 insertions(+), 30 deletions(-) diff --git a/src/main/java/codechicken/nei/NEIClientConfig.java b/src/main/java/codechicken/nei/NEIClientConfig.java index 37fba5ec..97abe0ad 100644 --- a/src/main/java/codechicken/nei/NEIClientConfig.java +++ b/src/main/java/codechicken/nei/NEIClientConfig.java @@ -345,7 +345,7 @@ public class NEIClientConfig { API.addHashBind("gui.hide_bookmarks", Keyboard.KEY_B); API.addKeyBind("gui.getprevioussearch", Keyboard.KEY_UP); API.addKeyBind("gui.getnextsearch", Keyboard.KEY_DOWN); - API.addKeyBind("gui.next_tooltip", Keyboard.KEY_Z); + API.addHashBind("gui.next_tooltip", Keyboard.KEY_Z); API.addKeyBind("world.chunkoverlay", Keyboard.KEY_F9); API.addKeyBind("world.moboverlay", Keyboard.KEY_F7); @@ -421,6 +421,36 @@ public class NEIClientConfig { return hash != Keyboard.CHAR_NONE && hash == NEIClientUtils.getKeyHash(); } + public static String getKeyName(int keyBind, boolean useHash) { + return getKeyName(keyBind, useHash, false); + } + + public static String getKeyName(int keyBind, boolean useHash, boolean showOnlyHash) { + String keyText = ""; + + if (useHash) { + final String DELIMITER = " + "; + if ((keyBind & NEIClientUtils.CTRL_HASH) != 0) { + keyText += NEIClientUtils.translate(Minecraft.isRunningOnMac ? "key.ctrl.mac" : "key.ctrl") + DELIMITER; + } + if ((keyBind & NEIClientUtils.SHIFT_HASH) != 0) { + keyText += "SHIFT" + DELIMITER; + } + if ((keyBind & NEIClientUtils.ALT_HASH) != 0) { + keyText += "ALT" + DELIMITER; + } + } + + if (!showOnlyHash) { + keyText += Keyboard.getKeyName(unHashKey(keyBind)); + } + return keyText; + } + + public static int unHashKey(int keyBind) { + return keyBind & ~(NEIClientUtils.CTRL_HASH | NEIClientUtils.SHIFT_HASH | NEIClientUtils.ALT_HASH); + } + public static void bootNEI(World world) { if (configLoaded) return; diff --git a/src/main/java/codechicken/nei/config/OptionKeyBind.java b/src/main/java/codechicken/nei/config/OptionKeyBind.java index 31c9f528..04387626 100644 --- a/src/main/java/codechicken/nei/config/OptionKeyBind.java +++ b/src/main/java/codechicken/nei/config/OptionKeyBind.java @@ -5,11 +5,9 @@ import static codechicken.lib.gui.GuiDraw.drawStringC; import java.awt.Rectangle; -import net.minecraft.client.Minecraft; -import net.minecraft.util.EnumChatFormatting; - import org.lwjgl.input.Keyboard; +import codechicken.nei.NEIClientConfig; import codechicken.nei.NEIClientUtils; public class OptionKeyBind extends OptionButton { @@ -124,31 +122,8 @@ public class OptionKeyBind extends OptionButton { @Override public String getButtonText() { - String keyText = ""; - - if (useHash) { - final int metahash = Math.max(editing ? NEIClientUtils.getMetaHash() : getValue(), 0); - final String DELIMITER = EnumChatFormatting.GRAY + " + " + EnumChatFormatting.RESET; - - if ((metahash & NEIClientUtils.CTRL_HASH) == NEIClientUtils.CTRL_HASH) { - keyText += NEIClientUtils.translate(Minecraft.isRunningOnMac ? "key.ctrl.mac" : "key.ctrl") + DELIMITER; - } - - if ((metahash & NEIClientUtils.SHIFT_HASH) == NEIClientUtils.SHIFT_HASH) { - keyText += "SHIFT" + DELIMITER; - } - - if ((metahash & NEIClientUtils.ALT_HASH) == NEIClientUtils.ALT_HASH) { - keyText += "ALT" + DELIMITER; - } - } - - if (!editing) { - keyText += Keyboard.getKeyName( - getValue() & ~(NEIClientUtils.CTRL_HASH | NEIClientUtils.SHIFT_HASH | NEIClientUtils.ALT_HASH)); - } - - return keyText; + final int metahash = Math.max(editing ? NEIClientUtils.getMetaHash() : getValue(), 0); + return NEIClientConfig.getKeyName(metahash, useHash, editing); } @Override diff --git a/src/main/java/codechicken/nei/guihook/GuiContainerManager.java b/src/main/java/codechicken/nei/guihook/GuiContainerManager.java index 2db38461..00400a16 100644 --- a/src/main/java/codechicken/nei/guihook/GuiContainerManager.java +++ b/src/main/java/codechicken/nei/guihook/GuiContainerManager.java @@ -513,7 +513,7 @@ public class GuiContainerManager { "inventory.tooltip.page", tooltipPage + 1, tooltips.size(), - Keyboard.getKeyName(NEIClientConfig.getKeyBinding("gui.next_tooltip")))); + NEIClientConfig.getKeyName(NEIClientConfig.getKeyBinding("gui.next_tooltip"), true))); } drawMultilineTip(font, x, y, tooltips.get(tooltipPage)); }