指南
版本说明GiveItemLoot

Java 1.20.4 NBT 与 1.20.5+ 物品组件

8 分钟阅读

Minecraft Java 1.20.5 将许多物品功能从旧版 NBT 移至项目组件中。该更改会影响给予命令、物品替换、战利品奖励、自定义名称、lore、enchantments、自定义数据和许多资源包工作流程。 NBTForge 使版本选择器保持可见,因为这不仅仅是格式化。

开始与旧版 Java 1.20.4 目标进行比较,以便旧版物品 NBT 假设保持可见。
将相同的奖励项目切换到现代 Java 目标并比较生成的组件语法。
使用战利品工作流程和 Project 命名将传统奖励条目与现代奖励条目分开。

指南结果

关于何时使用旧版物品 NBT 以及何时使用现代项目组件的明确决策规则。

打开相关模块Give, Item, Loot选择正确的 Java 项目语法

推荐路径

  1. 在编辑物品堆栈之前选择确切的 Java 版本。
  2. 构建该物品一次,然后在 1.20.4 和 1.20.5+ 之间切换,只是为了有意比较Output。
  3. 将自定义名称、lore、enchantments、不可破坏、稀有度、闪光和自定义数据视为版本敏感字段。
  4. 在支持多个世界时,使用 Project 条目并排保留旧版本和现代版本。
  5. 在与其他创建者共享的命令旁边记录目标版本。

当旧版物品 NBT 仍然是正确目标时

当命令必须在 Java 1.20.4 或更早版本中运行时,请使用旧版物品 NBT。在该世界系列中,许多项目详细信息位于旧的 NBT 结构内,并且组件Output不是目标语法。

迁移旧命令库时,旧Output也很有用。 Import 旧命令,比较解析的字段,选择新的目标版本后才重新生成。

当项目组件是正确的目标时

对 Java 1.20.5 及更高版本使用组件Output。组件语法是许多物品功能的现代格式,包括名称、lore、enchantments、自定义数据和显示行为。

如果您正在为当前 Java 版本构建新的地图内容,请从组件Output开始,并且仅在您知道旧服务器需要时才生成旧语法。

  • 现代 Java 物品命令应使用所选的当前版本生成。
  • 战利品和奖励工作流程应使用与世界datapack相同的版本。
  • 除非您有意迁移,否则请勿将旧版 Give 命令与组件时代的项目修改器混合使用。

如何安全比较

切换版本可以更改字段名称、嵌套,有时还可以更改哪些字段是可表示的。在版本切换后使用Output差异面板,而不是通过眼睛扫描长命令。

对于共享模板,请将版本保留在文章标题、预设名称或 Project 条目名称中。一个名为“奖励剑”的命令是不明确的;名为“奖励剑 Java 1.21”的命令更容易支持。

运送Copy 的工件

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

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

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

相关指南与预设

常见问题

Java 1.20.5 Output总是更好吗?

仅适用于运行 1.20.5 或更高版本的世界。较旧的 Java 世界需要旧语法,因此正确的Output取决于目标世界。

我可以保留这两种格式吗?

是的。为旧版本和现代版本保存单独的 Project 条目,清楚地标记它们,并在底层项目设计更改时更新这两个条目。

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

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