绑定按键(Toggle Buttons)
基本信息
| 属性 | 值 |
|---|---|
| 键位 ID | key.craftingtweaks.toggleButtons |
| 默认按键 | Keyboard.KEY_NONE(未绑定) |
| 分类 | key.categories.craftingtweaks |
| 注册位置 | ClientProxy.init() → ClientRegistry.registerKeyBinding |
| 触发方式 | TickEvent.ClientTickEvent 边沿触发 |
英文显示名 Toggle Buttons,中文「绑定按键」。
触发条件
比其余 5 个热键更严格一层:
- 前置条件同 旋转(玩家存在、容器非空、provider 已登记)
- 额外要求
Minecraft.getMinecraft().currentScreen instanceof GuiContainer, 即当前必须有一个容器界面打开 - 不受
getModSupportState的ENABLED/HOTKEYS_ONLY门控约束 —— 只要容器已登记就能用
行为
本键不发送任何封包,纯客户端开关,直接改写并立即保存配置项:
当前 hideButtons |
动作 |
|---|---|
false |
置为 true,并从当前界面的 buttonList 中 removeIf 掉所有 GuiTweakButton 实例 |
true |
置为 false,重新调用 initGui(guiContainer) 把按钮加回去 |
无论哪种情况都会调用 CraftingTweaks.saveConfig() 立即落盘
(ConfigurationManager.save(CraftingTweaksConfig.class))。
改写的正是配置项 hideButtons,见 配置。
双重屏蔽关系
本键只能控制 hideButtons(全局),而按钮本身还有两层独立的隐藏判定:
| 判定层 | 来源 | 本热键能否改变 |
|---|---|---|
全局 CraftingTweaksConfig.hideButtons |
config/craftingtweaks-general.cfg |
能,本热键切换它 |
界面级 GuiScreenEvent.InitGuiEvent.Post 门槛 |
同上(读取处再判一次) | 同上 |
单容器级 SimpleTweakProviderImpl.hideButtons |
只能由 IMC RegisterProvider 的 HideButtons 字段设定 |
不能 |
第三层无法从游戏内修改:它只在 IMC 注册时被读取一次
(provider.setHideButtons(tagCompound.getBoolean("HideButtons"))),
没有对应的配置项,详见 容器注册表。