Файлы и pack.json
JSON-моду нужен pack.json в корне и патчи в jsons/features/, jsons/objects/, jsons/levels/ или jsons/lang/.
{ "uuid": "yourname.balance", "name": "Мой мод", "version": "1.0.0", "packFormatVersion": 1 }uuid обязателен и сохраняется при обновлениях. name и version рекомендуется указывать; версия по умолчанию — 1.0.0. Поддерживается только packFormatVersion: 1, это также значение по умолчанию.
Для JS обязательны apiVersion: 2 и один файл .js или .mjs с setup(ctx). Путь задаётся через js.entry; scripts/main.js распознаётся автоматически. depends и optionalDepends — списки uuid зависимостей.
Совместимость с версией GP-Next
Используйте одно поле, например "gpNextVersion": "^1.5.0". Для модов с данными и JS действуют одинаковые правила.
| Выражение | Стабильные версии |
|---|---|
^1.5.0 | >=1.5.0 <2.0.0 |
~1.5.0 | >=1.5.0 <1.6.0 |
>=1.5.0 <2.0.0 | Обе границы должны соблюдаться |
1.5.x | Любая стабильная версия 1.5 |
^1.5.0 || ^2.0.0 | Любой из двух диапазонов |
>=1.5.0, <2.0.0, !=1.5.2 | Исключение конкретной версии |
==1.5.0 | Точная версия |
~=1.5.0 / ~=1.5 | >=1.5.0 <1.6.0 / >=1.5.0 <2.0.0 |
Поддерживаются диапазоны npm SemVer и синтаксис Python: запятые (И), ==, !=, ~=. Это не полная поддержка PEP 440: epoch, .dev, .post и === не поддерживаются. ==1.5 означает ровно 1.5.0, а диапазон npm 1.5 означает 1.5.x. У ~=1.5 и ~1.5 разные верхние границы.
- Если поле
gpNextVersionприсутствует, старыеminGpNextVersionиmaxGpNextVersionигнорируются. Старые границы проверяются только при отсутствии нового поля. Если не указано ни одно из трёх полей, предупреждения нет. - Старые поля принимают номера версий без операторов; обе границы включаются.
- Несовпадение, пустое новое поле, неверный тип или некорректное выражение вызывают только предупреждение о возможной несовместимости, не блокируя установку и загрузку. Некорректное новое поле не приводит к проверке старых границ.
- Новые диапазоны по умолчанию исключают предварительные версии.
^1.5.0не допускает1.6.0-pre.1;^1.5.0-pre.1допускает1.5.0-pre.2, но не допускает автоматически1.6.0-pre.1. Старые границы сохраняют прежние правила сравнения с включёнными концами диапазона.
Например, при "gpNextVersion": "^1.5.0" и "maxGpNextVersion": "1.4.9" текущая версия 1.5.2 соответствует новому полю, без предупреждения из-за старой границы. Предупреждения показаны в окне предварительного просмотра импорта и в сведениях о моде. Версии API, формат манифеста, зависимости и обязательные функции по-прежнему проверяются отдельно.
Упакуйте файлы в ZIP и импортируйте его. Поддерживается JSON5. Руководство по JS на английском.
Рецепты слияния растений · Официальные примеры модов
Необходимые функции
Объявляйте их через requiredGpNextFeatures, например:
{ "requiredGpNextFeatures": ["experimental.jsModding", "experimental.worldMapJson"] }Поддерживаются experimental.jsModding, experimental.worldMapJson, experimental.plantLevelSystem, runtime.dynamicPlantRegistry, runtime.shopExtensions и runtime.scrollSensitivity. Выключенная или неизвестная функция блокирует обычную установку/загрузку. Для выключенной функции есть переход в настройки; неизвестный ID должен исправить автор. Функции не включаются автоматически.
depends и optionalDepends — массивы uuid, а не имена npm или диапазоны версий. gpNextVersion задаёт версию платформы. Используйте js.reloadable: false только с js.startup: true. uuid не должен содержать пробелы по краям или начинаться с legacy:; для JS нужны 3–128 букв, цифр, точек, дефисов или подчёркиваний, первый символ — буква или цифра.
