按键与 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 §aEnabledkey.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):
- 打印
hodgepodge.debug.help.message(Key bindings:) - 打印
help.0与help.1 - 若装了 Angelica → 追加
help.angelica - 循环打印
help.2至help.9 - 若装了 Et-Futurum-Requiem → 追加
help.etfuturum - 若装了 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 分类下。