データコンポーネント後の/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:1b | unbreakable={} |
CustomModelData:3 | custom_model_data=3 |
AttributeModifiers:[...] | attribute_modifiers |
display:{color:...} | dyed_color |
SkullOwner | profile |
3つの落とし穴
- 引用符。
custom_nameはJSONテキストコンポーネントを取るため、プレーンな文字列は引数内で独自の引用符を必要とします:custom_name='"Skybreaker"'。 - デフォルトの削除。 アイテムが通常持っているコンポーネントを削除するには、
!をプレフィックスとして付けます —[!attribute_modifiers]はダメージボーナスが全くない剣を与えます。 - 統合版ではこの形式を使いません。 統合版の
/giveには独自のデータ値とコンポーネント体系があります。Java版のコンポーネント文字列は統合版では動作しません。
/give Generatorは、コンポーネント形式を自動で生成し、両エディションの出力を表示するので、お使いのサーバーに合ったものをコピーできます。