Датапак Minecraft можно создать без программирования на Java. Для первой версии нужны папка мира datapacks, файл pack.mcmeta, собственный namespace и текстовый файл .mcfunction с обычными командами Minecraft. Java понадобится только для модов, которые меняют код игры глубже.
Датапак работает в Minecraft Java Edition, но слово Java в названии издания не означает, что автор обязан писать Java-код. Игра сама загружает JSON-файлы, функции, теги, рецепты и другие данные. В стабильной версии 26.2 номер Data Pack version равен 107.1. Он меняется между выпусками, поэтому для другой версии проверяйте официальные release notes и не копируйте старое число вслепую.
Сообщает игре описание и совместимую версию формата.
Ваше уникальное имя внутри папки data, например firstpack.
Текстовый файл, где каждая строка является командой без начального слеша.

Датапак Minecraft без Java: правильная структура папок
Откройте папку сохранения мира и создайте datapacks/first_pack. В корне first_pack положите pack.mcmeta. Для Minecraft 26.2 укажите min_format и max_format с версией 107.1 и описание набора. Функцию сохраните по пути data/firstpack/function/hello.mcfunction. В актуальных версиях имя каталога function используется в единственном числе.
# data/firstpack/function/hello.mcfunction
# Каждая строка выполняется как команда без символа /
tellraw @a {text:"Datapack works!",color:"aqua"}
give @s minecraft:diamond 1
playsound minecraft:block.amethyst_block.chime master @s ~ ~ ~ 0.8 1.2- Команда /function firstpack:hello выводит сообщение
- Исполнитель получает алмаз и слышит короткий звук
Запустите /reload, затем /datapack list enabled. Если first_pack есть в списке, введите /function firstpack:hello. Автодополнение после двоеточия является быстрым признаком того, что путь и namespace распознаны. Символ @s указывает на исполнителя функции, поэтому результат зависит от того, кто запустил команду.
Из чего состоит минимальный датапак
| Элемент | Что означает | Что делать |
|---|---|---|
| pack.mcmeta | Метаданные и границы формата | Лежит в корне набора |
| data/firstpack | Пользовательский namespace | Только строчные латинские буквы, цифры и подчёркивание |
| function | Каталог функций | В современных версиях имя в единственном числе |
| hello.mcfunction | Набор команд | Одна команда на строку без / |
| /reload | Перезагрузка данных | Запускать после изменения файлов |
Файл pack.mcmeta должен быть валидным JSON без комментариев и лишней запятой. Для 26.2 минимальная запись может содержать объект pack, description, min_format и max_format со значением 107.1. Если вы ориентируетесь на 1.21.8 или более старую версию, структура метаданных и номер формата могут отличаться. Сверяйте именно Data Pack version, а не Resource Pack version.

Практика: соберите first_pack и запустите /function firstpack:hello
Соберите датапак из одной функции руками, без готового архива из интернета. Успех выглядит так: после /reload команда /function firstpack:hello пишет в чат Datapack works!, кладёт исполнителю алмаз и проигрывает короткий звук. Работайте на копии сохранения, а не на основном мире.
- Копия мира и datapacks. Скопируйте папку сохранения мира, откройте копию и создайте внутри datapacks/first_pack. Пока папка first_pack пустая, и это нормально.
- pack.mcmeta в корне набора. Положите прямо в first_pack файл pack.mcmeta с объектом pack, полем description и значениями min_format и max_format, равными 107.1 для версии 26.2. Проверьте путь: должно быть first_pack/pack.mcmeta, а не first_pack/first_pack/pack.mcmeta.
- Namespace и каталог function. Создайте data/firstpack/function только строчными латинскими буквами и с именем каталога в единственном числе. Имя firstpack дальше повторяется в команде запуска, поэтому запишите его точно так же.
- Три команды в hello.mcfunction. Сохраните hello.mcfunction с тремя строками: tellraw @a с текстом, give @s minecraft:diamond 1 и playsound minecraft:block.amethyst_block.chime. Убедитесь, что ни одна строка не начинается со слеша.
- Перезагрузка и запуск функции. В игре введите /reload, затем /datapack list enabled и найдите в списке first_pack. Наберите /function firstpack: и посмотрите, подставляет ли автодополнение hello, после чего запустите команду и проверьте сообщение, алмаз и звук.
Теперь сломайте набор специально: подставьте в pack.mcmeta заведомо чужой номер формата или переименуйте папку firstpack в FirstPack и снова выполните /reload. В первом случае игра посчитает набор несовместимым, во втором автодополнение после /function firstpack: перестанет предлагать hello, потому что namespace допускает только строчные буквы, цифры и подчёркивание. Верните исходные значения, повторите /reload и убедитесь, что /datapack list enabled снова показывает first_pack.
Дальше подключите теги load и tick, чтобы функция запускалась при загрузке мира и повторялась каждый тик. Тяжёлые команды в tick не вешайте, пока не измерите нагрузку на мир. Потом попробуйте в том же namespace свой рецепт крафта или loot table: путь и pack.mcmeta уже проверены, меняется только тип данных. Перед крупными экспериментами снова делайте копию сохранения.
Частые ошибки и почему они появляются
Самая частая ошибка связана с лишним уровнем папок после распаковки: игра видит first_pack/first_pack/pack.mcmeta вместо файла в корне. Вторая причина связана со старым учебником, где показано прежнее имя каталога или устаревший pack format. Третья появляется, когда команды копируют с ведущим слешем, хотя внутри mcfunction он не нужен.
Смотрите Data Pack version в заметках к своей стабильной версии. Число для resource pack не подходит.
Используйте простое имя строчными буквами, например firstpack, и повторяйте его в команде function.
Сделайте копию сохранения перед экспериментами с рецептами, генерацией мира и крупными функциями.
Самопроверка
Нужно ли знать Java, чтобы сделать датапак для Minecraft?
Java для датапака не нужна: набор состоит из JSON-файлов и текстовых файлов .mcfunction с обычными игровыми командами. Слово Java в названии издания относится к самой игре, а не к языку вашего контента. Java понадобится только для модов, которые меняют код игры глубже.
Где должен лежать файл pack.mcmeta?
Файл pack.mcmeta лежит в корне папки датапака или zip-архива, рядом с папкой data. Самая частая поломка после распаковки выглядит как first_pack/first_pack/pack.mcmeta: при лишнем уровне вложенности игра набор просто не видит.
Какой pack format указывать в pack.mcmeta?
В pack.mcmeta указывают номер Data Pack version своей стабильной версии игры: для 26.2 это 107.1 в полях min_format и max_format. Номер Resource Pack version не подходит, а для 1.21.8 и более старых сборок структура метаданных может отличаться, поэтому сверяйтесь с release notes своей версии.
Как проверить, что функция зарегистрировалась?
Регистрация проверяется двумя командами: сначала /reload, затем /datapack list enabled, где должен появиться first_pack. После этого наберите /function firstpack: и посмотрите на автодополнение: если игра подставляет hello, путь и namespace распознаны.
Почему папка называется function, а не functions?
Каталог функций в актуальных версиях называется function, в единственном числе. Старые учебники показывают вариант во множественном числе, и на новой версии такой набор загружается, но команды в нём не находятся.
Нужен ли слеш в начале строки в файле .mcfunction?
Слеш в начале строки .mcfunction не нужен: каждая строка файла и так выполняется как команда. Скопированный прямо из чата вариант с ведущим символом / вызовет ошибку разбора, поэтому этот символ убирают.
Что делать дальше
Соберите минимальный набор с одной функцией, сохраните скриншот результата и только потом добавляйте load, tick, рецепты или loot tables. Не запускайте тяжёлую команду каждый тик без измерения. Если позже захотите перейти от данных к обычному коду, основы типов, функций и структуры проекта можно изучить на курсе Java. Для выбора следующего языка пригодятся статьи Python или JavaScript и о языках игр и приложений.
