Найдите именно папку мира
В Java-клиенте выберите Одиночная игра, выделите нужный мир, нажмите Настроить/Edit → Открыть папку мира. Закройте мир перед копированием. В открытой папке создайте datapacks/demo. Если используете стандартный Windows-профиль, сохранения лежат в %APPDATA%\.minecraft\saves, но кнопка открытия надёжнее для отдельных установок.
На Paper смотрите level-name в server.properties: в главной папке этого мира находится datapacks, например world/datapacks. JAR-плагины и ресурсные пакеты имеют другие каталоги. Готовый датапак скачивайте со страницы автора с явно указанным выпуском Minecraft; пример ниже можно создать самостоятельно без скачивания.
Создайте pack.mcmeta для Java 1.21/1.21.1
В datapacks/demo/pack.mcmeta сохраните JSON ниже. Формат 48 и единственное число function относятся к этому диапазону: изменения объявлены в Java 1.21. Это не универсальное значение для Java 1.21.11 или 26.x.
На Windows включите Вид → Показать → Расширения имён файлов в Проводнике, чтобы файл не стал pack.mcmeta.txt. Для ZIP файла pack.mcmeta должен быть в корне архива; дополнительная внешняя папка часто делает пакет невидимым.
{
"pack": {
"pack_format": 48,
"description": "Учебная функция hello для Java 1.21/1.21.1"
}
}Создайте функцию и запустите её
Создайте путь datapacks/demo/data/demo/function/hello.mcfunction и поместите одну строку из примера. В функции начальный слеш не пишется. Для ручного теста в одиночном мире разрешите команды через Открыть для сети → Разрешить команды: Вкл. → Открыть мир для сети, если они не включены заранее.
Откройте мир и выполните /datapack list enabled, затем /function demo:hello. На работающем мире после добавления файла выполните /reload; на Paper для ванильной загрузки используйте /minecraft:reload, а не перезагрузку плагинов. Ожидаемый результат — сообщение Datapack loaded в чате.
say Datapack loadedРазберите отказ по месту
Если пакет отсутствует в списке, сравните папку мира, имя pack.mcmeta и корень ZIP. Если пакет есть, а функция неизвестна, проверьте data/demo/function/hello.mcfunction, единичное function, расширение и ошибки в журнале клиента/сервера. Переделывать число pack_format без изменения содержимого недостаточно.
Для пакетов с генерацией или постоянными данными сначала сохраните копию мира. Удаление ZIP убирает определения, но не возвращает уже изменённые чанки. Совместимость следующего выпуска проверяйте по changelog Mojang и обновлению автора; не переносите автоматически наши два файла на новый формат.
Поиск ошибки
Пакет отсутствует: проверьте папку мира, внешний уровень ZIP, расширение pack.mcmeta и правильность JSON. Пакет есть, функция отсутствует: смотрите путь, namespace, расширение mcfunction и сообщение парсинга команды. Функция запускается, но эффект неверен: проверяйте контекст выполнения и логику самого проекта.
Функция из чата и функция автоматического запуска могут иметь разную позицию и исполнителя. Команды с относительными координатами требуют особенно ясного контекста. Не тестируйте опасную fill в автоматическом цикле, пока не проверили один ручной запуск на маленькой области.
При удалении прочитайте процедуру автора: некоторым проектам нужен отдельный шаг очистки. Если тест неудачен, восстановите копию мира и прежний набор пакетов вместе. Не считайте удаление ZIP полным откатом постоянных изменений. После исправления повторите проверку загрузки, функции и сохранения.
Если путаются папки компонентов, поможет материал разные способы изменения игры.
Перед запуском строительной функции прочитайте инструкцию контроль команд изменения блоков.



