Minecraft Wiki
function
必要権限レベル
  • 2 ‌[JE限定]
  • 1 ‌[BE限定]
実行制限

チートのみ‌[BE限定]

このコマンドの実行文脈(実行者、実行地点、視方向など)をそのまま適用して関数を実行する。

Java Editionでは、データパックから単一の関数、あるいは関数タグに含まれるタグすべてを実行する。
Bedrock Editionでは、ビヘイビアーパックから単一の関数を実行する。

構文[]

  • Java Edition
function <name> [<arguments>|with <data_source> <path>]
関数を実行する。関数がマクロを含む場合には、引数に代入する値を提供するコンパウンドを指定することができる。コンパウンドを指定しておきながら非マクロ関数を実行したり、あるいはコンパウンド内にマクロで使用しないキー・値の組があっても構わない。
... <arguments>を使用する場合は、コンパウンドを直接記述する。
... with <data_source> <path>を使用する場合は、/data getのようにワールド内に存在するブロックエンティティエンティティNBTストレージから取得する形式で指定することができる。


  • Bedrock Edition
function <name: filepath>

引数[]

JE<name>関数
BEname: filepathファイルのパス

Java Editionでは,名前空間IDで特定の関数を指定するか、#から始まる関数のタグを指定する。 Bedrock Editionでは, path/to/function/fileの形式で[behavior_pack]/functions/path/to/function/file.mcfunctionに位置する関数を指定する。

<arguments>NBTタグ

マクロ関数が使用する引数に対して、代入値を与えるためのコンパウンド。{<引数名>: <代入値>}, ...の形式によって、マクロ関数が使用する引数名をキー、そこに代入する値を値とする値・キーの組を列挙する。
SNBTフォーマットでのNBTタグで指定する。

<data_source>

代入値を与えるためのコンパウンドの取得元となる対象を指定する。以下の構造を取る。
block <sourcePos>: ブロックエンティティから取得する。
<sourcePos>ブロック座標 ... ブロックエンティティの座標。
entity <source>: エンティティから取得する。
<source>エンティティ ... エンティティを指定する。プレイヤー名、ターゲットセレクターまたはUUIDで指定する。また、ターゲットセレクターは単一のものである必要がある。
storage <source>: NBTストレージから取得する。
<source>名前空間付ID ... NBTストレージを指定する。名前空間IDで指定する。

<path>NBTパス

代入値を与えるコンパウンドのNBTパス。この際、マクロが使用する引数にはすべて代入値が与えられていなければならないが、コンパウンド内にマクロが使用しない値とキーの組が存在しても良い。
NBTパスで指定する。

結果[]

コマンドトリガーJava EditionBedrock Edition
任意引数が正しく指定されていない 構文解析不能 構文解析不能
指定した関数及び関数タグが存在しない 失敗 失敗
マクロ関数が指定されているが、コンパウンドが指定されていない 失敗 N/A
コンパウンドで指定されていない引数がある 失敗 N/A
sourcePosが読み込み範囲外、またはワールド範囲外である 失敗 N/A
sourcePosのブロックがブロックエンティティでない 失敗 N/A
sourceに該当するエンティティがいない 失敗 N/A
pathに相当するNBTタグが存在しない 失敗 N/A
pathで指定されたタグがコンパウンドでない 失敗 N/A
マクロ関数に代入値を代入した結果コマンドでコマンドエラーが発生した 失敗 N/A
成功時

出力[]

コマンドエディション状況成功回数/execute store success .../execute store result ...
任意Java Edition失敗時000
関数以外の方法で実行され、成功した時関数によって実行されたコマンド+1(このコマンド自身)--
/returnによらず関数が終了した場合同上00
関数内に組み込まれた/returnによって終了した場合同上/returnの与える成功回数。/returnの戻り値。
こちらを参照
関数内で実行された場合-10
Bedrock Edition失敗時0N/AN/A
成功時1N/AN/A
/return runコマンドを含む関数を複数実行しようとした場合は、全関数の中で最初に出現した/returnコマンドの時点で関数の実行が停止し、これが与える戻り値が採用される。

Java Edition[1][2]

成功数は、関数により実行されたすべてのコマンドの数+1になる。
例えば、次の関数(括弧内はその内容)が存在するとき、
foo:bar1function foo:bar2
foo:bar2function foo:bar3
foo:bar3say hi
/function foo:bar3の成功数は1(foo:bar3内のコマンドが1つ)+1(functionコマンド自身)= 2
/function foo:bar2の成功数は2(/function foo:bar3の成功数)+1(functionコマンド自身)= 3
/function foo:bar1の成功数は3(/function foo:bar2の成功数)+1(functionコマンド自身)= 4となる。
チャットに表示される出力メッセージは、実行されたコマンドの数(成否を問わない)+関数によって呼び出された関数の数である。
/function foo:bar3の出力数は1(foo:bar3内のコマンドが1つ)
/function foo:bar2の出力数は1(foo:bar2内のコマンドが1つ)+1(foo:bar3内のコマンドが1つ)+1(組み込まれた関数が1つ)= 3.
/function foo:bar1の出力数は1(foo:bar1内のコマンドが1つ)(foo:bar2内のコマンドが1つ)+1(foo:bar3内のコマンドが1つ)+1(組み込まれた関数が2つ)= 5となる。
成功時は、/execute store successの値は1、失敗時は0になる。
成功時は、/execute store resultの値は出力数と同じで、失敗時は0になる。

使用例[]

'data/functions/custom/example/test.mcfunction'の関数を実行する: function custom:example/test
半径2ブロック以内に羊がいる場合に関数を実行する: execute if entity @e[type=sheep,distance=..2] run function custom:example/test
実行者がプレイヤーでない場合に関数を実行する: execute unless entity @s[type=player] run function custom:example/test

歴史[]

Java Edition
1.12pre1/functionが追加された。
1.1317w49b引数にタグが使えるようになった。
/execute [if/unless]の存在により、[if/unless]がこのコマンドの引数から削除された。
1.2023w16a/returnで戻り値を設定できるようになった。
1.20.223w31a/return run ...で戻り値を設定できるようになった。
マクロ関数の追加に伴い、マクロ関数の要求する引数を与えるコンパウンドを指定することができる新しい構文に切り替わった。
1.20.323w41a/returnを使用しない場合、および実行の際にエラーが生じた場合一切戻り値を返さなくなった。
23w44a/return runコマンドを含む関数を複数実行しようとした場合は、全関数の中で最初に出現した/returnコマンドの時点で関数の実行が停止するようになった。
/return runコマンドで実行された場合にはコマンドが失敗しても常に戻り値を持つようになった。
Bedrock Edition
1.8.0beta 1.8.0.8/function が追加された。

関連項目[]

タグ – 関数を毎tick実行する方法を解説している。