MCTOOLBOX
MC ToolboxMC TOOLBOX
Java 指令迁移

Minecraft NBT 转 Components 转换器

将 1.20.4 及更早版本的旧版 Java 物品 NBT 转换为 1.20.5、1.21.x 及当前 26.x 版本的物品组件语法。指令仅在浏览器中处理。

旧版输入

旧版物品 NBT 或 /give 指令

加载示例:

转换输出

当前 /give 指令

/give @p minecraft:diamond_sword[minecraft:custom_name={text:'Frost Blade',color:'aqua',italic:false},minecraft:lore=[{text:'Forged below Y -59',color:'gray'}],minecraft:damage=12,minecraft:repair_cost=3,minecraft:custom_model_data={floats:[27]},minecraft:unbreakable={},minecraft:enchantments={'minecraft:sharpness':5},minecraft:tooltip_display={hidden_components:['minecraft:unbreakable']}] 1

已转换组件

8

检测到的物品

minecraft:diamond_sword

已转换组件

  • display.Nameminecraft:custom_name
  • display.Loreminecraft:lore
  • Damageminecraft:damage
  • RepairCostminecraft:repair_cost
  • CustomModelDataminecraft:custom_model_data
  • Unbreakableminecraft:unbreakable
  • Enchantmentsminecraft:enchantments
  • HideFlagsminecraft:tooltip_display

已识别的字段

名称、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粘贴 1.20.4 或更早版本的 Java 版 /give 指令。你也可以只粘贴大括号之间的复合标签。
  2. 2选择精确的目标版本系列。当前服务器请使用 1.21.5 - 26.x,而不是旧的 1.20.5 组件格式。
  3. 3阅读每条警告。保留的 custom_data 是安全存储,但不会激活过时的 Damage、Potion 或 AttributeModifiers 标签。
  4. 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,因此该字段需要手动检查。

转换是在服务器上进行的吗?

不是。解析和转换都在你的浏览器本地进行。此工具不会上传指令。