Ninjabrain Bot 按 F3+C 无法显示坐标的通用解决方案
/ 8 min read
Table of Contents
按下 F3+C 后,如果 Ninjabrain Bot 一直显示「等待 F3+C」,或者没有新增坐标,先不要反复切换设置。大多数情况可以用下面的步骤确定问题是在 Minecraft、剪贴板,还是维度名称解析。
本文适用于 Ninjabrain Bot 1.5.x,尤其是使用自定义维度(例如 minecraft:wolf)的整合包、服务器和地图。
做一个简单的检查
-
让 Minecraft 窗口处于前台,在游戏中按一次
F3+C -
打开记事本或其他纯文本编辑器,粘贴剪贴板内容。
-
确认内容类似下面的格式:
/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 或更高版本。打开终端后执行:
git clone https://github.com/Ninjabrain1/Ninjabrain-Bot.gitcd Ninjabrain-Botgit checkout 1.5.22. 修改三个文件
按下面的替换逐项编辑文件。除列出的行外不要改动其他代码。
在 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. 构建并启动
在仓库根目录执行:
mvn -B clean package assembly:single -DskipTestsjava -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 并应用补丁;标准维度仍无结果,再检查锁定、视角和重复输入
人机验证:请刷新页面以加载评论区