Convertir un .mrpack en un zip de modpack normal — et pourquoi les extracteurs échouent
Un .mrpack est un manifeste, pas une archive de mods. Le décompresser vous donne un fichier JSON et aucun fichier .jar. Voici ce qu'il contient réellement et ce qu'un convertisseur doit faire.
Renommez un .mrpack en .zip, ouvrez-le, et vous ne trouverez presque rien : un modrinth.index.json, peut-être un dossier overrides/. Les mods sont manquants. Ce n'est pas une corruption — c'est le format qui fonctionne comme prévu.
Ce qu'il y a à l'intérieur
modrinth.index.json the manifest: name, version, loader, and a list of downloads
overrides/ config files, resource packs, anything not on Modrinth
Chaque entrée du manifeste ressemble à ceci :
{
"path": "mods/sodium.jar",
"hashes": { "sha1": "…", "sha512": "…" },
"downloads": ["https://cdn.modrinth.com/data/…/sodium.jar"],
"fileSize": 812345
}
Le pack contient des références, pas des fichiers. C'est pourquoi un pack de 40 mods ne pèse que 200 Ko et pourquoi chaque extracteur générique "échoue" — il n'y a rien à extraire.
Ce qu'une conversion doit faire
- Lire
modrinth.index.json. - Récupérer chaque entrée depuis son URL CDN.
- Vérifier chaque fichier par rapport au sha512 du manifeste. Ignorer cette étape est la raison pour laquelle un
fichier .jar corrompu ou substitué se retrouve dans un pack.
- Placer chaque fichier à son
path. - Copier
overrides/par-dessus — les remplacements l'emportent, c'est leur but. - Zipper le résultat.
L'étape 3 est celle que les convertisseurs ignorent discrètement. Un hachage non concordant signifie que le téléchargement a été tronqué ou que le fichier a été modifié ; l'installer quand même produit un pack qui plante au chargement avec une erreur pointant vers le mauvais mod.
Pourquoi le faire
- Lanceurs qui ne gèrent pas le format .mrpack. ATLauncher, MultiMC et les installations manuelles veulent un
dossier de fichiers .jar.
- Côté serveur. Les hébergeurs de serveurs n'acceptent presque jamais un
.mrpack; ils veulent le
dossier de mods.
- Installation hors ligne. Une fois converti, le pack n'a plus besoin du CDN.
Le champ env décide entre client et serveur
Chaque fichier contient :
"env": { "client": "required", "server": "unsupported" }
Un pack serveur doit ignorer tout ce qui est marqué unsupported côté serveur — principalement les shaders, les mini-cartes et les mods d'interface utilisateur (HUD). Copier le dossier complet des mods client sur un serveur est la cause habituelle d'un crash au démarrage qui nomme une classe de rendu.
L'autre sens
Construire un .mrpack à partir d'un dossier est l'inverse et comporte un piège : tout mod non présent sur Modrinth ne peut pas être une entrée de manifeste. Il doit aller dans overrides/mods/, ce qui rend le pack plus grand mais le maintient fonctionnel. Supprimer silencieusement ces mods produit un pack qui s'installe proprement mais auquel il manque du contenu.
Convertissez dans les deux sens, avec vérification de hachage et gestion de la séparation env, dans les Outils de zip de packs de ressources.