見出し画像

【コマンド】executeを使いこなす

Minecraftに存在するコマンドの中でも、一番使いどころが多いものといえば「execute」でしょう。

wikiでは網羅的に紹介されていますが、そのためか本質が分かりにくくなっています。そのため、この記事ではできるだけ実用的で本質的なことを紹介できるように努力します。

しかし、網羅的に学ぶことも必要不可欠です。ぜひ参考資料のwikiを横目に読んでもらえると効率的です。

※Minecraft Java Edition 1.18環境を想定しています


はじめに

executeコマンドは「他のコマンドに他機能を付与する」ことができます。


/execute as @e run say Hello Everyone!

例を挙げてみます。上記のコマンドは、全てのEntityが「Hello Everyone!」と発言するものです。

「/execute as @e run say Hello Everyone!」実行結果

コマンドを意味を解読してみましょう。
これはrunで指定されたメインコマンド「say Hello Everyone!」を、サブコマンド「as」で指定されたEntity「@e」が実行している仕組みになっています。(※実際にメインコマンドと呼ぶわけではないようですが、この記事では分かりやすいように以下そう呼びます)


/execute <sub_command1> <sub_command2> ... run <main_command>

少し抽象的に考えてみましょう。先ほどのコマンドは、上記のコマンドのようにサブコマンドとメインコマンドに種類分けできます。この中でも、サブコマンドは、いくつも連結させることができ、各それぞれに特徴のある機能を有しています。少し話を戻すと、メインコマンドという他のコマンドに、他機能をサブコマンドで付与するということになります。上記の例では、asがサブコマンドに当たり、実行するEntityを全てのEntityに指定していたわけですね。


「execute」概要

画像でまとめてみると、オレンジがメインコマンド、赤と緑がサブコマンドになります。先ほどの「as」もサブコマンドに割り振られています。ただ、storeだけは色を別に分けています。これは他のサブコマンドと違い、処理の順番が違うためです。

それらを含め、これからはいくつかサブコマンドを紹介していきます。


SubCommand

as

/execute as <entity> ...

<entity>で指定したEntityでメインコマンドを実行するものです。



at

/execute at <entity>

<entity>で指定したEntityの「座標、方向、ディメンション」でメインコマンドを実行するものです。

例で、牛が2マス上にテレポートする仕組みを作ってみましょう。牛に「tp ~ ~2 ~」を実行させればうまくいきそうです。

/execute as @e[type=minecraft:cow] run tp ~ ~2 ~
失敗例

そのままコマンドを実行してみると、実行したプレイヤーの頭の上に牛がテレポートしてしまいます。これはチルダで指定される相対座標の基準が実行したプレイヤーの座標になっているためです。ですから、基準を牛本体にしてあげれば機能を実現できそうです。その時に使うのが「at」になります。


/execute as @e[type=minecraft:cow] at @s run tp ~ ~2 ~
成功例



if

/execute (if|unless) (block|blocks|entity|score) ...

サブコマンドで指定した条件の全てを満たしてたらメインコマンドを実行するものです。個人的には、スコアボードを大小等号で比較できるのがとても便利と思っています。



store

/execute store (result|success) (score|block|entity|bossbar) ...

メインコマンドの結果を指定したものに格納できるものです。
ただし、その結果は整数ではなければいけません。少数は切り捨てされます。

例でスコアボード「result」にプレイヤーのx座標を保存してみます。dataコマンドでプレイヤーのx座標を取得しています。x座標がDouble型なため切り捨てられた値がスコアボードに格納されています。

/execute store result score @s result run data get entity @s Pos[0]


storeはEntity NBTにも格納することができます。(※プレイヤーはInventory, EnderItemsのみ)

/data get entitiy @e[type=cow,limit=1]

牛のNBTを見てみましょう。上記のコマンドを実行するとNBT一覧が見えます。ここではHealthを変更してみましょう。

/execute store result entity @e[type=cow,limit=1] Health float 0 run say Hello

牛のNBT Healthを0にすることができました。


演習

  • 全ての牛の2マス上に石ブロックを設置する

  • スコアボードが20のときに0にリセットする

  • 牛とプレイヤーの顔の向きを同じにする


参考資料




この記事が気に入ったらサポートをしてみませんか?