MC Toolkit

Руководства / Устранение неполадок

Конвертация .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 КБ при скачивании, и поэтому любой универсальный экстрактор «не справляется» — извлекать нечего.

Что должна делать конвертация

  1. Прочитать modrinth.index.json.
  2. Скачать каждую запись по её CDN-URL.
  3. Проверить каждый файл по sha512 из манифеста. Пропуск этого шага — так в пак попадает повреждённый или подменённый jar.
  4. Разместить каждый файл по пути path.
  5. Скопировать overrides/, затем client-overrides/ или server-overrides/ поверх — overrides побеждают, для этого они и нужны.
  6. Заархивировать результат.

Шаг 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.

Zip-инструменты для ресурспаков →

Другие руководства

Смотреть все →