تبدیل .mrpack به یک zip مادپک معمولی — و چرا استخراجکنندهها ناموفق میشوند
یک .mrpack یک مانیفست است، نه یک آرشیو از مادها. اکسترکت کردن آن به شما یک فایل JSON و بدون هیچ jar میدهد. در اینجا بررسی میکنیم که واقعاً چه چیزی درون آن است و یک مبدل چه کاری باید انجام دهد.
تغییر نام یک .mrpack to .zip, open it, and you find almost nothing: an modrinth.index.json, maybe an overrides/ folder. The mods are missing. This is not corruption — it is the format working as designed.
چه چیزی درون آن است
modrinth.index.json the manifest: name, version, loader, and a list of downloads
overrides/ config files, resource packs, anything not on Modrinth
هر ورودی در مانیفست به این شکل است:
{
"path": "mods/sodium.jar",
"hashes": { "sha1": "…", "sha512": "…" },
"downloads": ["https://cdn.modrinth.com/data/…/sodium.jar"],
"fileSize": 812345
}
این پک شامل ارجاعات است، نه فایلها. به همین دلیل است که دانلود یک پک با 40 ماد فقط 200 KB حجم دارد و چرا هر استخراجکننده عمومی «ناموفق میشود» — چیزی برای استخراج وجود ندارد.
کاری که یک تبدیل باید انجام دهد
- خواندن
modrinth.index.json. - دریافت هر ورودی از URL مربوط به CDN آن.
- تأیید هر فایل در برابر sha512 در مانیفست. نادیده گرفتن این مورد دلیلی است که یک
فایل jar خراب یا جایگزینشده وارد پک میشود.
- قرار دادن هر یک در
path. - کپی
overrides/over the top — overrides win, that is their purpose. - Zip کردن نتیجه.
مرحله 3 همان موردی است که مبدلها بیسر و صدا از آن میگذرند. عدم تطابق هش به این معنی است که دانلود ناقص بوده یا فایل تغییر کرده است؛ در هر صورت نصب آن پکی تولید میکند که هنگام بارگذاری با خطایی که به ماد اشتباهی اشاره دارد، کرش میکند.
اصلاً چرا این کار را انجام دهیم
- لانچرهایی که از mrpack پشتیبانی نمیکنند. برنامههای ATLauncher، MultiMC و نصبهای دستی به یک
پوشه از jarها نیاز دارند.
- سمت سرور. میزبانهای سرور تقریباً هرگز یک
.mrpack; they want the mods
پوشه را نمیپذیرند.
- نصب آفلاین. پس از تبدیل، پک دیگر نیازی به CDN ندارد.
The env field decides client versus server
هر فایل شامل:
"env": { "client": "required", "server": "unsupported" }
یک پک سرور باید نادیده بگیرد هر چیزی که علامتگذاری شده به عنوان unsupported on the server side — mostly shaders, minimaps and HUD mods. Copying the full client mods folder onto a server is the usual cause of a crash on startup that names a rendering class.
انجام در جهت معکوس
ساخت یک .mrpack from a folder is the reverse and has one trap: any mod در Modrinth نیست نمیتواند یک ورودی مانیفست باشد. باید قرار گیرد در overrides/mods/, which makes the pack bigger but keeps it working. Silently dropping those mods produces a pack that installs cleanly and is missing content.
تبدیل در هر دو جهت، با تأیید هش و env split handled, in the ابزارهای Zip مربوط به Resource Pack.