Конвертація .mrpack у звичайний zip модпака — і чому архіватори видають помилку
Файл .mrpack — це маніфест, а не архів з модами. Розпакувавши його, ви отримаєте файл JSON і жодного jar. Ось що насправді всередині та що повинен робити конвертер.
Перейменувати .mrpack to .zip, open it, and you find almost nothing: an modrinth.index.json, maybe an overrides/ folder. The mods are missing. This is not corruption — it is the format working as designed.
Що всередині
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/over the top — overrides win, that is their purpose. - Запакувати результат у zip.
Крок 3 — це те, що конвертери зазвичай мовчки пропускають. Невідповідний хеш означає, що завантаження було обірвано або файл змінився; якщо все одно встановити його, пак аварійно завершуватиме роботу під час завантаження з помилкою, яка вказує не на той мод.
Навіщо це взагалі робити
- Лаунчери, які не підтримують mrpack. ATLauncher, MultiMC та ручне встановлення вимагають
папку з файлами jar.
- Серверна сторона. Хостинги серверів майже ніколи не приймають
.mrpack; they want the mods
папку.
- Офлайн-встановлення. Після конвертації паку більше не потрібен CDN.
Цей env field decides client versus server
Кожен файл містить:
"env": { "client": "required", "server": "unsupported" }
Серверний пак повинен пропустити усе з позначкою unsupported on the server side — mostly shaders, minimaps and HUD mods. Copying the full client mods folder onto a server is the usual cause of a crash on startup that names a rendering class.
У зворотному напрямку
Створення .mrpack from a folder is the reverse and has one trap: any mod не на Modrinth не може бути записом маніфесту. Його потрібно помістити в overrides/mods/, which makes the pack bigger but keeps it working. Silently dropping those mods produces a pack that installs cleanly and is missing content.
Конвертуйте в обох напрямках з перевіркою хешу та env split handled, in the Інструменти zip для пакетів ресурсів.