Преобразование .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-адресу.
- Проверить каждый файл по sha512 из манифеста. Пропуск этого шага приводит к тому, что поврежденный или подмененный .jar попадает в пак.
- Разместить каждый файл по его
path. - Скопировать
overrides/поверх — переопределения имеют приоритет, это их цель. - Заархивировать результат.
Шаг 3 — это то, что конвертеры тихо пропускают. Несоответствие хеша означает, что загрузка была прервана или файл изменен; установка такого файла приводит к сбою пака при загрузке с ошибкой, указывающей на неправильный мод.
Зачем это вообще нужно
- Лаунчеры, которые не поддерживают mrpack. ATLauncher, MultiMC и ручные установки требуют папку с .jar-файлами.
- Серверная сторона. Серверные хостинги почти никогда не принимают
.mrpack; им нужна папка с модами. - Оффлайн-установка. После конвертации пак больше не нуждается в CDN.
Поле env определяет клиентскую или серверную часть
Каждый файл содержит:
"env": { "client": "required", "server": "unsupported" }
Серверный пак должен пропускать всё, что помечено unsupported на стороне сервера — в основном шейдеры, миникарты и HUD-моды. Копирование полной папки клиентских модов на сервер — обычная причина сбоя при запуске, который указывает на класс рендеринга.
В обратную сторону
Создание .mrpack из папки — это обратный процесс, и у него есть одна ловушка: любой мод, не размещенный на Modrinth, не может быть записью манифеста. Он должен быть помещен в overrides/mods/, что делает пак больше, но сохраняет его работоспособность. Тихое удаление таких модов приводит к тому, что пак устанавливается чисто, но в нём отсутствует контент.
Конвертируйте в любом направлении, с проверкой хеша и обработкой разделения env, с помощью Resource Pack Zip Tools.