《BE1.12》コマンドの引数って何?初心者向けに解説【初級コマンド講座 #2】

はい、初級コマンド講座も第2回です。

今回は、前回もほんの少しだけ出てきた引数について初心者向けに解説します。

引数はコマンドを使う上で必須というわけではないのですが、これを使いこなせるようになると、一気にコマンドの幅が広がります。

引数にはかなりの種類があるので、無理に覚えようとしなくても、こんなものがあるんだ程度に思ってもらっても大丈夫です。


前回の初級コマンド講座は↓こちら


1.引数とは

まず引数とは、セレクターの後に記述してコマンドの対象をより細かく絞り込むためのものです。

必ずしも記述する必要はありませんが、@eなんかは対象の範囲がめちゃくちゃ広いので不便なことが多いです。そんなときに活躍するのが引数、というわけです。

引数の記述のしかた

まず引数は、セレクターの後ろにしか付けられません。プレイヤーの名前を直接指定した場合には引数は使えません。

引数を使う場合は、セレクターの後ろに四角かっこ(半角)を付けて、その[ ]の中に引数を記述します。

セレクターと[ ]の間に空白は必要ありません。

・記入例

@e[引数名=数字/文字列]

基本的な書き方はこんな感じです。

また、複数の引数を同時に使用することもできます。

・記入例

@e[引数=数字/文字列,引数=数字/文字列]

このように、複数の引数を同時に使用する場合は、間に,(カンマ)を入れる必要があります。


2.引数の一覧と説明

ここから、引数を一つ一つ解説していきます。

まずは引数の一覧です。

基準点を指定したx座標に変更 x
基準点を指定したy座標に変更 y
基準点を指定したz座標に変更 z
x軸方向に範囲指定 dx
y軸方向に範囲指定 dy
z軸方向に範囲指定 dz
指定した半径の内側の範囲を指定 r
指定した半径の外側の範囲を指定 rm
エンティティの縦方向の視点の最大の位置を指定する rx
エンティティの縦方向の視点の最小の位置を指定する rxm
エンティティの横方向の視点の最大の位置を指定する ry
エンティティの横方向の視点の最小の位置を指定する rym
対象となるエンティティの数を指定 c
経験値レベルが指定した数字以下のプレイヤーを指定 l
経験値レベルが指定した数字以上のプレイヤーを指定 lm
ゲームモードを指定 m
エンティティの種類を指定 type
エンティティの名前を指定 name
エンティティのスコアの値または範囲を指定 scores
エンティティのタグを指定 tag

はい、まあこれを見ただけでは何なのかさっぱりだと思います。意味がわかったなら初心者じゃないと思います。(言い過ぎ)

同じことを言いますが、引数はコマンドで必ず必須というわけではありません。正直使う場面がすごく限られるものもあります。なので理解が出来なかったとしてもあまり気にせず、ひとまずスルーしても全然構いません。コマンドを初めていきなり引数で頭抱える必要はないです。

基準点を変更する引数x,y,z

まずはx,y,z引数です。この引数で何ができるかというと、基準点を任意の場所に変えることができます。

例えば、元々の基準点の座標を100,35,-100とします。この時、@p[x=105]とすると、基準点の座標は105,30,-100になります。

わかりましたか?基準点のy座標・z座標は変わりませんが、x座標だけ指定した数字の位置になっています。

さて今度は、@p[x=92,z=-106]の時は基準点はどうなるでしょう。

この場合は、基準点のy座標は変わらず、x座標とz座標は指定した数字の位置になります。

y引数もxやz引数と同様で、基準点のy座標を指定した数字の座標の位置に変更します。

x,y,z引数を使えると、コマンドブロックの露出をなくすことができます。配布マップなどを作りたいと思っている方は、しっかり使えるようにするといいと思います。

ちなみに、この引数には相対座標を使うこともできます。

直方体に範囲を指定する引数dx,dy,dz

次はdx,dy,dz引数です。この引数は、例えばある部屋にいる人だけにコマンドを実行したい、などの時に使用します。

例えば、@a[dx=4]とすると、基準点のコマブロを含む金ブロックの場所にいるプレイヤーがコマンドの対象になります。

次に、@a[dx=6,dy=3]とすると、基準点のコマブロと外枠(金ブロック)を含む長方形の範囲にいるプレイヤーがコマンドの対象となります。

さらに、@a[dx=6,dy=4,dz=3]とすると、金ブロックを含む直方体の範囲内にいるプレイヤーがコマンドの対象となります。

はい、つまり、dxが縦(または横)、dyが高さ、dzが横(または縦)の長さを指定するということです。

ただし、気をつけて欲しいのは、この長さは、基準点を基準とした長さということです。

つまり、先程の@a[dx=6,dy=4,dz=3]は、基準点からx+方向に6マス、y+方向に4マス、z+方向に3マスの直方体を指定することになります。

x,y,z引数のように絶対座標を入れてしまうとめっちゃ広い範囲になってしまったりするので気をつけましょう。

球形に範囲を指定する引数r,rm

次はr,rm引数です。これは先程のdxとかよりも単純です。

例えば@a[r=4]なら、基準点から半径4の球体の範囲内にいるプレイヤーを指定します。

画像のオレンジの部分が範囲になります。

また、rmは、rとは違い、指定した半径の球体の範囲よりも外側を対象とします。

つまり@a[rm=5]なら、基準点から半径5の球形の範囲を除外した部分にいるプレイヤーを対象とします。

画像のオレンジの部分が範囲です。

また少し応用的な使い方として、@a[r=5,rm=4]のようにrとrmを同時に使うことで、下の画像のように中抜きの球形の範囲を作ることもできます。

ちなみにdxなどと合わせて使うことで、扇形のような範囲を作ることもできます。需要ないですが

対象となるエンティティの数を指定する引数c

次はc引数。これもまあまあ便利でよく使います。

この引数を使えば、村人を1匹だけ連れてくるなんてこともできます。

例えば、画像の状態で@e[c=1]とするとどのクリーパーを指定するのでしょうか。

答えは、基準点であるコマンドブロックに1番近い位置にいる1番左のクリーパーただ1人(人?)です。

はい、つまりc引数は、指定された数だけのエンティティを対象にする引数なのです。

基本的に基準点から近いエンティティから対象にしていきます。

さっきと同じ状態で@e[c=3]とすると、今度は選ばれるのは1番右以外のクリーパーになります。

ん?これじゃあ1番右のクリーパーは選ばれないじゃないかだって?まあまあお待ちなされ。もう一つこの引数には仕様があるんです。

今度は、@e[c=-1]としてみましょう。

すると、なんということでしょう。

今まで基準点から1番遠く、選ばれなかった1番右のクリーパーが、たった1人で選ばれているではありませんか。

そうです。負の数を入れることで、基準点から遠いエンティティから対象にしていくことが出来るのです。

これを使えば、基準点から遠くて今までハブられてきたエンティティを指定できます。

まあ、ぼっちなのは変わらないんですが

ぼっちを避けたい場合は、c=-2とかにしてあげれば、基準点から遠い2匹を指定できます。ぼっちはかわいそうですからね。

レベルを指定する引数l,lm

この引数はわりと単純です。l引数はレベルが指定した数字以下のプレイヤーを対象とし、lm引数は指定した数字以上のプレイヤーを対象にします。

この引数で指定できるのはレベルの数字だけです。細かい経験値量は指定できないので気をつけてください。

例えば、@a[l=10]ならば、レベルが10以下のプレイヤーだけを指定します。

また、@a[lm=15]ならば、レベルが15以上のプレイヤーだけを指定します。

また、@a[l=10,lm=5]とすれば、レベルが5以上10以下のプレイヤーだけを指定できます。

これを少し応用して、@a[l=10,lm=10]のようにすると、レベルがちょうど10になっているプレイヤーだけを指定できます。

ちなみにプレイヤー以外のエンティティはレベルの概念を持っていないので、この引数を使っても意味がありません。

ゲームモードを指定する引数m

この引数はもう見た通りです。特定のゲームモードのプレイヤーを指定します。

この引数は数字でゲームモードを指定します。0ならサバイバル、1ならクリエイティブ、2ならアドベンチャーモードを指定します。

例えば@a[m=0]なら、サバイバルのプレイヤーのみを対象にします。

また、この引数は、数字の前に!(半角)を入れることで、指定したゲームモード以外のプレイヤーを指定できます。

例えば@a[m=!1]とすれば、クリエイティブモード以外のプレイヤーを対象にします。

この引数を使えば、クリエイティブになった人を強制的にサバイバルにするなんてこともできます。

ちなみにこの引数も、プレイヤー以外に使っても意味がありません。プレイヤー以外のエンティティにはゲームモードの概念はないですからね。

エンティティの種類を指定する引数type

はい、めちゃくちゃ便利な引数です。

この引数は、村人やゾンビ、スケルトンなどのエンティティの種類を指定します。

例えばゾンビだけをコマンドの対象にしたいなんて時に使います。

まずは記入方法。

@e[type=エンティティID]

そうです、この引数には数字ではなくエンティティIDを入れる必要があります。

エンティティIDについては前回の記事で解説をしています。

はい、エンティティの種類とはどういうこと?と思う方もいると思います。

まず、画像の3体の違うエンティティがいるとします。

はい、左からゾンビ、スケルトン、クリーパーですね。

この中からゾンビだけをコマンドの対象にしたい、という時はどうすればいいのでしょうか。

まず、エンティティは種類ごとに固有のエンティティIDを持っています。

この3体も例外ではないです。それぞれこんなエンティティIDを持っています。

はい、ではこの中からゾンビだけを対象にするには、こんなふうに入力します。

@e[type=zombie]

これで、数あるエンティティの中からゾンビだけを対象とすることができます。

スケルトンやクリーパーだけを対象としたい時も同様に、@e[type=skeleton]とすればスケルトンだけを、@e[type=creeper]とすればクリーパーだけを対象にできます。

つまり、@e[type=zombie]は、zombieというエンティティIDを持っているエンティティだけを対象とするということです。スケルトンやクリーパーも同様です。

またこの引数も!をエンティティIDの前に入れることで、指定したエンティティ以外のエンティティを指定できます。

例えば@e[type=!zombie]なら、ゾンビ以外のエンティティを指定します

ちなみに、type引数は複数同時に使うことはできません

例えば、@e[type=zombie,type=skeleton]としてしまうと、エラーになりコマンドが実行されませんので気をつけましょう。

ただし、!による否定をしている場合に限っては、複数同時に使用することができます

例えば、@e[type=!zombie,type=!creeper]のようにすれば、エラーを起こすことはありません。ちなみにこの場合はゾンビとクリーパー以外のエンティティが対象になります。

エンティティの名前を指定する引数name

name引数は、コマンドの対象となるエンティティを名前で絞り込むことができます。type引数と何が違うかというと、type引数はエンティティが元々持っているエンティティIDで絞り込むものですが、name引数は、Mobに名札で付けた名前だったり、プレイヤーのゲーマータグを直接指定することができるという点です。

例えば、3匹の違う名前が付けられているクリーパーがいるとしましょう。

はい、左から「creeper」、「くりーぱー」、「なんか爆発するやつ」という名前がついていますね。

この中からcreeperという名前のクリーパーだけを指定したいのですが、type引数では3匹全員を指定してしまいます。

では、@e[name=creeper]としてみましょう。

この場合、creeperという名前のエンティティだけが対象になります。他にcreeperという名前のエンティティは存在していないので、これでcreeperという名前のクリーパーだけを指定することができました。

では今度は、真ん中のくりーぱーという名前のクリーパーだけを指定したいと思います。

この場合は、@e[name=”くりーぱー”]とします。

わかりますかね?「くりーぱー」の前と後ろに”(半角)の記号がついています。日本語の名前を指定する時は、この記号で名前を挟んで記述しなければいけません

また、この引数も!による否定が使えます。名前の前に!を入れることで、指定した名前以外のエンティティを対象にすることができます。

試しに@e[name=!”なんか爆発するやつ”]としてみましょう。

すると、「なんか爆発するやつ」という名前以外のエンティティを指定します。

また、name引数も複数同時に使用することはできませんが、type引数と同様に、!による否定をしている場合に限っては複数同時に使用することができます

例えば@e[name=!creeper,name=!”くりーぱー”]なら、「creeper」と「くりーぱー」という名前がついていないエンティティを指定します。

ちなみに、ドロップアイテムもエンティティですが、これにもname引数が使えます。

例えば、樫の木を地面に投げてみましょう。

はい、今ここに落ちているアイテムには、デフォルトで「樫の木」という名前がついています。

さらに、もう1つアイテムを落とします。金床で名前を「kashinoki」にしたアイテムを横に落とします。

この時、名前を変えられていないほうだけを対象にしたい時は、@e[name=”樫の木”]とします。

すると、樫の木という名前のエンティティ、つまり最初に落としたほうのアイテムだけが対象になります。

まあ何が言いたいかというと、金床で名前を変えていないアイテムにもname引数は使えるということです。

これを応用すると本当にいろんなことができるので、ぜひ覚えておいてください。

スコアの値を指定するscores引数

scores引数は、スコアの数字の値で対象を絞り込む引数です。
詳しい使い方はスコアボードコマンドの解説記事で解説しているので、詳しく知りたい方はこちらを見てください。

ついているタグを指定するtag引数

tag引数は、エンティティについているタグで対象を絞り込む引数です。
詳しい使い方はタグコマンドの解説記事で解説しているので、詳しく知りたい方はこちらを見てください。

rx,rxm,ry,rym引数

まずrx,rxm,ry,rym引数は何ができるかというと、「指定した方向を向いているエンティティをコマンドの対象にする」という感じのことができます。

ただ、正直普通にコマンドで遊ぶ分にはまず使いませんし、配布ワールドを作る時にも使うかどうかという感じではあると思います。

たぶん本格的な使い方は応用のほうでやると思いますので(丸投げ)、こちらの方では紹介程度の説明になります。なのでわからなくても気にせずスルーしてください。まじで。

rx,rxm引数

まずはrx.rxm引数です。

この引数は、縦の視点を指定する引数です。xなので横を想像すると思いますが、ややこしいことに縦の視点です。まあこの引数を超簡単に言うと、上を向いてるか下を向いてるか斜め上を向いてるか斜め下を向いてるか、をとても細かく検知できるという感じですかね。

まず、縦の視点は、画像の180°の範囲を表します。

そして、真下の方向が90、真上の方向が-90の-90から90までの範囲の数字で縦の視点の方向を表します。

このとき気をつけて欲しいのは、下を向くほど数値は大きくなることです。これまたややこしいので気をつけてください。

では、@a[rx=50]としてみましょう。rxは、最大の視点の角度を指定するため、視点が50の位置より上の方向(マイナスの方向)を向いているプレイヤーが対象になります。

今度はrxmを使ってみましょう。@a[rxm=-30]としてみます。

rxmは、最低の視点の角度を指定するため、今度は視点が-30の位置より下の方向(プラスの方向)を向いているプレイヤーが対象となります。

では今度はrxとrxmを同時に使ってみます。@a[rx=20,rxm=-45]としてみましょう。

この場合、最大が20で、最低が-45なので、視点が20の位置より上(マイナスの方向)で、なおかつ-45より下(プラスの方向)の方向を向いているプレイヤーが対象になります。

はい、rx,rxm引数はこんな感じです。多分こんな説明ではわからないと思いますが、この引数はあまり考えるととてもややこしくなるので、わからなければスルーしてください。

ry,rym引数

はい、これが最後の引数です。今度は縦の視点ではなく横の視点です。

横の視点は、南を0として、そこから右に向けば数字が増えていき左に向けば数字が減っていきます

数字の範囲は、-180~180です。180と-180の位置は同じになります。

では、@a[ry=80]としてみましょう。ryは、指定した数字以下の範囲を指定するので、80の位置よりも左を向いているプレイヤーが対象になります。パック〇ン

次はrymです。@a[rym=-130]としてみます。rymは、指定した数字以上の範囲を指定するので、-130の位置よりも右を向いているプレイヤーが対象になります。これまたパッ〇マン

もちろんryとrymも同時に使用できます。@a[ry=100,rym=-30]としてみます。この場合は、100の位置よりも左を向いていて、なおかつ-30の位置よりも右を向いているプレイヤーが対象になります。今度はパ〇クマンじゃない

rxよりもこっちのほうがややこしいかもしれませんね。特に180と-180の位置が同じなので、そこであれ?となるかもしれません。まあここもあまり考えるととてもややこしいので、わからなければスルーを推奨します。


はい、今回の記事はここで終わりです。まだ紹介できていない、rx,rxm,ry,rym引数については、次回紹介しようと思います。なぜなら、めちゃくちゃ難しいからです。(´・ω・`)

正直初級の内容ではないですが、紹介だけはしておきたいと思います。スルーしても全然構わないです。

次回は、引数編パート2と、コマンドブロックの種類・使い方についてになります。閲覧ありがとうごさいました。


前の講座↓

次の講座↓