重置相机
基本信息
| 属性 | 值 |
|---|---|
| 翻译键 | key.freecam.resetTripods |
| 显示名 | Reset Cameras (with Toggle)(en_US.lang) |
| 默认按键 | 未绑定(Keyboard.KEY_NONE) |
| 默认类别 | key.categories.freecam → Freecam |
| 构造位置 | ClientEventHandler 构造函数 |
| 注册方式 | ClientRegistry.registerKeyBinding(resetTripodsKey) |
| 事件 | InputEvent.KeyInputEvent(ClientEventHandler.onKeyInput) |
| 生效前提 | 必须按住 切换自由相机(F4),且在松开时触发 |
⚠️ 默认没有任何按键。Keyboard.KEY_NONE 表示未绑定,玩家必须自己在选项界面里
手动指定按键,否则该功能无法使用。显示名里的 (with Toggle) 就是提示这一点。
触发条件
三重条件同时满足才执行:
| 条件 | 判定代码 |
|---|---|
| F4 处于按住状态 | else if (toggleKeyHeld) 分支(前面已被 F4 自身匹配排除) |
| 松开瞬间 | !pressed |
| 命中本绑定 | matchesKeyBinding(resetTripodsKey, key) |
命中后立即 while (resetTripodsKey.isPressed()) {} 排空队列,再调用
FreecamController.resetTripods(),最后置 tripodActivated = true——
最后这个标志意味着:本轮不会再因松手而切换自由相机。即"按住 F4 → 按一下本键再松开" 只会清空相机,不会顺带进出自由相机。
⚠️ 这是 切换自由相机 边沿触发机制的一个实际后果:想重置相机就必须 接受"这一轮 F4 不再切换状态"。
实际效果
FreecamController.resetTripods()(FreecamController.java:230)只做两件事:
tripodRegistry.clear()—— 丢弃全部 9 个 三脚架机位;- 输出 HUD 消息
msg.freecam.tripod.reset(All cameras reset), 经AboveHotbarHUD.renderTextAboveHotbar(text, 20, true, true)。
它不会关闭当前正在使用的机位:正在使用的 CameraEntity 引用由
FreecamController.cameraEntity 字段持有,不在注册表里。只是下次再选该槽位时会重新创建。
⚠️ 本按键在自由相机未激活时也可用(只要 F4 按住)——清空注册表不需要先进入自由相机。
按键比较
| 按键 | 默认 | 触发时机 | 是否受 tripodActivated 影响 |
|---|---|---|---|
| 切换自由相机 | F4 | 按下 + 松开两段 | 是(本键是"消费者") |
| 重置相机 | KEY_NONE |
仅松开,且需按住 F4 | 是(会置位) |
| 玩家控制开关 | KEY_NONE |
仅松开,且需按住 F4 | 是(会置位) |
三个按键全部经由 matchesKeyBinding 匹配,因此都支持 Controlling 的组合键修饰符。