Minecraft Wiki
登録
Advertisement
Information icon
この項目はBedrock Edition限定の要素です。 
この記事では、Bedrock Editionでの関数(英:Functions)について説明しています。Java Editionでの関数については「関数 (Java Edition)」をご覧ください。

関数ファンクション(英:Function)は、拡張子 .mcfunction のテキストファイルを使用することで、プレイヤーが簡単にコマンドのリストをスクリプト化して実行できる機能である。この項目ではBedrock Editionでの関数について説明している。

使用法

関数を使用するには、まず、関数のファイルとするテキストファイルを、関数ファイルにおける最上位フォルダとなる com.mojang/behavior_packs/[ビヘイビアーパックのフォルダ]/functions フォルダの下位に配置する必要がある。com.mojang フォルダのファイルパスはMinecraftの動作環境によって次のようになっている[1]

動作環境・基本ソフト 場所
Windows C:\[ユーザー名]\AppData\Local\Packages\
Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang
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現在 ifexcept に対応していない。

たとえば、プレイヤーが /function ハローワールド とコマンドを実行すると、上記の ハローワールド 関数により、次の出力が上から順になされる。

  • チャット出力: [プレイヤーの名前]: こんにちは
  • プレイヤーの頭上のブロックが金ブロックで埋められる
  • チャット出力: [プレイヤーの名前]: 世界

歴史

Bedrock Edition
1.8?関数ファイルが追加された。
関数ファイルはビヘイビアーパックのフォルダの下位階層にのみ配置できる。
1.13.0beta 1.13.0.1関数がコマンド一覧で見えるようになった。

関連項目

脚注

Advertisement