skip to content
阳帆の小窝

Ninjabrain Bot 按 F3+C 无法显示坐标的通用解决方案

/ 8 min read

Table of Contents

按下 F3+C 后,如果 Ninjabrain Bot 一直显示「等待 F3+C」,或者没有新增坐标,先不要反复切换设置。大多数情况可以用下面的步骤确定问题是在 Minecraft、剪贴板,还是维度名称解析。

本文适用于 Ninjabrain Bot 1.5.x,尤其是使用自定义维度(例如 minecraft:wolf)的整合包、服务器和地图。

做一个简单的检查

  1. 让 Minecraft 窗口处于前台,在游戏中按一次 F3+C

  2. 打开记事本或其他纯文本编辑器,粘贴剪贴板内容。

  3. 确认内容类似下面的格式:

    /execute in minecraft:overworld run tp @s 120.50 64.00 -35.25 90.00 -10.00

这行文字必须包含维度、X/Y/Z 坐标和水平/垂直角度。不要只看 Bot 窗口是否变化,直接粘贴剪贴板是区分问题类型最快的方法。

粘贴出来是空的,或仍是旧内容

这是「快捷键或剪贴板没有把内容交给程序」的问题,按以下顺序处理:

  • 确认按键顺序是 F3+C。笔记本键盘通常需要 Fn+F3+C,有些键盘还要先关闭媒体键模式
  • 确认 Minecraft 的窗口有焦点,并且没有被其他软件拦截 F3 或 C 键
  • 在 Ninjabrain Bot 的高级设置中尝试「Alternative clipboard reader」(代理/接管剪贴板)。这个开关只改变读取剪贴板的时机,切换后请重新按一次 F3+C
  • macOS 请在「系统设置 → 隐私与安全性」中允许 Java/Ninjabrain Bot 访问辅助功能和剪贴板;修改权限后重启 Bot
  • 仍然无法复制时,先确认 Minecraft 本身能把文字粘贴到记事本,再检查系统剪贴板管理器、远程桌面或输入法是否覆盖了剪贴板

如果记事本里也没有新的 /execute in ... 文本,请先解决上述输入问题;此时维度修复不会起作用

剪贴板有内容,但 Ninjabrain Bot 仍不显示坐标

如果每次按键后粘贴到记事本的内容都会更新,而 Ninjabrain Bot 没有新增坐标,重点检查文本中 in 后面的维度名称

标准维度

Ninjabrain Bot 能识别以下维度:

  • overworld 或 minecraft:overworld:按主世界坐标记录一次投掷
  • the_nether 或 minecraft:the_nether:按 Nether 的 8:1 坐标比例处理,用于盲定位等功能
  • the_end 或 minecraft:the_end:不会作为主世界末影之眼投掷加入计算

自定义维度

像下面这样使用自定义维度时,1.5.x 版本可能会静默忽略整行输入:

/execute in minecraft:wolf run tp @s -2842.77 84.00 -4000.27 -222.42 -31.50

这并不表示剪贴板读取失败:Ninjabrain Bot 已经读到了坐标,只是 1.5.x 版本只认识上面三个固定名称,无法判断 wolf 属于哪种维度,所以没有创建投掷(UI 也不会更新)。

手动应用补丁

目前没有包含该修复的可下载版本。请从源码构建自己的 Ninjabrain Bot。下面的步骤针对 1.5.2,不需要修改 Minecraft 世界或剪贴板内容

手动应用补丁后,程序可能不再被 speedrun.com 或 MCSR 认为是合法的,请在使用前确认仅在受控环境下使用。

1. 准备环境并获取源码

需要安装 Git、Java 21 或更高版本,以及 Maven 3.9 或更高版本。打开终端后执行:

Terminal window
git clone https://github.com/Ninjabrain1/Ninjabrain-Bot.git
cd Ninjabrain-Bot
git checkout 1.5.2

2. 修改三个文件

按下面的替换逐项编辑文件。除列出的行外不要改动其他代码。

在 src/main/java/ninjabrainbot/model/datastate/endereye/MCDimension.java 中,把枚举改为:

public enum MCDimension {
OVERWORLD, NETHER, END
OVERWORLD, NETHER, END, UNKNOWN
}

在 src/main/java/ninjabrainbot/model/datastate/endereye/F3CData.java 的 getMCDimension 末尾,把:

return null;

替换为:

return MCDimension.UNKNOWN;

在 src/main/java/ninjabrainbot/model/datastate/common/DetailedPlayerPosition.java 中,把:

return dimension == MCDimension.OVERWORLD;

替换为:

return dimension == MCDimension.OVERWORLD
|| dimension == MCDimension.UNKNOWN;

如果你的源码仍然把输入前缀写成 /execute in minecraft:,也要改成只检查 /execute in ,这样才能识别没有 minecraft: 命名空间的合法文本:

string.startsWith("/execute in ")

3. 构建并启动

在仓库根目录执行:

Terminal window
mvn -B clean package assembly:single -DskipTests
java -jar target/ninjabrainbot-1.5.2-jar-with-dependencies.jar

如果希望先运行项目测试,可执行 mvn -B test。以后请启动这个 target 目录中的 JAR,不要再启动下载的未修改版本。

4. 验证补丁

启动自行构建的 Ninjabrain Bot 后,按 F3+C,确认下面的自定义维度文本可以产生一次普通投掷:

/execute in minecraft:wolf run tp @s -2842.77 84.00 -4000.27 -222.42 -31.50

同时确认标准维度的行为没有改变:overworld 记录普通投掷,the_nether 保持下界语义,the_end 不创建普通主世界投掷。不要通过把自定义维度名称改成 overworld 来长期绕过补丁(虽然在服务器你也改不了);如果自定义维度不是 1:1 坐标比例,这样会得到错误结果。

为什么未知维度默认按主世界处理

F3+C 文本只带维度 ID、坐标和角度,不带维度注册表中的 coordinate_scale。程序无法仅凭这行文字判断一个新维度是否应使用 8:1 比例。因此「未知维度按主世界处理」只是兼容性默认值,不是对所有自定义维度物理比例的保证。需要完全准确时,应从模组、服务器 API 或用户配置读取维度元数据。

仍然没有结果时

确认输入已经被 Ninjabrain Bot 接收后,再检查这些常见情况:

  • Ninjabrain Bot 处于锁定状态,或当前开启了只记录结构位置的模式
  • 角色正在向下看;普通末影之眼投掷要求垂直角度在地平线以上
  • 你在 下界/末地,却期待主世界普通投掷结果
  • 两次 F3+C 的 X、Z 和角度完全相同,Bot 会忽略重复测量

一句话判断

先把 F3+C 文本粘贴到记事本:记事本没有新内容,排查快捷键和剪贴板;记事本有内容但维度名是自定义名称,按本文步骤 clone 1.5.2 并应用补丁;标准维度仍无结果,再检查锁定、视角和重复输入

人机验证:请刷新页面以加载评论区