- Mixin هي مكتبة جافا تقوم بتعديل الأصناف المترجمة لـ Minecraft عند بدء التشغيل.
- تحدد التعديلات أماكن إدخال التعليمات البرمجية، وليس شكل الملف، لذا فإن التعديلات تبقى صالحة بعد تحديثات اللعبة.
- Fabric مبني على Mixin ويطبق مزيج كل تعديل أثناء تحميل الأصناف.
- أنت لا تقوم بتثبيت Mixin بنفسك؛ يقوم المُحمِّل بتضمينه.
Mixin هي مكتبة جافا تسمح لـ Mod بتعديل الأصناف المترجمة لـ Minecraft أثناء تحميل اللعبة، دون الحاجة إلى تعديل الكود المصدري الأصلي. تكتب الـ Mods أصنافًا صغيرة تحدد "أضف هذا الكود في هذه النقطة في طريقة اللعبة هذه"، وتقوم Mixin بدمجها في رمز البايت في وقت التشغيل. يستخدمها Fabric كآلية تعديل أساسية.
أين Opal يناسب
Opal هو تعديل Fabric، لذا فهو يعتمد على Mixin من الداخل. أنت لا تقوم بتثبيت Mixin بنفسك؛ دليل الإعداد يغطي تشغيل Opal و Fabric
كيف يعمل Mixin
يقوم Mixin بتحرير الأصناف بعد تجميعها ولكن قبل تشغيلها بواسطة JVM. ترسل الوحدة النمطية (mod) فئة Mixin تستهدف فئة لعبة حقيقية. تحدد التعليقات التوضيحية على تلك الفئة المواضع التي يجب إدراج التعليمات البرمجية فيها: بداية طريقة، نهايتها، استدعاء طريقة محددة، أو قيمة مُرجعة. عندما يقوم Minecraft بتحميل الفئة المستهدفة، يعيد Mixin كتابة التعليمات البرمجية الثنائية (bytecode) لإدراج تعليمات برمجية الوحدة النمطية (mod).
هذا مهم لأن Minecraft لم يتم تصميمه ليتم توسيعه. اللعبة لا تحتوي على نقاط إضافية رسمية لمعظم السلوكيات. يمنح Mixin الوحدات النمطية (mods) طريقة للدخول من خلال التعامل مع اللعبة المجمعة نفسها كسطح للتوسيع.
لماذا تستخدم الوحدات النمطية (mods) ذلك بدلاً من تحرير اللعبة
لسببين: التوافق والتحديثات.
إن تحرير مصدر اللعبة مباشرة يعني إرسال نسخة معدلة بالكامل، وهو ما لا يستطيع أي شخص آخر البناء عليه والذي ينكسر بمجرد تحديث اللعبة. تصحيحات Mixin صغيرة وجراحية، لذلك يمكن للعديد من الوحدات النمطية (mods) تصحيح نفس اللعبة دون الحاجة إلى إرسال نسخة كاملة.
تصف التصحيحات أيضًا مكان إدراج التعليمات البرمجية بدلاً من شكل الملف، لذلك غالبًا ما يظل Mixin المكتوب مقابل إصدار واحد قابلاً للتطبيق بعد تحديث اللعبة، طالما أن الطريقة المستهدفة لا تزال موجودة.
كيف يتناسب مع Fabric
تعتمد منصة Fabric على Mixin. يقوم المُحمِّل بقراءة ملف تهيئة Mixin الخاص بكل تعديل، ثم يمرر فئات Mixin المدرجة إلى Mixin لتطبيقها أثناء تحميل الفئات. عادةً ما يكون تعديل Fabric عبارة عن فئاته الخاصة بالإضافة إلى عدد قليل من Mixins التي تربط ببعض طرق اللعبة التي يحتاج إلى تغييرها.
نقاط الحقن الشائعة
| التعليق | ما يفعله |
|---|---|
@Inject | يشغل التعليمات البرمجية الخاصة بك في نقطة محددة داخل طريقة الهدف |
@Redirect | يستبدل استدعاء طريقة محددة داخل الهدف |
@ModifyArg | يغير وسيطًا تم تمريره إلى استدعاء داخل الهدف |
@ModifyVariable | يعيد كتابة متغير محلي في منتصف الطريقة |
@Overwrite | يستبدل طريقة بأكملها (الحل الأخير؛ ينكسر بسهولة) |
يُعد @Inject هو الأداة الافتراضية لأنه الأقل تدخلاً والأكثر عرضة للبقاء على قيد الحياة أثناء تحديث اللعبة. يتم تجنب @Overwrite لأنه يتعارض مع أي تعديل آخر يلمس نفس الطريقة.
الأسئلة الشائعة
لا. Mixin هي مكتبة تُبنى بها التعديلات. لا تقم بتثبيتها بمفردها؛ بل يقوم برنامج تحميل مثل Fabric بتجميعها وتطبيق الـ mixins التي توفرها تعديلاتك
لا. تحدث هذه التصحيحات في الذاكرة عند تحميل الفئات. تبقى الملفات على القرص دون تغيير، ولهذا السبب فإن إزالة التعديل بشكل صحيح تزيل التغييرات التي أحدثها
إذا قام كلا المكونين بتعديل نفس الطريقة بطرق غير متوافقة، خاصةً باستخدام @Overwrite، فقد يؤدي ذلك إلى إلغاء أو تعطيل عمل الآخر. تستخدم المكونات المساعدة (mixins) المكتوبة بشكل جيد نقاط حقن ضيقة لتجنب التداخل مع بعضها البعض
لا. Mixin هو إطار عمل عام لتعليمات Java bytecode، ولكن تعديل Minecraft هو المكان الذي يُستخدم فيه بشكل مكثف، وتبني Fabric له جعله المعيار هناك