صنع بلجن Minecraft بدون برمجة
على سيرفر Minecraft، كل ما يتجاوز اللعبة الأساسية يمرّ عبر بلجن، والبلجن يُكتب بلغة Java. هذا هو الحائط الذي يصطدم به معظم من يدير سيرفراً: يعرفون بالضبط ما يريدونه، والطريق الوحيد يمرّ عبر لغة برمجة، ومشروع يجب ترجمته، وواجهة برمجية يجب تعلّمها. هذه الصفحة تشرح ما يمكن فعله بدون كل ذلك، وقبل كل شيء أين تقف الحدود.
الحائط، والطرق الثلاث المعروفة للالتفاف عليه
قبل NimBlock، من لا يبرمج أمامه ثلاثة خيارات، ولكل واحد منها حدّ واضح يُستحسن معرفته قبل الالتزام به.
- كتل الأوامر. تعيش داخل العالم، في مكان محدد، وتُفعَّل عبر الردستون أو بمؤقّت. لا تستطيع الاستجابة لحدث في السيرفر، ناهيك عن منعه.
- الداتا باك. تبقى ضمن حدود الفانيلا: وظائف، إنجازات، جداول غنائم. لا أمر حقيقي، ولا اعتراض للشات، ولا إلغاء لإجراء. في المقابل، تعمل على سيرفر فانيلا، بدون Paper.
- Skript. أقوى بكثير من الخيارين السابقين، وأقوى من NimBlock. إنه لغة برمجة حقيقية، أي بنية نحوية يجب تعلّمها وأخطاء يجب فك رموزها.
هذه الخيارات الثلاثة موجودة منذ زمن طويل وليس فيها شيء متجاوَز. ما كان ناقصاً هو الطبقة الوسطى بين كتلة الأوامر ولغة البرمجة.
قاعدة واحدة، في جملة واحدة
كل قواعد NimBlock النحوية تختصر في جملة واحدة: عندما يحدث هذا، إذا تحققت هذه الشروط، حينها افعل ذلك. البلجن هو قائمة من القواعد، والقاعدة محفّز وبعض الشروط وبعض الإجراءات. لا شيء آخر يجب تعلّمه، وهذا مقصود: قواعد نحوية تختصر في جملة تختصر أيضاً في الذهن.
في المحرر، القطع عبارة عن لبنات تتشابك مع بعضها: اللبنة التي لا يُسمح لها بالذهاب إلى مكان ما لا تتشابك هناك. وما يمرّره المحرر يعاود المدقّق فحصه: الـ spec إما أن تُقبل أو تُرفض كاملةً، ولا تُقبل أبداً منتصفة. بلجن حماية فقد قاعدة الحماية الخاصة به لن يظهر أثره في اللعبة، وهذا بالضبط نوع العطل الذي لا أحد يريده.
ما يمكن صنعه اليوم
9 محفّزات، 8 شروط، 14 إجراءات. القائمة الدقيقة، المحدَّثة، مع تفاصيل كل معامل، موجودة على صفحة القواعد النحوية: وهي مُولَّدة من الكتالوج، لذلك لا تكذب أبداً. باختصار، إليك ما تتيحه:
- الاستجابة لما يحدث: دخول لاعب، خروجه، رسالة في الشات، موت، كتلة تُكسر أو توضع، أمر تخترعه بنفسك، أو ببساطة كل N ثانية.
- التصفية حسب صلاحية، أو صفة المشغّل (OP)، أو العالم، أو نقاط الحياة، أو محتوى نص، أو مقارنة أرقام، أو احتمال.
- التنفيذ: رسائل، عناوين كبيرة، أصوات، عناصر، تأثيرات، علاج، تيليبورت، إعلانات لكامل السيرفر، تنفيذ أمر عبر الكونسول، وإلغاء الحدث الذي وقع للتو. هذا الإجراء الأخير هو ما يحوّل هذه القائمة إلى حمايات حقيقية.
ما لا يعوّضه NimBlock
الصفحة التي تَعِد بكل شيء لا تفيد أحداً. إليك ما لا يفعله NimBlock:
- لا آليات لعب جديدة. نوع كتلة جديد، كائن غير مسبوق، واجهة مخزون مخصّصة: هذا كله Java، وسيبقى كذلك.
- لا متغيّرات ولا حلقات تكرار. القاعدة تستجيب، لا تحسب. إذا كانت فكرتك تتطلّب تخزين حالة معقّدة بين حدثين، فأنت تتجاوز حدود هذه القواعد النحوية.
- لا بلجنات خارجية. NimBlock ينفّذ الـ specs الخاصة بك، ولا يحمّل ملف .jar تم تنزيله من مكان آخر.
- الأمر الجديد ينتظر التشغيل التالي. باقي التغييرات تُطبَّق فوراً دون إيقاف السيرفر، لكن Minecraft يسجّل أوامره عند بدء التشغيل: يُذكَر هذا في اللوحة لحظة حدوثه بدلاً من اكتشافه أثناء اللعب.
أين يعمل البلجن
لا يوجد في أي مكان Java يُولَّد ثم يُترجَم. السيرفر يحمّل محرّكاً مكتوباً مرة واحدة للجميع، وهذا المحرّك يقرأ الـ spec الخاصة بك. هذا ما يجعل بلجن مُركَّباً هنا خالياً من أي دَين تقني: عندما يتغيّر Minecraft، المحرّك هو من يتكيّف، مرة واحدة، لا كل بلجن كُتب به على حدة.
على سيرفر NimBlock، التثبيت يأخذ نقرة واحدة والبلجن يصل دون إيقاف اللعبة. أما المحرّك، فسيُنشَر في كتالوجات البلجنات، حتى يعمل نفس الـ spec على سيرفر غير مستضاف هنا.
أسئلة شائعة
- هل يمكن فعلاً صنع بلجن Minecraft بدون معرفة البرمجة؟
- نعم، بشرط قبول حدّ واحد: أنت تركّب قواعد ضمن قواعد نحوية محددة، ولا تكتب برنامجاً حرّاً. القاعدة تقول «عندما يحدث هذا، إذا تحققت هذه الشروط، حينها افعل ذلك». تقريباً كل ما يحتاجه سيرفر بين أصدقاء يدخل في هذا الشكل: رسائل ترحيب، مكافآت، حمايات، إعلانات، أوامر مخصّصة. أما ما لا يدخل فيه فهو كل ما يتطلّب اختراع آلية لعب جديدة بالكامل، وهنا يصبح Java ضرورياً.
- ما الفرق مع كتل الأوامر؟
- كتل الأوامر تعيش داخل العالم، في مكان محدد، وتُفعَّل عبر الردستون أو بمؤقّت. أما البلجن فيُفعَّل عند وقوع حدث في السيرفر: لاعب يتصل، كتلة تُكسر، رسالة في الشات. ما لا تقدر كتل الأوامر على فعله هو الاستجابة لما يحدث، وخصوصاً منع حدوثه. قاعدة NimBlock تقدر على إلغاء الحدث الذي وقع للتو.
- وماذا عن الداتا باك؟
- الداتا باك يبقى ضمن حدود اللعبة الفانيلا: وظائف، إنجازات، جداول غنائم. لا يستطيع إضافة أمر حقيقي، ولا اعتراض الشات، ولا إلغاء إجراء. بلجن Paper يقدر على ذلك، لأنه يعمل داخل السيرفر لا داخل بيانات العالم. في المقابل، الداتا باك يعمل على سيرفر فانيلا، بينما البلجن يحتاج Paper أو Spigot.
- وماذا عن Skript؟
- Skript هو الجدّ الأول لهذا النوع، وهو أقوى بفارق لا مجال للمقارنة فيه: إنه لغة برمجة حقيقية، بمتغيرات وحلقات تكرار ومكتبة إضافات ضخمة. وكونه لغة يعني أيضاً بنية نحوية يجب تعلّمها، وأخطاء يجب قراءتها، وملفاً لا يخبرك أين تعطّل. NimBlock يفعل أقل بكثير، لكنه يرفض أي قاعدة غير صالحة قبل حفظها ويريك المكان الدقيق للمشكلة على اللبنة المعنية. إن كنت مرتاحاً مع Skript، ابقَ معه.
- هل يُترجَم البلجن إلى Java في مكان ما؟
- لا، وهذا هو الخيار الجوهري للمنتج. الـ spec الخاص بك يبقى ملف JSON، والسيرفر يحمّل محرّكاً مكتوباً مرة واحدة للجميع يقرأ هذا الملف وينفّذه. لا شيء يُولَّد، ولا شيء يُترجَم. النتيجة العملية: إصدار Minecraft جديد يُدفَع ثمنه مرة واحدة في هذا المحرّك، لا في كل بلجن مكتوب به.
- هل يمكن استخدام البلجن على سيرفر غير مستضاف عند NimBlock؟
- هذا مخطَّط له، وسيُنشَر المحرّك الذي يقرأ الـ specs في كتالوجات البلجنات. الـ spec هو ملف JSON عادي: المحرّك يقرأه من مجلد بلجنات السيرفر. هذا غير متاح بعد وقت كتابة هذه الصفحة.
ركّب قاعدتك الأولى، وشاهدها تعمل على سيرفر موجود بالفعل.
مجاني خلال النسخة التجريبية · خادم واحد بسعة 1 غيغابايت لكل حساب