打开合成计算器

Just Enough Calculation 唯一被 grep -rn "new KeyBinding" 命中的两个热键之一,用于直接打开 合成计算器界面,不依赖任何物品。

基本信息

属性 值
字段 JecaGui.keyOpenGuiCraft(public static final)
本地化键 jecalculation.key.gui_craft
英文显示名 Open crafting calculator
中文显示名 打开合成计算器
分类 jecalculation.key.category → Just Enough Calculation(中英文 lang 均为英文原文)
默认按键 Keyboard.KEY_NONE(未绑定)
注册时机 ClientProxy 的 client init 阶段
注册代码 ClientRegistry.registerKeyBinding(keyOpenGuiCraft)

默认按键在源码中写作静态导入的 KEY_NONE(即 LWJGLUtils/Keyboard.KEY_NONE), 不是 Keyboard.KEY_H 或任何具体字符。因此安装后这个热键默认什么都不绑定, 必须玩家自己去「选项 → 按键设置」里手动绑定才可用。

源码:

public static final KeyBinding keyOpenGuiCraft = new KeyBinding(
    "jecalculation.key.gui_craft",
    KEY_NONE,
    "jecalculation.key.category");

触发流程

玩家按下被绑定的键
  → Forge InputEvent.KeyInputEvent
  → FMLBusEventHandler.onKey(InputEvent.KeyInputEvent event)
  → JecaGui.onKey()
  → if (keyOpenGuiCraft.isPressed()) JecaGui.openGuiCraft(false)
  → JecaGui.displayGui(true, true, false, new GuiCraft())
  → mc.displayGuiScreen(new JecaGui(new GuiCraft()))

openGuiCraft(false) 的三个 displayGui 重载参数含义 (JecaGui.displayGui(boolean, boolean, boolean, IGui)):

参数 传入值 含义
updateParent true 打开后回写父界面(避免出现空栈)
acceptsTransfer true 允许 NEI 的 overlay handler 向界面传入配方
scheduled false 不走延迟打开(指令 /jeca craft 传的是 true)

isPressed() 而非 getIsKeyPressed(),所以是一次性边沿触发:按住不放不会反复开界面。

与指令的关系

/jeca craft 子命令调用的是 JecaGui.openGuiMath/openGuiCraft 的 true 分支 (见 指令)。因此即使玩家没有给这个热键绑定按键, 也仍然可以通过 /jeca craft 打开合成计算器——指令是热键的无绑定替代入口。 该指令权限等级为 0,任何玩家都能用。

相关条目