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(玩家手持超终端)。

相关条目

源码

  • src/main/java/com/glodblock/github/loader/KeybindLoader.java
  • src/main/java/com/glodblock/github/util/UltraTerminalModes.java
  • 复算:grep -c 'ClientRegistry.registerKeyBinding' src/main/java/com/glodblock/github/loader/KeybindLoader.java → 7