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