今回は統合版のexecuteコマンドにおける新仕様についてです。
コマンドで遊んでいる方はすでにご存知かもしれませんが、統合版のexecuteコマンドが拡張され、構文の一部が変更される予定です。
下記リンク先の記事によれば、統合版の新仕様のexecuteコマンドは今後段階的にjava版と同様になるとしています。おそらく近い将来、現行のexecuteコマンドに変更が加えられるアップデートが来ると思われます。docs.microsoft.com
現在、executeコマンドを使って遊んでいる方、あるいは今後executeコマンドを使ってみたいという方は、今のうちに今後の変更に備え、あらかじめ準備をしておいたほうがいいかと思います。
そこで今回は私がこれまで使ってみたexecuteコマンドを、新仕様のexecuteコマンドに書き換えを行ってみたいと思います。
ちなみに私はコマンドはJava版ではほとんど使ったことがないので、今回の統合版のexecuteコマンドの新仕様への書き換え作業は初めてとなります。
書き換えと聞くと、大変なのでは?と思われる方もいるかもしれませんが、やってみると意外にできるかと思いますので、ぜひチャレンジしてみてください。
ではまず新仕様のexecuteコマンドを使うための環境設定をしていきます。
現バージョン1.19.11では、実験の項目「今後のクリエイター機能」のトグルをONにすることで、新仕様のexecuteコマンドを扱えるようになります。
準備はこれだけです。
今後のクリエイター機能をONにして、クリエティブモードでチャットとコマンドを開いて、/executeと入力してみますと、以下のようにexecuteに続くサブコマンドとなるas、at、ifなどが画面左上あたりに表示されます。
一方、クリエイター機能の実験トグルをONにしていなければ、executeと入力すると、以下のようにexecuteに続く候補として@aや@sなどが表示されます。
「新仕様のexecuteコマンドに書き換え例」
例1
地面の下の石ブロック(石・花崗岩・閃緑岩・安山岩)をすべてガラスに変更して地面の下の構造を透過するコマンド
現行のコマンド
execute @p ~~~ fill ~15 ~15 ~15 ~-15 ~-15 ~-15 glass 0 replace stone
新仕様のコマンド
execute as @p at @s run fill ~15 ~15 ~15 ~-15 ~-15 ~-15 glass 0 replace stone
ポイントはexecuteの後の「as」と「at」です。「as」は、コマンド実行者(エンティティ)を指定します。つまり、誰に実行させるかをここで明示します。
ここでは最寄りのプレイヤーとなる@pを指定していますが、すべてのプレイヤーをコマンド実行者の対象にしたい場合は@aになります。
そして、続く「at」はコマンドブロックで実行する際には合わせて使います。
この「at」ですが、Java版では細かく、実行場所、向き、ディメンションを指定のエンティティに合わせることができます。
現在の実験段階の統合版では、「at」はコマンドを実行させるエンティティを指定するだけで機能します。ただ、Java版と異なるのでこのatに続く指定は将来的には変更される可能性があります。
この「at」で指定するパターンとして、@p、@a、@s、プレイヤー名のいずれかで機能します。
例2
指定したブロックの上に乗ると、プレイヤーが死ぬコマンド
現行のコマンド
execute @a ~~~ detect ~ ~-1 ~ grass 0 kill
新仕様のコマンド
execute at @a if block ~ ~-1 ~ grass run kill @a
草ブロックの上に乗ると、死んでしまうというコマンドです。
現行のコマンドはdetectを使って、足元に草ブロックがあるかどうかを検知しています。新仕様のコマンドはexecuteとif blockでその判断を行っています。
プログラミングではしばしばif文が使われます。具体的には、「もし〇〇という条件が成立するならば〇〇を実行する」という形で使われます。
ちなみに、以下写真のようにリピートコマンドブロックとチェーンコマンドブロックを使って、即死した後、スタート地点に移動させるということを行うこともできます。
1番目のリピートコマンドブロック
2番目のチェーンコマンドブロック
ということで、今回は今後マイクラ統合版で拡張予定の新仕様のexecuteコマンドについてでした。
最後までありがとうございました。それではまた~。