前の記事では、Datapackに必要なファイル構成を図解で確認しました。今回はその構成を実際に自分の手で作っていきます。フォルダを作り、ファイルを書き、コマンドがゲームの中で動く瞬間を体験するところまで、一気に進めていきましょう。
対応バージョン:Java Edition 1.21.11
まず my_pack フォルダを作ってVSCodeで開こう
Datapackのファイルはすべてワールドの datapacks フォルダの中に置きます。まずそこに自分用のフォルダを作って、VSCodeで開くところから始めましょう。
- エクスプローラー(Finder)でワールドフォルダを開き、
datapacksフォルダの中にmy_datapackという名前のフォルダを新規作成する - VSCodeを起動し、メニューの「ファイル」→「フォルダーを開く」で今作った
my_datapackフォルダを選択する - VSCodeのサイドバーに
my_packフォルダが表示されればOK。ここからすべてのファイルを作っていく


my_pack という名前はあくまで例です。自分のDatapackらしい名前に変えてもOKですが、半角英数字と _(アンダースコア)だけを使うようにしましょう。このフォルダ名がゲーム内で表示されるDatapack名になります。
必要なファイルとフォルダをすべて作ろう
VSCodeで my_datapack を開けたら、前の記事で学んだ構成通りにファイルとフォルダを作っていきます。作るものは全部で4つです。
| 作るもの | 場所 | 役割 |
|---|---|---|
pack.mcmeta | my_datapack/ 直下 | Minecraftにこれがデータパックだと伝える必須ファイル |
data/my_datapack/function/ | my_datapack/data/ 以下 | コマンドファイル(.mcfunction)を置く場所 |
data/minecraft/tags/function/load.json | my_datapack/data/minecraft/ 以下 | リロード時に自動実行する関数を登録するファイル |
hellow.mcfunction | data/my_datapack/function/ 内 | 今回書く最初のコマンドファイル |
まず pack.mcmeta から作りましょう。VSCodeのサイドバーで my_datapack フォルダを右クリック → 「新しいファイル」を選び、ファイル名を pack.mcmeta と入力します。

ファイルが開いたら、次の内容をそのまま貼り付けて保存してください。
{
"pack": {
"description": "はじめてのDatapack",
"min_format": [94, 1],
"max_format": [94, 1]
}
}

次に、フォルダを2つ作ります。VSCodeのサイドバーで「新しいフォルダー」を使って、次の2つのパスになるようにフォルダを作ってください。フォルダの中にフォルダを作る入れ子構造になっているので、一段ずつ作っていくのがコツです。
data/my_pack/function/
data/minecraft/tags/function/

作り終えたら、サイドバーがこのような構成になっていれば完成です。
my_pack/
├── pack.mcmeta
└── data/
├── my_datapack/
│ └── function/ ← ここに .mcfunction ファイルを置く
└── minecraft/
└── tags/
└── function/ ← ここに load.json を置く

.mcfunctionファイルって何?
フォルダの準備ができたので、いよいよコマンドを書くファイルを作ります。Datapackのコマンドは .mcfunction(エムシーファンクション)という専用のファイルに書いていきます。拡張子が「.txt」ではなく「.mcfunction」になっているだけで、中身はただのテキストファイルです。
書き方にはいくつかの独自ルールがあります。チャット欄でコマンドを打つときとは少し異なるので、最初に頭に入れておきましょう。
- コマンドの先頭に
/(スラッシュ)はつけない - 1行に1コマンドだけ書く
#から始まる行はコメント(メモ)として無視される- 空白行があっても問題ない
たとえばゲーム内チャットで /say Hello と打つ場面では、ファイルの中には say Hello とスラッシュなしで書きます。慣れてしまえばすぐに自然に感じられるルールです。
.mcfunctionは「上から順に」実行されます。ファイルの中に10行コマンドがあれば、1行目から最後の行まで順番に実行されます。注意したいのは、コマンドの書き方にミスがあるとそのファイル全体が
/functionで実行できなくなります。「/functionを打ったのに何も起きない」ときは、まずコマンドのスペルミスや全角スペースの混入を確認してみましょう。
最初のコマンドを書いてみよう
それでは data/my_pack/function/ フォルダの中に、最初の .mcfunction ファイルを作ります。サイドバーでそのフォルダを右クリック → 「新しいファイル」で hellow.mcfunction と入力してください。

ファイルが開いたら、次のコマンドを書き込みましょう。動いたことがはっきりわかるコマンドを2行選びました。
# 最初のDatapack:ゲーム内で動作確認するためのコマンド
say Hello, World!
give @a minecraft:diamond 1
# から始まる1行目はコメントで、ゲームには影響しません。2行目の say はチャットに文字を表示し、3行目の give はダイヤモンドを1個自分に渡します。書き終えたら保存してください(Ctrl+S / Cmd+S)。

続けて、data/minecraft/tags/function フォルダの中に load.json を作ります。同じく右クリック → 「新しいファイル」で load.json と入力して、次の内容を書いてください。
{
"values": [
"my_datapack:hellow"
]
}
"my_datapack:hello" は「my_datapack 名前空間の hello.mcfunction をリロード時に自動実行してね」という意味です。my_pack の部分は自分の名前空間の名前に合わせて変えてください。書き終えたら保存します。

ゲームで動かしてみよう
ファイルがすべて揃いました。ゲームを開いて、いよいよ自分で書いたコマンドを動かしてみましょう。ワールドに入ったらチャット欄を開いて、次のコマンドを実行します。
/reload
/reload は、Datapackをゲームに再読み込みさせるコマンドです。実行すると load.json が読み込まれ、登録した hello.mcfunction が自動的に実行されます。ファイルを編集したあとも、このコマンドで変更内容を反映できます。

チャット欄に「Hello, World!」と表示され、インベントリにダイヤモンドが1個入っていれば成功です!自分で書いたコマンドがゲームの中で動きました。

おまけ:手動でも関数を呼び出せる
load.json に登録した関数はリロード時に自動実行されますが、チャットから手動で呼び出すこともできます。ゲームを止めずにすぐ試せるので、開発中はこちらも活用してみてください。
/function my_pack:hellow
このコマンドを実行するたびに hello.mcfunction の中身が動きます。「書く → 保存 → /reload → /function で確認」のサイクルを繰り返しながら作っていくのが、Datapack制作の基本の流れです。

まとめ
今回学んだことを振り返っておきましょう。
datapacks/フォルダ内に作ったmy_packフォルダをVSCodeで開いて作業するpack.mcmeta・data/my_datapack/function/・data/minecraft/tags/function/の3つを最初に用意する.mcfunctionファイルにはスラッシュなしで1行1コマンドを書く。コマンドにミスがあるとファイルごと実行できなくなるので注意load.jsonに「名前空間:ファイル名」の形式で登録すると、/reload時に自動実行される- 次の記事からはDatapack初級編へ突入。プレイヤーへの効果付与や条件分岐など、できることが一気に広がっていきます!
