マルチプレイなら『シン・VPS』がおすすめ!

【マイクラ】execute if/unless functionの使い方

【マイクラ】execute if/unless functionの使い方

この記事では、Minecraft Java Edition(バージョン1.20.3)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。

こんにちは!
マインクラフターのなつめ(@natsume_717b)です。

なつめ

2016年からマイクラを楽しんでおり、最近はクリエイティブモードでコマンドを駆使して遊んでいます!

この記事では、こんな疑問を解決します!

本記事の内容
  • if/unless functionで実行した結果がrun以降に影響する

ver.1.20.3にアップデートしたことで、executeコマンドでif function(unless function)を指示できるようになりました。

実際にやってみた様子がこちら。

functionとあることからfunctionコマンドと関わりがあることは自明ですが、実際にはどのような意味があるのか。

普通にfunctionコマンドを実行するのとは何が違うのか、そういったことを解説していきます。

それでは、見ていきましょう。

if/unless functionで実行した結果がrun以降に影響する

executeコマンドでifもしくはunlessを指定した後に、functionを指示することができます。

その場合functionで指示した関数を実行し、その結果次第でrun以降に記述したコマンドが実行されるかどうか決まります。

具体的には

  • 呼び出した関数にreturnコマンドによる戻り値があること
  • その戻り値が0でないこと

この2点を守っていれば、if functionではrun以降のコマンドが実行されます。

逆にunless functionの場合は実行されなくなります。
戻り値が0であったり、returnコマンドが存在しない場合には実行されるので、まさしくifとunlessの関係性ですね。

実例をもとに解説

実際のコマンドで見てみましょう。

まずは以下のようなmcfunctionがあったとします。
if/unless functionで呼び出す関数ですね。

execute as @a store result score @a Test_Count run return run xp query @s levels
give @a iron_ingot 1

1行目のコマンドは、コマンドの実行者のレベルを取得しつつ、その値をTest_Countというスコアボードに代入することを指示しています。

スコアボードの作成は以下のコマンドでどうぞ。
/scoreboard objectives add Test_Count dummy

return runを使うことで、実行したコマンドの結果を戻り値とするものですね。
これもver.1.20.3から追加されたものです。

詳しくは以下の記事で解説しています。

【マイクラ】結果が重要!return runの使い方を解説!

2行目はシンプルに鉄のインゴットを付与するgiveコマンドです。

このコマンド自体には解説することありませんが、return runでもreturnコマンド同様に関数を強制的に終了させる仕様があります。

なので、1行目のコマンドが成功した時点で関数の呼び出しを終了させるため、鉄のインゴットが手に入ることはありません。

今回は上記のmcfunctionをntm:testという関数として、実行します。

そして、チャット欄で実行するものがこちら。

/execute if function ntm:test run give @a diamond 1

unlessの場合は以下になります。

/execute unless function ntm:test run give @a diamond 1

レベルが0の状態で実行した場合は、ntm:testの1行目(xpコマンド)で得られる戻り値は0となります。
なので、ifの場合は”run give @a diamond 1″の部分が処理されません。

unlessの場合は、戻り値が0だったということで、”run give @a diamond 1″が処理されてダイヤモンドを入手できます。

仮にレベルが10だとすると戻り値が10となり、逆の結果となります。
ifの場合はrun以降のコマンドが実行されて、unlessであれば実行されないわけです。

if entityなどに比べると少々ややこしいですが、より複雑なことができることは間違いありません。

まとめ

というわけで、今回のまとめです。

ポイント
  • if/unless functionではfunctionコマンドを実行しつつ、その結果でrun以降のコマンドを実行するかどうかが決まる。
  • 呼び出す関数にreturnコマンドが含まれていること、そのreturnコマンドによる戻り値が0でないことなどが分岐の条件となる。

この記事は以上になります。

  • 【まとめ】functionコマンドの基本から応用【マイクラ】
  • 【まとめ】カスタムストラクチャーの実装・カスタム方法【マイクラ】