【マイクラ】functionファイルの書き方|mcfunctionの実行順・コメント・注意点【Java/統合版】

この記事は、マイクラでfunctionファイルを初めて作る方向けです
Java版データパックと統合版ビヘイビアーパックの違いもまとめています
Java版1.21以降・26.1系、統合版の安定版ドキュメントを前提に解説します

こんにちは。ゆずかきです。

マイクラでコマンドを触っていると、だんだんこう思うことありませんか?

「同じコマンドを何回も打つのが面倒」
「コマンドブロックを並べすぎて、どこに何を書いたか分からない」
「配布ワールドや装置用に、処理を1つのファイルにまとめたい」

こういう時に使うのが、functionファイル(mcfunction)です。

.mcfunctionファイルにコマンドをまとめて書いておくと、ゲーム内で/functionを実行するだけで、複数のコマンドをまとめて走らせることができます。
いわば、コマンドをファイル化して再利用できる仕組みですね。

特に、スコアボード管理・演出・ミニゲーム・配布マップ・定期処理を作る時は、functionを知っているかどうかで作業の楽さがかなり変わります。

ただし、ここでひとつ注意です。

Java版と統合版では、functionファイルの置き場所や呼び出し方が違います。
さらにJava版は、1.21以降でデータパック内のフォルダ名が一部変更されています。

ここを古い情報のまま作ると、ファイルは合っているはずなのに、ゲーム内でUnknown functionと出て何も動かない…ということが普通に起きます。

体験談
筆者も最初、古い解説のままfunctionsフォルダを作ってしまい、Java版1.21以降で全く認識されませんでした。
原因は、Java版1.21以降ではfunctionsではなくfunctionに変わっていたこと。
ここは本当にハマりやすいので、この記事では最初にしっかり整理します。

この記事を読めば、次のことが分かります。

  • Java版のデータパックでfunctionファイルを作る場所
  • 統合版のビヘイビアーパックでfunctionファイルを作る場所
  • .mcfunctionの基本的な書き方
  • 実行順・コメント・/の有無など、初心者がつまずきやすい注意点
  • tickloadで自動実行する時の考え方

それでは、やっていきましょう!

※本記事では、Java版はデータパック、統合版はビヘイビアーパックでのfunctionを扱います。
※ゲーム内の仕様については、Minecraft Wiki・Minecraft公式リリースノート・Microsoft Learnを参考にしています。
※Java版は2026年から26.1のようなバージョン表記も使われています。この記事では、旧表記の1.21.11以前と、現行表記の26.1系もあわせて整理します。


目次

1. functionファイルとは
2. Java版と統合版の違いを最初に整理
3. Java版でfunctionファイルを作る場所
4. 統合版でfunctionファイルを作る場所
5. mcfunctionファイルの基本的な書き方
6. functionの実行順は上から順番です
7. tick・loadで自動実行する方法
8. コメントの書き方と管理しやすい分け方
9. Java版1.21以降・26.1系で注意したい変更点
10. 統合版で注意したい仕様と制限
11. 動かない時のチェックポイント
12. まとめ
13. 参考文献

この記事で分かること
・マイクラのfunctionファイル、mcfunctionの基本的な書き方
・Java版と統合版の保存場所・実行方法の違い
・実行順、コメント、/の有無、バージョン差の注意点


1. functionファイルとは

functionファイルとは、複数のコマンドを1つのテキストファイルにまとめて実行できる仕組みです。
拡張子は.mcfunctionです。

たとえば、チャット欄で毎回こういうコマンドを打つのは大変ですよね。

say スタートしました
time set day
weather clear
give @s minecraft:bread 16

これをstart.mcfunctionのようなファイルにまとめておけば、Java版なら、

/function yuzukaki:start

統合版なら、

/function start

のように呼び出すだけで、ファイル内のコマンドをまとめて実行できます。

コマンドブロックを1つずつ置いて配線するより、ファイルで管理できるので見直しがしやすいのが大きなメリットです。

特に便利なのは、こういう場面です。

  • 配布マップの初期設定をまとめたい
  • スコアボードの作成・リセットをまとめたい
  • ミニゲームの開始処理を1コマンドで済ませたい
  • 毎tick実行する処理をファイルで管理したい
  • コマンドブロックの数を減らしたい

筆者の感覚では、コマンドブロックで動作確認 → functionに移すという流れが一番失敗しにくいです。

いきなり長いfunctionを書くと、どこでミスしたのか分からなくなるので、最初は短いコマンドから始めましょう。


2. Java版と統合版の違いを最初に整理

functionファイルはJava版にも統合版にもあります。
ただし、保存場所・呼び出し方・自動実行の仕組みが違います。

ここを混ぜると高確率で失敗します。

👇下の表に、Java版と統合版の違いをまとめました。

項目 Java版 統合版
使う仕組み データパック ビヘイビアーパック
functionの場所 data/名前空間/function/ functions/
呼び出し方 /function 名前空間:ファイル名 /function ファイル名
サブフォルダ 名前空間:フォルダ/ファイル フォルダ/ファイル
自動実行 minecraft:tick / minecraft:load functions/tick.json
主な注意点 1.21以降はfunctionフォルダが単数形 Java版の名前空間形式は使わない


特に重要なのは、保存場所です。

Java版1.21以降では、functionファイルの場所は、

data/名前空間/function/ファイル名.mcfunction

です。

一方、統合版では、

functions/ファイル名.mcfunction

です。

Java版はfunction、統合版はfunctions
ここがややこしいです。

古いJava版の解説ではfunctionsと書かれていることがあります。
これは、Java版1.21より前のデータパック構造です。
Java版1.21以降で新しく作るなら、基本はfunctionで作ってください。

注意!
統合版のfunctionsフォルダは今も複数形です。
「Java版が単数形になったから統合版も単数形」と覚えると間違えます。


3. Java版でfunctionファイルを作る場所

まずはJava版から見ていきます。
Java版のfunctionは、データパックの中に作ります。

ワールドフォルダの中にあるdatapacksフォルダへ、データパックを入れる形ですね。

Java版1.21以降で新しく作る場合、基本構成はこのようになります。

ワールドフォルダ/
└── datapacks/
    └── yuzukaki_function_pack/
        ├── pack.mcmeta
        └── data/
            └── yuzukaki/
                └── function/
                    ├── hello.mcfunction
                    └── setup/
                        └── start.mcfunction

この例だと、名前空間はyuzukakiです。
hello.mcfunctionを実行するなら、ゲーム内ではこう打ちます。

/function yuzukaki:hello

setupフォルダの中にあるstart.mcfunctionを実行するなら、こうです。

/function yuzukaki:setup/start

dataの下にあるyuzukakiというフォルダ名が、functionを呼び出す時の名前空間になります。

名前空間の例
yuzukakimy_packsampleのように、半角小文字・数字・アンダーバー中心で作るのが安全です。
日本語やスペース入りの名前は避けておきましょう。

pack.mcmetaの例

Java版のデータパックには、pack.mcmetaが必要です。
これは、マイクラに「このフォルダはデータパックです」と認識してもらうための設定ファイルです。

Java版26.1系向けに新しく作る場合の例は、下記です。

{
  "pack": {
    "min_format": [101, 0],
    "max_format": [101, 1],
    "description": "Yuzukaki Sample Function Pack"
  }
}

pack.mcmetaはJSON形式なので、カンマやダブルクォーテーションを1つ間違えるだけで読み込まれません。
「functionが動かない」という時、実はpack.mcmetaの書き間違いが原因だった…ということもよくあります。

Java版1.21より前の古い解説に注意

Java版1.21より前は、functionファイルの場所が、

data/名前空間/functions/

でした。

しかし、Java版1.21以降では、

data/名前空間/function/

に変わっています。

つまり、古い記事のfunctionsをそのまま真似すると、新しいJava版では認識されないことがあります。

体験談
筆者はこれで見事にハマりました。
コマンドの中身は合っているのに、ゲーム内の候補にfunctionが出ない。
何度見ても分からず、最後にフォルダ名を見たらfunctionsのままでした。
Java版1.21以降は、まずここを確認しましょう。


4. 統合版でfunctionファイルを作る場所

次は統合版です。
統合版のfunctionは、ビヘイビアーパックの中に作ります。

Java版のようなデータパックではありません。
ここも混同しやすいので注意してください。

統合版では、manifest.jsonと同じ階層にfunctionsフォルダを作ります。

YuzukakiBP/
├── manifest.json
└── functions/
    ├── hello.mcfunction
    └── setup/
        └── start.mcfunction

hello.mcfunctionを実行するなら、ゲーム内ではこう打ちます。

/function hello

setupフォルダ内のstart.mcfunctionなら、こうです。

/function setup/start

統合版では、Java版のように、

/function yuzukaki:hello

という名前空間付きの呼び方は基本的に使いません。

統合版は、functionsフォルダ内の場所をそのまま/functionで指定する感覚です。

統合版の最小サンプル

functions/hello.mcfunctionを作り、中身をこうします。

say 統合版のfunctionを実行しました
give @s stone 1

ビヘイビアーパックをワールドに適用し、チートを有効にしてから、

/function hello

を実行します。

チャットにメッセージが出て、石が1個渡されれば成功です。

注意!
.mcfunctionファイルの中では、Java版も統合版も、基本的にコマンドの先頭に/を書きません。
チャット欄では/giveと打ちますが、functionファイル内ではgiveから書きます。


5. mcfunctionファイルの基本的な書き方

.mcfunctionの基本はとてもシンプルです。

1行に1つのコマンドを書きます。

Java版の例です。

say functionを実行しました
time set day
weather clear
give @s minecraft:bread 16

統合版の例です。

say functionを実行しました
time set day
weather clear
give @s bread 16

ポイントは、次の通りです。

  • コマンドの先頭に/を書かない
  • 1行に1コマンドを書く
  • コメントは#で書く
  • ファイル名の拡張子は.mcfunctionにする
  • コマンド構文はJava版と統合版で違う場合がある

先頭のスラッシュは書かない

チャット欄では、

/give @s minecraft:diamond 1

のように/を付けます。

しかし、functionファイルの中では、

give @s minecraft:diamond 1

と書きます。

これを間違えると、バージョンや環境によってはエラーや警告の原因になります。

コメントは#で書く

functionファイルでは、#から始まる行をコメントとして使えます。

# 初期化メッセージ
say 初期設定を開始します

# 時間と天気を固定
time set day
weather clear

コメントは実行されません。
自分用のメモとして使えます。

後から見直した時に、何をしている処理なのか分かるので、短くても良いので書いておくのがおすすめです。

//コメントは使わない

プログラミング言語の感覚で、

// これはコメント
say test

のように書きたくなりますが、これは避けてください。

functionファイルのコメントは、基本的に#です。
//はコメント扱いされず、コマンドとして解釈されてエラーになる場合があります。

空行は整理に使ってOK

空行は、処理のまとまりを分けるために使うと見やすいです。

# メッセージ
say ゲームを開始します

# 初期装備
give @s minecraft:stone_sword 1
give @s minecraft:bread 16

# 時間設定
time set day
weather clear

こうしておくと、あとから自分で見ても分かりやすいです。

筆者のおすすめ
1つのfunctionに全部詰め込むより、loadtickstartresetdebugのように役割で分ける方が管理しやすいです。
最初は少し面倒ですが、後から直す時にかなり助かります。


6. functionの実行順は上から順番です

functionファイルの中に書いたコマンドは、基本的に上から順番に実行されます。

たとえば、こう書いた場合、

say 1番目
say 2番目
say 3番目

実行される順番は、

  1. say 1番目
  2. say 2番目
  3. say 3番目

です。

コマンドブロックを大量に並べた時のように、位置関係や向きで追いかける必要がありません。
上から読むだけで処理の流れが分かるのが、functionの便利なところです。

同じtick内で実行されます

Java版のfunctionは、呼び出された時、基本的に1つのtick内でまとめて実行されます。

たとえば、

setblock ~ ~ ~ minecraft:gold_block
setblock ~ ~1 ~ minecraft:diamond_block

のように書けば、上の行から順番に処理されます。

1行目の結果を、2行目が前提にするような書き方もできます。
ただし、大量のコマンドを一気に動かすと、処理負荷やコマンド実行数の制限に引っかかる場合があります。

functionからfunctionを呼び出す場合

functionの中から、別のfunctionを呼ぶこともできます。

Java版の例です。

say startを実行します
function yuzukaki:setup/give_items
say startが終わりました

この場合も、基本的には上から順番です。

  1. say startを実行します
  2. yuzukaki:setup/give_itemsの中身を実行
  3. say startが終わりました

という流れになります。

ただし、functionを入れ子にしすぎると、どこで何が動いているか分かりにくくなります。
最初のうちは、呼び出し階層を深くしすぎない方が安全です。

executeの実行者・実行位置に注意

functionで一番ハマりやすいのが、executeまわりです。

Java版で、

execute as @p at @s run function yuzukaki:test

のように実行すると、yuzukaki:testの中では、実行者や実行位置が引き継がれます。

つまり、test.mcfunction内で、

say 私が実行者です
setblock ~ ~-1 ~ minecraft:emerald_block

と書けば、近くのプレイヤーを基準に処理できます。

一方で、同じfunctionファイル内の1行だけをexecute at @pで動かしても、その実行位置が次の行までずっと続くわけではありません。

execute at @p run setblock ~ ~-1 ~ minecraft:emerald_block
setblock ~ ~-1 ~ minecraft:diamond_block

この場合、1行目はプレイヤー位置基準ですが、2行目はfunctionを呼び出した元の位置基準になります。

ここが大事です
execute ... run functionでfunctionごと呼ぶと、呼ばれたfunctionはその実行コンテキストを引き継ぎます。
でも、function内の1行だけで使ったexecuteの状態が、次の行へ自動で残り続けるわけではありません。

この違いは、テレポート処理や座標指定の装置でかなり重要です。
~ ~ ~を使うコマンドが多い場合は、どの位置基準で動いているか必ず確認しましょう。


7. tick・loadで自動実行する方法

functionは、手動で/functionを打って実行するだけではありません。
特定のタイミングで自動実行させることもできます。

代表的なのが、Java版のminecraft:loadminecraft:tickです。

Java版のminecraft:load

minecraft:loadは、ワールド読み込み時や/reload時に実行されるfunctionタグです。

Java版1.21以降では、次の場所にload.jsonを作ります。

data/minecraft/tags/function/load.json

中身はこうです。

{
  "values": [
    "yuzukaki:load"
  ]
}

そして、実際に実行したい処理を、

data/yuzukaki/function/load.mcfunction

に書きます。

say データパックを読み込みました
scoreboard objectives add yz_timer dummy

これで、/reloadした時などにyuzukaki:loadが実行されます。

ただし、minecraft:loadはプレイヤーが完全にワールドへ入る前に実行される場合があります。
そのため、@a@pを使ったメッセージ表示、タイトル表示、プレイヤーへのアイテム付与などは、思った通りに動かないことがあります。

おすすめの使い方
minecraft:loadでは、スコアボード作成や初期化など、プレイヤーがいなくても成立する処理を中心に書くのが安全です。

Java版のminecraft:tick

minecraft:tickは、毎tick実行されるfunctionタグです。
マイクラは基本的に1秒20tickなので、毎秒20回実行されます。

Java版1.21以降では、次の場所にtick.jsonを作ります。

data/minecraft/tags/function/tick.json

中身はこうです。

{
  "values": [
    "yuzukaki:tick"
  ]
}

そして、

data/yuzukaki/function/tick.mcfunction

に毎tick実行したい処理を書きます。

scoreboard players add #timer yz_timer 1

ただし、tickに重い処理を書きすぎると、ワールドが重くなります。

毎tick実行は便利ですが、使いすぎると本当に負荷が出ます。
大量のexecute as @eや、広範囲のfill、複雑なエンティティ検索を毎tick回すのは避けた方が良いです。

筆者のおすすめ
毎tick必要ない処理は、スコアボードで20tickごと、100tickごとなどに間引きましょう。
「何でもtickに入れる」は、あとで重くなる原因になりやすいです。

統合版のtick.json

統合版でも、tick.jsonを使うことで、functionを毎tick実行できます。
統合版では、functionsフォルダ内にtick.jsonを置きます。

functions/
├── tick.json
├── main_tick.mcfunction
└── timer/
    └── check.mcfunction

tick.jsonの中身はこうです。

{
  "values": [
    "main_tick",
    "timer/check"
  ]
}

valuesに書いたfunctionが、毎tick実行されます。

統合版のtick.jsonも非常に便利ですが、ワールドが完全に読み込まれる前から動くことがあり、重い処理を毎tick実行すると端末によっては負荷が出やすいです。
特にスマホやSwitchなどでも遊ぶワールドでは、処理を軽くしておくのが大事です。


8. コメントの書き方と管理しやすい分け方

functionファイルは、短いうちは見やすいです。
でも、処理が増えてくると、あっという間に分からなくなります。

そこで大事なのが、コメントとファイル分けです。

コメントは短く目的を書く

コメントは、長く書きすぎる必要はありません。
何のための処理なのかが分かれば十分です。

# ゲーム開始メッセージ
say ゲームを開始します

# プレイヤー初期装備
give @a minecraft:stone_sword 1
give @a minecraft:bread 16

# スコア初期化
scoreboard players set @a yz_point 0

おすすめは、処理のまとまりごとにコメントを置くことです。
1行ごとに全部説明すると、逆に読みにくくなります。

ファイル名で役割が分かるようにする

functionは、ファイル名も大事です。

たとえば、

function/
├── a.mcfunction
├── b.mcfunction
└── c.mcfunction

のようにしてしまうと、後から見た時に何も分かりません。

おすすめは、こういう分け方です。

function/
├── load.mcfunction
├── tick.mcfunction
├── game/
│   ├── start.mcfunction
│   ├── reset.mcfunction
│   └── end.mcfunction
└── debug/
    └── test.mcfunction

こうしておくと、何の処理なのかすぐに分かります。

長くなったら分割する

1つのfunctionが長くなりすぎたら、分割しましょう。

たとえば、start.mcfunctionに全部書くのではなく、

# game/start.mcfunction
function yuzukaki:game/reset_score
function yuzukaki:game/give_items
function yuzukaki:game/set_stage
say ゲームを開始しました

のように、役割ごとに分けると管理が楽です。

ただし、分けすぎても追いかけにくくなります。
初心者のうちは、

  • load
  • tick
  • start
  • reset
  • debug

くらいから始めると扱いやすいです。

体験談
筆者は最初、1つのfunctionに全部入れていました。
最初は楽ですが、数日後に見返すと「これ何の処理?」となります。
ファイル分けとコメントは、未来の自分を助けるための作業ですね。


9. Java版1.21以降・26.1系で注意したい変更点

Java版のデータパックまわりは、バージョンによって変更があります。
function自体の基本は変わりませんが、保存場所やパック形式の書き方で引っかかりやすいです。

1.21以降はfunctionフォルダが単数形

一番大きいのは、Java版1.21でのフォルダ名変更です。

古い構造は、

data/名前空間/functions/

でした。

新しい構造は、

data/名前空間/function/

です。

functionsからfunctionへ変更されています。

同じように、functionタグも変わっています。

古い構造は、

data/minecraft/tags/functions/load.json
data/minecraft/tags/functions/tick.json

新しい構造は、

data/minecraft/tags/function/load.json
data/minecraft/tags/function/tick.json

です。

tags/functionsではなく、tags/functionです。

重要!
Java版1.21以降でfunctionが候補に出ない時は、まずfunctionフォルダが単数形になっているか確認してください。
コマンド本文よりも先に、フォルダ構造を疑うのがおすすめです。

1.21.11以降はゲームルール名にも変更があります

Java版1.21.11では、ゲームルールが名前空間付きIDとして扱われるようになり、ゲームルール名の一部が変更されています。

functionと関係が深いものだと、古い解説では、

maxCommandChainLength

という名前が出てくることがあります。

Java版1.21.11以降では、

minecraft:max_command_sequence_length

という名前で扱います。

大量のコマンドを一度に実行している時、古い記事のゲームルール名をそのまま探しても見つからないことがあるので注意してください。

26.1系ではpack.mcmetaの形式にも注意

Java版は2026年から26.1のようなバージョン表記も使われるようになっています。
それに合わせて、データパック形式の数値も更新されています。

Java版1.21向けの記事では、

{
  "pack": {
    "pack_format": 48,
    "description": "Sample Data Pack"
  }
}

のような書き方が紹介されていることがあります。

一方、Java版26.1系で新しく作るなら、対応範囲を明示する形として、次のような書き方が扱いやすいです。

{
  "pack": {
    "min_format": [101, 0],
    "max_format": [101, 1],
    "description": "Yuzukaki Sample Function Pack"
  }
}

データパック形式はアップデートで変わります。
新しいバージョンでデータパックを作る時は、pack.mcmetaの値もそのバージョンに合わせて確認してください。

補足
pack.mcmetaの書き方が間違っていると、functionファイルまで正しく読み込まれません。
functionが見つからない時は、pack.mcmetaとフォルダ構造の両方を確認しましょう。


10. 統合版で注意したい仕様と制限

統合版のfunctionも便利ですが、Java版と同じ感覚で書くとつまずきます。
ここでは、特に注意したい点をまとめます。

統合版はビヘイビアーパックに入れる

統合版では、functionはビヘイビアーパック内のfunctionsフォルダに入れます。

ビヘイビアーパック/
├── manifest.json
└── functions/
    └── test.mcfunction

Java版のように、

data/名前空間/function/

という構造は使いません。

function内ではスラッシュを書かない

統合版でも、.mcfunctionファイル内では先頭の/を書きません。

say OK
give @s stone 1

このように、コマンド名から書きます。

Microsoft Learnの検証ルールでも、functionファイル内の先頭スラッシュは警告対象として扱われています。
初心者のうちは、チャット欄では/あり、functionファイルでは/なしと覚えておけば大丈夫です。

統合版には1回のfunction呼び出しの上限があります

統合版では、1回のfunction呼び出しで実行できるコマンド数に上限があります。
公式ドキュメントでは、1回のfunction呼び出しで10,000コマンドを超えられない旨が案内されています。

普通に使う分にはなかなか到達しませんが、配布ワールドや大規模な自動処理を作る場合は注意です。

Java版のコマンドをそのまま持ってこない

統合版とJava版では、コマンド構文が違うことがあります。

たとえば、Java版で使えるNBT指定や一部のセレクター、データパック前提の記述は、統合版ではそのまま動きません。
逆に、統合版独自の構文もあります。

mcfunctionという拡張子は同じでも、中に書くコマンドは各エディションの仕様に従う必要があります。

注意!
「Java版で動いたfunctionを統合版にコピペ」
「統合版のfunctionをJava版データパックへコピペ」
これは、ほぼどこかで引っかかります。
まずは短いコマンドで動作確認してから移植しましょう。


11. 動かない時のチェックポイント

functionが動かない時は、だいたい原因が決まっています。
「コマンドが間違っている」と決めつける前に、まずは下の項目を確認してください。

Java版のチェックポイント

  • [ ] pack.mcmetaはデータパック直下にあるか?
  • [ ] pack.mcmetaのJSON構文は壊れていないか?
  • [ ] Java版1.21以降なのにfunctionsフォルダにしていないか?
  • [ ] 正しくdata/名前空間/function/に入っているか?
  • [ ] functionファイルの拡張子が.mcfunction.txtになっていないか?
  • [ ] ファイル名や名前空間に大文字・スペース・日本語を使っていないか?
  • [ ] /reloadを実行したか?
  • [ ] /datapack listでデータパックが有効になっているか?
  • [ ] /function 名前空間:まで打った時に候補が出るか?
  • [ ] .mcfunction内のコマンド先頭に/を書いていないか?

特に多いのは、拡張子が.mcfunction.txtになっているパターンです。
Windowsでは拡張子が隠れていることがあるので、必ず表示して確認しましょう。

統合版のチェックポイント

  • [ ] ビヘイビアーパックがワールドに適用されているか?
  • [ ] manifest.jsonと同じ階層にfunctionsフォルダがあるか?
  • [ ] ファイル拡張子が.mcfunctionになっているか?
  • [ ] /function ファイル名で呼び出しているか?
  • [ ] Java版のように名前空間:ファイル名で呼び出していないか?
  • [ ] .mcfunction内のコマンド先頭に/を書いていないか?
  • [ ] Java版専用のコマンド構文を使っていないか?
  • [ ] チートが有効になっているか?

統合版では、ビヘイビアーパックを入れたつもりでも、ワールドに適用されていないことがあります。
まずは/functionの候補に自作functionが出るかを確認しましょう。

エラーを減らす作り方

筆者のおすすめは、最初にこういう短いfunctionを作ることです。

Java版なら、

say Java版functionの読み込み成功

統合版なら、

say 統合版functionの読み込み成功

これだけで一度テストします。

これが動けば、フォルダ構造や読み込みは成功しています。
動かないなら、コマンド本文ではなく、保存場所・拡張子・パック設定の問題です。

いきなり長い処理を書かず、まず1行だけ動かす
これが一番確実です。


12. まとめ

以上、マイクラのfunctionファイル、.mcfunctionの書き方をJava版・統合版の両方で解説しました。

要点を整理すると、

  • functionファイルは、複数のコマンドをまとめて実行できる.mcfunctionファイル
  • Java版ではデータパック内のdata/名前空間/function/に置く
  • 統合版ではビヘイビアーパック内のfunctions/に置く
  • .mcfunction内では、コマンド先頭の/を書かない
  • コメントは#で書く
  • 実行順は基本的に上から順番
  • Java版1.21以降ではfunctionsではなくfunctionなので注意
  • 自動実行は、Java版ならminecraft:loadminecraft:tick、統合版ならtick.jsonを使う

このあたりを押さえておけば、functionファイルの基本は十分です。

最初は、

say functionのテスト成功

この1行だけで大丈夫です。
まずは1つ動かして、次に2行、3行と増やしていくと失敗しにくいです。

functionを使えるようになると、コマンドブロックに頼りすぎず、処理をファイルで整理できるようになります。
ミニゲーム、配布ワールド、演出、装置の初期化など、使い道はかなり多いです。

Java版と統合版の違いだけ気をつけながら、ぜひ自分のワールドでも試してみてください。

では、本日はここまでで終わります。
最後までご覧いただき、ありがとうございました。
柚子クラでは他にもマイクラのコマンド・データパック・便利装置を紹介しているので、是非ご覧くださいね(^^♪


13. 参考文献

この記事を書くにあたり、以下の公式ドキュメント・コミュニティWikiを参考にしています。