server-icon.png: المتطلبات الدقيقة، وواجهة الإدارة التي لا يستخدمها أحد
64×64، بصيغة PNG، في جذر الخادم — أخطئ في أيٍّ من الثلاثة ولن تظهر الأيقونة بصمت. إضافةً إلى واجهة الإدارة JSON-RPC التي حلّت محل قراءة مخرجات الطرفية.
أيقونة الخادم هي أقل الميزات الصغيرة تسامحًا في Minecraft، لأن كل حالات الفشل تبدو متطابقة: لا أيقونة، ولا خطأ.
ثلاثة متطلبات، كلها إلزامية
- 64×64 بكسل بالضبط. ليس 63، وليس 128. فالخادم لا يغيّر الأبعاد.
- صيغة PNG. PNG فعليًا، لا ملف JPG مُعاد تسميته.
- باسم
server-icon.png، في جذر الخادم — بجانبserver.properties، لا داخل مجلد العالم.
أخطئ في أيٍّ منها وسيبدأ الخادم طبيعيًا ويعرض الأيقونة الافتراضية. الحجم الخاطئ أو ملف ليس PNG حقيقيًا يسجّل سطرًا واحدًا عند بدء التشغيل — Couldn't load server icon — أما الملف المُسمّى خطأً أو الموضوع في مكان خاطئ فلا يسجّل شيئًا. (وعند غياب server-icon.png تمامًا، يتراجع الخادم إلى icon.png الخاص بالعالم إن وُجد.)
أمور أخرى تعطّلها أيضًا
- PNG متشابك (interlaced). بعض المحرّرات تحفظ بهذه الطريقة افتراضيًا؛ وقارئ Minecraft يرفضه. أعد التصدير بدون تشابك.
- عمق لوني 16 بت. احفظ بـ 8 بت لكل قناة.
- ملفات تعريف الألوان. ملف ICC مضمّن يعطّل المحلّل أحيانًا. أزل البيانات الوصفية عند التصدير.
- الشفافية مقبولة وتُعرض بشكل صحيح في قائمة الخوادم.
الخادم يقرأها مرة واحدة
يحمّل الخادم server-icon.png عند بدء التشغيل ولا يعود إليها أبدًا. استبدال الملف على خادم يعمل لا يغيّر شيئًا حتى إعادة التشغيل — ولهذا فإن اختبار تغيير الأيقونة دون إعادة التشغيل سيقنعك بأنها لم تعمل. بعد إعادة التشغيل، يلتقط العميل الأيقونة الجديدة عند تحديث قائمة الخوادم التالي.
واجهة الإدارة
تكشف إصدارات الخادم الحديثة عن واجهة إدارة JSON-RPC، وهي البديل المعتمد عن تحليل مخرجات الطرفية أو إضافة إضافة (plugin) مرقّعة.
فعّلها في server.properties:
management-server-enabled=true
management-server-host=localhost
management-server-port=25585
management-server-tls-enabled=false
TLS مفعّل افتراضيًا ويحتاج إلى مخزن مفاتيح (management-server-tls-keystore)، لذا إما أن توجّهه إلى واحد أو — على localhost فقط — توقفه كما في الأعلى؛ فمع تفعيل TLS وغياب مخزن المفاتيح لا تبدأ خدمة الإدارة. ولا منفذ افتراضي لها أيضًا (25585 مجرد مثال).
ثم افتح اتصال WebSocket إلى ذلك المنفذ، وأرسل management-server-secret من server.properties كـ Authorization: Bearer <secret>، وتحدّث بـ JSON-RPC:
{ "jsonrpc": "2.0", "id": 1, "method": "minecraft:players" }
تغطي الدوال قائمة اللاعبين، وحالة الخادم، وقائمة السماح وقائمة الحظر، وقواعد اللعب، والإعدادات، وزوج حفظ/إيقاف. وكل منها يعيد JSON منظّمًا بدلًا من سطر نصي عليك تحليله بتعبير نمطي.
اربطها بـ localhost
القيمة الافتراضية هي localhost ويجب أن تبقى كذلك. فالواجهة ليست مخصصة لمواجهة الإنترنت — أي شخص يصل إليها ومعها السرّ يمكنه إيقاف خادمك، والسرّ بأمان بقدر أمان server.properties. اعرضها عبر نفق SSH أو وكيل عكسي مع مصادقة إن احتجت وصولًا عن بُعد، لا بتغيير المضيف إلى 0.0.0.0 أبدًا.
لماذا يهم هذا
لوحات المعلومات وبوتات Discord ومراقبات وقت التشغيل عملت تاريخيًا بقراءة سجل الطرفية أو باستخدام RCON، وكلاهما هشّ. أما واجهة برمجية مُنمّطة فتعني أن أداة عرض عدد اللاعبين لا تتعطل عندما يتغير تنسيق سطر في السجل.
حوّل أي صورة إلى server-icon.png متوافق وتصفّح دوال JSON-RPC في Server Icon & API Tools.