指南
故障排查ImportOutputDiff

为什么您的 Minecraft 命令不起作用

9 分钟阅读

大多数损坏的命令会因以下四个原因之一而失败:命令针对错误的 Minecraft 版本、选择器不匹配任何内容、JSON 或 NBT 格式错误,或者命令在 Bedrock 中仅使用 Java 数据。 NBTForge 通过将支持的命令重建到键入的字段、显示警告以及在编辑时保持Output可见来提供帮助。

首先确定故障类型,然后在重试该命令之前遵循检查表。
首先将损坏的命令粘贴到 Import 中,然后确认 Java 版本和版本目标。
在修复命令时保持Output可见,并在每次更改后使用 Diff,以便真正的编辑显而易见。

指南结果

可重复的命令调试过程,可在再次粘贴之前隔离语法、目标、版本和版本问题。

打开相关模块Import, Output, Diff调试损坏的命令

推荐路径

  1. 将命令粘贴到导入栏中,然后检查 NBTForge 是否可以将其路由到可视模块。
  2. 设置 Edition 和 Version 以匹配将运行命令的环境。
  3. 在更改字段之前,请阅读Output警告,尤其是在 Java 和 Bedrock 之间移动时。
  4. 在指责 NBT 有效负载之前,使用简单的测试命令单独检查目标选择器。
  5. 每次修复后使用 Diff 以便您知道命令的哪一部分实际发生了更改。

从版本不匹配开始

从当前 Java 世界Copy 的命令可能会在 Java 1.20.4 或更早版本中失败,因为项目组件语法尚不存在。相反的情况也很常见:旧物品 NBT 可以被旧世界接受,但在 1.20.5 物品组件更改后会失败或表现不同。

首先设置NBTForge版本,然后重新生成Output。如果命令在版本切换后改变形状,请将其视为真正的语法差异而不是修饰性重写。

  • 对于旧版物品 NBT 示例,请使用 Java 1.20.4 或更早版本。
  • 使用 Java 1.20.5+ 进行组件样式项目Output。
  • 仅当 Bedrock 语法支持命令系列时,才使用 Bedrock Stable。

将选择器错误与有效负载错误分开

当选择器不匹配任何实体或匹配错误的玩家时,有效的命令可能会出现损坏。在调试长召唤或给出有效负载之前,使用一个小命令(例如 title、tellraw 或effect)测试选择器。

当选择器包含距离、分数、标签、团队或 NBT 筛选器时,请一次删除一个筛选器,直到命令再次开始匹配。然后以尽可能小的步骤重新添加过滤器。

检查报价和嵌套数据

长命令通常会中断嵌套的 JSON 文本组件、转义引号、物品名称、lore 行或手写 NBT。如果Command Pack含可见的播放器文本,请在可视化编辑器中重建该文本,而不是手动编辑引号字符。

NBTForge 在导入后最有用,因为它将大字符串转换为较小的类型字段。编辑一个字段,检查 Output,并避免一次更改多个嵌套部分。

  • 名称和 lore 通常会失败,因为 JSON 文本是双重转义的。
  • 当页面文本包含未转义的引号时,书籍可能会失败。
  • 当大括号或方括号未按正确顺序闭合时,自定义数据可能会失败。

运送Copy 的工件

使用本指南来生成玩家或地图制作者将实际运行的工件:Copy 的命令、订购的 Project 包或datapack资源。最终审查应该发生在 Copy 的Output上,而不仅仅是可编辑的构建器状态。

当工作流对版本敏感时,请在命令旁边标记目标版本。当它使用选择器、记分板、bossbars、标签、loot table或项目顺序时,请在发布设置之前在干净的世界中测试这些依赖项。

有关调试的实时示例,请比较 僵尸骑蜘蛛命令预设spider jockey召唤命令预设火焰皇帝火BOSS战利品预设

  • 来自 Output 的 Copy 用于一个命令,来自 Project 的订购包。
  • 将 Java、Bedrock 和快照变体分开。
  • 首先用无害的Output测试破坏性的选择器。
  • 当指南成为规范工作流程时更新相关预设。

相关指南与预设

常见问题

为什么命令在一个世界中有效,但在另一个世界中无效?

最常见的原因是 Minecraft 版本或版本不匹配。即使命令看起来相似,Java 项目语法、快照功能和 Bedrock 命令支持也可能有所不同。

我应该手动修复长命令吗?

仅适用于微小的编辑。对于长项目、召唤、文本或datapack命令,导入命令并以可视方式编辑字段,以便更轻松地查看引用转义和嵌套数据。

本指南什么时候应该成为 Project 包?

当工作流需要多个命令、有设置和清理顺序或测试后必须再次编辑时,请使用 Project。一次性命令可以保留在 Output 中。