データコンポーネント後の/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]はダメージボーナスが全くない剣を与えます。 - 岩盤版にはこれらはありません。 岩盤版 (Bedrock)
/giveは依然として独自のデータ値とコンポーネントモデルを使用しています。Java版のコンポーネント文字列は岩盤版では動作しません。
/give Generatorは、コンポーネント形式を自動で生成し、両エディションの出力を表示するので、お使いのサーバーに合ったものをコピーできます。