Файл .mrpack почти не содержит собственных модов

Файл представляет собой ZIP, но jar-файлов внутри него нет. Он содержит манифест с URL для скачивания и хешами SHA-512, поэтому сборка весом 40 КБ может установить четыреста мегабайт — и поэтому она не работает без интернета.
Переименовать любой .mrpack to .zip, open it, and the surprise is how
little is there. A pack with two hundred mods is often under 100 KB. The mods are not
missing — they were never included.
Что внутри на самом деле
| Запись | Обязательно | Содержимое |
|---|---|---|
modrinth.index.json | Да | Манифест: каждый файл, его путь, размер, хеши и URL для скачивания |
overrides/ | Нет | Реальные файлы, скопированные как есть — конфиги, скрипты, ресурс-паки |
client-overrides/, server-overrides/ | Нет | Та же идея, только для этой стороны |
Манифест содержит formatVersion, a dependencies map
naming the loader and Minecraft version, and a files array. Each file entry
holds the destination path, a fileSize, a hashes
object with sha1 and sha512, an env block marking it
required or optional per side, and one or more downloads URLs.
Почему всё устроено именно так
Распространение. Автор сборки почти никогда не имеет прав перезаливать каждый мод из списка, но всегда может сослаться на исходный файл автора. Передача URL вместо jar-файлов делает сборку легальной для публикации и достаточно компактной для отправки в чате.
Хеши — вторая половина. Завтра по URL может отдаваться что-то другое; по SHA-512 — нет. Лаунчер, проверяющий хеш после загрузки, убеждается, что полученный файл байт в байт совпадает с файлом, на котором автор тестировал сборку.
Три сценария, когда всё идёт не так
- Нет сети — нет сборки. Некий
.mrpackis an installer, not an archive. Offline it produces a folder of configs and nothing else. - Неработающий URL критичен, пропустить его нельзя. Если мод удалён, запись всё равно ведёт на 404, и установка останавливается на файле, помеченном как обязательный.
- Файлы только для сервера и только для клиента. Скопируйте распакованную клиентскую сборку
на сервер, и вы перенесёте клиентские моды, которые откажутся загружаться —
envflags exist precisely to keep those apart.
Превращение сборки в обычную папку
Конвертация означает то же, что делает лаунчер: прочитать манифест, загрузить каждый файл в указанное path, verify each hash, then lay the overrides on top.
What comes out is an ordinary mods/ tree you can drop into any launcher or
upload to a host that has never heard of Modrinth.
При выполнении вручную стоит учесть две детали. Соблюдайте env flags
so a server build does not inherit client mods. And check the hash rather than the file
size — a truncated download and a redirected HTML error page can both land at a plausible
size, and only the hash catches them.