حزمة أزياء Bedrock تتكون من أربعة ملفات، واثنان من أوضاع فشلها صامتان
معرّفان فريدان عالميًا (UUIDs) يجب أن يختلفا، وملف لغة ليس اختياريًا، ومفاتيح أزياء تزيل علامات الترقيم — لذا يصبح "My Skin!" و "My Skin?" زيًا واحدًا بدون خطأ.
.mcpack هو ملف مضغوط (zip) بامتداد مختلف، وحزمة الأزياء بداخله تحتاج بالضبط إلى أربعة أنواع من الملفات:
manifest.json a header and a skin_pack module, each with its own UUID
skins.json one entry per skin: texture, geometry, and a KEY
texts/en_US.lang the display names — skins.json holds only keys
*.png the textures themselves
ثلاثة من هذه الأنواع الأربعة سهلة الضبط. أما حالات الفشل المثيرة للاهتمام فتأتي جميعها من العلاقة بينها.
يجب أن يختلف المعرّفان الفريدان عالميًا (UUIDs)
يحمل manifest.json معرّفًا فريدًا عالميًا (UUID) في header وآخر في وحدة skin_pack الخاصة به:
{
"format_version": 1,
"header": { "name": "…", "uuid": "…", "version": [1, 0, 0] },
"modules": [ { "type": "skin_pack", "uuid": "…", "version": [1, 0, 0] } ]
}
هما هويتان منفصلتان — الحزمة، والشيء داخل الحزمة — وإعادة استخدام قيمة واحدة لكليهما هو خطأ حقيقي على الرغم من عدم وجود أي شكوى أثناء وقت البناء.
هناك نتيجة ثانية، أكثر دقة: إعادة الاستيراد بنفس المعرّفات الفريدة عالميًا (UUIDs) تُعامل على أنها نفس الحزمة، ويحتفظ Minecraft بصمت بالنسخة التي لديه بالفعل. يبدو تعديل حزمة، وإعادة بنائها بنفس المعرفات، وإعادة استيرادها وكأنها لم تفعل شيئًا. تحصل كل عملية بناء من هذه الصفحة على معرّفات فريدة عالميًا (UUIDs) جديدة لهذا السبب بالضبط، وهذا هو السبب أيضًا في أن إعادة استيراد حزمة معدلة تتطلب تنزيلًا جديدًا بدلاً من إعادة ضغط الحزمة القديمة.
ملف اللغة ليس اختياريًا
لا يحتوي skins.json أبدًا على اسم عرض. بل يحتوي على مفتاح، ويقوم texts/en_US.lang بربط هذا المفتاح بالنص:
skinpack.<PackKey>=My Pack
skin.<PackKey>.<SkinKey>=My First Skin
اشحن الحزمة بدون ملف اللغة ولن يحدث أي خطأ — سيظهر كل زي ببساطة في اللعبة تحت مفتاحه الخام. هذا هو السبب الأكثر شيوعًا لظهور حزمة مجمعة يدويًا بشكل معطل بينما تكون صحيحة عند التحقق.
المفاتيح تزيل علامات الترقيم، وتتداخل التكرارات
يجب أن يكون المفتاح أبجديًا رقميًا. يتم إزالة كل شيء آخر:
| اسمك | المفتاح |
|---|---|
My Skin! | MySkin |
My Skin? | MySkin |
Skin #2 | Skin2 |
!!! | Skin1 (احتياطي، حسب الموضع) |
الصفان الأولان هما الفخ. يصبح زيان مسميان بشكل مميز من قبل إنسان مفتاحًا واحدًا، ولا يؤدي المفتاح المكرر إلى خطأ — بل يتداخل بصمت في زي واحد داخل اللعبة. تقوم بتحميل اثني عشر زيًا، وتحصل على أحد عشر، ولا يخبرك شيء أي زي فقد.
يقوم الباني هنا بالدفاع ضد ذلك عن طريق إضافة عداد إلى أي مفتاح استخدمه بالفعل، لذا يصبح MySkin الثاني MySkin1. من الجدير بالمعرفة إذا قمت بتجميع حزمة يدويًا: التحقق الذي تحتاجه هو على الأسماء المجردة، وليس تلك التي كتبتها.
الاسم الذي يتكون بالكامل من علامات ترقيم لا يترك شيئًا على الإطلاق، لذا فإنه يعود إلى Skin بالإضافة إلى موضعه في القائمة.
يتطلب Slim سلسلة الهندسة الصحيحة
يسمي كل إدخال نموذجًا، وهناك اثنان:
geometry.humanoid.custom— كلاسيكي، أذرع 4 بكسلgeometry.humanoid.customSlim— نحيف (slim)، أذرع 3 بكسل
الخطأ في هذا هو السبب المعتاد لظهور زي بأبعاد أليكس بأذرع ستيف المربعة. النسيج (texture) سليم؛ النموذج هو المطلوب. يستنتج باني الحزمة ذلك عن طريق أخذ عينة من عمود الذراع الرابع، ولكن skins.json المكتوب يدويًا يجب أن يذكره صراحةً، وتختلف السلسلتان بأربعة أحرف في النهاية.
تحمل الإدخالات أيضًا "type": "free"، والرداء (cape) هو ملف PNG إضافي اختياري مشار إليه من نفس الإدخال — ينتقل الرداء داخل حزمة الأزياء بدلاً من تنزيل منفصل.