Guides / Commands & Data

数据组件时代下的 /give 命令:NBT 标签的替代品

1.20.5 版本用数据组件取代了物品 NBT,但网上大多数 /give 命令示例仍是旧写法。本文将你熟悉的旧标签映射到现在可用的新组件。

如果你从旧教程中复制粘贴了一个 /give 命令,但游戏却回复 Unknown item tag 或者悄无声息地吞掉了你的附魔,那说明该命令是基于 1.20.5 版本之前的 NBT 格式编写的。物品数据已经迁移到数据组件,旧的 {display:{Name:...}} 数据块不再被解析。

格式变了

old   /give @p diamond_sword{display:{Name:'"Skybreaker"'},Enchantments:[{id:sharpness,lvl:5}]}
new   /give @p diamond_sword[custom_name='"Skybreaker"',enchantments={sharpness:5}]

现在用的是方括号,而不是花括号。组件是物品 ID 后面的一个扁平的、逗号分隔的列表。

你会实际用到的映射

旧 NBT数据组件
display:{Name:...}custom_name
display:{Lore:[...]}lore
Enchantments:[{id,lvl}]enchantments={id:level}
Unbreakable:1bunbreakable={}
CustomModelData:3custom_model_data=3
AttributeModifiers:[...]attribute_modifiers
display:{color:...}dyed_color
SkullOwnerprofile

三个陷阱

  • 引号。custom_name 接受一个 JSON 文本组件,所以一个普通字符串在参数内部仍然需要自己的引号:custom_name='"Skybreaker"'
  • 移除默认组件。在组件前加上 ! 可以移除物品通常带有的组件——

[!attribute_modifiers] 会给你一把完全没有伤害加成的剑。

  • 基岩版不适用。基岩版 /give 仍然使用自己的数据值和组件模型;Java 版的组件字符串在那里无法运行。

/give 命令生成器 会为你生成组件形式的命令,并显示两个版本的输出,这样你就可以复制与你所在服务器匹配的命令。

/give 生成器 →

More guides

Browse all →

还想找别的我的世界工具?

一整套在浏览器里运行的生成器、查看器和转换器,全部免费。