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

【解説】returnコマンドで簡単に条件分岐【マイクラ・java】

【解説】returnコマンドで簡単に条件分岐【マイクラ・java】

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

returnコマンドについて知りたいマインクラフター
「returnコマンドってどういうコマンドなのかな? 具体的な使い方とか教えて欲しいな」

こんな疑問を解決します!

本記事の内容
  • returnコマンドで簡単に条件分岐

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

なつめ

2016年3月からマイクラをプレイしています!
最近はコマンドやデータパックなどの技術的なものを勉強しています。

この記事では、ver.1.20で追加されたreturnコマンドについて解説しています。

returnコマンドはただ使用するだけでは何が起こっているのか分かりにくいコマンドではありますが、便利なコマンドであることに違いありません。

functionコマンドで実行することに真価を発揮しますので、中級者、上級者向けのコマンドです。
難しく感じるかもしれませんが、この記事を読めばすぐに理解できると思います。

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



returnコマンドで簡単に条件分岐

returnコマンドは条件分岐を行うのに適したコマンドです。
というのも、returnコマンドでは返り値を好きに指定することができます。

返り値とは、戻り値と言い表すこともあります。

executeコマンドのstore success/resultを用いることで、そのコマンドを成功回数・結果を値として別のどこかへ保存できます。
この値こそが返り値です。

通常はコマンドごとに決められた法則によって値が決まり保存されるのですが、returnコマンドではその値を好きに決められるというわけです。

【store result/success】コマンドごとによる返り値一覧【マイクラ】

例えば、以下のような記述がされているmcfunctionファイルを実行したとしましょう。

execute store result score @a XYZ if entity @a[tag=ABC] run return 1
execute store result score @a XYZ if entity @a[tag=!ABC] run return 45

give @a diamond 1

mcfunctionを起動するには、functionコマンドである必要があります。
functionコマンドについては、コマンドをまとめて負荷軽減!functionコマンドの準備とやり方解説!【Java版】をどうぞ。

タグABCを持っているプレイヤーがいれば、1という返り値をXYZというスコアボードに投入すると言っている1行目。
タグABCを持っていないプレイヤーがいれば、45という返り値をXYZというスコアボードに投入すると言っている2行目。

そして1行飛ばして、4行目にはダイヤモンドを全てのプレイヤーに1つ付与するコマンドが書いてあります。

なので、ABCというタグを持っているプレイヤーがいれば、XYZの値が1になります。
いなければ、XYZが45という値になるわけですね。

この値によって実行されるコマンドを組んでおけば、簡単に条件分岐を行うことができるということになります。

returnコマンド自体はシンプルなコマンドで

/return 返り値に入れたい値

と書くだけで使用できます。
(executeコマンドのstoreなど返り値に関するものと一緒に使わないと特に何も起きません)

忘れてはいけないのが、returnコマンドが実行された場合、それよりも後に書かれているコマンドは実行されません。
なので、はじめの例の場合はダイヤモンドを付与するコマンドは実行されることはありません。

また、store resultを指示することで、指定した返り値が投入されます。
store successでは異なる値が投入されるの点も気をつけましょう。

というわけで、returnコマンドを使うことで条件分岐がかなり簡単になります。

まとめ

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

今回使ったコマンドはこちら。

今回使ったコマンド
  • タグABCを持っているプレイヤーがいれば、XYZというスコアボードに1という返り値を投入するコマンド。
execute store result score @a XYZ if entity @a[tag=ABC] run return 1
  • タグABCを持っていないプレイヤーがいれば、XYZというスコアボードに45という返り値を投入するコマンド。
execute store result score @a XYZ if entity @a[tag=!ABC] run return 45
ポイント
  • returnコマンドを使うことで、簡単に条件分岐を指示することが可能です。

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

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