データコンポーネント以降の /give コマンド:NBT タグに代わるもの
1.20.5 でアイテムの NBT はデータコンポーネントに置き換わりましたが、ネット上の /give スニペットの多くは今も旧形式のままです。ここでは、慣れ親しんだタグから現在機能するコンポーネントへの対応表を示します。
古いガイドから /give コマンドを貼り付けて、構文エラーで拒否されたなら、そのコマンドは 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:1b | unbreakable={} |
CustomModelData:3 | custom_model_data={floats:[3]} |
AttributeModifiers:[...] | attribute_modifiers |
display:{color:...} | dyed_color |
SkullOwner | profile |
3つの落とし穴
- 引用符。
custom_nameは SNBT で書かれたテキストコンポーネントを受け取るので、ただの名前はcustom_name="Skybreaker"で済みます。1.20.5 時代のガイドにある旧来のcustom_name='"Skybreaker"'形式では、引用符が表示されたままアイテム名になってしまいます。 - デフォルトの削除。
!を先頭に付けると、アイテムが通常持つコンポーネントを剥がせます —[!attribute_modifiers]はダメージボーナスを一切持たない剣になります。 - Bedrock にはこれが一切ない。 Bedrock の
/giveは今も独自のデータ値とコンポーネントのモデルを使います。Java のコンポーネント文字列はそこで動きません。
/give Generator はコンポーネント形式を自動で書き出し、両エディションの出力を表示するので、自分が使っているサーバーに合う方をコピーできます。