打开合成计算器
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,任何玩家都能用。