MC Toolkit

Руководства / Устранение неполадок

Датапак не загружается? Структура папок и три имени, которые должны совпадать

Если датапак не появляется в /datapack list — проблема в путях, а не в коде. Вот точное дерево, правило пространства имён и папки, которые переименовали.

/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

Три имени должны совпадать, и одно из них неочевидно:

  1. pack.mcmeta в корне пака — рядом с data/, а не внутри неё.
  2. data/<namespace>/ — ваше пространство имён, строчными буквами, без пробелов. Оно становится префиксом в my_namespace:my_function.
  3. Названия папок категорий, которые изменились и обычно являются виновником.

Папки переименовали в единственное число

Это сломало много паков и много руководств:

СтароеТекущее
functions/function/
recipes/recipe/
loot_tables/loot_table/
advancements/advancement/
predicates/predicate/
structures/structure/

Пак с названиями во множественном числе загружается — он появляется в /datapack list — и просто ничего не делает, а это самый запутанный вариант отказа из всех. tags/ осталась во множественном числе, но папки внутри неё перешли в единственное, как и всё остальное — tags/functions/ теперь 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"] }

Диагностика по порядку

  1. /datapack list — если пак вообще не в списке, значит pack.mcmeta отсутствует, повреждён или лежит на уровень глубже.
  2. В списке, но отключён — /datapack enable "file/my_pack". Обратите внимание на префикс file/ и кавычки.
  3. В списке и включён, но бездействует — названия папок во множественном числе или тег загрузки в вашем собственном пространстве имён вместо minecraft.
  4. /reload и прочитайте лог (logs/latest.log или вывод лаунчера). Функция с синтаксической ошибкой отбрасывается там с сообщением "Failed to load function …"; в чате только говорится, что перезагрузка завершена.

В архиве или нет

Работают оба варианта. В архиве означает pack.mcmeta в корне zip-файла, точно как для ресурспаков. Форма папки удобнее при разработке, потому что /reload подхватывает изменения без повторной упаковки.

Размещение на сервере

На сервере путь — <world>/datapacks/, где <world> — это значение level-name в server.properties, а не корень сервера. Положить пак в папку сервера — самая распространённая ошибка на стороне сервера.

Соберите пак с текущими названиями папок и корректным pack.mcmeta, а затем скачайте его готовым к установке с помощью Datapack Studio — и поместите тег загрузки в data/minecraft/tags/function/, как указано выше.

Datapack Studio →

Другие руководства

Смотреть все →