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/
└── minecraft/
└── 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 inmy_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, but the folders inside it went singular with everything else — tags/functions/ is now tags/function/. 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 — plural folder names, or a load tag in your own namespace instead of
minecraft. /reloadand read the log (logs/latest.log, or the launcher output). A function with a syntax error is dropped there with "Failed to load function …"; chat only says the reload finished.
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 and a valid pack.mcmeta, then download it ready to drop in, with the Datapack Studio — and put your load tag in data/minecraft/tags/function/, as above.