أدلة / استكشاف الأخطاء وإصلاحها
ملف mrpack هو أرشيف ZIP يكذب بشأن كونه ZIP
إعادة تسمية ملف .mrpack إلى .zip تمنحك ملف manifest ومجلد overrides، وليس المودات — فملفات jar موجودة على CDN الخاص بـ Modrinth ويتم جلبها عبر الهاش.
ملف .mrpack هو أرشيف ZIP، لذا إعادة تسميته إلى .zip واستخراجه ينجح — لكنه لا ينتج شيئًا مفيدًا تقريبًا. تحصل على modrinth.index.json ومجلد overrides، ولا تحصل على أي مودات إطلاقًا. ملفات jar لم تكن بالداخل أصلًا.
لماذا المودات مفقودة
حزم Modrinth تخزّن ملف manifest وليس محتوى فعليًا. كل مدخل في modrinth.index.json يسرد رابط تنزيل بالإضافة إلى هاش SHA-1 وSHA-512 للملف الذي يُفترض أن يعيده ذلك الرابط. يقرأ المشغّل ملف manifest، ويجلب كل ملف، ويتحقق من الهاش، وعندها فقط يضعه في النسخة.
هذا التصميم يُبقي الحزم صغيرة ويتيح تحديث الحزمة دون إعادة رفع كل ملف jar. كما يعني أيضًا أن الحزمة عديمة الفائدة دون اتصال حتى يقوم أحدهم بحلّها مرة واحدة.
ما يحتويه ملف manifest فعليًا
| الحقل | المعنى |
|---|---|
formatVersion | إصدار مخطط ملف manifest |
game | دائمًا "minecraft" — الإصدارات موجودة في dependencies |
files | مصفوفة من path وhashes وdownloads وenv |
dependencies | إصدارات المشغّل وMinecraft المراد تثبيتها أولًا |
حقل env في كل ملف هو ما يغفل عنه الناس. فهو يحدد، بشكل منفصل لكل من client وserver، ما إذا كان الملف required أو optional أو unsupported — والملف الذي لا يحتوي على env مطلوب على كليهما. المود المُعلَّم كـ client-only لا ينبغي نسخه إلى مجلد mods الخاص بالسيرفر إطلاقًا — فعل ذلك سبب شائع لسيرفر يرفض الإقلاع.
التحقق من الهاش ليس اختياريًا
إذا لم يتطابق SHA-1 لملف تم تنزيله مع ملف manifest، فالملف خاطئ: تنزيل مقطوع، أو صفحة خطأ من CDN حُفظت كملف jar، أو مرآة تم التلاعب بها. أي محوّل يتخطى التحقق سيعبّئ نسخة معطوبة بكل سرور. التحقق هو السبب الكامل للقيام بذلك محليًا بدلًا من الوثوق بإعادة تجميع عشوائية.
مخرجات العميل مقابل السيرفر
نفس ملف manifest ينتج أرشيفين مختلفين حسب الهدف:
- حزمة العميل — كل شيء، بالإضافة إلى
overridesمدموجة في جذر النسخة، جاهزة لمشغّل يقبل ملف ZIP. - حزمة السيرفر — تخطَّ المدخلات التي يكون فيها
env.serverهوunsupported، واحتفظ بالباقي، وطبّقserver-overrides/فوقoverrides/بدلًا منclient-overrides/.
لإصدار Java Edition فقط. لا يوجد في Bedrock تنسيق مكافئ؛ فإضافات Bedrock هي أرشيفات .mcaddon/.mcpack مع manifest.json بشكل مختلف تمامًا، ولا تُحلّ أي حزمة Modrinth إليها.
ملفات overrides تستبدل ولا تدمج
تُنسخ الملفات الموجودة تحت overrides/ فوق النسخة بعد وضع المودات. ملف الإعدادات في overrides يستبدل الإعداد الافتراضي للمود بالكامل. إذا شحنت حزمة ملف إعدادات في overrides وقمت أيضًا بتعديل ذلك الإعدادات في النسخة، فنسخة overrides هي التي تفوز عند الحل التالي.
حوّل ملف manifest، وتحقق من كل هاش، واحصل على ملف ZIP جاهز للمشغّل أو للسيرفر عبر محوّل MRPACK إلى ZIP.