Datapack not loading? The folder structure and the three names that must match
A datapack that does not appear in /datapack list has a path problem, not a code problem. Here is the exact tree, the namespace rule, and the folders that got renamed.
/datapack list shows nothing, or shows the pack as disabled. Almost always the JSON is fine and the folders are wrong.
The tree
world/datapacks/my_pack/
├── pack.mcmeta
└── data/
└── my_namespace/
├── function/ one .mcfunction per file
├── recipe/
├── loot_table/
├── advancement/
├── predicate/
└── tags/
└── function/
└── load.json
Three names must line up and one of them is not obvious:
pack.mcmetaat the pack root — besidedata/, not inside it.data/<namespace>/— your namespace, lowercase, no spaces. This becomes the prefix
in my_namespace:my_function.
- The category folder names, which changed and are the usual culprit.
The folders were renamed to singular
This broke a lot of packs and a lot of tutorials:
| Old | Current |
|---|---|
functions/ | function/ |
recipes/ | recipe/ |
loot_tables/ | loot_table/ |
advancements/ | advancement/ |
predicates/ | predicate/ |
structures/ | structure/ |
A pack using the plural names loads — it appears in /datapack list — and simply does nothing, which is the most confusing failure mode of the set. tags/ stayed plural, and so did tags/function/ becoming singular inside it. Yes, that is inconsistent.
Running something automatically
Two special tags:
data/minecraft/tags/function/load.json → runs once on load/reload
data/minecraft/tags/function/tick.json → runs every tick
Note data/minecraft/, not your own namespace — the tag belongs to Minecraft, the functions it points at belong to you:
{ "values": ["my_namespace:setup"] }
Diagnosing in order
/datapack list— if the pack is not listed at all,pack.mcmetais missing,
malformed, or one level too deep.
- Listed but disabled —
/datapack enable "file/my_pack". Note thefile/prefix
and the quotes.
- Listed and enabled but inert — wrong
pack_format, or plural folder names. /reloadand read the chat. Syntax errors in functions surface there, not silently.
Zipped or not
Both work. Zipped means pack.mcmeta at the zip root, exactly as for resource packs. Folder-form is easier while developing because /reload picks up edits without re-zipping.
Server placement
On a server the path is <world>/datapacks/, where <world> is the value of level-name in server.properties — not the server root. Dropping the pack in the server folder is the single most common server-side mistake.
Assemble a pack with the current folder names, a valid pack.mcmeta and a load tag already wired, then download it ready to drop in, with the Datapack Studio.