یک .mrpack تقریباً هیچیک از مادهای خود را ندارد

این فایل یک ZIP است، اما jarها درون آن نیستند. مانیفستی از URLهای دانلود را به همراه هشهای SHA-512 ارائه میدهد، به همین دلیل است که یک پَک 40 KB میتواند چهارصد مگابایت را نصب کند — و چرا در حالت آفلاین ناموفق میشود.
تغییر نام هرکدام .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.
در واقع درون آن چیست
| ورودی | الزامی | محتویات |
|---|---|---|
modrinth.index.json | بله | مانیفست: هر فایل، مسیر، اندازه، هشها و URLهای دانلود آن |
overrides/ | خیر | فایلهای واقعی همانطور که هستند کپی شدهاند — کانفیگها، اسکریپتها، بستههای منابع |
client-overrides/, server-overrides/ | خیر | همان ایده، تنها اعمالشده در آن سمت |
مانیفست حاوی یک 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.
چرا اینگونه ساخته شده است
بازتوزیع. سازنده پَک تقریباً هیچوقت اجازه ندارد همه مادهای موجود در فهرست را دوباره میزبانی کند، اما همیشه میتواند به فایل خود سازنده اشاره کند. ارسال URLها به جای jarها اشتراکگذاری پَک را قانونی نگه میدارد و حجم آن را برای ارسال از طریق چت به اندازه کافی کوچک نگه میدارد.
هشها نیمه دیگر هستند. یک URL ممکن است فردا چیز دیگری را ارائه دهد؛ اما یک SHA-512 نمیتواند. یک لانچر که هش را پس از دانلود تأیید میکند، بررسی میکند که فایل دریافتشده بایت به بایت همان فایلی باشد که سازنده پَک آزمایش کرده است.
سه حالتی که به مشکل میخورد
- بدون شبکه، بدون پَک. یک
.mrpackis an installer, not an archive. Offline it produces a folder of configs and nothing else. - یک URL خراب مهلک است، نه قابل رد شدن. اگر مادی از فهرست حذف شود، ورودی همچنان به 404 منجر میشود و فرایند نصب در فایلی که به عنوان الزامی علامتگذاری شده متوقف میشود.
- فایلهای فقط-سرور و فقط-کلاینت. یک نسخه بازشده کلاینت را روی سرور کپی کنید
و مادهای سمت کلاینت را به همراه خواهید آورد که بارگیری نخواهند شد —
envflags exist precisely to keep those apart.
تبدیل آن به یک پوشه معمولی
تبدیل کردن یعنی انجام کاری که یک لانچر انجام میدهد: خواندن مانیفست، دریافت هر فایل به مقصد
تعیینشدهاش 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.
دو نکته هنگام انجام دستی آن ارزش رعایت کردن دارند. رعایت 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.