एक Bedrock स्किन पैक में चार फ़ाइलें होती हैं, और इसके विफल होने के दो तरीके साइलेंट होते हैं
दो UUIDs जो भिन्न होने चाहिए, एक 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
चार में से तीन को सही करना आसान है। सभी दिलचस्प विफलताएं उनके बीच के संबंध से आती हैं।
दोनों UUIDs भिन्न होने चाहिए
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] } ]
}
वे दो अलग-अलग पहचान हैं — पैक, और पैक के अंदर की चीज़ — और दोनों के लिए एक ही मान का पुन: उपयोग करना एक वास्तविक त्रुटि है भले ही बिल्ड के समय कोई चेतावनी न मिले।
इसका दूसरा, अधिक सूक्ष्म परिणाम है: समान UUIDs के साथ पुनः आयात को वही पैक माना जाता है, और Minecraft चुपचाप वही कॉपी रखता है जो उसके पास पहले से है। एक पैक को संपादित करना, समान पहचानकर्ताओं के साथ इसे फिर से बनाना और पुनः आयात करना ऐसा लगता है जैसे कुछ हुआ ही नहीं। इस पेज से प्रत्येक बिल्ड को ठीक उसी कारण से नए UUIDs मिलते हैं, यही कारण है कि संपादित पैक को पुनः आयात करने के लिए पुराने को फिर से ज़िप करने के बजाय एक नए डाउनलोड की आवश्यकता होती है।
lang फ़ाइल वैकल्पिक नहीं है
skins.json never contains a display name. It contains a key, और texts/en_US.lang maps that key to text:
skinpack.<PackKey>=My Pack
skin.<PackKey>.<SkinKey>=My First Skin
lang फ़ाइल के बिना पैक भेजें और कोई त्रुटि नहीं आती — हर स्किन गेम में बस अपनी मूल key के तहत दिखाई देती है। यह सबसे आम कारण है कि हाथ से असेंबल किया गया पैक मान्य होने के बावजूद खराब दिखता है।
Keys विराम चिह्न हटाती हैं, और डुप्लिकेट्स विलीन हो जाते हैं
एक key अल्फ़ान्यूमेरिक होनी चाहिए। बाकी सब कुछ हटा दिया जाता है:
| आपका नाम | key |
|---|---|
My Skin! | MySkin |
My Skin? | MySkin |
Skin #2 | Skin2 |
!!! | Skin1 (fallback, by position) |
पहली दो पंक्तियाँ जाल हैं। एक इंसान द्वारा अलग-अलग नाम दी गई दो स्किन बन जाती हैं एक key, और एक डुप्लिकेट key त्रुटि नहीं देती — यह गेम में चुपचाप एक ही स्किन में विलीन हो जाती है। आप बारह स्किन अपलोड करते हैं, ग्यारह पाते हैं, और कुछ भी नहीं बताता कि कौन सी गायब हो गई।
यहाँ का बिल्डर पहले से उपयोग की गई किसी भी key में एक काउंटर जोड़कर इससे बचाव करता है, ताकि दूसरी 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.