Руководства / Устранение неполадок
pack.mcmeta: номера pack_format и предупреждение «несовместимо»
Одно неверное поле — и Minecraft закрасит ваш пак серым. Вот какая структура нужна в 26.x, как охватить старые и новые версии одним файлом и где этот файл должен лежать.
Почти каждое «мой пак отображается как несовместимый» — это одно поле в одном маленьком файле.
Файл
{
"pack": {
"min_format": 97,
"max_format": 97,
"description": "My pack"
}
}
Это ресурспак для 26.3; датапак для 26.3 использует 121. Начиная с 1.21.9 любой формат выше 64 (ресурспак) или 81 (датапак) должен объявляться через min_format и max_format. Пак, в котором всё ещё записан голый "pack_format": 97 — а именно так показывают большинство руководств и большинство генераторов, — отклоняется и отображается как несовместимый.
Файл должен называться ровно pack.mcmeta и лежать в корне zip-архива — рядом с assets/ или data/, а не внутри папки внутри архива. Упаковка содержащей папки вместо её содержимого — вторая по частоте ошибка, и выглядит она точно так же, как неверный номер формата.
Ресурспаки и датапаки используют разные номера
Вот что сбивает с толку: эти два счётчика разошлись много лет назад и не взаимозаменяемы. Датапак с номером ресурспака будет закрашен серым, даже если номер «актуальный».
Вместо заучивания таблицы, которая устаревает с каждым релизом, посмотрите номер в ванильном паке для нужной вам версии — или позвольте генератору подставить его.
Один файл для старых и новых версий
Фиксация одного номера означает, что пак сломается в следующем релизе. Диапазон — нет, но диапазон, доходящий до 26.x, приходится писать сразу для двух поколений игры:
{
"pack": {
"pack_format": 46,
"supported_formats": { "min_inclusive": 46, "max_inclusive": 64 },
"min_format": 46,
"max_format": 97,
"description": "My pack"
}
}
min_format/max_format — это диапазон, который читает 26.x. pack_format и supported_formats нужны только для клиентов старше 1.21.9: supported_formats должен заканчиваться ровно на 64 (81 для датапака), min_format должен совпадать с его нижней границей, а pack_format должен находиться внутри него. Старый совет — supported_formats вплоть до какого-нибудь большого числа вроде 99 — теперь та самая форма, которую 26.x отклоняет сразу. Для пака, который только добавляет текстуры или рецепты — а это большинство паков, — широкий диапазон честен, потому что между версиями в нём на самом деле ничего не ломается.
Описание принимает текстовые компоненты
"description": [
{ "text": "My pack ", "color": "gold" },
{ "text": "v2", "color": "gray", "italic": true }
]
Коды через знак параграфа (§6) тоже всё ещё работают, но форма JSON переживает копирование через инструменты, которые вырезают управляющие символы.
Оверлеи — для поддержки нескольких версий сразу
"overlays": { "entries": [
{ "formats": { "min_inclusive": 42, "max_inclusive": 45 }, "directory": "older" }
] }
Папка older/ в корне пака используется только для этих форматов. Так одна загрузка поддерживает две версии с разными форматами моделей вместо двух zip-архивов.
Быстрая диагностика
| Симптом | Причина |
|---|---|
| Закрашен серым, «сделан для старой/новой версии» | неверный номер формата или (1.21.9 и новее) отсутствует min_format/max_format |
| Пак вообще не в списке | pack.mcmeta не в корне архива или невалидный JSON |
| Загружается, текстуры пропали | формат пака в порядке; неверны пути к текстурам |
| Работает в одиночной игре, но не на сервере | датапак лежит не в той папке мира |
Запятая в конце — невалидный JSON, и это даёт случай «вообще не в списке», а не сообщение об ошибке.
Сгенерируйте корректный файл для вашего типа пака и целевой версии — с min_format/max_format и устаревшими полями там, где они нужны старой версии, — с помощью генератора pack.mcmeta.