按键与 F3 快捷键

基本信息

属性 值
键位监听类 com.mitchej123.hodgepodge.client.handlers.ClientKeyListener
F3 组合键 Mixin mixins/early/minecraft/MixinMinecraft_ToggleDebugMessage.java
卸载的第三方键位 4 个模组(见下表)
语料 assets/hodgepodge/lang/en_US.lang 的 key.*(4 键)与 hodgepodge.debug.help.*(17 键)
注册 HodgepodgeClient.java:74 —— FMLCommonHandler.instance().bus().register(new ClientKeyListener())
相关页 聊天与 HUD、Tweaks 配置

功能

本模组涉及按键的地方有三处:1 个自建键位、9 个 F3 组合键、4 组第三方键位的默认解绑。

1. 自建键位:快速放置

属性 值
键位对象 ClientKeyListener.fastBlockPlacingKey(ClientKeyListener.java:25-28)
描述键 key.fastBlockPlacing.desc → Fast Block Placing
分类 key.hodgepodge.category → Hodgepodge
默认键 Keyboard.KEY_NONE(默认不绑定任何键)
注册 构造器内 ClientRegistry.registerKeyBinding(fastBlockPlacingKey)(:31)
总开关 TweaksConfig.fastBlockPlacing(默认 true)
权限开关 TweaksConfig.fastBlockPlacingServerSide —— 默认 false,为 false 时按此键无任何反应

反馈

按下后在物品栏上方(AboveHotbarHUD)显示 40 tick 的绿/红文字(ClientKeyListener.java:39-43):

  • key.fastBlockPlacing.enabled → §fFast Block Placing §aEnabled
  • key.fastBlockPlacing.disabled → §fFast Block Placing §cDisabled

每次按下都会翻转 TweaksConfig.fastBlockPlacing 并调 ConfigurationManager.save(TweaksConfig.class) 立即落盘。

⚠️ 逻辑不对称:代码先判 fastBlockPlacingServerSide(是否允许服务器上的玩家用),再翻转 fastBlockPlacing(功能本身是否生效)。两个开关都在 tweaks 分类。

2. F3 组合键

全部实现在 MixinMinecraft_ToggleDebugMessage 的 hodgepodge$addNewF3Logic(注入 Minecraft.runTick)。触发条件(:136):当前无 GUI 且 F3 按下 且本次是按下事件。

组合 行为 归属 源位置
F3 + A 重载所有区块 原版(Hodgepodge 未改) hodgepodge.debug.help.2
F3 + B 显示碰撞箱 原版 hodgepodge.debug.help.3
F3 + C 短按复制 /cofh tpx 命令到剪贴板;按住 6 秒会崩游戏 Hodgepodge 改造 :174-197
F3 + D 清空聊天记录(Hodgepodge 新增) Hodgepodge :162-164
F3 + H 高级物品提示 原版 hodgepodge.debug.help.6
F3 + P 失焦时暂停 原版 hodgepodge.debug.help.7
F3 + Q 在聊天框打印全部键位列表(Hodgepodge 新增) Hodgepodge :138-159
F3 + S/T 重载材质包 原版 hodgepodge.debug.help.9
Shift + F3 调试屏 + Profiler 曲线 原版 hodgepodge.debug.help.1
Alt + F3 Angelica 的 FPS/TPS 曲线 Angelica(Loader.isModLoaded("angelica") 判定) hodgepodge.debug.help.angelica
F3 + F4 游戏模式切换器 Et-Futurum-Requiem(Loader.isModLoaded("etfuturum") 判定) hodgepodge.debug.help.etfuturum

F3 + Q 的条件输出

/hp 之外的第二个「调试入口」。它在基础列表后按模组存在与否追加条目(:145-158):

  1. 打印 hodgepodge.debug.help.message(Key bindings:)
  2. 打印 help.0 与 help.1
  3. 若装了 Angelica → 追加 help.angelica
  4. 循环打印 help.2 至 help.9
  5. 若装了 Et-Futurum-Requiem → 追加 help.etfuturum
  6. 若装了 NotEnoughItems → 调 NEIKeyHelper.sendNEIHelp() 追加 help.nei.1 / help.nei.2

F3 + C 的崩溃倒计时

hodgepodge$countBeforeCrash 用静态 secondsBeforeCrash 状态机实现(:174-197),由 TweaksConfig.maxHoldF3CForCopy(默认 500 ms)控制「多久算短按」:

  • 短按 → 剪贴板写入 /cofh tpx <x> <y> <z> <dimension>,回复 Copied location to clipboard.
  • 超过阈值 → 每秒播报 hodgepodge.debug.crash.count.0 … count.6
  • 满 6 秒后状态置 -3,此后松开任意键都会崩
  • 中途松开 → hodgepodge.debug.crash.cancel(Crash canceled.)
  • maxHoldF3CForCopy = 0 可完全关闭该机制

注意生成的命令是 CoFH 的 /cofh tpx。未安装 CoFH Core 时这条命令不可用,但剪贴板内容照常生成。

3. 第三方键位默认解绑

由 TweaksConfig.unbindKeybindsByDefault(默认 true)统一控制,对应 4 个 Mixin 条目:

Mixin 条目 目标模组 Mixin 类 相位
UNBIND_KEYS_COFH(Mixins.java:1448) CoFH Core cofhcore.MixinProxyClient EARLY
UNBIND_KEYS_TRAVELLERSGEAR(:2103) Traveller’s Gear travellersgear.MixinKeyHandler LATE
UNBIND_KEYS_INDUSTRIALCRAFT(:2109) IndustrialCraft 2 ic2.MixinKeyboardClient LATE
UNBIND_KEYS_THAUMCRAFT(:2115) Thaumcraft thaumcraft.MixinKeyHandlerThaumcraft LATE

另有一条同开关的 CHANGE_KEYBIND_CATEGORY_AUTOMAGY(:2120)—— 不是解绑,而是把 Automagy 的键位移到 Hodgepodge 分类下。

相关条目

  • 聊天与 HUD - F3+D 清空聊天、聊天压缩、hotbar 消息
  • Tweaks 配置 - fastBlockPlacing / maxHoldF3CForCopy / unbindKeybindsByDefault / addToggleDebugMessage
  • 目标模组列表 - 上表 4 个模组在 TargetedMod 枚举中的定义