绑定按键(Toggle Buttons)

基本信息

属性 值
键位 ID key.craftingtweaks.toggleButtons
默认按键 Keyboard.KEY_NONE(未绑定)
分类 key.categories.craftingtweaks
注册位置 ClientProxy.init() → ClientRegistry.registerKeyBinding
触发方式 TickEvent.ClientTickEvent 边沿触发

英文显示名 Toggle Buttons,中文「绑定按键」。

触发条件

比其余 5 个热键更严格一层:

  1. 前置条件同 旋转(玩家存在、容器非空、provider 已登记)
  2. 额外要求 Minecraft.getMinecraft().currentScreen instanceof GuiContainer, 即当前必须有一个容器界面打开
  3. 不受 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"))), 没有对应的配置项,详见 容器注册表。

相关条目