ターゲットセレクターはコマンド内で対象者を指定することが出来る機能です。うまく使えばかなり細かいターゲットの指定も可能になります。
ターゲットセレクターの基本
マイクラ統合版で使用できるターゲットセレクター変数には以下があります。
セレクター | 意味 | 対象数 |
---|---|---|
@a | 全てのプレイヤー | 複数 |
@e | 全てのエンティティ (プレイヤー含む) | 複数 |
@p | 最も近いプレイヤー | 1名 |
@r | ランダムで選ばれたプレイヤー (引数[type]によりエンティティも可) | 1名 |
@s | 自分 (コマンド実行者) | 1名 |
@initiator | NPCダイアログボタンを操作したプレイヤー | 1名 |
@a
全てのプレイヤーを指定します。
@e
全てのエンティティを指定します。この時、エンティティにはプレイヤーも含まれます。
@p
コマンド実行者から距離的に最も近いプレイヤーを1名指定します。
@r
ランダムに選ばれたプレイヤー1名を指定します。
@s
コマンド実行者自身を指定します。
@initiator
NPCダイアログボタンを操作したプレイヤーを指定します。
例えば、左のNPCダイアログの画像にある「戻る」ボタンには右画像のように
/dialogue open @e[name=サブスキル選択] @initiator
というコマンドが割り当てられています。
これは「戻るボタンを押したプレイヤー(@initiator)に対して”サブスキル選択”という名前のエンティティ(ここではNPC)のダイアログを開いて表示する」という意味になります。
コマンド実行者とは?
プレイヤーがコマンドを実行した場合はプレイヤーが、コマンドブロックでコマンドを実行した場合はコマンドブロックが実行者となります。
ターゲットセレクターのオプション
上記で解説した基本の変数に加えて、オプションとなる引数を[]で追加指定し対象を絞り込むことが出来ます。
記述する際は変数@~の後に[引数=値]として記述します。
また引数を複数記述する場合は[引数=値,引数=値]のように区切ります。
引数 | 意味 | 補足 |
---|---|---|
x,y,z | 座標を指定 | ただし他の引数の開始点として使用する座標の為単独で使用してもセレクターの対象には影響しない |
dx,dy,dz | 範囲を指定 | 開始点(指定しない場合は実行者)からd~で指定する点までの直方体範囲を指定する |
r | 半径を指定 | 開始点(指定しない場合は実行者)からの半径の内側を指定する |
rm | 最小半径を指定 | 開始点(指定しない場合は実行者)からの半径の外側を指定する |
c | 近い順の数 | 開始点(指定しない場合は実行者)から近い順にエンティティの数を指定する |
l | 最大レベルを指定 | lで指定した値以下のレベルを検索する |
lm | 最小レベルを指定 | lmで指定した値以上のレベルを検索する |
scores | スコアを指定 | スコアの値を指定する |
tag | タグを指定 | タグの名前を指定する |
name | 名前を指定 | エンティティの名前を指定する |
type | 種別を指定 | エンティティの種別を指定する |
family | 広義種別を指定 | エンティティの広義種別を指定する |
m | ゲームモードを指定 | プレイヤーのゲームモードを指定する |
hasitem | アイテムの所持を指定 | インベントリ内のアイテムを指定する |
haspermission | 権限を指定 | エンティティに許可された権限を指定する |
rx | 垂直方向の向きの最大角を指定 | プレイヤーが見ている垂直方向の最大角度を指定する 水平=0、真上=-90、真下=90 |
rxm | 垂直方向の向きの最小角を指定 | プレイヤーが見ている垂直方向の最小角度を指定する 水平=0、真上=-90、真下=90 |
ry | 水平方向の向きの最大角を指定 | プレイヤーが見ている水平方向の最大角度を指定する 南=0、東=-90、西=90、北=180 |
rym | 水平方向の向きの最小角を指定 | プレイヤーが見ている水平方向の最小角度を指定する 南=0、東=-90、西=90、北=180 |
座標(x,y,z)
開始点として座標を指定します。ただし単体では機能しません。
範囲(dx,dy,dz)
開始点からd~で指定する点までの直方体範囲を指定します。なお開始点を指定しない場合は実行者が開始点になります。
例)@a[x=0,y=0,z=0,dx=4,dy=4,dz=4]
開始点として(x=0,y=0,z=0)を指定し、範囲として(dz=4,dy=4,dz=4)を指定した例。この範囲内にある@aを指定することが出来ます。
開始点を指定しない場合はコマンドの実行者(プレイヤーやコマンドブロック)が開始点となる点に注意してください。
半径(r)
開始点からの半径をrで指定することで、その範囲内にいる対象を指定することができます。
例)@e[r=10]
コマンドの実行者が開始点となり半径10ブロック以内にいるエンティティを対象として指定しています。
最小半径(rm)
開始点からの最小半径をrmで指定することで、その範囲の外にいる対象を指定することができます。
例)@e[rm=2]
半径2ブロックの外にいるエンティティを対象として指定しています。
応用例)@e[r=5,rm=3]
rとrmを併記すると「半径3ブロック以上〜半径5ブロック以内」の範囲を指定することができます。
近い順の数(c)
cは近い順にエンティティの数を指定することが出来ます。
@a[c=1]は@pと同じ意味になりますが、他にもcは人数を増やしたり、@eに追加で指定したりという使い道があるのが特徴です。
例)@e[c=2]
実行者に近い順に2体のエンティティを指定しています。
最大レベル(l)
レベル(経験値)の値を(l)で指定します。これにより、レベルがlよりも小さいプレイヤーを指定することが出来ます。
例)@a[l=30]
レベル30以下のプレイヤーを指定しています。
最小レベル(lm)
レベルの最小値を(lm)で指定することにより、レベルがlmよりも大きいプレイヤーを指定することが出来ます。
例)@a[lm=10]
レベル10以上のプレイヤーを指定しています。
応用例)@a[lm=10,l=15]
lとlmを併記することで「レベル10以上、15以下のプレイヤー」を指定することが出来ます。
スコア(scores)
scoresはエンティティのスコアの値を指定することができます。
例)@a[scores={test=8}]
スコアオブジェクト名「test」の値が8のプレイヤーを指定しています。
さらに、スコアの値の指定を以下の方法で拡張することが出来ます。
記述 | 意味 |
---|---|
@a[scores={オブジェクト名=..8}] | 8以下 |
@a[scores={オブジェクト名=4..8}] | 4〜8以内 |
@a[scores={オブジェクト名=8..}] | 8以上 |
@a[scores={オブジェクト名=!8}] | 8以外 |
@a[scores={オブジェクト名=!4..8}] | 4〜8以外 |
例)@a[scores={test1=10,test2=3}]
2つ以上のスコアを指定するときは(,)で区切って併記することができます。
スコアオブジェクト名「test1」の値が10、且つ「test2」の値が3のプレイヤーを指定しています。
タグ(tag)
tagを使ってエンティティに付与されたタグの文字列を指定することが出来ます。
例)@a[tag=red]
タグ名「red」が付与されたプレイヤーを指定しています。
【タグに出来てスコアに出来ないこと】
タグを使用すれば『@a[tag=]』と記述することで『タグが付与されていないプレイヤー』を指定することが出来ますが、スコアでは『スコアが付与されていないプレイヤー』を指定することは出来ず、必ず何かしらの値を指定することになります。
名前(name)
nameを使用することでエンティティの名前を指定することが出来ます。
例)@a[name=okutani]
エンティティ名が「okutani」であるプレイヤーを指定しています。
種別(type)
typeを使用することでエンティティの種別を指定することが出来ます。
例)@e[type=skeleton]
種別「スケルトン」を指定しています。
指定できるtype一覧
指定できる種別には以下のものがあります。
allay | アレイ |
area_effect_cloud | |
armadillo | アルマジロ |
armor_stand | 防具立て |
arrow | 矢 |
axolotl | ウーパールーパー |
bat | コウモリ |
bee | ハチ |
blaze | ブレイズ |
boat | ボート |
bogged | ボグド |
breeze | ブリーズ |
breeze_wind_charge_projectile |
camel | ラクダ |
cat | 猫 |
cave_spider | 洞窟グモ |
chest_boat | チェスト付きボート |
chest_minecart | チェスト付きトロッコ |
chicken | ニワトリ |
cod | タラ |
command_block_minecart | コマブロ付きトロッコ |
cow | 牛 |
creeper | クリーパー |
dolphin | イルカ |
donkey | ロバ |
dragon_fireball | エンドラの火の玉 |
drowned | ドラウンド |
egg | 卵 |
elder_duardian | エルダーガーディアン |
elder_guardian_ghost | 未使用モブ |
ender_crystal | エンダークリスタル |
ender_dragon | エンダードラゴン |
ender_pearl | エンダーパール |
enderman | エンダーマン |
endermite | エンダーマイト |
evocation_fang | エヴォーカーのファング攻撃 |
evocation_illager | エヴォーカー |
eye_of_ender_signal | 投げられたエンダーアイ |
falling_block | 落下中のブロック |
fireball | 火の玉 |
fireworks_rocket | 花火 |
fishing_hook | 釣り竿のウキ |
fox | キツネ |
frog | カエル |
ghast | ガスト |
glow_squid | 光るイカ |
goat | ヤギ |
guardian | ガーディアン |
hoglin | ホグリン |
hopper_minecart | ホッパー付きトロッコ |
horse | 馬 |
husk | ハスク |
iron_golem | アイアンゴーレム |
item | アイテム |
leash_knot | リードの結び目 |
lightning_bolt | 雷 |
lingering_potion | 残留ポーション |
llama | ラマ |
llama_spit | ラマの唾液 |
magma_cube | マグマキューブ |
minecart | トロッコ |
npc | NPC |
ocelot | ヤマネコ |
ominous_item_spawner | |
painting | 絵画 |
panda | パンダ |
parrot | オウム |
phantom | ファントム |
pig | 豚 |
piglin | ピグリン |
piglin_brute | ピグリンブルート |
pillager | 略奪者 |
player | プレイヤー |
poler_bear | シロクマ |
pufferfish | フグ |
rabbit | ウサギ |
ravager | ラベジャー |
salmon | サケ |
sheep | ヒツジ |
shulker | シュルカー |
shulker_bullet | シュルカーの弾 |
silverfish | シルバーフィッシュ |
skeleton | スケルトン |
skeleton_horse | スケルトンホース |
slime | スライム |
small_fireball | 小さな火の玉 |
sniffer | スニッファ― |
snow_golem | スノーゴーレム |
snowball | 雪玉 |
spider | クモ |
splash_potion | スプラッシュポーション |
squid | イカ |
stray | ストレイ |
strider | ストライダー |
tadpole | オタマジャクシ |
thrown_trident | 投げられたトライデント |
tnt | TNT |
tnt_minecart | TNT付きトロッコ |
trader_llama | 行商人のラマ |
tropicalfish | 熱帯魚 |
turtle | カメ |
vex | ヴェックス |
villager | 村人 |
villager_v2 | 村人 |
vindicator | ヴィンディケーター |
wandering_trader | 行商人 |
warden | ウォーデン |
wind_charge_projectile | 投げられたウィンドチャージ |
witch | ウィッチ |
wither | ウィザー |
wither_skeleton | ウィザースケルトン |
wither_skull | ウィザースカル |
wither_skull_dangerous | ウィザー青スカル |
wolf | オオカミ |
xp_bottle | 経験値ボトル |
xp_orb | 経験値オーブ |
zoglin | ゾグリン |
zombie | ゾンビ |
zombie_horse | 未使用モブ |
zombie_pigman | ゾンビピグリン |
zombie_villager | 村人ゾンビ |
zombie_villager_v2 | 村人ゾンビ |
広義種別(family)
familyを使用することでtypeよりも大きい括りの種別を指定することが出来ます。
例)@e[family=inanimate]
family「inanimate」を使用することで「無生物のエンティティ」を指定しています。
※familyの一覧はWikiの記載がわかりやすいので参照してください。
ゲームモード(m)
mを使用することでプレイヤーをゲームモード別に指定することが出来ます。
例)@a[m=1]
ゲームモードが「クリエイティブ」のプレイヤーを指定しています。
指定できるゲームモード一覧
ゲームモード | 短縮表記 | 数字表記 |
---|---|---|
survival | s | 0 |
creative | c | 1 |
adventure | a | 2 |
default | d | — |
spectator | — | — |
所持アイテム(hasitem)
hasitemを使用すると、エンティティのインベントリにあるアイテムを指定することが出来ます。
例)@a[hasitem={item=ender_eye}]
エンダーアイを所持しているプレイヤーを指定しています。
hasitemで指定できる項目
hasitemの指定の中では以下の項目を追加指定することが出来ます。
item | アイテム種別 |
data | アイテムのデータ値 (指定しない場合はデフォルト0) |
quantity | アイテムの数 (指定しない場合はデフォルト1) |
location | インベントリの種類 (指定しない場合は「どこでも可」) |
slot | インベントリ内の場所 (指定しない場合は「どこでも可」) |
例)@a[hasitem={item=iron_helmet,data=0,quantity=1,location=slot.armor.head,slot=0}]
「鉄ヘルメットの耐久値MAXを一個、頭部の0番に所持しているプレイヤー」を指定しています。
item=iron_helmet
アイテム種別「鉄ヘルメット」を指定しています。
data=0
アイテムのデータ値を指定してます。鉄ヘルメットの場合は「0」は耐久値MAXの状態を指します。
※データ値はアイテムによって指す状態が違い、全体像としてあまりに膨大過ぎる&筆者も全てを知っているわけではないのでここで全てを解説することは不可能です。
quantity=1
鉄ヘルメットの所持数「1個」を指定しています。
location=slot.armor.head
「頭部の装備欄」を指定しています。
slot=0
インベントリ内の場所を指定しています。頭部の装備欄は1か所しかないので「0」のみ有効です。
locationの種類
hasitemで指定できるlocationの種類と対応するslot数は以下になります。
location (インベントリの種類) | slot | 説明 |
---|---|---|
slot.armor | 0 | 馬鎧専用インベントリ |
slot.armor.chest | 0 | 胸部防具用インベントリ |
slot.armor.feet | 0 | 足部防具用インベントリ |
slot.armor.head | 0 | 頭部防具用インベントリ |
slot.armor.legs | 0 | 脚部防具用インベントリ |
slot.chest | 0~53 | チェスト |
slot.enderchest | 0~26 | エンダーチェスト |
slot.equippable | 0~(エンティティによる) | 鞍及び馬鎧用インベントリ |
slot.hotbar | 0~8 | プレイヤーホットバー |
slot.inventory | 0~(エンティティによる) | エンティティ用インベントリ |
slot.saddle | 0 | 鞍用インベントリ |
slot.weapon.mainhand | 0 | 選択されているホットバー |
slot.weapon.offhand | 0 | オフハンド用インベントリ |
プレイヤーの向き(rx,rxm,ry,rym)
rx,rxm,ry,rymを使用すると、プレイヤーの向き(顔の向き)を指定することが出来ます。
rx | 垂直方向の最大角度を指定。 水平=0、真上=-90、真下=90 |
rxm | 垂直方向の最小角度を指定。 水平=0、真上=-90、真下=90 |
ry | 水平方向の最大角度を指定 南=0、東=-90、西=90、北=180 |
rym | 水平方向の最小角度を指定 南=0、東=-90、西=90、北=180 |
例)@a[rx=90,rxm=0]
垂直角で0°(正面)~90°(真下)を向いているプレイヤーを指定しています。
あっち向いてホイッ!でも作るんでしょうか。