Руководства / Устранение неполадок
Конвертация .mrpack в обычный zip-архив модпака — и почему экстракторы не справляются
.mrpack — это манифест, а не архив с модами. Если его распаковать, вы получите JSON-файл и ни одного jar. Вот что на самом деле внутри и что должен делать конвертер.
Переименуйте .mrpack в .zip, откройте — и найдёте почти ничего: modrinth.index.json, может быть, папку overrides/. Моды отсутствуют. Это не повреждение — так работает формат.
Что внутри
modrinth.index.json the manifest: name, version, loader, and a list of downloads
overrides/ config files, resource packs, anything not on Modrinth
Каждая запись в манифесте выглядит так:
{
"path": "mods/sodium.jar",
"hashes": { "sha1": "…", "sha512": "…" },
"downloads": ["https://cdn.modrinth.com/data/…/sodium.jar"],
"fileSize": 812345
}
Пак содержит ссылки, а не файлы. Поэтому пак из 40 модов весит 200 КБ при скачивании, и поэтому любой универсальный экстрактор «не справляется» — извлекать нечего.
Что должна делать конвертация
- Прочитать
modrinth.index.json. - Скачать каждую запись по её CDN-URL.
- Проверить каждый файл по sha512 из манифеста. Пропуск этого шага — так в пак попадает повреждённый или подменённый jar.
- Разместить каждый файл по пути
path. - Скопировать
overrides/, затемclient-overrides/илиserver-overrides/поверх — overrides побеждают, для этого они и нужны. - Заархивировать результат.
Шаг 3 конвертеры тихо пропускают. Несовпадение хеша означает, что загрузка оборвалась или файл изменился; установка такого файла всё равно даёт пак, который падает при загрузке с ошибкой, указывающей не на тот мод.
Зачем это вообще нужно
- Лаунчеры, не понимающие mrpack. ATLauncher, MultiMC и ручная установка хотят папку с jar-файлами.
- Серверная сторона. Хостинги серверов почти никогда не принимают
.mrpack; им нужна папка mods. - Офлайн-установка. После конвертации паку больше не нужен CDN.
Поле env определяет клиент или сервер
Каждый файл несёт:
"env": { "client": "required", "server": "unsupported" }
Серверный пак должен пропускать всё, помеченное unsupported на серверной стороне — в основном шейдеры, миникарты и HUD-моды. Копирование полной клиентской папки mods на сервер — обычная причина падения при запуске с упоминанием класса рендеринга.
В обратную сторону
Сборка .mrpack из папки — это обратный процесс, и в нём есть одна ловушка: любой мод, не размещённый на Modrinth, GitHub или GitLab, не может быть записью в манифесте — а сам Modrinth для опубликованных паков принимает только свой CDN. Такой мод придётся положить в overrides/mods/, что увеличит размер пака, но сохранит его работоспособность. Молчаливое отбрасывание этих модов даёт пак, который устанавливается без ошибок, но в нём не хватает контента.
Конвертируйте .mrpack в клиентский или серверный ZIP с проверкой хешей и разделением по env в конвертере MRPACK в ZIP.