Key Bindings
基本信息
loader/KeybindLoader.java(@SideOnly(Side.CLIENT))——
用 ClientRegistry.registerKeyBinding 注册 7 个按键绑定。
| 静态字段 | 本地化键 | 默认键 | 作用 |
|---|---|---|---|
openTerminal |
ae2fc.key.OpenTerminal |
Keyboard.CHAR_NONE |
打开无线终端(默认模式) |
openCraftingTerminal |
ae2fc.key.OpenCraftingTerminal |
CHAR_NONE |
UltraTerminalModes.CRAFTING |
openLevelTerminal |
ae2fc.key.OpenLevelTerminal |
CHAR_NONE |
LEVEL |
openInterfaceTerminal |
ae2fc.key.OpenInterfaceTerminal |
CHAR_NONE |
INTERFACE |
openPatternTerminal |
ae2fc.key.OpenPatternTerminal |
CHAR_NONE |
PATTERN |
openPatternExTerminal |
ae2fc.key.OpenPatternExTerminal |
CHAR_NONE |
PATTERN_EX |
restock |
ae2fc.key.Restock |
CHAR_NONE |
补货(发 CPacketValueConfig(0, 1)) |
七个全部默认未绑定(Keyboard.CHAR_NONE),需玩家自行在选项中设置。
分类字符串统一为 "itemGroup.ae2fc"。
键名由 FluidCraft.MODID + ".key." + … 拼出,而 MODID 是 ae2fc
(不是分类名 ae2fluidcraft-rework)。
触发方式
handleKeybindings() 同时挂在两个事件上:
| 事件 | 方法 |
|---|---|
InputEvent.KeyInputEvent |
onKeyInput |
InputEvent.MouseInputEvent |
onMouseInput |
两者都调同一个 handleKeybindings()(不区分是键盘还是鼠标触发)。
判定是 if / else if 链 —— 同时按下多个键时只有第一个生效,
顺序即上表顺序(openTerminal 优先于其余 6 个)。
两个早退条件
| 方法 | 条件 |
|---|---|
handleOpenTerminalKey(mode) |
Minecraft.getMinecraft().currentScreen != null → 直接返回(已打开任何界面时不响应) |
handleRestockKey() |
同样先判 currentScreen != null;再判 p.openContainer == null → 返回 |
handleOpenTerminalKey 还要求
Util.getUltraWirelessTerm(player) 返回非 null(玩家手持超终端)。
相关条目
- Channel Loader — 按键发的两个包
- Wireless Ultra Terminal —
UltraTerminalModes - Configuration
源码
src/main/java/com/glodblock/github/loader/KeybindLoader.javasrc/main/java/com/glodblock/github/util/UltraTerminalModes.java- 复算:
grep -c 'ClientRegistry.registerKeyBinding' src/main/java/com/glodblock/github/loader/KeybindLoader.java→ 7