【Java版】functionコマンドで複数コマンドをまとめて実行しよう

マイクラでコマンドを実行する際、1つのコマンドのみを使用する場面は少なく、何かの目的を達成するために、複数のコマンドを組み合わせて実行します。

例えば「最強の装備で全身を固めたい」という場合は次の6つのコマンドを実行する必要があります。

  • ネザライトの剣を付与
  • 盾を付与
  • ネザライトの防具を付与(ヘルメット・チェストプレート・レギンス・ブーツそれぞれ必要)

まだ1度であれば6つのコマンドを実行するのはありかもしれませんが、何度も実行が必要となるとなると、かなり面倒くさいものです。

そんな時に、便利なのが「functionコマンド」。

このコマンドは、あらかじめコマンドをまとめたものを準備しておくことで、1回のコマンド実行でまとめたコマンドをすべて実行することができるようになります。

この記事では、このfunctionコマンドを使う上での準備から、使用方法までを一通り紹介します。これを読むことでコマンドの使い方を理解している人であればコマンド作成作業を短縮化できるので、興味のある方はぜひご覧ください。

目次

functionコマンドは1コマンドで複数処理を実行できる機能

functionコマンドは、事前に複数のコマンドを記載したfunctionファイルを用意することで、マイクラゲーム内からコマンド1つで複数処理を実行することができます。あらかじめファイルの作成と聞くとかなり難しく聞こえますが、決まったフォルダ構成の物をコピペして、実行するコマンドを追記するだけで、自由に処理を変更することができます。またコマンドブロックと併用することも可能となっています。

functionコマンドを利用する利点

基本的にはコマンドブロックのみでもfunctionで設定した処理と同様の処理を実現することは可能となるのですが、コマンドブロックとfunctionコマンドを併用することで次のような利点があります。

コマンドブロック併用時にブロックが少なくて済む

コマンドブロックでは1つのブロックで1つのコマンドしか実行することができません。そのため、複数のコマンドを実行したいとき、実行するコマンドの数分コマンドブロックを必要とするのですが、functionコマンドを使用すると複数のコマンドを1つのコマンドにまとめることができるので、次のようにコマンドブロックがシンプルになります。

例①:敵がたくさん湧く厳しい状況にしたい

例えば、敵が湧きやすい環境でのサバイバルゲームをさせるため、「夜にする」「時間経過を止める」「ダイヤモンドの剣を持たせる」といった処理を実行したいとした場合、コマンドブロックのみを使用した場合を比べると、コマンドブロックの数を2つも減らすことができます。

【コマンドブロックのみ使用の場合】

【functionコマンドとコマンドブロック併用の場合】

編集しやすくなる

コマンドブロックは、ブロックを隙間なく横に並べていくことで、「処理①・処理②・処理③」と順番にコマンドを実行することができます。この特性を持つ中で、コマンドを1つ追加したり削除しようとしたりすると、全体的にブロックを移動させる必要が出てきます。(意外これが面倒くさい…。。)しかし、functionコマンドを使用すると、コマンドブロックに手を入れず処理が記載されたファイルの中身を修正するだけで良いので、編集がかなり楽になります。

例②:敵がたくさん湧く厳しい状況から時間経過停止だけやめる

例①で作成した処理から、時間経過停止を削除するとした場合、次のように、コマンドブロックのみを使用している場合は、コマンドブロックの移動が必要となりますが、functionコマンドを利用している場合は、処理が記載されたファイルの中身を編集するのみとなります。

【コマンドブロックのみ使用の場合】

【functionとコマンドブロック併用の場合】

function実行時に実行されるコマンドの定義から、時間経過停止のコマンドの行を削除するだけでOKです。

time set night
gamerule doDaylightCycle false ←この行を削除するだけ
give @p diamond_sword

また、編集作業をしている時、コマンドブロックは1回殴っただけで破壊できてしまうため、間違えて破壊してしまうことがあります。壊したブロックを戻すこともできないため、functionコマンドを使うことで、ミスを減らすことができます。

可読性の向上

コマンドブロックは1ブロック1コマンドとなるため、どのコマンドが何のために実行されているのかを理解することが難しいです。対して、functionを利用すると1つのファイルに関連のあるコマンドをまとめることができますし、ファイル内にコメントを付与することができるため、コマンドブロックに設定されているコマンド1つ1つ、functionコマンドに設定されているコマンド1つ1つが何のために実行されているのかを理解しやすくなります。(バグ修正・機能拡張などをするときに大いに役立ちます!)

functionコマンドを利用するための準備

functionコマンドを使用する利点を理解できたところで、実際にfunctionコマンドを利用するための事前準備方法を紹介します。具体的には、functionコマンドで実行する処理をまとめたファイルを作成するという作業となるのですが、必要なフォルダ・ファイルのサンプルはダウンロードしてそのまま使えるように用意しましたので、気楽に作業に取り組んでください。

STEP
ワールドフォルダーを開く

マイクラを開き、functionを利用したいワールドのワールドフォルダーを開いてください。

STEP
必要フォルダ・ファイルを作成する

functionコマンドを使用するときは、あらかじめワールドフォルダーの中にデータパックというものを作成し、その中に処理をまとめたファイルを格納します。1つ1つフォルダ・ファイルを作成していくのは大変なため、必要な情報を保持したサンプルフォルダを作成しましたので、今回はこちらをダウンロードして編集していきましょう。

ダウンロードが終わりましたら、「STEP1」で開いたワールドフォルダーにある「datapack」フォルダの中に、そのまま貼り付けてください。貼り付けを行うと、次のようになるはずです。

STEP
フォルダ・ファイル名を任意に変更する(任意)

STEP1でダウンロード・貼り付けを行ったフォルダ・ファイルには、任意で変更できるものがあります。変更は必須ではありませんが、用途に合わせて変更することで、編集や流用するときにどれを変更すればよいかわかりやすくなるので、必要があれば変更してください。(デフォルトの状態のままで説明は進めるので、単純に操作を学びたいという方は、変更しなくてもOKです。)

次のうち、赤枠のフォルダ・ファイルが名前変更可能となり、例えば「データパック名」「用途名」「処理名」という形で命名していくと、わかりやすいかと思います。

STEP
functionファイルに実行したいコマンドを記載する

作成したfunctionファイル(拡張子「.mcfunction」のファイル)を開き、まとめて実行したいコマンドを記載してください。ちなみに、ダウンロードファイル「sample_function.mcfunction」は下記の記載となっており、「夜にする」「時間経過を止める」「ダイヤモンドの剣を与える」という3つの処理が行われるようになっています。

# 夜にする
time set night

# 時間経過を止める
gamerule doDaylightCycle false

# ダイヤモンドの剣を与える
give @p diamond_sword

functionの実行方法

functionを利用する準備が完了したので、実際に使ってみましょう。

STEP
functionを設定したワールドに入る

functionを設定したワールドに入りましょう。

STEP
データパックを更新(再読み込み)する

functionはあらかじめ読み込みをしておかないと、ワールド内で使用することができません。ワールドを開くときに読み込まれますが、一応、チャット(「T」キー)からコマンドを実行して、データパックを再読み込みしましょう。

reload

STEP
コマンドでfunctionを実行する

functionを読み込む準備が完了したので、次のコマンドをチャット(もしくはコマンドブロック)を使って、functionを実行しましょう。

ダウンロードしたフォルダ・ファイルをそのまま使用する場合は「function sample_pack:sample_function」で

function␣フォルダ名:ファイル名

ダウンロードしたフォルダ・ファイルをそのまま使用する場合

実行すると次のようになります。

〇実行コマンド

〇実行結果

「夜になる」「時間経過が止まる」「ダイヤモンドを与える」の3つの処理が実行されます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

システムエンジニア兼ゲーム実況者のさくるです。視聴者参加型ゲーム実況も多くやっているので、仲良くしてください!

コメント

コメントする

目次