Datapackの基本的なフォルダ構成

この記事では、MinecraftのDatapackを作るために最初に知っておくべき「フォルダ構成」の基本を解説します。どのファイルが必要で、どこに置けばいいのか、一つひとつ丁寧に確認していきましょう。読み終わる頃には、自分で一からフォルダを作れるイメージがつかめるはずです。

対応バージョン:Java Edition 1.21.11

目次

Datapackのフォルダ構成、全体像から見てみよう

Datapackを作ると聞くと難しそうに感じるかもしれませんが、まずはフォルダとファイルを正しい場所に置くだけでOKです。どんな複雑なDatapackも、この構造がベースになっています。

基本的な構造はこのようになっています。

(ワールドフォルダ)/
└── datapacks/
    └── my_datapack/                        ← Datapackのルートフォルダ
        ├── pack.mcmeta                     ← 必須ファイル(Minecraftが最初に読む)
        └── data/                           ← データを入れるメインフォルダ
            ├── (自分の名前空間)/            ← 自分で自由に名前をつけるフォルダ
            │   └── function/               ← コマンドファイルを置く場所
            │       └── hello.mcfunction
            └── minecraft/                  ← Minecraftの動作を制御するフォルダ
                └── tags/
                    └── function/           ← 関数タグ(load/tick)を置く場所
                        ├── load.json       ← ワールド読み込み時に実行する関数を登録
                        └── tick.json       ← 毎tick実行する関数を登録

玉ねぎの皮を一層ずつはがすようなイメージで、外側のフォルダから順に内側に進んでいく構造です。最初は全部を理解しようとしなくても大丈夫です。まずは「こういう形なんだ」と眺めてみてください。

エクスプローラーでDatapackフォルダを展開していく様子。my_datapack→data→名前空間フォルダの順にクリックして開く操作

絶対に必要なファイル「pack.mcmeta」を作ろう

pack.mcmetaは、Datapackに必ず用意しなければならないファイルです。Minecraftはこのファイルを見て「ここにDatapackがある」と判断します。このファイルがなければ、どれだけフォルダを整えても認識されません。

内容はJSON(ジェイソン)と呼ばれる形式で記述します。難しく聞こえますが、実際にはたったこれだけです。

{
  "pack": {
    "description": "はじめてのDatapack",
    "min_format": [94, 1],
    "max_format": [94, 1]
  }
}

3つの項目の意味をおさえておきましょう。

  • description:ゲーム内のDatapack一覧画面に表示される説明文です。日本語も使えますが、シンプルな英語の方が文字化けのリスクが少なくおすすめです。
  • min_format:このDatapackが対応する最小バージョンを [メジャー番号, マイナー番号] の形式で指定します。Java Edition 1.21.11では [94, 1] を使います。
  • max_format:このDatapackが対応する最大バージョンを指定します。通常は min_format と同じ値でOKです。バージョンが変わるとこの数字も変わるため、他のバージョンを使う場合はMinecraft Wikiで確認しましょう。

ファイルを保存するときは、拡張子が .mcmeta になっているかを確認してください。.txt のままだとMinecraftに認識されません。

テキストエディタでpack.mcmetaを開いた状態のスクリーンショット。min_format・max_formatに[94,1]が記述されている状態

「名前空間」って何?dataフォルダの仕組みを理解しよう

dataフォルダの中に入ると、最初に「名前空間(ネームスペース)」と呼ばれるフォルダを作る必要があります。少し聞き慣れない言葉ですが、仕組みを知ると「なるほど」とすぐに理解できます。

名前空間とは、ファイルを識別するための「苗字」のようなものです。たとえば学校に「田中 花子」さんが2人いても、クラスが違えば区別できますよね。Datapackの世界でも、同じファイル名のデータが複数のDatapackに存在することがあります。そのときに「どのDatapackのファイルか」を区別するために名前空間を使います。

名前空間フォルダの名前は自分で自由に決められます。ただし、次のルールを守る必要があります。

  • 使えるのは小文字の英数字(a〜z、0〜9)と _(アンダースコア)のみ
  • スペースや大文字は使えない
  • 例:my_packtutorialcraftinglab

他のDatapackや標準ゲームデータとかぶらない、自分だけのオリジナルな名前をつけておくと安心です。なお、minecraft という名前空間はMinecraft自身が使用している特別な名前空間です。後ほど説明する load.json や tick.json を置くときに使います。

dataフォルダの中に「my_pack」という名前の名前空間フォルダが作られているエクスプローラーのスクリーンショット

名前空間フォルダの中に作るサブフォルダ(一部抜粋)

名前空間フォルダの中には、目的に応じた「サブフォルダ」を作っていきます。1.21からフォルダ名がすべて単数形に変わったので、古い情報と混同しないよう注意してください。「一部例外があり、tagsだけ複数形のままなので注意」

フォルダ名役割最初から使う?
functionコマンドをまとめた .mcfunction ファイルを置く場所よく使う
tagsブロック・アイテム・関数をグループ化する設定ファイルを置く場所よく使う
advancementゲーム内の実績(アドバンスメント)を追加・変更するファイルを置く場所中級〜
loot_tableモブのドロップアイテムや宝箱の中身を変更するファイルを置く場所中級〜
recipeクラフトレシピを追加・変更するファイルを置く場所中級〜
predicate条件の定義ファイルを置く場所(loot_tableやadvancementから参照する)中級〜
item_modifierアイテムの属性・エンチャントなどを変更する定義ファイルを置く場所中級〜
structure構造物(建物など)の .nbt ファイルを置く場所中級〜
damage_typeダメージの種類を定義するファイルを置く場所上級〜
dimensionカスタムディメンション(ワールド)の設定ファイルを置く場所上級〜
dimension_typeディメンションの基本特性(高さ・明るさなど)を定義するファイルを置く場所上級〜
dialogダイアログ(対話UI)を定義するファイルを置く場所上級〜
worldgenバイオームや地形生成などワールド生成に関わる設定ファイルを置く場所上級〜

最初に作るのは function フォルダだけで大丈夫です。他のフォルダは、使いたい機能が出てきたタイミングで追加していけば問題ありません。

名前空間フォルダ内にfunction、tags、loot_tableなどのサブフォルダが並んでいるエクスプローラーのスクリーンショット

「load.json」と「tick.json」——関数を自動で動かす仕組み

Datapackの中でも特に便利な仕組みが、「関数を自動で実行する」ための2つの特殊なファイルです。この2つを使いこなすと、Datapackが格段に実用的になります。

この2つのファイルは自分の名前空間ではなく、minecraft という特別な名前空間の中に置くルールになっています。

data/
└── minecraft/
    └── tags/
        └── function/
            ├── load.json   ← ワールド読み込み時に1回だけ実行したい関数を登録する
            └── tick.json   ← 毎tick(1秒間に20回)繰り返し実行したい関数を登録する

それぞれのファイルに書く内容は同じ形式で、実行したい関数の名前を values に列挙するだけです。

{
  "values": [
    "my_pack:setup"
  ]
}

この例では my_pack 名前空間の setup.mcfunction が登録されています。2つのファイルの使い分けはシンプルです。

ファイル名実行タイミング主な用途
load.jsonワールド読み込み時・/reload 実行時に1回初期設定、スコアボードの作成など
tick.json毎tick(1秒間に約20回)繰り返し常時監視・カウントアップなど継続的な処理

注意点として、tick.json は1秒間に20回も実行されるため、重い処理を登録するとゲームが重くなります。最初のうちは load.json だけで十分です。

data/minecraft/tags/function/ フォルダ内にload.jsonとtick.jsonが並んでいるエクスプローラーのスクリーンショット

作ったDatapackをMinecraftに認識させよう

フォルダ構成が整ったら、実際にMinecraftに読み込まれているか確認してみましょう。思ったより簡単に確かめられます。

ワールドに入り、チャット欄に次のコマンドを入力してください。

/datapack list

自分で作ったDatapackの名前が [file/my_datapack] のような形式で表示されれば成功です。表示されない場合は、次の点を確認してみてください。

  • pack.mcmeta ファイルの拡張子が .txt のままになっていないか
  • Datapackフォルダが (ワールドフォルダ)/datapacks/ の直下に置かれているか
  • JSONの書き方に括弧の閉じ忘れや全角文字の混入がないか
  • サブフォルダ名が functions など古い複数形になっていないか(1.21以降は単数形)

うまく認識されたら、Datapack制作の土台は完成です。

datapack listで有効になっているか確認している画像

まとめ

この記事で学んだことを振り返っておきましょう。

  • Datapackは (ワールドフォルダ)/datapacks/ の中に作成する
  • pack.mcmeta は必須のファイルで、1.21.11では min_format / max_format[94, 1] を指定する
  • 1.21以降はサブフォルダ名がすべて単数形(functionloot_tablerecipe など)
  • data/minecraft/tags/function/ に置く load.jsontick.json で関数を自動実行できる
  • 構造さえ理解できれば、次はいよいよ .mcfunction ファイルにコマンドを書く段階に進めます!

次の記事では、function フォルダに最初のコマンドを書いて、実際にゲーム内で動かしてみましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次