データパックが読み込まれない?フォルダ構造と一致させるべき3つの名前
/datapack list に表示されないデータパックは、コードではなくパスの問題です。正確なツリー構造、名前空間のルール、そして名前が変わったフォルダを解説します。pack.mcmetaとdataは同じ階層に置きます。
/datapack list に何も表示されない、あるいはパックが無効として表示される。ほとんどの場合、JSONは正常でフォルダが間違っています。
ツリー構造
world/datapacks/my_pack/
├── pack.mcmeta
└── data/
├── my_namespace/
│ ├── function/ one .mcfunction per file
│ ├── recipe/
│ ├── loot_table/
│ ├── advancement/
│ └── predicate/
└── minecraft/
└── tags/
└── function/
└── load.json
3つの名前を揃える必要があり、そのうち1つは分かりにくいものです:
- パックのルートにある
pack.mcmeta—data/の中ではなく、隣に置きます。 data/<namespace>/— あなたの名前空間。小文字で、スペースなし。これがmy_namespace:my_functionのプレフィックスになります。- カテゴリフォルダの名前 — これが変更されており、たいていの原因になります。
フォルダ名が単数形に変更された
これは多くのパックと多くのチュートリアルを壊しました:
| 旧 | 現在 |
|---|---|
functions/ | function/ |
recipes/ | recipe/ |
loot_tables/ | loot_table/ |
advancements/ | advancement/ |
predicates/ | predicate/ |
structures/ | structure/ |
複数形の名前を使っているパックは読み込まれます — /datapack list に表示されます — が、何も動作しません。これがこの一連の中で最も混乱を招く失敗の仕方です。tags/ は複数形のままでしたが、その中のフォルダは他と同じく単数形になりました — tags/functions/ は現在 tags/function/ です。ええ、一貫性がありません。
何かを自動で実行する
2つの特別なタグ:
data/minecraft/tags/function/load.json → runs once on load/reload
data/minecraft/tags/function/tick.json → runs every tick
data/minecraft/ であり、自分の名前空間ではないことに注意してください — タグはMinecraftに属し、それが指す関数はあなたに属します:
{ "values": ["my_namespace:setup"] }
順番に診断する
/datapack list— パックが全く表示されない場合、pack.mcmetaが欠けているか、壊れているか、1階層深すぎます。- 表示されるが無効 —
/datapack enable "file/my_pack"。file/プレフィックスと引用符に注意してください。 - 表示されて有効だが機能しない — 複数形のフォルダ名、または
minecraftではなく自分の名前空間にロードタグがある。 /reloadを実行してログを読む(logs/latest.log、またはランチャーの出力)。構文エラーのある関数はそこに「Failed to load function …」として記録されます。チャットにはリロードが完了したとしか表示されません。
zip形式かフォルダ形式か
どちらも動作します。zip形式の場合はzipのルートに pack.mcmeta を置きます。リソースパックと全く同じです。フォルダ形式は開発中に便利です。再zipせずに /reload が編集を反映してくれるからです。
サーバーでの配置
サーバーではパスは <world>/datapacks/ です。ここで <world> は server.properties 内の level-name の値です — サーバーのルートではありません。パックをサーバーフォルダに置いてしまうのが、サーバー側で最もよくある間違いです。
現在のフォルダ名と有効な pack.mcmeta でパックを組み立てて、すぐに配置できる形でダウンロードするには、Datapack Studio を使ってください — そして上記のように、ロードタグは data/minecraft/tags/function/ に置いてください。