はじめに
この解説では、前回解説しきれなかったセレクターについて詳しく解説します。座標は次回解説します。(一部上級者向けのものもあります。)
座標やセレクターとは何か、については前回の解説を見てください。
セレクター
セレクターは7種類あります。
- @a・・・すべてのプレイヤーのことです。mobなどは含まれません。
- @p・・・最寄りのプレイヤーのことです。自分が実行したときには自分が、コマンドブロックで実行するとコマンドブロックにいちばん近い人のことを指します。
- @s・・・自分自身のことです。コマンドブロックが実行すると、ワールド主が対象になります。
- @r・・・ランダムなプレイヤーです。ワールドにいる人の中からランダムに1人選ばれます。
- @e・・・すべてのエンティティのことです。プレイヤーだけでなく馬や牛なども含まれます。
- @initiator・・・NPCと話している人のことです。NPCについてはいつか解説します()
- *・・・これは、tag,scoreboardコマンドのときにのみ使えるセレクターで、ワールドの読み込み範囲外にいるスコアやタグをもったエンティティを指定できます。また、ワールド内にいないプレイヤーもカウントできます。
これらがセレクターです。
セレクター上級編
セレクターの後ろに[]を付け加えるとさらに細かく対象を絞ることができます。例えば、半径5mにいるプレイヤー、本を持ったプレイヤーなどです。また、コンマをつけると複数指定でき、感嘆符をつけるとそうでないものを指定することができます。具体的に見てみましょう。
@e[c=!5,scores={a=6}]
このような感じです。
c=!5は半径5メートル以内にいないもの、scores={a=6}はスコアaが6の人、という意味です。2つの条件で絞るときは上のようにコンマで仕切ります。ではセレクターの種類を見てみましょう。
- x,y,z・・・セレクターのxyz座標を指定します。確か3つ全て書いていないとエラーになるはずです。構文は下のような感じです。
@p[x=1,y=5,z=10]
- x,y,z,dx,dy,dz・・・上記のものの応用バージョンです。xyzには始点を、dxdydzには終点を入れます。ただし、dxdydzにはxyzからみた相対座標をいれる必要があります。つまり、xyzからなんブロック離れているか計算する必要があります。例えば12,5,4から6,8,5までの範囲を指定したい場合、dxdydzは-6,3,1のようになります。構文は下のものです。
@a[x=12,y=5,z=4,dx=-6,dy=3,dz=1]
- r,rm・・・r,rmは指定した範囲のなかにいるものを表します。2つあわせて使わなくても動作します。rmは含まれない範囲で、rは含まれる最大の範囲です。つまり、rm<範囲≦r のようになります。以下が構文です。8ブロックから10ブロック以内にいるプレイヤーということになります。
@a[rm=7,r=10]
- scores・・・これは、エンティティが持っているスコアの値で指定するセレクターです。具体的な構文で解説していきます。
@a[scores={crafters=5,colony=10}]
この上の構文は、スコアcraftersが5、colonyが10のプレイヤーということです。
5の部分は以上、以下や範囲を指定することが”..”によってできます。
以上の場合は、5.. 以下の場合は、 ..5 5以上10以下のように範囲を指定する場合は 5..10 のように書きます。
- tag・・・このセレクターでは、つけられたtagで絞ることができます。tagの名前は ” で囲ってください。また、tag= で終わらせることでtagが何もつけられていないものを指定することができます。以下は構文です。
@a[tag="Crafters"]
- c・・・これは指定した数のエンティティを近い順に選択するセレクターです。@p,a,eでは近い順に選択することができます。また、@rでは指定した数だけエンティティを選択します。また、マイナスをつけることで遠いものから順に選択することもできます。以下が構文です。
@a[c=3]
- lm,l・・・このセレクターではターゲットを経験値で絞り込みます。lmは最小の含まれるレベル、lは最大の含まれるレベルです。数式で表すと、lm≤レベル≤l になります。以下が具体的な構文です。
@a[lm=5,l=12]
- m・・・mはターゲットをゲームモードで絞り込めます。ゲームモードはadventure、survival、creative、spectatorの中から選択できます。省略方法などはgamemodeコマンドで解説する予定です。以下は具体的な構文です。
@a[m=survival]
- name・・・nameはエンティティの名前で絞るセレクターです。” で挟むと半角を開けても大丈夫です。複数使うことはできませんが、!を複数個使うならエラーがでません。以下が構文です。
@e[name=Steve]
- rx,rxm・・・このセレクターはエンティティの仰角で絞るものです。仰角とはプレイヤーの首の縦の向きのことです。プレイヤーが真上を見ているときは-90°、真下を見ているときは90°、水平方向を見ているときは0°になります。rxmが最小値で、rxが最大値となります。また、rxひとつだけでも動作します。
@a[rxm=-45,rx=40]
- ym,rym・・・これは、エンティティの水平角で絞るもので、rx,rxmの横バージョンだと思えば良いです。北が-180,東が-90,南が0,西が90というようになります。いつか図を描きます。
@a[rym=-90,ry=135]
- type・・・これはターゲットをエンティティの種類で絞るものです。例えばプレイヤーならprayer、牛ならcowになります。エンティティの一覧についてまとめたサイトはこちら。
@e[type=pig]
- hasitem・・・このセレクターはエンティティが持っているアイテムで絞るものです。引数は複数あります。
引数一覧
item・・・アイテムの名前空間idを指定します。複数指定することはできなかったはず。
deta・・・アイテムのデータ値を指定します。なお、32ビット文字である必要があります。
location又はslot・・・アイテムのスロット位置を指定します。スロットのidに関してはreplaceitemで解説する予定です。
quantity・・・アイテムの数を数字で指定します。5以上は 5.. 5以下は ..5 5以上10以下は 5..10 のように指定します。
これらの構文をあわせてのせておきます。
@a[hasitem={item=potion,deta=1,quantity=2,location=slot.mainhand}]
終わりに
今回はターゲットセレクターについて初心者も上級者も楽しめるように書きました。私自自身も変わっていたところがあるなど、面白かったです。
次回は座標について解説するつもりです。お楽しみに!
【前回】
【次回】
コメント
ついてに人狼コマンド教えてください
https://m.youtube.com/watch?v=SVQBxfWau0w
こちらの動画を参考にして見てはいかがでしょうか。