マイクラのコマンドの多くは、実行するときにプレイヤーやエンティティの指定をする必要があります。セレクターと引数はその指定の際に用いる記法です。
この記事ではコマンドを書くのに必要不可欠なセレクターと引数について解説しています。
セレクター
セレクターはざっくりとしたプレイヤー、エンティティの指定を行います。
セレクターは以下の5(+1)つあります。
- @a
ワールド内にいるすべてのプレイヤー - @e
読み込み範囲内にいるすべてのエンティティ(プレイヤーやゾンビなど) - @p
実行地点から最も近いプレイヤー - @s
コマンド実行者自身 - @r
ランダムなプレイヤーを一人選択する。type引数を指定するとそのエンティティを対象としてランダムに選ぶ。c引数を指定すると、指定した数だけランダムに選ぶ。 - (@initiator)
NPC使用時限定のセレクター。対話相手を指定する。
使用例1:ワールド内すべてのプレイヤーのゲームモードを変更する。
/gamemode creative @a
使用例2:ランダムなプレイヤーのレベルを10上げる
/xp 10L @r
引数
引数はセレクターだけでは絞り切れない複雑な条件を設定するために追加します。引数を指定する場合は、セレクターの後に[]をつけて、「パラメーター=値」という形で記述していきます。
使用できるパラメータにはエンティティの種類を指定するものや、エンティティの座標を条件とするものなどさまざまあります。
例えばエンティティの種類を指定するtype引数を用いて、@e(すべてのエンティティ)で指定した対象をゾンビのみに絞る場合は以下のように書けます。
/tp @e[type=zombie] 0 0 0
@eはすべてのエンティティを指定するセレクターですが、引数でゾンビを指定することでコマンドの対象はワールド内にいるすべてのゾンビとなります。
なお、引数は複数つけることも可能です。複数つける場合は各引数をコンマで区切って書きます。
例えばゾンビを指定した上記のコマンドに、エンティティの数を指定するc引数を追加したい場合は以下のように書きます。
/tp @e[type=zombie,c=1] 0 0 0
各引数の詳細
c
整数を入力し、コマンド実行場所から近い順にエンティティを選びます。負の値にすると遠い順で選ばれるようになります。
使用例1:実行場所から近いエンティティ3体を対象にする
/tp @e[c=3] 0 0 0
使用例2:実行場所から最も遠いプレイヤーを対象にする
/tp @a[c=-1] 0 0 0
dx, dy, dz
コマンドの実行座標からx方向にdx、y方向にdy、z方向にdzの直方体の領域内に存在するターゲットを指定します。一部の方向のみ指定された場合、他の値は0になります。例えば、[dx=1]は[dx=1,dy=0,dz=0]とみなされます。
なお、数字と指定範囲が直感とは少し異なり、[dx=0,dy=0,dz=0]の場合は長さ0で範囲が実質存在しないのではなく、1mの立方体が範囲となります。[dx=1,dy=1,dz=1]はその立方体からさらに1m分大きい立方体、つまり2mの立方体が範囲となります。癖のある仕様なので注意が必要です。
使用例1:実行座標からx方向の距離が2、y方向の距離が3、z方向の距離が5の範囲にいるエンティティを対象にする。
/tp @e[dx=2,dy=3,dx=5] 0 0 0
使用例2:実行座標からx方向に距離が-5.5、yとz方向は0の範囲にいるエンティティを指定する。
/tp @e[dx=-5.5] 0 0 0
family
各エンティティに設定されているファミリータイプを指定します。!をつけることでfamilyに属しないエンティティを指定します。複数回用いることも可能です。各エンティティのファミリータイプはビヘイビアパックのアドオンテンプレート内にあるentitiesのminecraft:type_familyコンポーネントから確認できます。
使用例1:ファミリータイプがzombieであるエンティティ(ゾンビやハスクなど)を対象にする。。
/tp @e[family=zombie] 0 0 0
使用例2:ファミリータイプがmonsterではない、かつinanimate(アーマースタンドやボートなどの無生物)ではないエンティティを対象にする。。
/tp @e[family=!monster,family=!inanimate] 0 0 0
has_property
一部のエンティティが持つコンポーネントに関する条件を追加します。現状では使い道が非常に限定されているため省略します。
hasitem
エンティティのアイテムスロットに関する条件を追加します。書き方が少し複雑であり、構文は以下のようになります。
hasitem={item=<アイテムID>, quantity=<数>, location=<スロット位置>, slot=<スロットID>, data=<データ値>}
- item:アイテムのIDを指定します。
- quantity:アイテムの数を指定します。範囲指定可能。
- location:インベントリ内のスロットの種類をしてします。例えば、slot.weapon.mainhand。
- slot :locationで指定したインベントリのIDを数字で指定します。範囲指定可能。
- data:アイテムのデータ値を指定します。
itemは必須でほかは任意です。ただし、slotを用いる場合はlocationが必須です。複数の条件を付けたい場合はhasitem=[{条件一つ目},{条件二つ目},…]のように書きます。
locationで使用できるスロット一覧
- slot.armor:馬や狼などの一つの防具を装備するエンティティの防具スロット
- slot.armor.chest:4つの防具を装備するエンティティ(プレイヤーやゾンビ等)の胸防具スロット
- slot.armor.feet:4つの防具を装備するエンティティの靴防具スロット
- slot.armor.head:4つの防具を装備するエンティティの頭防具スロット
- slot.armor.legs:4つの防具を装備するエンティティの足防具スロット
- slot.chest:ロバやラバのチェスト
- slot.enderchest:プレイヤーのエンダーチェスト
- slot.equippable:slot.saddle+ラマのカーペットスロット
- slot.hotbar:プレイヤーのホットバー
- slot.inventory:プレイヤーやチェスト付きボートのインベントリ
- slot.saddle:馬やロバのサドル
- slot.weapon.mainhand:プレイヤーやゾンビがメインハンドのスロット
- slot.weapon.offhand:プレイヤーのオフハンドスロット
使用例1:リンゴを持つプレイヤーを対象にする。
/tp @p[hasitem={item=apple}] 0 0 0
使用例2:鉄のインゴットと金のインゴットとダイアモンドを持つプレイヤーを対象にする。
/tp @p[hasitem=[{item=iron_ingot},{item=gold_ingot},{item=diamond}]] 0 0 0
使用例3:インベントリのスロット0~8(一段目)にリンゴを3つ以上10個以下持つプレイヤーを対象にする。
/tp @p[hasitem={item=apple,quantity=3..10,location=slot.inventory,slot=0..8}] 0 0 0
使用例4:手に鉄の剣を持っているエンティティからその剣を削除する。
/replaceitem entity @e[hasitem={item=iron_sword,location=slot.weapon.mainhand}] slot.weapon.mainhand 0 air
haspermission
プレイヤーがカメラ操作、移動操作が可能かどうかを条件とします。/inputpermissionコマンドと組み合わせることが前提です。haspermission={camera=(enabled|disabled),movement=(enabled|disabled)}
と書きます。
使用例1:カメラ操作ができないプレイヤーを対象にする。
/tp @a[haspermission={camera=disabled}] 0 0 0
使用例2:カメラ操作ができないかつ移動操作が可能なプレイヤーを対象にする。
/tp @a[haspermission={camera=disabled,movement=enabled}] 0 0 0
l, lm
プレイヤーの経験値に関する条件を追加します。「l」が上限、「lm」が下限をそれぞれ整数で指定します。
使用例1:レベルが10以上のプレイヤーを対象にする。
/tp @a[lm=10] 0 0 0
使用例2:レベルが10以上20以下のプレイヤーを対象にする。
/tp @a[lm=10,l=20] 0 0 0
m
ゲームモードを指定します。値はgamemodeコマンドと同様にadventure/a、creative/c、survival/s、spectator、default/dのどれかを入れます。
使用例:ゲームモードがアドベンチャーのプレイヤーのみを指定する。
/tp @a[m=a] 0 0 0
name
エンティティの名前を条件とします。プレイヤーであればプレイヤー名、その他のエンティティであれば名札やsummonコマンド時につけた名前を指定します。!をつけるとその名前ではないエンティティを対象にします。
使用例1:名前が「Steve」であるプレイヤーを対象にする。
/tp @a[name=Steve] 0 0 0
使用例2:名前が「Steve」でも「Alex」でもないプレイヤーを対象にする。
/tp @a[name=!Steve,name=!Alex] 0 0 0
r, rm
コマンド実行座標を中心とした円形の範囲を指定します。どちらも値として単位がm(ブロック)の半径を入力します(小数を含む)。rの場合は円の中にいるエンティティを対象にし、rmの場合は円の外にいるエンティティを対象にします。
使用例1:実行座標から半径5ブロック以内のエンティティを対象にする。
tp @e[r=5] 0 0 0
使用例2:実行座標から12.5ブロックより遠いエンティティを対象にする。
tp @e[rm=12.5] 0 0 0
rx, ry, rxm, rym
エンティティの視線の向きにに関する条件を指定します。視点の向きはx軸回転(ピッチ)とy軸回転(ヨー)で表されます。
x軸回転は水平方向を軸とした回転で、プレイヤーが垂直面でどの方向を向いているかを示します。0度は水平、90は真下、-90は真上です。y軸回転は垂直方向を軸とした回転で、プレイヤーが水平面でどの方向を向いているかを示します。0度はz正方向、90度はx負方向、180度はz負方向、-90度、270度がx正方向です。
rxはx軸回転の最大値、rxmはx軸回転の最小値、ryはy軸回転の最大値、rymはy軸回転の最小値を表します。
使用例1:ほとんど真上(-85度以下)を向いているプレイヤーを対象にする。
/tp @a[rx=-85] 0 0 0
使用例2:おおよそz正方向を向いている(-45~45)プレイヤーを対象にする。
/tp @a[ry=45,rym=-45] 0 0 0
scores
スコアボードによる条件を追加します。/scoreboardコマンドと組み合わせることが前提です。scores={obj1=数値,obj2=数値,...}
のように書き、複数のスコアボードについて条件を追加できます。!をつけることでその値でないスコアをもつエンティティを指定できます(そもそもそのスコアを持っていない場合は対象にならない)。
条件とする数値は値そのものの他に範囲指定も可能で、記法としては「..」を用います。5以下(~5)、0以上5以下(0~5)、5以上(5~)をそれぞれ 「..5」、「0..5」、「5..」と表します。
使用例1:スコアボードオブジェクトtest1が10であるプレイヤーを対象にする。
/tp @a[scores={test1=10}] 0 0 0
使用例2:スコアボードオブジェクトtest1が1~10であり、test2が1~10以外の値であるプレイヤーを対象にする。
/tp @a[scores={test1=1..10,test2=!1..10}] 0 0 0
tag
指定したタグが付いたエンティティを対象とします。/tagコマンドと組み合わせることが前提です。!をつけることで指定したタグをつけていないエンティティを対象とします。複数回使うことが可能です。
使用例1:「apple」タグを持つエンティティを対象にする。
/tp @e[tag=apple] 0 0 0
使用例2:「apple」タグを持たずかつ「orange」と「banana」タグを持つエンティティを対象にする。
/tp @e[tag=!apple,tag=orange,tag=banana] 0 0 0
type
エンティティの種類を指定します。!をつけることで指定したtype以外のエンティティを指定できます。!による否定は複数回使うことが可能です。
使用例1:すべての村人を対象にする。
/tp @e[type=villager] 0 0 0
使用例2:牛、鶏、羊ではないエンティティを対象にする。
/tp @e[type=!cow,type=!chicken,type=!sheep] 0 0 0
x,y,z
r 引数や dx,dy,dz 引数など座標を用いる引数について、基準となる座標を変更する引数です。通常の数値のほか ~ による相対座標も使用できますが、向き相対座標 ^ は使用できません。デフォルト値はコマンド実行座標で、x, y, zのうち一部のみを指定した場合は残りは実行座標のままになります。
あくまで引数内での基準座標が変わるのみで、executeのようにコマンド実行座標が変わるわけではありません
使用例1:座標 (0,10,0)を中心とした半径10m内にいるエンティティを対象にする。
/tp @e[x=0,y=10,z=0,r=10] 0 0 0
使用例2:コマンド実行座標から5.5m上の座標から最も近いエンティティを対象にする。
/tp @e[y=~5.5,c=1] 0 0 0
まとめ
この記事では、マイクラのコマンドを効果的に使用するために必要なセレクターと引数について詳しく解説しました。セレクターを使うことで、特定のプレイヤーやエンティティを簡単に指定でき、引数を追加することで、さらに細かい条件を設定することが可能になります。セレクターと引数を使いこなすことはコマンドを扱う上では必須レベルになりますので、ぜひ使えるようになりましょう。
コメント
どうでもいいですが
使用例1:ファミリータイプがzombieであるエンティティ(ゾンビやハスクなど)を対象にする。。
のとこに丸が2つあります