ユキミ大福のマイクラBE生活

Minecraft統合版で遊んだりゲーム作ったりするブログ

コマンド解説-座標編-

  投稿日:2020/12/05

最終更新日:2020/07/17

 

どうも、ユキミ大福です。

今回はMinecraft統合版のコマンドにおいて重要な要素の1つである『座標』について、詳しく解説をしていきます。

ここで解説するコマンド等は、解説する注意事項等をよく読み、個人でより詳しく調べた上で、個人の責任において使用して下さい。コマンド等の使用によって如何なる損害が発生しても、筆者であり当ブログの管理者でもあるわたくしユキミ大福は一切の責任を負いかねますので、ご了承下さい。

 

ちょっとだけ振り返り

以前の記事では基準座標及び絶対座標・相対座標について軽く触れました。

しかし、基準座標などの解説をしたにもかかわらず、肝心の座標そのものについての解説はしていませんでした。

そのため今回は、座標についての詳しい解説から始めて行きます。

 

『座標』とは?

Minecraftにおける座標とは、ブロックやエンティティが存在する三次元上のある1点を数値で表現したものです。

『設定』→『世界』→『ゲーム』→『世界のオプション』内の『座標を表示』をONにすることで、今自分の居る座標が整数で表示されます。

ちなみに『座標を表示』のON/OFFは以下のコマンドでも切り替えられます

 

『座標を表示』をONにするコマンド

/gamerule showcoordinates true

 

『座標を表示』をOFFにするコマンド

/gamerule showcoordinates false

 

f:id:YukimiD1999:20201126091227p:plain

『世界のオプション』は変更しても実績の取得に影響はない

f:id:YukimiD1999:20201126091419p:plain

『座標を表示』がONであれば左上に座標が表示される

f:id:YukimiD1999:20201126103213p:plain

『座標を表示』で表示される座標はプレイヤーの足元の座標

この場合(-248, 43, 110)は砂で埋まっている部分の座標となる

なお、マイクラの座標は東に進むとXが+に、南に進むとZが+に、上に進むとYが+になります。数学の授業では

  • XY平面
  • 北をYの正の方向
  • 東をXの正の方向
  • 上への高さをZの正の方向

とすることが多いですが、マイクラでは

  • XZ平面
  • 南をZの正の方向
  • 東をXの正の方向
  • 上への高さをYの正の方向

としています。

この違いは地図で座標を確認しようとした時に間違いやすいです。地図上で置き換えれば、

  • 上がZの-
  • 下がZの+
  • 右がXの+
  • 左がXの-

となります。

数学のXY平面では

  • 上がYの+
  • 下がYの-
  • 右がXの+
  • 左がXの-

なので、間違えないようにしましょう。

 

…つまりどういうこと?という方向けにまとめますと、各軸の値が小さくなる方向が北西です。

この各軸の値が小さくなる北西の角(高さのY軸も含め)というのはコマンドではよく使うので、コマンドで基準座標の指定に迷ったら、まずは各軸の値が最も小さい座標を調べる癖をつけましょう。

 

int型の座標とfloat型の座標

さて、上の方で表示できるようにした『座標を表示』における座標ですが、これは整数で表記された座標です。ですが、マイクラ上において特にエンティティなどに関してはもっと正確に、小数で座標が管理されています。

このような整数で表記された座標等の値は、マイクラのプログラム上においては、int(イント)型の変数、小数で表記された値はfloat(フロート)型の変数に格納されているのです。

 

…なんだか唐突に難しい内容になったぞ?という方向けに、ちょっとだけプログラムへ踏み込んだお話をします。「そんなん知っとるわ!」という方はしばらく読み飛ばしてください。

 

変数って何者?

まず、プログラムにおいて、何かしらの文字列や数値等の値を保存する仕組みとして変数というものが存在します。

変数を簡単に例えるなら、何かを入れておくための箱と言うことができます。

この変数を用いて関数等を組むことで世の中のプログラムは動いているのですが、この変数に何でもかんでも値をぶち込めるようにしてしまうと色々と不都合なことが起こってしまいます。

例えば、以下の様な関数を設定するとしましょう。

 

Xの数値とYの数値を足し合わせ、Zに結果を保存する関数

Z=X+Y

 

小難しく書いてますが、要はただの足し算です。

この時、XYZそれぞれの数値を保存しておく変数を設定するのですが、先程も述べた通り、変数というものは文字列から数値までありとあらゆる値を保存できます。つまり、このままではXYに数値でないものを当てはめることができてしまうのです。

プログラミング言語の中には上の様な書き方でも文字列連結として機能するものもあったような気がしますが、恐らく多くのプログラミング言語ではエラーを起こします

 

上の例で「X=1」「Y=2」としてみましょう。

XとYの両方が数値なので「Z=3」と正常に計算ができます。

 

では「X=ユキミ」「Y=大福」とするとどうでしょうか。

この時、式の右辺は「ユキミ+大福」となります。私達人間なら「Z=ユキミ大福」かな?と想像できますが、コンピュータは「数値じゃないぞ!?どうすればいいんだ!まるで意味が分からんぞ!」となり、エラーを引き起こします。

 

これを回避するための仕組みが変数の型(データ型)と呼ばれるものです。これは、その変数にどのような値を保存できるかを示すものです。

ざっくり言えば、変数が「何かを入れる箱」ならば、その「何か」を決定するのが『変数の型(データ型)』です。

 

先程の関数であれば、XYZそれぞれの変数には数値しか入れられないように設定すれば、エラーを引き起こさずに済みます(実際のプログラミングにおいてはやや不十分ですが、今回はそこまで踏み込まないことにします)

 

先頭の方で紹介した『int型』や『float型』はそういったデータ型の一種で、マイクラを含め多くのプログラミング言語では『int型』は整数『float型』は小数を保存することができるデータ型です。

なお、いずれのデータ型も保存できる数の大きさに限界があります。プログラミング言語によってその限界は異なりますが、イクラ座標の場合は各軸で-3000万~+3000万が限界で、『float型』における小数は小数第2位までが有効です(第3位以降は無視される)。

 

本題に戻ります

やっとここで本題に戻りますが、マイクラのコマンドにおいては座標の入力を要求される場面が多く存在します。

コマンドで数値をint型で入力する場合は小数点をつけずfloat型で入力する場合は小数点をつけ、小数第2位までの値を入力します

 

例)

int型:200 50 60

float型:200.00 50.2 60.03

 

この時、少し注意することがあります。それがint型の座標とfloat型の座標は異なるということです。

 

『int型の座標』、つまりは『座標を表示』をONにしていると表示される座標ですが、この座標はブロック座標と呼ばれることもある、少し特殊な座標です。

これはマイクラ4大要素の1つであるブロックの位置を保存しておく座標で、エンティティが実際に存在する座標とは異なります

なお、エンティティが実際に存在する座標は『float型の座標』で表されます。

 

『int型の座標(ブロック座標)』はその名の通り、ブロックの設置に関わるコマンドで用いられますが、エンティティの位置に関わるコマンド等、座標に関わる全てのコマンドに使えます

一方『float型の座標』は、エンティティの位置に関わるコマンドでのみ用いられます。

これらが何の違いを生み出すのか、「 /tp ( /teleport ) 」の例を参考に見ていきましょう。

 

/tp @p 100 100 100

 

これは自身(または実行したコマンドブロックに一番近い人)を座標( 100, 100, 100 )にワープさせるコマンドです。実際に実行してみましょう。

f:id:YukimiD1999:20201126104910p:plain

左上の実行結果に注目

背景は気にしないで下さい

左上の実行結果を見ると、座標は「100, 100, 100」と入力したにもかかわらず、なぜか100.50, 100.00, 100.50 にテレポートしました」と表示されています。

これがint型座標(ブロック座標)とfloat型座標の違いです。

 

わたくしは始めに『Minecraftにおける座標とは、ブロックやエンティティが存在する三次元上のある1点を数値で表現したもの』と定義を解説しましたが、この定義に厳密に当てはまるのはfloat型座標となります。

 

「じゃあint型座標は、厳密には座標じゃないの?」という疑問も出てくるかもしれませんが、『三次元上のある1点』の『1点』が無限に小さい場合が『float型座標』であり、『1点』が1ブロックサイズの場合が『int型座標』なので、どちらもれっきとした『座標』であるといえます。

 

まあそんな厳密な定義の話はともかく、int型座標(ブロック座標)とfloat型座標が指し示す座標は異なるという点さえ押さえていただければ結構です。

 

再び「 /tp ( /teleport ) 」を例にとって見てみましょう。

 

/tp @p -220.00 10.00 120.00

 

まずは上記のコマンドを実行してみます。

f:id:YukimiD1999:20201126111132p:plain

コマンドを実行してテレポートし、真下を向くとこんな感じ

なお、画像の上方向を北に合わせている

次は以下のコマンドを実行してみましょう。

 

/tp @p -219.00 10.00 121.00

 

f:id:YukimiD1999:20201126111920p:plain

先程は金ブロックの左上の角の上に来たが、今度は右下の角にワープした

金ブロックの真上の座標はブロック座標の「-220, 10, 120」です。

そして最初のコマンドでブロックの左上の角が「-220.00 10.00 120.00」であることと、次のコマンドで右下の角が「-219.00 10.00 121.00」であることがわかりました。

イクラの座標は各軸の値が小さくなる方向が北西でしたね。なので

  • ブロック座標で指定した「-220, 10, 120float型座標の「-219.50, 10.00, 120.50であること
  • イクラにおける座標の基準点が、Y軸を含めた各軸の値が最も小さい点であること

がお分かりいただけたかと思います。

 

今回はX軸とZ軸にズレが生じていました。

これはブロック座標の基準点はブロックの中心に位置するのに対し、float型座標の基準点はブロックの北西の角にあるため、ブロック座標のXZ座標とfloat型座標のXZ座標にはズレが生じるのです。

上の例ではブロック座標が「X=-220, Z=120」であるのに対し、float型座標では「X=-219.50, Z=120.50」になっていますね。

つまり、ブロック座標の「-220, 10, 120」はfloat型座標に変換すると、

( -220.00, 10.00, 120.00 )~( -219.01, 10.99, 120.99 )

の範囲となるわけです。

ここで公式的なものを組んでみますとこうなります。

 

ブロック座標のXYZ座標を( x, y, z )とし、基準点をそのブロックの北西の角とした場合、そのブロック座標が含むfloat型座標の範囲は以下になる。

( x, y ,z )~( x+0.99, y+0.99, z+0.99 )

 

 

さて、ここまで長々とint型座標(ブロック座標)とfloat型座標の違いについて解説してきたところでアレなのですが、コマンドを実際に実行する際にはint型座標(ブロック座標)についてしっかりと押さえておけば大体大丈夫です。というか、float型座標を使うケースの方が個人的には稀です。

ただし、コマンドにおいて数値入力を求められるのは座標だけに限りません。それでもコマンドの大半のデータ型はint型なのですが、中にはfloat型の入力を要求するものもあります。

それぞれのコマンド解説でも、その数値データがint型なのかfloat型なのかを表記しますので、データ型そのものについては覚えておいてください。

 

 

それでは続いて、以前の記事でも触れた基準座標についての詳しい解説です。まずは以前の内容のおさらいから行きましょう。

 

『基準座標』とは?

コマンドを実行する際に、そのコマンドや相対座標が参照する中心座標のことです。基本的にはコマンドの実行者が存在する座標がそのまま基準座標になります

つまり、チャット欄からコマンドを実行した場合には、自分自身が居る座標が、コマンドブロックからコマンドを実行した場合には、そのコマンドブロックが存在する座標が基準座標となります。

この基準座標が密接に関わる例として、以前の記事ではターゲットセレクタを挙げていました。

『ターゲットセレクター』についての詳細な解説は ↓ のページでします。

 

ターゲットセレクターの1つに「@p」というものがありますが、これは基準座標に最も近いプレイヤーを対象とするものです。

この『基準座標に最も近いプレイヤー』というのは、チャット欄から実行した場合と、コマンドブロックから実行した場合で意味合いが違ってくるというお話は以前の記事でも述べた通りですが、もう一度おさらいしておきましょう。

 

  1. チャット欄から実行した場合
    この場合、基準座標は自分自身が居る座標になります。「@p」は自分自身が居る座標から最も近いプレイヤーが対象となるので、必然的に対象プレイヤーは自分になります

  2. コマンドブロックから実行した場合
    この場合、基準座標はコマンドブロックが存在する座標となります。そのため、コマンドブロックのある座標から最も近いプレイヤーが対象となるので、対象プレイヤーは自分だけとは限りません

f:id:YukimiD1999:20201126083952p:plain

上の場合、左の人の方が近いので@pの対象は左の人

f:id:YukimiD1999:20201126084115p:plain

上の場合、右の人の方が近いので@pの対象は右の人

ここまでが以前の記事でもお話をした内容でした。

そして以前の記事では、この基準座標は様々な方法で変更することができるということをほのめかしたところで終わっていました。ここからがいよいよ、今回の本格的な解説です。

 

基準座標を変更してみよう! 

上記の通り、基準座標は基本的にコマンドの実行者が存在する座標になります

ですが、この基準座標を変更する方法がいくつか存在します。簡単なものから解説していきましょう。

  1. ターゲットセレクターの引数を使う
    これはターゲットセレクターでエンティティを対象とする場合に使える方法です。
    ターゲットセレクターの引数の1つに『 x 』『 y 』『 z 』というものが存在します。これは基準座標をそのXYZ座標にするというものです。
    ここで「 /give 」を用いた例を挙げましょう。

    /give @p diamond 1

    以前の記事でも登場した「基準座標に最も近い1人に」「ダイヤモンドを」「1個与える」コマンドです。
    なお、状況は以下の画像の通りです。

    f:id:YukimiD1999:20201126121802p:plain

    画像の上が北であり、中心は( -220, 3, 120 )

    今回はチャット欄に打ち込んで実行します。いったいどうなるでしょうか。
    ちなみに実行者(カメラ役のプレイヤー)のブロック座標は「-220, 20, 120」です。

    f:id:YukimiD1999:20201126122009p:plain

    ダイヤモンドゲット!もちろん他の2人の手には渡っていない

    わたくしユキミ大福のもとにダイヤモンドが転がり込んできました。
    ターゲットセレクターの「@p」は基準座標から最も近いプレイヤー1人を対象とします。今回はわたくしがチャット欄から実行したので、

    ・基準座標:わたくし(ユキミ大福)の居る場所
    ・@pの対象:わたくしから一番近いプレイヤー、つまりは自分自身

    となりました。では次は少しコマンドを変えてみましょう。

    /give @p[y=3] diamond 1

    ターゲットセレクターの引数は、@p等の後ろに「 [ ] 」をつけて、その中に色々書き込みます。今回は基準Y座標を「y=3」にしてみました。
    この時、特に設定していない他の座標(今回はXZ座標)については、実行者の座標と同じになります。
    つまり( -220, 20, 120 )で上記のコマンドを実行した時の基準座標は、画像の中心である( -220, 3, 120 )となり、ダイヤモンドを受け取るプレイヤーが変わるはずです。実際にやってみましょう。

    f:id:YukimiD1999:20201126123136p:plain

    ※「YD.Polaris」は中心から右に居るプレイヤーのことです

    ターゲットセレクターが「@p」なのにもかかわらず、自分以外のプレイヤーにダイヤモンドが付与されました。これが、基準座標変更の力です。

    もう少し遊んでみましょう。今度は以下のコマンドを実行してみます。

    /give @p[y=3,z=125] diamond 1

    今回は基準Z座標を、先程より+5した場所(画像上では下方向に5ブロックずらした場所)にしてみました。
    つまり( -220, 20, 120 )で上記のコマンドを実行した時の基準座標は、-220, 3, 125 )となり、ダイヤモンドを受け取るプレイヤーがまた変わるはずです。やってみましょう。 

    f:id:YukimiD1999:20201126124147p:plain

    ※「Sirius1100」は中心から下に居るプレイヤーのことです

    Z軸方向に+5ということは、(画像上では下)方向に5ブロック移動することです。つまり、基準座標が「Sirius1100」が居る座標になったので、対象プレイヤーは当然「Sirius1100」です。

    では最後に、これも試してみましょう。

    /give @p[x=-220,y=3,z=120] diamond 1

    これで基準XYZ座標の全てが固定されました。これなら実行者がどこに居ても基準座標が( -220, 3, 120 )になるので、わたくしは自由な場所でコマンドを実行できるようになりました。試しに実行してみましょう。

    f:id:YukimiD1999:20201126124820p:plain

    カメラ役以外、立ち位置は変わっていない

    3人全員の視線の先、よくわからんマトみたいなものの中心が基準座標なので、対象プレイヤーは「YD.Polaris」になります。

    以上が、基準座標をターゲットセレクターの引数で変更する方法でした。

  2. /execute を使う
    続いてはコマンドの1つである /execute を用いる方法です。
    /execute は、コマンドを他のエンティティに実行させるコマンドです。
    基準座標の変更にどう使うのかというと、要は実行者を変えれば基準座標も変わるだろ!ということです(雑)。

    まずは /execute の構文を見てみましょう。

    /execute <セレクター> <基準座標(int/floot)> detect <検知座標(int/floot)> <検知ブロックID> <検知データ値(int)> <コマンド>

    長いので、省略版を今回は用いましょう。『detect』については、/execute の解説回に説明します。

    /execute <セレクター> <基準座標(int/floot)> <コマンド>

    注目すべきは<基準座標(int/floot)>の部分です。これは、/execute によってコマンドを実行させられる人の座標を基準とした、/execute によって実行するコマンドの基準座標をint型座標(ブロック座標)で記述する部分です。

    「どういう…ことだ…」という方もいらっしゃると思うので、具体例を挙げましょう。

    /execute @p[x=-220,y=3,z=120] ~ ~ ~ give @s diamond 1

    ちょっと難しくなってきましたね。
    このコマンドそのものの実行者をわたくしユキミ大福とすると、このコマンドは以下の様な意味のコマンドになります。

    ●「/execute」そのものの実行者:ユキミ大福
    ●「/give」の実行者:( -220, 3, -120 )に一番近いプレイヤー1人
    ●「/give」の基準座標:( -220, 3, -120 )に一番近いプレイヤーが居る座標
    ●「/give」の対象:( -220, 3, -120 )に一番近いプレイヤー自身

    「@s」というターゲットセレクターは、コマンドの実行者自身を必ず対象にします。このため、/give の対象が( -220, 3, -120 )に一番近いプレイヤー自身という表記になっています。
    また、詳しくは下の方でも解説しますが「 ~ (チルダ)」は相対座標を記述する際に用います。そのためこの場合、XYZ全てが「 ~ 」なので実行コマンドの実行者自身の座標が、実行コマンドの基準座標となるのです。
    実際に実行してみましょう。

    f:id:YukimiD1999:20201126132119p:plain

    一見すると、実行結果は先程と同じに見えるが…

    ( -220, 3, 120 )に近いプレイヤーは「YD.Polaris」なので、実行結果を見るだけだと先程までと変わりないように見えます。
    しかし先程までは

    ユキミ大福が
    ●「/give @p[x=-220,y=3,z=120] diamond 1」というコマンドを実行して
    YD.Polaris
    ●ダイヤモンドを
    ●1個与える

    ということをやっていました。それに対し今回は

    YD.Polaris
    ●「/give @s diamond 1」というコマンドを実行して
    自身(YD.Polaris)に
    ●ダイヤモンドを
    ●1個与える

    ということを行ったのです。

    「わからん!全然わからん!」という方むけに、もう少しわかりやすい例を挙げましょう。

    /execute @p[x=-220,y=3,z=120] ~ ~ ~ give @p[c=2] diamond 1

    先程と同様に、このコマンドそのものの実行者をわたくしユキミ大福とすると、このコマンドは以下の様な意味のコマンドになります。

    ●「/execute」そのものの実行者:ユキミ大福
    ●「/give」の実行者:( -220, 3, -120 )に一番近いプレイヤー1人
    ●「/give」の基準座標:( -220, 3, -120 )に一番近いプレイヤーが居る座標
    ●「/give」の対象:( -220, 3, -120 )に一番近いプレイヤーから1番目に近いプレイヤーと2番目に近いプレイヤーの計2人

    /give のターゲットセレクターが「@p[c=2]」になりました。
    『 c 』という引数は、コマンドの対象プレイヤー数を変更するものです。「@p」はデフォルトで「c=1」になっていると言えます。
    このため、/give の対象が( -220, 3, -120 )に一番近いプレイヤーから1番目に近いプレイヤーと2番目に近いプレイヤーの計2人にという表記になっています。
    実際に実行して確認してみましょう。

    f:id:YukimiD1999:20201126133832p:plain

    ダイヤモンドが付与されたプレイヤーが2人になった

    上の画像で( -220, 3, 120 )からのプレイヤー毎の距離関係については

    ●1番目に近い人:YD.Polaris
    ●2番目に近い人:Sirius1100
    ●3番目に近い人:YukimiD1999(ユキミ大福)

    となっています。これを先程の箇条書きに当てはめると

    ●「/execute」そのものの実行者:YukimiD1999(ユキミ大福)
    ●「/give」の実行者:YD.Polaris
    ●「/give」の基準座標:YD.Polaris が居る座標
    ●「/give」の対象:YD.Polaris から1番目に近い YD.Polaris と2番目に近い Sirius1100 の計2人

    となります。比較として、次のコマンドも実行してみましょう。

    /give @p[c=2] diamond 1

    単に@pとしているので、基準座標は実行者であるわたくしユキミ大福の座標になります。このコマンドを実行してみます。 

    f:id:YukimiD1999:20201126134706p:plain

    基準座標がユキミ大福の場所になっているため、このような結果になる

    上の画像でYukimiD1999(ユキミ大福)からのプレイヤー毎の距離関係については

    ●1番目に近い人:YukimiD1999(ユキミ大福)
    ●2番目に近い人:Sirius1100
    ●3番目に近い人:YD.Polaris

    となっています。これを先程の箇条書きに当てはめると

    ●「/give」の実行者:YukimiD1999(ユキミ大福)
    ●「/give」の基準座標:YukimiD1999 が居る座標
    ●「/give」の対象:YukimiD1999 から1番目に近い YukimiD1999 と2番目に近い Sirius1100 の計2人

    となります。基準座標を /execute で変えていないので、このような結果になりました。

 

ここまで基準座標の変更方法について解説してきましたが、これら2つの方法はそれぞれ得意とするシチュエーションが異なります。

 

ターゲットセレクターの引数による基準座標変更は、記述した座標から基準座標を動かさない場合に有効です。また『dx』『dy』『dz』や『r』『rm』を追記することで、対象座標範囲を制限できるのも強みの1つです。

 

一方、/execute による基準座標変更は、基準座標を対象エンティティの位置が変わる度に変化させる場合に有効です。また、実行コマンドを実行させるエンティティを、ターゲットセレクターで絞り込むこともできるのが強みの1つで、/execute をマスターできれば、マイクラのコマンドでできることが1億倍ぐらい広がります

 

/execute についての詳しい解説は、↓ の記事をご覧下さい。

 

絶対座標と相対座標

さて、続いては絶対座標相対座標についてです。

 

  1. 絶対座標
    特定の座標を直接指し示す座標です。コマンドに絶対座標で座標を記載すれば、基準座標がどうであれ、必ずその座標に影響を及ぼします。
    表記法は以下の通りです。

    X座標 Y座標 Z座標
    例)20 11 28
    例)15.5 60.8 120.2

  2. 相対座標
    基準座標または対象エンティティからの距離を指定する座標です。そのため、基準となる対象が変われば影響を及ぼす座標も変わります。
    基準座標と対象エンティティのどちらを基準とするかはコマンドによって異なりますが、基本的にはターゲットセレクターを用いるコマンドは対象エンティティを、それ以外は基準座標が基準になります。

    表記法はチルダ表記法キャレット表記法があります。
    チルダ表記法には「~ (チルダ)」を、キャレット表記法には「^ (キャレット)」を用います。
    表記法は以下の通りです。

    ~Xの距離 ~Yの距離 ~Zの距離
    ^Xの距離 ^Yの距離 ^Zの距離
    例)~20 ~11 ~28.8
    例)^15.5 ^60 ^120.2

 

以前の記事ではここまでで解説が終わっていました。今回はここからが本題です。 

 

チルダ表記法とキャレット表記法の違い

上記の通り、チルダ表記法とキャレット表記法のどちらも、基準座標からの距離を表すものですが、意味合いがやや異なります。

チルダ表記法の場合、ワールドのXYZ軸に沿って基準座標からの距離を表現します。

一方、キャレット表記法の場合は、コマンド実行者が向いている方向を『南』として基準座標からの距離を表します。

今回はこんなコマンドを例に取り上げます。

 

チルダ表記法の例

/execute @p[c=-1] ~ ~ ~5 kill @e[c=1,type=armor_stand]

 

キャレット表記法の例

/execute @p[c=-1] ^ ^ ^5 kill @e[c=1,type=armor_stand]

 

ちょっと複雑なコマンドなので1つ1つ解説していきます。

まず、/execute のターゲットセレクターの引数『 c 』に負の数が入っていますが、負の値を指定した場合には『実行者から一番遠い人』という意味に反転します。今回は、これを使って別のプレイヤーにコマンドを実行させようとしているわけですね。

続いては /kill のターゲットセレクタ『@e』ですが、これはプレイヤーを含む全てのエンティティをコマンドの対象とするものです。つまり、「@e」の引数『 c 』はデフォルトで『無限(対象エンティティ全て)』になっているので、『 c=1 』として一番近いエンティティ1体に対象を制限しています。

@eだけではプレイヤーまで対象になってしまうため、@eの引数に『 c 』と共に『 type 』を用いています。これはエンティティの種類を絞り込む引数です。今回は『 armor_stand 』、つまりは防具立てを対象としています。

 

そして、チルダとキャレットの違いを除くと、このような意味のコマンドになります( /execute 自体の実行者はユキミ大福としています)。

  • 「/execute」そのものの実行者:ユキミ大福
  • 「/kill」の実行者:ユキミ大福から一番遠いプレイヤー1人
  • 「/kill」の基準座標( ~ ):ユキミ大福から一番遠いプレイヤーが居る座標から南に5ブロック進んだ座標
  • 「/kill」の基準座標( ^ ):ユキミ大福から一番遠いプレイヤーから見て前に5ブロック進んだ座標
  • 「/kill」の対象:↑ で設定した基準座標から一番近い防具立て1体

そして今回は以下の状況を設定しました。

f:id:YukimiD1999:20201126170125p:plain

中心に居るプレイヤーが今回の /kill の実行者になる

中心に居る「YD.Polaris」が /kill の実行者になります。この「YD.Polaris」は真北を向いています。そのため、チルダ表記法の例の基準座標は YD.Polaris の後ろのネザライトブロックの上に、キャレット表記法の例の基準座標は YD.Polaris の前のネザライトブロックの上になるはずです。

まずはチルダ表記法の例のコマンドから実行してみましょう。

f:id:YukimiD1999:20201126170726p:plain

基準座標は YD.Polaris の後ろのネザライトブロックの上になっている

基準座標に一番近い、クリーパーヘッドを被った防具立てが消えました。

次はクリーパーヘッドを被った防具立てを復旧してから、キャレット表記法の例のコマンドを実行してみます。

f:id:YukimiD1999:20201126171331p:plain

基準座標は YD.Polaris の前方のネザライトブロックの上になっている

今度はスティーブヘッドを被った防具立てが消えました。このように、チルダ表記法とキャレット表記法が示す『基準座標からの距離』の意味は少し異なるのです。

なお、今回コマンド実行者の YD.Polaris にはXZ平面に対して平行に視線を向けてもらいましたが、これが上を向いていたり斜め前を向いていたりなど、視線が変われば、キャレット表記法の場合は基準座標が変わります。

ティーブヘッドを被った防具立てを復旧し、YD.Polaris に別方向を向いてもらってから同じコマンドを実行してみます。

f:id:YukimiD1999:20201126172146p:plain

YD.Polaris には北東を向いてもらった

基準座標がスケルトンヘッドを被った防具立ての方に寄ったため、スケルトンヘッドを被った防具立てが消えました。このように、キャレット表記法は実行者の向きも参照できるので便利です。

なお、キャレット表記法の向きの参照はコマンドブロックが実行者となる場合には無効になるので注意してください(この場合はチルダ表記法と同じ意味になる)。

 

 

13,000字ほど書き殴りましたところで、今回はここまでです。サバイバルでも座標にお世話になる人は多いと思いますが、ここまで深く座標について知る機会も無かったと思います。

コマンドを使う上で座標というものは、コマンドの構文の次ぐらいに重要な要素です。マスターできると、コマンドを使ったり利用法を考えるのがとても面白くなるので、是非覚えてみて下さい。

 

今回のまとめ

  • コマンドの数値入力は、整数のint型と小数のfloat型の2種類がある!
  • イクラの座標にはint形座標(ブロック座標)とfloat型座標の2種類がある!
  • 基準座標は、ターゲットセレクターの引数の『 x 』『 y 』『 z 』を使うか、/execute で変更できる!
  • 相対座標の書き方はチルダ表記法とキャレット表記法の2種類がある!
  • キャレット表記法は対象エンティティの向きも参照できる!

 

関連記事

 

当記事及び当ブログへのご意見・ご質問はいつでも受け付けております。

お気軽にコメント欄までどうぞ!

↓良ければポチッとお願いします。