Konwersja .mrpack na zwykły zip z modpackiem — i dlaczego ekstraktory zawodzą
Plik .mrpack to manifest, a nie archiwum modów. Rozpakowanie go daje plik JSON i żadnych plików .jar. Oto, co faktycznie zawiera i co musi zrobić konwerter.
Zmień nazwę .mrpack na .zip, otwórz go, a znajdziesz prawie nic: plik modrinth.index.json, może folder overrides/. Brakuje modów. To nie jest uszkodzenie — format działa zgodnie z przeznaczeniem.
Co jest w środku
modrinth.index.json the manifest: name, version, loader, and a list of downloads
overrides/ config files, resource packs, anything not on Modrinth
Każdy wpis w manifeście wygląda tak:
{
"path": "mods/sodium.jar",
"hashes": { "sha1": "…", "sha512": "…" },
"downloads": ["https://cdn.modrinth.com/data/…/sodium.jar"],
"fileSize": 812345
}
Paczka zawiera odniesienia, a nie pliki. Dlatego paczka z 40 modami to pobieranie 200 KB i dlatego każdy ogólny ekstraktor „zawodzi” — nie ma nic do wyodrębnienia.
Co musi zrobić konwersja
- Odczytać
modrinth.index.json. - Pobrać każdy wpis z jego adresu URL CDN.
- Zweryfikować każdy plik pod kątem sha512 w manifeście. Pominięcie tego to sposób, w jaki
uszkodzony lub podmieniony plik .jar trafia do paczki.
- Umieścić każdy plik w jego
path. - Skopiować
overrides/na wierzch — nadpisania wygrywają, taki jest ich cel. - Spakować wynik.
Krok 3 to ten, który konwertery po cichu pomijają. Niezgodny hash oznacza, że pobieranie zostało przerwane lub plik został zmieniony; zainstalowanie go mimo to powoduje, że paczka zawiesza się przy ładowaniu z błędem wskazującym na niewłaściwy mod.
Dlaczego w ogóle to robić
- Launchery, które nie obsługują .mrpack. ATLauncher, MultiMC i instalacje ręczne wymagają
folderu z plikami .jar.
- Po stronie serwera. Hosty serwerów prawie nigdy nie akceptują
.mrpack; chcą
folderu z modami.
- Instalacja offline. Po konwersji paczka nie potrzebuje już CDN.
Pole env decyduje o kliencie kontra serwer
Każdy plik zawiera:
"env": { "client": "required", "server": "unsupported" }
Paczka serwerowa musi pomijać wszystko oznaczone unsupported po stronie serwera — głównie shadery, minimapy i mody HUD. Skopiowanie pełnego folderu modów klienta na serwer jest zazwyczaj przyczyną awarii przy uruchomieniu, która wskazuje na klasę renderowania.
W drugą stronę
Budowanie .mrpack z folderu jest odwrotnością i ma jedną pułapkę: żaden mod nieznajdujący się na Modrinth nie może być wpisem w manifeście. Musi trafić do overrides/mods/, co sprawia, że paczka jest większa, ale działa. Ciche pominięcie tych modów powoduje, że paczka instaluje się czysto, ale brakuje w niej zawartości.
Konwertuj w obu kierunkach, z weryfikacją hashy i obsługą podziału env, w Narzędziach do pakietów zasobów zip.