更新日:
1. インベントリの中身を見る(Java版)
/data get entity Steve Inventory
Steveが持っているアイテムが、スロット番号・アイテムID・個数の一覧でチャットに出ます。1.21.5以降は、防具とオフハンドは Inventory ではなく equipment に入っています。
/data get entity Steve equipment
dataコマンドのくわしい使い方は dataコマンドの使い方 を見てください。
2. エンダーチェストの中身を見る(Java版)
/data get entity Steve EnderItems
本人がエンダーチェストを開かなくても中身を確認できます。
3. 特定のアイテムの数を数える(Java版)
/clear Steve diamond 0
最後を 0 にすると、アイテムを消さずに「何個見つかったか」だけが表示されます。0を付け忘れると全部消えるので注意します。
4. 持っている人だけを選ぶ
/execute as @a if items entity @s container.* minecraft:diamond run say ダイヤを持っています
Java版1.20.5以降の書き方です。container.* はインベントリ全体、weapon.mainhand なら手に持っているものだけを調べます。
/tag @a[hasitem={item=diamond}] add has_diamond
統合版は hasitem で、持っている人にタグを付けられます。タグの使い方は tagコマンドの使い方 にまとめています。
5. 持ち物を取り上げる
/clear Steve diamond
数を書かないと、持っているダイヤが全部消えます。取り上げる前に3の方法で数を確認しておくと安心です。くわしくは clearコマンドの使い方 を見てください。
6. 全員の持っている数をランキングにする(Java版)
/scoreboard objectives add dia dummy "ダイヤの数"
/execute as @a store result score @s dia run clear @s diamond 0
/scoreboard objectives setdisplay sidebar dia
clear ... 0 で数えたダイヤの数を、一人ひとりのスコアに入れて、画面の右に表示します。アイテムは消えません。「ダイヤ集め競争」のようなミニゲームにも使えます。スコアの使い方は scoreboardコマンドの基本 にまとめています。
7. 特別なアイテム(チケットなど)を持っているか調べる(Java版)
/give @s minecraft:paper[custom_data={ticket:1b},custom_name={"text":"入場チケット","italic":false}]
/execute as @a if items entity @s container.* minecraft:paper[custom_data~{ticket:1b}] run tag @s add has_ticket
1行目で目印(custom_data)を付けた紙をチケットとして配り、2行目でそのチケットを持っている人にタグを付けます。ふつうの紙では反応しないので、勝手に作られる心配がありません。名前の書き方は1.21.5以降の形です。チケットと交換するお店は 村人のお店を作るコマンド も参考にしてください。
うまくいかないときの確認ポイント
- プレイヤーが見つからない:オフラインの人の持ち物はコマンドでは見られません。
- 表示が長くて読めない:
Inventory[0]のように番号を付けると1つずつ見られます。 - 統合版で /data が使えない:統合版には /data がないので、hasitem で持っているかどうかを調べます。
よくある質問
持ち物を調べたことは相手にわかりますか?
/data get や /clear ... 0 は、相手の画面には何も表示されません。
シュルカーボックスの中身も見られますか?
はい。/data get の結果に、シュルカーボックスの中身も一緒に表示されます。
OPでなくても使えますか?
いいえ。持ち物を調べるコマンドはOP(管理者)の権限が必要です。