Датапак не загружается? Структура папок и три совпадающих имени
Если датапак не отображается в /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
Три имени должны совпадать, и одно из них не очевидно:
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/, ставшее единственным числом внутри него. Да, это непоследовательно.
Автоматический запуск чего-либо
Два специальных тега:
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и читайте чат. Синтаксические ошибки в функциях появляются там, а не молча.
Заархивирован или нет
Работают оба варианта. Заархивированный означает pack.mcmeta в корне zip-архива, точно так же, как для ресурс-паков. Форма папки проще при разработке, потому что /reload подхватывает изменения без повторной архивации.
Размещение на сервере
На сервере путь <world>/datapacks/, где <world> — это значение level-name в server.properties — а не корневая папка сервера. Помещение пака в папку сервера — самая распространенная ошибка на стороне сервера.
Соберите пак с текущими названиями папок, действительным pack.mcmeta и уже подключенным тегом загрузки, затем скачайте его готовым к использованию с Datapack Studio.