Convertire .mrpack in un normale zip di modpack — e perché gli estrattori falliscono
Un .mrpack è un manifest, non un archivio di mod. Decomprimerlo restituisce un file JSON e nessun jar. Ecco cosa c'è davvero dentro e cosa deve fare un convertitore.
Rinomina un .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.
Cosa c'è dentro
modrinth.index.json the manifest: name, version, loader, and a list of downloads
overrides/ config files, resource packs, anything not on Modrinth
Ogni voce nel manifest si presenta così:
{
"path": "mods/sodium.jar",
"hashes": { "sha1": "…", "sha512": "…" },
"downloads": ["https://cdn.modrinth.com/data/…/sodium.jar"],
"fileSize": 812345
}
Il pacchetto include riferimenti, non file. Ecco perché un pacchetto da 40 mod pesa solo 200 KB da scaricare e perché ogni estrattore generico "fallisce" — non c'è nulla da estrarre.
Cosa deve fare una conversione
- Leggi
modrinth.index.json. - Scarica ogni voce dal suo URL CDN.
- Verifica ciascun file rispetto allo sha512 nel manifest. Saltare questo passaggio è il modo in cui un
jar corrotto o sostituito finisce in un pacchetto.
- Posiziona ciascuno nel suo
path. - Copia
overrides/over the top — overrides win, that is their purpose. - Comprimi il risultato in zip.
Il passaggio 3 è quello che i convertitori saltano silenziosamente. Un hash non corrispondente significa che il download è stato interrotto o che il file è cambiato; installarlo comunque produce un pacchetto che va in crash all'avvio con un errore che punta alla mod sbagliata.
Perché farlo
- Launcher che non supportano mrpack. ATLauncher, MultiMC e le installazioni manuali richiedono una
cartella di jar.
- Lato server. Gli host di server non accettano quasi mai una
.mrpack; they want the mods
cartella.
- Installazione offline. Una volta convertito, il pacchetto non ha più bisogno del CDN.
Il env field decides client versus server
Ogni file contiene:
"env": { "client": "required", "server": "unsupported" }
Un pacchetto server deve saltare tutto ciò che è contrassegnato come 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.
Procedura inversa
Creare un .mrpack from a folder is the reverse and has one trap: any mod non su Modrinth non può essere una voce del manifest. Deve andare in 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.
Converti in entrambe le direzioni, con verifica dell'hash e env split handled, in the Strumenti zip per pacchetti di risorse.