Um .mrpack quase não contém seus próprios mods

O arquivo é um ZIP, mas os jars não estão dentro dele. Ele traz um manifesto de URLs de download com hashes SHA-512, por isso um pacote de 40 KB pode instalar quatrocentos megabytes — e por isso ele falha offline.
Renomear qualquer .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.
O que realmente está dentro
| Entrada | Obrigatório | Conteúdo |
|---|---|---|
modrinth.index.json | Sim | O manifesto: cada arquivo, seu caminho, tamanho, hashes e URLs de download |
overrides/ | Não | Arquivos reais copiados como estão — configs, scripts, pacotes de recursos |
client-overrides/, server-overrides/ | Não | Mesma ideia, aplicada apenas naquele lado |
O manifesto contém um 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.
Por que foi feito assim
Redistribuição. O criador de um pacote quase nunca tem permissão para rehospedar cada mod da lista, mas sempre pode apontar para o arquivo do próprio autor. Enviar URLs em vez de jars mantém o pacote legal para compartilhar e pequeno o suficiente para enviar no chat.
Os hashes são a outra metade. Uma URL pode começar a fornecer algo diferente amanhã; um SHA-512 não. Um launcher que verifica o hash após o download confere se o arquivo recebido é byte a byte o arquivo que o autor do pacote testou.
As três maneiras como isso dá errado
- Sem rede, sem pacote. Um
.mrpackis an installer, not an archive. Offline it produces a folder of configs and nothing else. - Uma URL inativa é fatal, não ignorável. Se um mod for deslistado, a entrada ainda resulta em um 404 e a instalação para em um arquivo marcado como obrigatório.
- Arquivos apenas do servidor e apenas do cliente. Copie uma instância de cliente descompactada
para um servidor e você trará mods do lado do cliente que se recusarão a carregar — o
envflags exist precisely to keep those apart.
Transformando um em uma pasta comum
Converter significa fazer o que um launcher faz: ler o manifesto, baixar cada arquivo para o seu
declarado 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.
Dois detalhes valem a pena manter ao fazer isso manualmente. Respeite o 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.