Convertendo .mrpack para um zip de modpack normal — e por que os extratores falham
Um .mrpack é um manifesto, não um arquivo de mods. Descompactá-lo entrega um arquivo JSON e nenhum jar. Veja o que realmente há dentro e o que um conversor precisa fazer.
Renomeie um .mrpack para .zip, abra-o e você não encontra quase nada: um modrinth.index.json, talvez uma pasta overrides/. Os mods não estão lá. Isso não é corrupção — é o formato funcionando como foi projetado.
O que há 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 do manifesto se parece com isto:
{
"path": "mods/sodium.jar",
"hashes": { "sha1": "…", "sha512": "…" },
"downloads": ["https://cdn.modrinth.com/data/…/sodium.jar"],
"fileSize": 812345
}
O pacote traz referências, não arquivos. É por isso que um pacote de 40 mods é um download de 200 KB e por isso todo extrator genérico "falha" — não há nada para extrair.
O que uma conversão precisa fazer
- Ler o
modrinth.index.json. - Baixar cada entrada da sua URL de CDN.
- Verificar cada arquivo com o sha512 do manifesto. Pular essa etapa é como um jar corrompido ou substituído acaba dentro de um pacote.
- Colocar cada um no seu
path. - Copiar
overrides/e, em seguida,client-overrides/ouserver-overrides/, por cima — os overrides vencem, é para isso que servem. - Compactar o resultado em zip.
A etapa 3 é a que os conversores silenciosamente ignoram. Um hash divergente significa que o download foi truncado ou que o arquivo mudou; instalá-lo mesmo assim gera um pacote que trava ao carregar com um erro apontando para o mod errado.
Por que fazer isso, afinal
- Launchers que não entendem mrpack. ATLauncher, MultiMC e instalações manuais querem uma pasta de jars.
- Lado do servidor. Provedores de servidor quase nunca aceitam um
.mrpack; eles querem a pasta de mods. - Instalação offline. Depois de convertido, o pacote não precisa mais da CDN.
O campo env decide entre cliente e servidor
Cada arquivo carrega:
"env": { "client": "required", "server": "unsupported" }
Um pacote de servidor deve ignorar tudo marcado como unsupported no lado do servidor — principalmente shaders, minimapas e mods de HUD. Copiar a pasta de mods do cliente inteira para um servidor é a causa comum de uma trava na inicialização que cita uma classe de renderização.
Fazendo o caminho inverso
Montar um .mrpack a partir de uma pasta é o processo inverso e tem uma armadilha: qualquer mod que não esteja hospedado no Modrinth, GitHub ou GitLab não pode ser uma entrada do manifesto — e o próprio Modrinth só aceita sua própria CDN para pacotes publicados. Ele precisa ir para overrides/mods/, o que deixa o pacote maior, mas mantém tudo funcionando. Descartar esses mods sem avisar gera um pacote que instala sem erros e está sem conteúdo.
Converta um .mrpack em um ZIP de cliente ou servidor, com verificação de hash e a separação do env tratada, no Conversor de MRPACK para ZIP.