ターゲットセレクタ

ターゲットセレクタとは使用するコマンドを目的の対象に絞り込むための方法です。

変数(へんすう)

@sself コマンド実行者自身
@pplayer 最も近いプレイヤー1人
@rrandom ランダムに選ばれたプレイヤー1人
@aall players すべてのプレイヤー
@eentities すべてのエンティティ

@s: コマンドを使った人

コマンドを実行したエンティティ自身を対象にします。

# 自分にダイヤモンドを渡す
/give @s diamond

# 自分を10ブロック上に移動させる
/tp @s ~ ~10 ~

/executeを用いればプレイヤー以外のエンティティでも@sを使うことができます。

@p: 最も近いプレイヤー

コマンド実行者から最も近いプレイヤーが対象です。 主にコマンドブロックや/executeと合わせて使用します。

プレイヤー自身が使用した場合は自分自身になり@sと同じになります。 これは自分に最も近いプレイヤーは自分であると判断されるためです。

# コマンドブロックから使うと、そのコマンドブロックから最も近いプレイヤー
/give @p diamond

# 最も近いクリーパーのところへ、そのクリーパーから最も近いプレイヤーを移動させる
/execute @e[type=creepr, c=1] ~ ~ ~ tp @p @s

@p = @a[c=1] = @e[type=player, c=1]

@a: すべてのプレイヤー

すべてのプレイヤーを対象にします。

# すべてのプレイヤーにダイヤモンドを与える
/give @a diamond

# すべてのプレイヤーのゲームモードをサバイバルに変更する
/gamemode @a s

@a = @e[type=player]

@r: ランダムに選ばれたエンティティ

そのまま使うとランダムに選ばれたプレイヤー1人を対象にします。 次で説明する引数を使うことでプレイヤー以外を対象にし、複数選ぶこともできます。

# ランダムに選らばれたプレイヤー1人にダイヤモンドを与える
/give @r diamond

# ランダムに選んだゾンビ2体を自分のところに呼び寄せる
/tp @r[type=zombie, c=2] @s

@e: すべてのエンティティ

読み込み範囲内のすべてのエンティティを対象にします。 対象となるエンティティがとても多くなるので、通常は引数を加え絞り込んで使用します。 遠く離れすぎたモブは対象に入りません。

# すべてのエンティティを自分のところに呼び寄せる
/tp @e @s

# 落ちているアイテムを消す
/kill @e[type=item]

引数(ひきすう)

変数に加えることで対象をさらに細かく絞り込むことができます。

name名前
typeタイプ(エンティティの識別名)
familyファミリー(エンティティの分類)
tag

/tagで付けられた値

scores

/scoreboardで付けられた値

l, lm

level レベル(経験値で上昇する)
ccount 上限数。近い順から。マイナスで遠い順から。
mmode ゲームモード

r, rm

range 中心からの距離での範囲

x, y, z,dx, dy, dz

dimension 座標で指定する立方体の範囲

rx, rxm

roration x エンティティの顔の向いている方向。
南を正面と考えた時の顔の上下の向き(x軸回転)。

ry, rym

roration y エンティティの体の向いている方向(y軸回転)

name: 名前

名前を元にエンティティを絞り込みます。

  • @e[name=Steve]: Steveという名前を持っている。
  • @e[name=!Steve]: Steveという名前を持っていない

プレイヤー以外のエンティティは、名札で名前をつけることができます。(エンダードラゴンなど例外あり)

コマンドでは/summonで呼び出す際に名前をつけることができます。

type: 種類名

エンティティの種類で絞り込みます。 指定する名前は/summonで使うエンティティ名と同じです。

ビヘイビアーパックのidentifierで定義されている値なので、自分のアドオンで追加したエンティティも指定できます。

  • @e[type=player]: プレイヤーだけ。@aと同じ。
  • @e[type=!player]: プレイヤー以外。

同じゾンビ族でもそれぞれで種類が違うのですべて別物として扱われます。 特に通常ゾンビと村人ゾンビが異なることに注意してください。

  • @e[type=zombie]: ゾンビのみ。
  • @e[type=husk]: ハスク(砂漠ゾンビ)のみ。
  • @e[type=drowned]: ドラウンド(溺死ゾンビ)のみ。
  • @e[type=zombie_villager_v2]: 村人ゾンビのみ。

落ちているアイテムといった特殊なエンティティも選ぶことができます。

  • @e[type=item]: 落ちているアイテム
  • @e[type=armor_stand]: 防具立て

family: 分類名

分類名で絞り込みます。

  • @e[family=zombie]: ゾンビ族で絞り込む。

familyではtypeで別扱いになるゾンビ・ハスク・ドラウンドなどを一緒に扱うことができます。

ほとんどのエンティティは複数の属性を持っています。 例えばゾンビの場合はzombie, undead, monster, mobと4つ持っています。

undeadにするとスケルトンなども含めることができます。 monsterは敵対モブ全体です。 mobは友好的な動物までを含みます。

各エンティティがどのようなfamily属性を持っているかは、エンティティ一覧を参考にしてください。

tag: タグ

/tagで付けらた情報を元にエンティティを絞り込みます。

  • @e[tag=tagName]: "tagName"タグを持っている
  • @e[tag=!tagName]: "tagName"タグを持っていない

何も指定しないと特殊な操作になります。

  • @e[tag=]: タグを一切持っていない
  • @e[tag=!]: 少なくとも1つ以上のタグを持っている

タグの絞り込みは複数設定できます。

  • @e[tag=a, tag=b]: タグ"a"と"b"を両方(すべて)持っている。(aかつb)
  • @e[tag=a, tag=!c]: タグ"a"を持っていて、"c"を持っていない

scores: スコアボードの値

/scoreboardで付けられた値を元にエンティティを絞り込みます。 これだけ範囲の記法がJava版と同じです。

  • @e[scores={myscore=10}]: "myscore"の値が10。
  • @e[scores={myscore=10..12}]: "myscore"の値が10以上、12以下。
  • @e[scores={myscore=5..}]: "myscore"の値が5以上
  • @e[scores={myscore=..15}]: "mysocre"の値が15以下
  • @e[scores={foo=10,bar=1..5}]: "foo"が10で"bar"が1以上5以下。

l, lm: レベル

プレイヤーのレベルの状態で絞り込みます。

  • @e[l=3]: レベル3以下。
  • @e[lm=3]: レベル3以上。
  • @e[lm=3, l=3]: レベル3のみ。

使用例: レベルを使ってアイテム交換

# コマンドブロックから実行した場合
# 最も近いプレイヤーを交換対象として、レベルが3以上ならアイテムを与える
/give @p[lm=3] diamond
# レベルが3以上なら3レベル減らす(代金の支払い)
/xp -3L @p[lm=3]

c: 上限数

選択する数を指定します。

普通に(正の数 (プラス)で)使うと近い方から選ぶ。

  • @e[c=3]: 近い方からエンティティ3体。
  • @a[c=1]: 最も近いプレイヤー。@pと同じ。

負の数 (マイナス)で指定すると遠い方から選ぶ。

  • @a[c=-1]: 最も遠いプレイヤーを1人。
  • @e[c=-2, type=zombie] ゾンビを遠い方から2体。

@rで使用すると距離に関係なく人数分選ぶ。

  • @r[c=2]: 無作為(ランダム)にプレイヤーを2人選ぶ。

使用例: 3番目に近いプレイヤーだけを選ぶ

# 近い方から3人選び対象タグをつける
/tag @a[c=3] add target
# 近い方から2人選び対象タグを取り除く
/tag @a[c=2] remove target
# 対象タグを持っている人(3人目)だけを選んでコマンドを実行する
/give @a[tag=target] diamond
# 対象タグを消す
/tag @a remove target

m: ゲームモード

プレイヤーのゲームモードで絞り込みます。

  • @a[m=survival]: サバイバルモードのプレイヤー
  • @a[m=!adventure]: アドベンチャーモードではないプレイヤー

/gamemodeと同じように@a[m=s]@a[m=0]としても表記できます。

x, y, z, dx, dy, dz: 座標

基準となる座標からの範囲で絞り込む。

  • x, dx: x軸の座標範囲
  • y, dy: y軸の座標範囲
  • z, dz: z軸の座標範囲

少なくともどれか1組の設定が必要。

  • @e[x=0, dx=4]

実行者を基準にして(~0, ~0)からx軸方向に4ブロックが範囲。 高さは実行者と同じ1ブロック。

  • @e[x=-2, y=0, z=-2, dx=1, dy=255, dz=1]

実行者から(~-2, ~-2)の1ブロックが範囲。高さは0~255すべて。

  • @e[x=-2, z=-2, dx=4, dz=6]

(~-2, ~-2)からx軸に+4ブロック、z軸に+6ブロック分が範囲。 yを省略しているので、高さは実行者と同じ1ブロック分。

  • @e[x=-3, z=-3, dx=6, dz=1]
  • @e[x=-3, z=2, dx=6, dz=1]
  • @e[x=-3, z=-2, dx=1, dz=4]
  • @e[x=2, z=-2, dx=1, dz=4]

内側を含めたくない場合は、分けて実行する。

使用例: 範囲外のプレイヤーにウィザー状態にする

「範囲内」のエンティティにタグを付け、そのタグを持っていないことを条件とすることで、「範囲外」のエンティティを対象にできます。

# isInArea(範囲内にいる)タグを初期化する(*1)
/tag @a remove isInArea
# 範囲内のプレイヤーにisInAreaタグを与える
/tag @a[x=-10, y=0, z=-10, dx=20, dy=255, dz=20] add isInArea
# isInAreaタグを持っていないプレイヤーにウィザーをかける
/effect @a[tag=!isInArea] wither 999 0 true
*1. 毎回消さないと、一度でも範囲内にいた場合は常に有効になってしまう。つまり、後から範囲外に出た場合や、後から範囲内に入ってきた人を判定できない。

r, rm: 距離

実行者からの距離 (range)で絞り込む。

  • r: 半径の内側
  • rm: 半径の外側

下のグラフは2次元平面ですが、実際には3次元空間なので、円形ではなく球形になります。(円柱ではない)

  • @e[r=4]

半径4ブロックより内側。

  • @e[rm=2]

半径2ブロックより外側。

  • @e[rm=2, m=4]

「半径2ブロックより外側」かつ (and)「半径4ブロックより内側」。 つまり色が重なっている場所だけが対象。

  • @e[rm=2, m=4]

最終的にこの範囲だけが対象になる。

  • @e[r=2]
  • @e[rm=4]

「半径2ブロックより内側」または (or)「半径4ブロックより外側」。2回に分けて実行する。 @e[r=2, rm=4]の場合は、どこも重ならないので誰も対象になりません。

ry, rym: 体の向き

対象エンティティがどの方向を向いているかで絞り込みます。 y軸を基準にした回転rotation

  • ry: 最大値
  • rym: 最小値

z方向(南)を0とした時計回りの角度で指定します。 東方向はマイナスの角度で指定するので、北を-180として時計回りで再び北に戻る180までが範囲です。 ~-181,180~は範囲外としてエラーになります。0~360では指定できません。

  • @e[rym=0, ry=45]

真南から時計回りに45度まで。

  • @e[rym=-45, ry=0]

真南から反時計回りに45度まで。東側の指定にはマイナスを使う。

  • @e[rym=-45, ry=45]

南を向いているエンティティ。

  • @e[rym=90, ry=180]
  • @e[rym=-180, ry=-90]

少しでも北を向いているエンティティ。 180度をまたぐ場合は2回に分けて実行する。

  • @e[rym=0, ry=0]

真南を向いているエンティティのみ。

  • @e[rym=-180, ry=-180]

真北は-180で指定する。180では動かない。

rx, rxm: 顔の向き

対象エンティティの顔がどの角度を向いているかで絞り込みます。 x軸(上下)を基準にした回転(rotation)。

  • rx: 最大値
  • rxm: 最小値

水平線を0とした角度となり、真上が-90度、真下が+90度です。 後ろはありません。

  • @e[rx=0]

水平線から上を向いてるエンティティ。

  • @e[rxm=-30, rx=60]

正面から少し下までを向いているエンティティ。

  • @e[rxm=30]

下を向いているエンティティ。

  • @e[rxm=0, rx=0]

完全に水平線を向いているエンティティ。

次のページへ
座標とその指定の仕方