更新日:
早見表
| セレクター | 選ばれる対象 | よく使う場面 |
|---|---|---|
@p | 実行位置にいちばん近いプレイヤー1人 | コマンドブロックの前に立った人にアイテムを渡す |
@a | すべてのプレイヤー | 全員にメッセージやエフェクト |
@r | ランダムなプレイヤー1人 | 抽選、鬼ごっこの鬼決め |
@e | すべてのエンティティ(Mob、アイテム、矢、防具立てなども含む) | 範囲内のMobを倒す、アイテムを消す |
@s | コマンドを実行している本人 | チャットで自分だけ、executeの中で対象自身 |
@n | いちばん近いエンティティ1体(Java版1.21以降) | 近くのMob1体だけを操作 |
@eは「全部」なので注意
/kill @eはMobだけでなく、落ちているアイテム、額縁、防具立て、トロッコ、そして自分自身も対象になります。Mobだけを狙うときは必ずtypeを付けます。
/kill @e[type=minecraft:zombie]
/kill @e[type=minecraft:item]
/kill @e[type=!minecraft:player]
3行目のtype=!playerは「プレイヤー以外」という意味です。それでも防具立てや額縁は消えるので、建築のあるワールドでは範囲も一緒に指定するのが安全です。
@sは実行者で意味が変わる
チャットで/effect give @s speedと打てば自分に効きます。ところが同じコマンドをコマンドブロックに入れると、実行者はブロックでエンティティではないため、@sは誰も選びません。コマンドブロックでは@pを使うか、次のようにexecuteで実行者を切り替えます。
/execute as @a[distance=..5] run effect give @s minecraft:speed 10 1
asで選ばれたプレイヤー一人ひとりが実行者になるので、@sはそのプレイヤー自身を指します。
@pの「近い」はどこから測るか
チャットで使えば自分の位置から、コマンドブロックならブロックの位置から測ります。execute atを使うと基準の位置が変わります。チャットで@pを使うと、たいていは自分自身が選ばれます。
よく使う引数(Java版)
distance=..10:10ブロック以内limit=3,sort=nearest:近い順に3体tag=boss:/tagでbossタグを付けた対象だけname="ボス":名前で指定(空白を含む名前は引用符で囲む)scores={money=100..}:スコアが100以上team=red:redチームのメンバー
引数はカンマで区切っていくつでも組み合わせられます。統合版ではdistanceがr、limitがcのように名前が違います(Java版と統合版の違いを参照)。
選ばれていないときの確認
「セレクターに一致する対象がありません」と出たら、条件を1つずつ外して、どの条件で絞られすぎているかを確かめます。詳しい手順は対象が見つからないときの原因にまとめています。
よくある質問
@pで自分が選ばれてしまいます。
チャットで実行すると、いちばん近いプレイヤーは自分です。他の人を選びたいときは@p[name=!自分の名前]のように自分を除外するか、名前やタグで指定します。
死んでいるプレイヤーも選ばれますか?
Java版では、@aはリスポーン画面にいるプレイヤーも選びますが、@p、@r、@eは生きている対象だけを選びます。死亡時の処理を作るときは@aを使います。
@eでプレイヤーも選ばれますか?
はい、プレイヤーもエンティティの一種なので選ばれます。プレイヤーを除くときはtype=!minecraft:playerを付けます。
統合版に@nはありますか?
@nはJava版1.21で追加されたセレクターです。統合版で近いエンティティ1体を選ぶときは@e[c=1]を使います。