データパックが読み込まれない?フォルダ構造と一致させるべき3つの名前
`/datapack list` に表示されないデータパックは、コードの問題ではなくパスの問題です。正しいツリー構造、名前空間のルール、そして名前が変更されたフォルダについて詳しく解説します。
/datapack list を実行しても何も表示されない、またはパックが無効と表示される場合、ほとんどの場合JSONは問題なく、フォルダ構造が間違っています。
ツリー構造
world/datapacks/my_pack/
├── pack.mcmeta
└── data/
└── my_namespace/
├── function/ one .mcfunction per file
├── recipe/
├── loot_table/
├── advancement/
├── predicate/
└── 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/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が見つからないか、形式が間違っているか、階層が深すぎます。- リストには表示されるが無効になっている場合 —
/datapack enable "file/my_pack"。file/のプレフィックスと引用符に注意してください。 - リストに表示され有効になっているが機能しない場合 —
pack_formatが間違っているか、フォルダ名が複数形になっています。 /reloadを実行し、チャットを読みます。関数の構文エラーはそこで表示され、黙って失敗することはありません。
ZIP形式か否か
どちらも機能します。ZIP形式の場合、pack.mcmeta はリソースパックと全く同じようにZIPのルートに配置されます。開発中はフォルダ形式の方が簡単です。なぜなら、/reload は再ZIP化せずに編集を反映するからです。
サーバーへの配置
サーバー上でのパスは <world>/datapacks/ です。ここで <world> は server.properties 内の level-name の値です。サーバーのルートではありません。パックをサーバーフォルダに直接置くのは、サーバー側で最もよくある間違いです。
現在のフォルダ名、有効な pack.mcmeta、そして既に設定されたロードタグを持つパックを作成し、Datapack Studio を使ってすぐに使える状態でダウンロードしましょう。