重置相机

基本信息

属性 值
翻译键 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)只做两件事:

  1. tripodRegistry.clear() —— 丢弃全部 9 个 三脚架机位;
  2. 输出 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 的组合键修饰符。

相关条目