更新日:
giveコマンドが使えないときの確認ポイント
/give が動かないときは、まずアイテムIDと対象だけの短いコマンドを試します。次に個数、名前、エンチャントを一つずつ追加すると原因を探しやすくなります。
基本形を先に試す
まずは装飾を全部外した基本形で確認します。
/give @p minecraft:diamond 1これが動かない場合、アイテムIDや権限、実行環境の問題です。これが動くなら、個数、NBT、components、エンチャント指定のどこかで失敗している可能性が高いです。
Java 1.20.5以降の注意
Java版1.20.5以降では、アイテムの細かい指定が従来のアイテムNBTからcomponents形式へ移っています。古い解説記事の {Enchantments:[...]} をそのまま新しいバージョンで使うと失敗することがあります。
統合版ではそのまま使えない指定
統合版の /give はJava版のNBTやcomponentsと同じではありません。Java版の複雑なアイテムデータを統合版へ完全に自動変換することは難しいため、まずはアイテム名と個数だけの基本形に分けて確認します。
エラーメッセージ別の原因
- 「不明なアイテム」:アイテムIDの綴り違いか、そのバージョンに存在しないアイテムです。Java版1.20.3で
grassがshort_grassに変わったように、名前が変わったアイテムもあります。ID検索で確認してください。 - 「整数が無効です」:個数の位置に数字以外が入っています。IDと
[ ]の間に空白を入れると、この位置がずれて起こります。 - 「不明なコンポーネント」:componentsの名前の間違いか、1.20.5より前のバージョンでcomponentsを使っています。
- エラーは出ないのにアイテムが来ない:インベントリが満杯だと、足元にドロップしています。対象が別のプレイヤーになっていないかも確認します。
バージョン別の書き分け
1.20.4以前: /give @p diamond_sword{display:{Name:'{"text":"聖剣"}'}} 1
1.20.5〜1.21.4: /give @p diamond_sword[custom_name='{"text":"聖剣"}'] 1
1.21.5以降: /give @p diamond_sword[custom_name={"text":"聖剣"}] 1
名前を付けるだけでも、3つの時期で書き方が違います。使っているバージョンに合わせてgiveコマンド生成で作ると確実です。
個数の上限
Java版の /give で一度に渡せるのは、そのアイテムの「100スタック分」までです。64個まとまるアイテムなら6400個、16個のエンダーパールなら1600個、剣のようにまとまらないアイテムなら100個が上限で、それを超えるとエラーになります。
上限の範囲内でも、インベントリに入りきらない分は足元に落ちます。大量に渡すときは、受け取る人のインベントリを空けておくか、チェストに入れて渡す方法(シュルカーボックスに入れて渡す)が便利です。