
FancyNpcs – Minecraft Java Edition 1.19.4–1.21.x
التبعيات: المنصة: Paper / Folia (لا يتم دعم Spigot وغيره من تفرعات Bukkit القديمة) إصدار Java: Java 21+ (يتطلب أحدث الإصدارات Java 25)…
التبعيات: المنصة: Paper / Folia (لا يتم دعم Spigot وغيره من تفرعات Bukkit القديمة) إصدار Java: Java 21+ (يتطلب أحدث الإصدارات Java 25) إصدار Minecraft: 1.19.4 – 1.21.x مكتبات إضافية: PlaceholdersAPI (يُوصى به لدمج المتغ
التبعيات:
المنصة: Paper / Folia (لا يتم دعم Spigot وغيره من تفرعات Bukkit القديمة)
إصدار Java: Java 21+ (يتطلب أحدث الإصدارات Java 25)
إصدار Minecraft: 1.19.4 – 1.21.x
مكتبات إضافية: PlaceholdersAPI (يُوصى به لدمج المتغيرات في واجهة الإجراءات)
عادةً ما يكون إنشاء شخصيات غير قابلة للعب (NPC) تفاعلية على خوادم Minecraft مصحوبًا بتكاليف عتادية كبيرة. تسجّل الحلول القديمة الـ NPC ككيانات خادم كاملة (Entity)، مما يجبر النواة على معالجة ذكائها الاصطناعي والتصادمات الفيزيائية والبحث عن المسار وتحميل القطع (chunks). يؤدي ذلك إلى انخفاض حرج في مؤشر TPS (Ticks Per Second) مع تزايد عدد الشخصيات. يقدّم الإضافة FancyNpcs طريقة بديلة قائمة على الحُزم لعرض الشخصيات الافتراضية، مما يتيح الحفاظ على مئات الأشكال التفاعلية دون أي تأثير على أداء مسار الخادم.
بنية الحُزم والتوافق مع Folia
تكمن الخاصية التقنية الأساسية لـ FancyNpcs في أن الشخصيات المُنشأة توجد حصريًا في ذاكرة الإضافة وعلى جانب العملاء المتصلين. لا يضيفها الخادم إلى قاعدة بيانات العالم ولا يعالجها في دورة التحديث العامة للكيانات.
عندما يقترب لاعب من الإحداثيات المحددة، تعترض الإضافة حركة الشبكة وترسل إلى العميل حُزم ClientboundAddPlayerPacket (للنماذج البشرية) أو ClientboundAddEntityPacket (للكائنات الأخرى). يتم تحديث السلوك اللاحق والعتاد وحالة العرض باستخدام حُزم ClientboundSetEntityDataPacket (البيانات الوصفية) وClientboundSetEquipmentPacket (العتاد). بالنسبة إلى الخادم، لا وجود لهذه الشخصيات — فهي «إسقاطات افتراضية» للمستخدمين النهائيين.
يجعل هذا النهج FancyNpcs خيارًا مثاليًا للخوادم متعددة المسارات المبنية على Folia. ولأن Folia تقسّم العالم إلى مناطق منفصلة، يعمل كل منها في مساره الخاص، فإن إضافات الـ NPC التقليدية كثيرًا ما تسبّب حالات تجمّد (deadlocks) وأخطاءً حرجة بسبب محاولات التفاعل بين مسارات مناطق مختلفة. تعالج FancyNpcs البيانات بشكل غير متزامن وترسل الحُزم إلى اللاعبين مباشرةً، متجنبةً تمامًا التعارضات مع مجدول مهام Folia.
إمكانيات تخصيص المظهر
تدعم الإضافة طيفًا واسعًا من أنواع الكيانات والتأثيرات البصرية. يمكن للاعبين إنشاء NPC على هيئة أي وحوش فانيلا (Player, Cow, Zombie, Skeleton, Villager, Pig وما إلى ذلك) وضبط مظهرها بدقة.
إدارة الجلود (للنماذج البشرية)
للشخصيات من نوع player تتوفر عدة مصادر لتحميل الكسوات (textures):
@mirror: ينسخ جلد الـ NPC ديناميكيًا جلد اللاعب الذي ينظر إليه في تلك اللحظة.اسم أو UUID لحساب مرخّص: ترسل الإضافة تلقائيًا طلبًا إلى خوادم جلسات Mojang لتحميل الكسوة المطابقة.
رابط مباشر إلى مورد ويب (URL): إمكانية تحميل أي ملف .png طرف ثالث من خادم ويب.
الملفات المحلية: صور موضوعة مسبقًا في المجلد /plugins/FancyNpcs/skins/.
العَلَم
--slim: يفعّل استخدام نموذج الذراعين الرفيع (طراز Alex) للجلود المحمّلة عبر الروابط.
التأثيرات البصرية والسمات
التوهج (Glowing): يضيف خطًا ملونًا حول الشخصية. يرتبط اللون بألوان الفرق الفانيلا (Team Colors).
العتاد (Equipment): يمكن منح الشخصيات أي عناصر في اليد اليسرى أو اليمنى، وكذلك إلباسها خوذة ودرعًا للصدر ودرعًا للساقين وحذاءً.
الوضعيات (Poses): تُدعم حالات عرض محددة، مثل الجلوس والاستلقاء (محاكاة النوم على السرير) والسباحة والزحف.
الحجم (Scale): في الإصدارات الجديدة من الإضافة جرى تطبيق دعم تحجيم الكيانات (تغيير الحجم الفيزيائي للنموذج).
نظام الأوامر وبنية الجُمل
تُدار الشخصيات حصريًا باستخدام الأوامر في دردشة اللعبة أو وحدة تحكم الخادم. يحتوي الجدول أدناه على وصف لبنية الجُمل الأساسية:
الأمر | الوصف والمعاملات | مثال على الاستخدام |
| إنشاء شخصية جديدة |
|
| حذف شخصية موجودة |
|
| تغيير الجلد (اسم، url أو @mirror) |
|
| يُلبس الـ NPC العنصر الذي يمسكه اللاعب |
|
| يفعّل التوهج الملون حول النموذج |
|
| يجعل الشخصية تدير رأسها نحو اللاعبين |
|
| يحدد وضعيات معينة أو تنويعات للوحوش |
|
للإدارة العامة للإضافة تُستخدم أوامر المنصة:
/fancynpcs reload— يعيد تحميل تكوينات النظام./fancynpcs save— يكتب قسريًا الحالة الراهنة لجميع الـ NPC على القرص في ملف قاعدة البيانات.
نظام الإجراءات التفاعلية (Actions)
يحتوي FancyNpcs على آلية برمجة نصية مدمجة للإجراءات تُفعَّل عند تفاعل اللاعب مع الشخصية. يمكن ضبط الإجراءات على أنواع نقر مختلفة (LEFT_CLICK، RIGHT_CLICK، ANY_CLICK).
تقدّم الإضافة أنواع الإجراءات التالية للتنفيذ:
message: إرسال رسالة إلى اللاعب. يدعم MiniMessage (ألوان Hex) ومتغيرات PlaceholdersAPI.player_command: تنفيذ أمر باسم اللاعب.player_command_as_op: تنفيذ أمر باسم اللاعب مع منح صلاحيات المشغّل مؤقتًا (لتفعيل أوامر لا يستطيع اللاعب العادي استخدامها).console_command: تنفيذ أمر بواسطة وحدة تحكم الخادم. يُستبدل المتغير {player} تلقائيًا باسم اللاعب.send_to_server: نقل اللاعب فوريًا إلى خادم آخر في شبكة BungeeCord أو Velocity.wait: ينشئ توقفًا بين الإجراءات (تأخير بوحدة tick الخادم).block_until_done: يمنع الضغطات المتكررة على الـ NPC حتى اكتمال سيناريو الإجراءات الحالي.execute_random_action: اختيار عشوائي لأحد الإجراءات التالية في القائمة.
مثال على إنشاء سيناريو تفاعلي معقّد لـ NPC باسم Bob:
إضافة رسالة ترحيب:
/npc action Bob RIGHT_CLICK add message <yellow>مرحبًا بك في خادمنا، %player_name%!</yellow>إضافة توقف لمدة 40 tick (ثانيتان):
/npc action Bob RIGHT_CLICK add wait 40نقل اللاعب آنيًا إلى نقطة الظهور عبر وحدة التحكم:
/npc action Bob RIGHT_CLICK add console_command teleport {player} 0 100 0
بفضل إمكانية إضافة عدة خطوات متتالية وتنظيم الطابور باستخدام add_before، add_after و move_up/move_down، يمكن للمسؤولين بناء أشجار حوار كاملة أو آليات معقّدة للانتقال بين خوادم اللوبي دون تثبيت إضافات أخرى مثل Denizen أو MyCommand.
بنية ملفات الإعدادات
تُخزَّن جميع البيانات في الدليل plugins/FancyNpcs/. يعتمد عمل الإضافة على ملفين:
1. config.yml
يحدد هذا الملف السلوك العام للإضافة ويحتوي على الإعدادات التالية:
turn_to_player_distance(الافتراضي 5): نصف القطر بالكتل الذي تدير الشخصية ضمنه رأسها نحو اللاعبين. يؤدي خفض هذا المعامل إلى تحسين نقل حزم الشبكة في المناطق المزدحمة.visibility_distance(الافتراضي 20): المسافة بالكتل التي تُرسَل عندها إلى العميل حزم ظهور الـ NPC. يساعد التقليل على إخفاء الشخصيات خلف الجدران أو ضباب العرض لتوفير معدل إطارات اللاعبين.enable_autosave: حفظ التغييرات تلقائيًا ودوريًا على القرص.
2. npcs.yml
في هذا الملف تخزّن الإضافة قاعدة بيانات الـ NPC المُنشأة. تُوصَف كل شخصية بكتلة بيانات منفصلة:
YAML
Bob: id: 104 type: PLAYER world: world x: 10.5 y: 64.0 z: -25.5 yaw: 90.0 pitch: 0.0 glowing: false turn_to_player: true skin: value: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUv..." signature: "d3G8h...==" actions: RIGHT_CLICK: - type: MESSAGE value: "<green>أهلًا وسهلًا!</green>" |
تحذير: التحرير اليدوي للملف npcs.yml غير مُوصى به إطلاقًا بسبب خطر إتلاف بنية الجُمل أو التحديد غير الصحيح للإحداثيات. ينبغي إجراء أي تغييرات على تكوين الـ NPC حصريًا عبر أوامر داخل اللعبة، ثم تثبيتها باستخدام /fancynpcs save.
الخلاصة
يُعد الإضافة FancyNpcs حلًا حديثًا وعالي الأداء لإنشاء شخصيات زخرفية وتفاعلية على خوادم Minecraft Java Edition. وهو يزيل المشكلة الرئيسية للأدوات القديمة — استهلاك وقت معالج الخادم في خدمة الكيانات.
القيد الرئيسي للإضافة هو الغياب التام للذكاء الاصطناعي. وبما أن الشخصيات إسقاطات افتراضية على جانب العميل، فإنها لا تستطيع التنقل في العالم بمفردها، أو التفاعل مع الكتل، أو مهاجمة وحوش أخرى.
مقارنةً بالإضافة الكلاسيكية Citizens، التي تدعم آليات تنقل معقّدة (التنقل عبر نقاط المسار) والتكامل مع أنظمة القتال (تعديل Sentinel)، فإن FancyNpcs أقل من حيث مرونة الذكاء الاصطناعي. غير أن Citizens يُحدث حِملًا هائلًا على المسار الرئيسي للخادم وهو عمليًا غير صالح للاستخدام على Folia. يقدّم FancyNpcs بديلًا مثاليًا لخوادم اللوبي ومحاور Velocity ومشاريع SMP الكبيرة، حيث لا يُطلب من الشخصيات سوى الوجود الثابت والمظهر الجيد والتنفيذ السريع للأوامر عند النقر.
التثبيت
التثبيت النموذجي يستغرق حوالي 5 دقائق. الخطوات نفسها؛ يختلف فقط المُحمّل والبناء المطابق.
- 1Stop your Minecraft server.
- 2Drop the plugin .jar into the server /plugins folder.
- 3Start the server once so the plugin generates its config files.
- 4Edit /plugins/<name>/config.yml as needed, then run /reload confirm or restart.








