The Best Resource for Minecraft
The Best Resource for Minecraft

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

یک .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 نمی‌تواند. یک لانچر که هش را پس از دانلود تأیید می‌کند، بررسی می‌کند که فایل دریافت‌شده بایت به بایت همان فایلی باشد که سازنده پَک آزمایش کرده است.

سه حالتی که به مشکل می‌خورد

  • بدون شبکه، بدون پَک. یک .mrpack is an installer, not an archive. Offline it produces a folder of configs and nothing else.
  • یک URL خراب مهلک است، نه قابل رد شدن. اگر مادی از فهرست حذف شود، ورودی همچنان به 404 منجر می‌شود و فرایند نصب در فایلی که به عنوان الزامی علامت‌گذاری شده متوقف می‌شود.
  • فایل‌های فقط-سرور و فقط-کلاینت. یک نسخه بازشده کلاینت را روی سرور کپی کنید و مادهای سمت کلاینت را به همراه خواهید آورد که بارگیری نخواهند شد — env flags 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.