دليل
كيف تصنع plugin قوائم GUI لـ Minecraft
حُدّث في 18 أكتوبر 2026
قوائم الخادم (نقاط الانتقال، والمتاجر، والكِتات، والإعدادات) هي مخازن صناديق يفتحها الـ plugin ويتحكم فيها. كل خانة تحمل عنصراً يعمل كزر. تبدو بسيطة، لكن القائمة التي لا تلغي كل أنواع النقرات تسمح للاعبين بأخذ الأزرار معهم. يشرح هذا الدليل كيف تعمل القوائم وكيف تحصل على قائمة مبنية ومختبرة.
ابدأ من هذا المثال.
ولّد هذا بـ Codexeخطوة بخطوة
1.ارسم القائمة
لقائمة الصندوق من 1 إلى 6 صفوف من 9 خانات (من 9 إلى 54). اكتب أي عنصر يوضع في أي خانة، وما تفعله كل نقرة، وأي الخانات للزينة فقط مثل ألواح الزجاج.
2.أنشئ المخزون مع holder
افتحه بـ
Bukkit.createInventory(holder, size, title)باستخدام فئةInventoryHolderالخاصة بك. الـ holder هو ما يعرّف الـ plugin بأن النقرة حدثت في قائمته لا في صندوق عادي.3.عالج النقرات
في
InventoryClickEvent، تحقّق من الـ holder، وألغِ الحدث، ثم نفّذ إجراء تلك الخانة. أغلق القائمة أو حدّثها بعد الإجراء.4.امنع كل طريقة أخرى لنقل العناصر
ألغِ
InventoryDragEventأيضاً، وعالج النقرات مع Shift ومفاتيح الأرقام والنقرات في مخزون اللاعب نفسه أثناء فتح القائمة.5.أضف صفحات إذا كانت القائمة طويلة
لنقاط الانتقال أو عناصر المتجر التي لا تتسع، خصّص الصف السفلي لأزرار السابق والتالي والإغلاق.
6.افتحها من أمر
مثل
/warps، أو من عنصر أو NPC. امنح الأمر صلاحية إذا لم تكن القائمة للجميع.7.ابنِها وانقر فيها
دع Codexe يجمّع الـ plugin، وانضم إلى الخادم التجريبي وانقر كل زر. يمكن للاعبين التجريبيين أيضاً فتح القائمة والنقر على الخانات بدلاً منك.
القواعد التي تحافظ على أمان القائمة
- تعرّف على القائمة من الـ holder وليس من عنوانها أبداً: فأي صندوق أُعيدت تسميته يمكنه نسخ العنوان.
- ألغِ النقرة قبل فعل أي شيء آخر، حتى لا يترك خطأ في الإجراء العنصرَ في مؤشر اللاعب.
- ألغِ السحب والنقرات مع Shift من مخزون اللاعب، وإلا أمكن دفع العناصر إلى القائمة.
- لا تثق بالعنصر الموجود في الخانة: ابحث عن الإجراء حسب رقم الخانة أو حسب وسم على العنصر.
- نفّذ الأعمال البطيئة (قراءات قاعدة البيانات، وطلبات الويب) خارج الخيط الرئيسي وحدّث القائمة عند انتهائها.
قوائم من ملف الإعدادات
يحب أصحاب الخوادم تغيير القوائم دون بناء جديد. اطلب أن تُعرَّف كل قائمة في ملف إعدادات، مع الحجم والعنوان، ولكل زر: الخانة والمادة والاسم والوصف والإجراء:
| المفتاح | مثال | ما يفعله |
|---|---|---|
size | 27 | عدد الخانات، من مضاعفات 9 |
slot | 13 | مكان الزر، بالعدّ من 0 |
material | ENDER_PEARL | العنصر المعروض |
action | warp:spawn | ما تفعله النقرة: نقطة انتقال، أو أمر، أو قائمة أخرى |
مثال على وصف
"plugin لـ Paper 1.21.4 باسم WarpMenu. الأمر /warps يفتح قائمة من 6 صفوف بزر لكل نقطة انتقال، 45 في كل صفحة، مع أزرار السابق والتالي والإغلاق في الصف السفلي. يضيف المشرفون نقاط الانتقال بـ /setwarp <name> <material> ويحذفونها بـ /delwarp. النقر على نقطة انتقال ينقل اللاعب بعد تمهيد 3 ثوانٍ يُلغى عند الحركة. لا يستطيع اللاعبون أخذ أي عنصر في القائمة أو تحريكه. نقاط الانتقال محفوظة في warps.yml، وعنوان القائمة وأسماء الأزرار والرسائل في config.yml."
اختبار القوائم باللاعبين التجريبيين
يستطيع اللاعبون التجريبيون في Codexe فتح قائمة والنقر على خانة، ثم التحقق من أن قائمة فُتحت أو رسالة ظهرت أو عنصراً أُعطي. أضف اختباراً بكلماتك، مثل "لاعب عادي ينفّذ /warps وينقر الخانة 0، فيرى رسالة الانتقال"، وسيُعاد تشغيله في كل مرة يسلّم فيها Codexe تغييراً.
أسئلة
هل يعمل هذا على 1.8؟
قوائم الصناديق موجودة في كل إصدار منذ 1.8. يختلف الـ API في التفاصيل (أسماء المواد، والعناوين)، لذا اذكر الإصدار في الطلب.
هل يمكنني صنع القوائم بـ Skript بدلاً من ذلك؟
نعم، بالإضافة skript-gui المثبّتة على خادم Skript التجريبي في Codexe. الـ plugin أفضل للقوائم الكبيرة أو كثيرة الاستخدام.
هل يمكن أن تبدو القائمة بنسيج مخصص؟
فقط بحزمة موارد تغيّر العناصر أو خلفية المخزون. أما جانب الـ plugin فهو نفسه: خانات وعناصر ونقرات.
اصنع قائمتك
يُفتح هذا الوصف جاهزاً للإرسال:
“plugin لـ Paper 1.21.4 باسم WarpMenu: الأمر /warps يفتح قائمة من 6 صفوف بزر لكل نقطة انتقال، 45 في كل صفحة، وأزرار السابق/التالي/الإغلاق في الصف السفلي، و/setwarp باسم ومادة و/delwarp للمشرفين، وتمهيد انتقال 3 ثوانٍ يُلغى عند الحركة، ولا يمكن أخذ أي عنصر أو تحريكه، ونقاط الانتقال محفوظة في warps.yml، والعناوين والرسائل في config.yml.”
ولّد هذا بـ Codexe