TooltipHelper

一个 25 行的按键检测工具类,为按住 Ctrl / Shift 才显示的详细提示提供统一判定。

  • 类:iguanaman.iguanatweakstconstruct.util.TooltipHelper
  • 实例化:私有构造器 private TooltipHelper() {},纯静态工具类

两个方法

shiftHeld()

public static boolean shiftHeld() {
    return Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT);
}

同时检测左右 Shift。

ctrlHeld()

public static boolean isCtrlKeyDown = Keyboard.isKeyDown(Keyboard.KEY_LCONTROL) || Keyboard.isKeyDown(Keyboard.KEY_RCONTROL);
if (!isCtrlKeyDown && Minecraft.isRunningOnMac)
    isCtrlKeyDown = Keyboard.isKeyDown(Keyboard.KEY_LMETA) || Keyboard.isKeyDown(Keyboard.KEY_RMETA);
return isCtrlKeyDown;

macOS 特殊处理,源码注释:

prioritize CONTROL, but allow OPTION as well on Mac (note: GuiScreen's isCtrlKeyDown only checks for the OPTION key on Mac)

即在 macOS 上,Ctrl 优先,但同时接受 Command(Option)键——因为原版 GuiScreen.isCtrlKeyDown 在 Mac 上只认 Option 键,玩家无法用 Control。

源码致意

类开头与两个方法上方都有同一句注释:

// all hail TiC-Tooltips for that information ;)

ModSupportHelper.tiCTooltips 标记的正是 TiC-Tooltips 模组——它在 Tinkers’ 工具上实现了同样的 Shift/Ctrl 分层提示(Shift = 附加材料属性,Ctrl = 详细数值)。本类是把「哪个键算 Ctrl」这个判断单独抽出来,供本 mod 自己的提示处理复用。

谁在用

调用方 用途
harvestlevels/VanillaToolTipHandler 原版工具的挖掘等级行
leveling/handlers/LevelingToolTipHandler Tinkers’ 工具的经验/等级行(plusPrefix 前缀的行会被 原版剑削弱 移除)
mobheads/handlers/MobHeadTooltipHandler 生物头颅 的详细提示
replacing/PartToolTipHandler 部件替换 状态提示

VanillaSwordNerfHandler 引用的是 LevelingToolTipHandler.plusPrefix 这个常量字段,而非本类。

客户端限定

本类直接 import net.minecraft.client.Minecraft 与 org.lwjgl.input.Keyboard,因此只能在客户端调用。所有调用方都是 tooltip 事件处理器,天然只在客户端执行。

本 mod 不加 tooltip 行

值得强调的是:TooltipHelper 本身不添加任何 tooltip 内容。它只是一个按键查询工具。实际往 tooltip 里追加内容的是 LevelingTooltips(经验条与百分比)、VanillaToolTipHandler(挖掘等级行)、VanillaToolNerfHandler(深红「无用」警告)、MobHeadTooltipHandler、PartToolTipHandler 这几处,各自独立实现 addInformation / ItemTooltipEvent。

因此本条目记录的是一个共享基础设施,而非某个具体的提示功能。工具等级系统的提示内容见 工具等级系统。