関数、ファンクション(英:Function)は、拡張子 .mcfunction
のテキストファイルを使用することで、プレイヤーが簡単にコマンドのリストをスクリプト化して実行できる機能である。この項目ではBedrock Editionでの関数について説明している。
使用法
関数を使用するには、まず、関数のファイルとするテキストファイルを、関数ファイルにおける最上位フォルダとなる com.mojang/behavior_packs/[ビヘイビアーパックのフォルダ]/functions
フォルダの下位に配置する必要がある。com.mojang
フォルダのファイルパスはMinecraftの動作環境によって次のようになっている[1]。
動作環境・基本ソフト | 場所 |
---|---|
Windows | C:\[ユーザー名]\AppData\Local\Packages\
|
Android | [ストレージ名]/games/com.mojang
|
Samsung Gear VR(Galaxy) | |
Amazon Fire TV | |
iOS | Apps/com.mojang.minecraftpe/Documents/games/com.mojang
|
- なお、iOSの
Apps/com.mojang.minecraftpe/Documents/
フォルダは、iTunesのファイル共有機能を用いて、任意の端末を選択 → サイドバー設定内の「ファイル共有」 → App内「Minecraft」 → 「Minecraftの書類」と進むなどして参照できる。
この functions
最上位フォルダの下位の階層構造の名前は、このフォルダ内の関数を実行するときに使用される名前空間となる。関数は、最上位フォルダ下位のフォルダの、更に下位となるサブフォルダに配置することもできる。
たとえば、関数 sub/example
を実行すると、 functions/sub/example.mcfunction
ファイル内の関数が参照される。
テキストファイルの文字列である関数は、容易に変更可能であり、また、大量に使用されたとしても遅延を誘発する可能性はコマンドブロックよりも低い。関数が変更または追加された場合、そのままではその変化が反映されないが、 /reload
コマンドを使用することで記憶領域から関数ファイルが再読み込みされ、変化が反映される。これにより、Minecraftのゲームを再起動する必要なく、関数ファイルの変更を認識することができる。
注意: Bedrock Edition 1.8.1現在では、 /reload
コマンドではMinecraftの起動時にすでに存在している関数ファイルのみが再読み込みされる。つまり、既存の関数の変更を認識することはできるが、新しく追加された関数は認識されず、関数の追加を反映するにはMinecraftを再起動する必要がある。これはMinecraftの将来のアップデートで修正される。
関数が正常に実行されると、チャットに関数「[関数ファイルのファイルパス]」からコマンドを [数] つ実行しましたというメッセージが表示される。
関数ファイルの構文規則
.mcfunction
関数ファイル内では、通常のスラッシュ (/
) を使用せずに1行に1つの有効なコマンドが配置される。また、関数ファイル内では #
を付けて(関数の動作には影響しない)コメントを追加することができる。
要求最低エンジンバージョン
関数は、関数ファイルの親フォルダであるビヘイビアーパック直下の、 manifest.json
ファイル内の min_engine_version
の値により定められた、要求最低エンジンバージョンを要する。
この min_engine_version
フィールド(JSONファイル内のオブジェクトにおける、名前とそれに対応する値の組からなる要素)は、実行するコマンドに要求する最低バージョンを決定する。ここで指定される番号は、Minecraftのバージョンの内、そのコマンドが実装されているバージョン番号と一致する必要がある。たとえば、 /fill
がバージョン 1.9.0
で変更されたとする。ビヘイビアーパックに "min_engine_version":[1, 8, 0]
が記述されているとき、 /fill
コマンドを含む関数を実行すると、変更前の版の /fill
コマンド(バージョン 1.8.0
の段階の仕様のもの)が実行される。
manifest.json
ファイルの記述の例
{ "format_version": 1, "header": { "description": "関数!", "name": "関数ビヘイビアーパック", "uuid": "11111111-1111-1111-1111-111111111111", "version": [0, 0, 1], "min_engine_version": [1, 8, 0] }, "modules": [ { "description": "", "type": "data", "uuid": "22222222-2222-2222-2222-222222222222", "version": [0, 0, 1] } ] }
単純な関数の例
ハローワールド.mcfunction
say こんにちは fill ~ ~2 ~ ~ ~2 ~ gold_block say 世界 #これはコメントです
より複雑な関数の例
小屋建て.mcfunction
- この関数はプレイヤーの周りに石と木の簡単な小屋を建てる。
注意: 関数はコマンドを順番に実行するので、ガラス窓と木製のドアが最初のコマンドで作成された石の壁を置き換えることになる。
fill ~-2 ~-1 ~-2 ~2 ~2 ~2 stonebrick 0 hollow fill ~-2 ~-1 ~-2 ~2 ~-1 ~2 planks fill ~ ~ ~2 ~ ~ ~2 wooden_door 1 fill ~-2 ~1 ~ ~-2 ~1 ~ glass fill ~2 ~1 ~ ~2 ~1 ~ glass fill ~ ~1 ~-2 ~ ~1 ~-2 glass
関数の実行
関数は、他の関数内で呼び出された入れ子関数のコマンドを含め、すべてのコマンドを単一のティック内で実行する。
1度の関数の実行では、他の関数の呼び出し、つまり再帰を含め最大10000個までのコマンドが実行される。
コマンド
/function
- 使用法:
/function <[関数ファイルのファイルパス]>
/function
コマンドを実行すると、関数を1度実行することができる。- 関数内のコマンドは、
/function
コマンドを実行したエンティティまたはコマンドブロックを通して実行される。 - Bedrock Edition 1.8.1現在
if
とexcept
に対応していない。
たとえば、プレイヤーが /function ハローワールド
とコマンドを実行すると、上記の ハローワールド
関数により、次の出力が上から順になされる。
- チャット出力: [プレイヤーの名前]: こんにちは
- プレイヤーの頭上のブロックが金ブロックで埋められる
- チャット出力: [プレイヤーの名前]: 世界
歴史
Bedrock Edition | |||||
---|---|---|---|---|---|
1.8 | ? | 関数ファイルが追加された。 | |||
関数ファイルはビヘイビアーパックのフォルダの下位階層にのみ配置できる。 | |||||
1.13.0 | beta 1.13.0.1 | 関数がコマンド一覧で見えるようになった。 |