Convertendo .mrpack para um zip de modpack normal — e por que extratores falham
Um .mrpack é um manifesto, não um arquivo de mods. Descompactá-lo resulta em um arquivo JSON e nenhum jar. Veja o que realmente está dentro e o que um conversor precisa fazer.
Renomeie um .mrpack para .zip, abra-o e você encontrará quase nada: um modrinth.index.json, talvez uma pasta overrides/. Os mods estão faltando. Isso não é corrupção — é o formato funcionando como projetado.
O que está dentro
modrinth.index.json the manifest: name, version, loader, and a list of downloads
overrides/ config files, resource packs, anything not on Modrinth
Cada entrada no manifesto se parece com:
{
"path": "mods/sodium.jar",
"hashes": { "sha1": "…", "sha512": "…" },
"downloads": ["https://cdn.modrinth.com/data/…/sodium.jar"],
"fileSize": 812345
}
O pacote envia referências, não arquivos. É por isso que um pacote de 40 mods é um download de 200 KB e por que todo extrator genérico "falha" — não há nada para extrair.
O que uma conversão precisa fazer
- Ler
modrinth.index.json. - Buscar cada entrada de sua URL CDN.
- Verificar cada arquivo contra o sha512 no manifesto. Pular isso é como um
jar corrompido ou substituído entra em um pacote.
- Colocar cada um em seu
path. - Copiar
overrides/por cima — as substituições vencem, esse é o propósito delas. - Compactar o resultado.
O passo 3 é o que os conversores silenciosamente pulam. Um hash incompatível significa que o download foi truncado ou o arquivo foi alterado; instalá-lo de qualquer forma produz um pacote que trava ao carregar com um erro apontando para o mod errado.
Por que fazer isso
- Lançadores que não entendem mrpack. ATLauncher, MultiMC e instalações manuais querem uma
pasta de jars.
- Lado do servidor. Hosts de servidor quase nunca aceitam um
.mrpack; eles querem a
pasta de mods.
- Instalação offline. Uma vez convertido, o pacote não precisa mais da CDN.
O campo env decide entre cliente e servidor
Cada arquivo contém:
"env": { "client": "required", "server": "unsupported" }
Um pacote de servidor deve pular tudo marcado unsupported no lado do servidor — principalmente shaders, minimaps e mods de HUD. Copiar a pasta completa de mods do cliente para um servidor é a causa usual de um travamento na inicialização que nomeia uma classe de renderização.
Indo na outra direção
Construir um .mrpack a partir de uma pasta é o inverso e tem uma armadilha: qualquer mod não no Modrinth não pode ser uma entrada de manifesto. Ele deve ir em overrides/mods/, o que torna o pacote maior, mas o mantém funcionando. Silenciosamente descartar esses mods produz um pacote que instala limpo e está faltando conteúdo.
Converta em qualquer direção, com verificação de hash e a divisão env tratada, nas Ferramentas de Zip de Pacotes de Recursos.