已识别的字段
名称、lore、附魔、伤害、修复费用、不可破坏、CustomModelData、药水数据、玩家头颅、属性和冒险模式谓词都会映射为组件。
版本感知输出
Minecraft 1.21.4 更改了 CustomModelData,而 1.21.5 简化了多个组件并引入了 tooltip_display。请选择你实际运行的服务器版本。
安全回退
未知标签会保留在 minecraft:custom_data 中并列出供检查。转换器不会假装 custom_data 能让过时的游戏机制生效。
为什么 Minecraft 用 Components 取代了物品 NBT
Minecraft Java 1.20.5 用类型化的数据组件取代了旧版大多无结构的物品标签。在指令中,组件以方括号形式出现在物品 ID 之后,用逗号分隔。Damage 变为 minecraft:damage,display.Name 变为 minecraft:custom_name,Enchantments 变为 minecraft:enchantments,任意自定义字段移入 minecraft:custom_data。
这并非一次性的语法更改。Minecraft 1.21.4 将 custom_model_data 扩展为列表,供新物品模型系统使用。Minecraft 1.21.5 将工具提示可见性移入 minecraft:tooltip_display,并简化了附魔、属性、染色颜色和冒险模式谓词。当前 26.x 指令沿用这一较新的组件格式。
转换器可以映射已知的物品字段,但无法自动修复每个命令方块或数据包。实体 NBT、方块实体数据、战利品函数、谓词和文本组件也随版本变化。请始终在目标世界的副本或测试服务器上测试生成的指令。
如何转换旧版 /give 指令
- 1粘贴 1.20.4 或更早版本的 Java 版 /give 指令。你也可以只粘贴大括号之间的复合标签。
- 2选择精确的目标版本系列。当前服务器请使用 1.21.5 - 26.x,而不是旧的 1.20.5 组件格式。
- 3阅读每条警告。保留的 custom_data 是安全存储,但不会激活过时的 Damage、Potion 或 AttributeModifiers 标签。
- 4复制生成的指令,并在临时世界中测试,然后再替换数据包或命令方块系统中的指令。
此转换器不会更改的内容
它一次只转换一个物品堆叠或 /give 指令。它不会扫描整个数据包、重写 execute if data 检查,或更新 JSON 文件中存储的物品谓词。
它不转换 Bedrock 物品 JSON。Java 物品组件和 Bedrock 附加包组件是不同的系统,即使某些名称相似。
非常旧版本的文本组件可能仍需要手动现代化。复杂的玩家头颅、自定义药水效果和方块实体数据应针对目标版本进行检查。
NBT 转 Components 常见问题
为什么我的旧版 /give 指令在 1.20.5 中失效了?
Java 1.20.5 moved item data out of the old {tag} structure and into typed components written in square brackets after the item ID.
我可以把所有旧标签都放入 minecraft:custom_data 吗?
你可以将任意字段保留在那里,但内置机制不再从 custom_data 中读取 Damage 或 Enchantments 等旧结构标签。它们需要真正的组件。
对于 Minecraft 26.2 或 26.3,我应该选择哪个目标?
使用 Minecraft 1.21.5 - 26.x。该输出使用简化后的附魔和属性格式,以及新组件系统中的 tooltip_display。
转换器支持完整指令吗?
支持。它会读取旧版 /give 的目标、物品 ID、NBT 复合标签和数量,然后重建当前的 /give 指令。它也接受独立的 NBT 复合标签。
为什么会有关于 BlockEntityTag 的警告?
当前的 block_entity_data 必须标识有效的方块实体。一些旧指令依赖物品类型而省略了 id,因此该字段需要手动检查。
转换是在服务器上进行的吗?
不是。解析和转换都在你的浏览器本地进行。此工具不会上传指令。