یک skin pack در Bedrock شامل چهار فایل است، و دو حالت از خرابیهای آن بیصدا هستند
دو UUID که باید متفاوت باشند، یک فایل lang که اختیاری نیست، و کلیدهای اسکین که علائم نگارشی را حذف میکنند — بنابراین 'My Skin!' و 'My Skin?' بدون هیچ خطایی تبدیل به یک اسکین میشوند.
A .mcpack is a zip with a different extension, and a skin pack inside one needs exactly four kinds of file:
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
درست انجام دادن سه تای آنها آسان است. خرابیهای جالب همگی از ارتباط میان آنها ناشی میشوند.
دو UUID باید متفاوت باشند
manifest.json carries a UUID in its header and another in its skin_pack module:
{
"format_version": 1,
"header": { "name": "…", "uuid": "…", "version": [1, 0, 0] },
"modules": [ { "type": "skin_pack", "uuid": "…", "version": [1, 0, 0] } ]
}
آنها دو هویت جداگانه هستند — پَک، و محتوای درون پَک — و استفاده مجدد از یک مقدار برای هر دو یک خطای واقعی است، حتی اگر در زمان ساخت هیچ هشداری داده نشود.
پیامد دوم و نامحسوستری نیز وجود دارد: درونریزی مجدد با همان UUIDها به عنوان همان پَک در نظر گرفته میشود، و Minecraft بیصدا نسخهای را که از قبل دارد نگه میدارد. ویرایش یک پَک، ساخت مجدد آن با همان شناسهها و درونریزی مجدد به نظر میرسد کاری انجام نداده است. دقیقاً به همین دلیل هر ساخت از این صفحه UUIDهای تازهای دریافت میکند، که همچنین دلیل نیاز به دانلود تازه به جای زیپ مجدد فایل قدیمی هنگام درونریزی یک پَک ویرایششده است.
فایل lang اختیاری نیست
skins.json never contains a display name. It contains a کلید، و texts/en_US.lang maps that key to text:
skinpack.<PackKey>=My Pack
skin.<PackKey>.<SkinKey>=My First Skin
پَک را بدون فایل lang ارائه دهید و هیچ خطایی رخ نمیدهد — هر اسکین صرفاً با کلید خام خود در بازی ظاهر میشود. این رایجترین دلیلی است که یک پَک دستساز با وجود اعتبارسنجی درست، خراب به نظر میرسد.
کلیدها علائم نگارشی را حذف میکنند و موارد تکراری ادغام میشوند
یک کلید باید حروفی-عددی باشد. هر چیز دیگری حذف میشود:
| نام شما | کلید |
|---|---|
My Skin! | MySkin |
My Skin? | MySkin |
Skin #2 | Skin2 |
!!! | Skin1 (fallback, by position) |
دو سطر اول تله هستند. دو اسکین با نامگذاریهای متمایز از دید انسان تبدیل میشوند به یک کلید، و کلید تکراری خطایی ایجاد نمیکند — بیصدا در بازی به یک اسکین واحد تبدیل میشود. شما دوازده اسکین آپلود میکنید، یازده تا تحویل میگیرید، و هیچ چیز به شما نمیگوید کدام یک گم شده است.
سازنده در اینجا با افزودن یک شمارنده به هر کلیدی که قبلاً استفاده کرده از این اتفاق جلوگیری میکند، بنابراین دومی MySkin becomes MySkin1. Worth knowing if you assemble a pack by hand: the check you need is on the حذفشده نامها، نه آنهایی که شما تایپ کردید.
نامی که کاملاً از علائم نگارشی باشد هیچ چیز باقی نمیگذارد، بنابراین بازمیگردد به Skin plus its position in the list.
حالت Slim به رشته geometry صحیح نیاز دارد
هر ورودی یک مدل را نام میبرد، و دو مدل وجود دارد:
geometry.humanoid.custom— classic, 4-pixel armsgeometry.humanoid.customSlim— slim, 3-pixel arms
اشتباه در این مورد دلیل معمول است برای ظاهر شدن اسکینی با تناسب Alex با بازوهای مکعبی Steve. تکسچر مشکلی ندارد؛ بلکه مدل درخواستشده اشتباه است. سازنده پَک آن را با نمونهبرداری از ستون چهارم بازو تشخیص میدهد، اما یک فایل دستنویس skins.json has to say it explicitly, and the two strings differ by four characters at the end.
ورودیها همچنین شامل "type": "free", and a cape is an optional extra PNG referenced from the same entry — the cape travels inside the skin pack rather than as a separate download.