Paket Skin Bedrock Terdiri dari Empat File, dan Dua Mode Kegagalannya Tidak Terdeteksi
Dua UUID yang harus berbeda, file lang yang tidak opsional, dan kunci skin yang menghilangkan tanda baca — sehingga 'Skin Saya!' dan 'Skin Saya?' menjadi satu skin tanpa kesalahan.
Sebuah .mcpack adalah file zip dengan ekstensi yang berbeda, dan paket skin di dalamnya membutuhkan empat jenis 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
Tiga dari empat file mudah untuk dibuat dengan benar. Kegagalan yang menarik semuanya berasal dari hubungan di antara mereka.
Dua UUID harus berbeda
manifest.json membawa sebuah UUID di header-nya dan satu lagi di modul skin_pack-nya:
{
"format_version": 1,
"header": { "name": "…", "uuid": "…", "version": [1, 0, 0] },
"modules": [ { "type": "skin_pack", "uuid": "…", "version": [1, 0, 0] } ]
}
Keduanya adalah dua identitas terpisah — paket, dan isinya di dalam paket — dan menggunakan satu nilai untuk keduanya adalah kesalahan nyata meskipun tidak ada keluhan saat pembuatan.
Ada konsekuensi kedua yang lebih halus: impor ulang dengan UUID yang sama diperlakukan sebagai paket yang sama, dan Minecraft secara diam-diam menyimpan salinan yang sudah dimilikinya. Mengedit paket, membangunnya kembali dengan pengidentifikasi yang sama, dan mengimpor ulang terlihat seperti tidak melakukan apa-apa. Setiap pembuatan dari halaman ini mendapatkan UUID baru karena alasan itu, itulah sebabnya mengimpor ulang paket yang diedit membutuhkan unduhan baru daripada meng-zip ulang yang lama.
File lang tidak opsional
skins.json tidak pernah berisi nama tampilan. File ini berisi kunci, dan texts/en_US.lang memetakan kunci tersebut ke teks:
skinpack.<PackKey>=My Pack
skin.<PackKey>.<SkinKey>=My First Skin
Kirim paket tanpa file lang dan tidak ada kesalahan — setiap skin hanya muncul di dalam game dengan kunci mentahnya. Ini adalah alasan paling umum mengapa paket yang dirakit secara manual terlihat rusak meskipun validasinya baik-baik saja.
Kunci menghilangkan tanda baca, dan duplikat digabungkan
Kunci harus alfanumerik. Semua yang lain dihapus:
| nama Anda | kunci |
|---|---|
My Skin! | MySkin |
My Skin? | MySkin |
Skin #2 | Skin2 |
!!! | Skin1 (cadangan, berdasarkan posisi) |
Dua baris pertama adalah jebakan. Dua skin yang dinamai berbeda oleh manusia menjadi satu kunci, dan kunci duplikat tidak menimbulkan kesalahan — secara diam-diam digabungkan menjadi satu skin di dalam game. Anda mengunggah dua belas skin, mendapatkan sebelas, dan tidak ada yang memberi tahu Anda skin mana yang hilang.
Pembuat di sini mencegah hal itu dengan menambahkan penghitung ke kunci apa pun yang sudah digunakan, sehingga MySkin kedua menjadi MySkin1. Penting untuk diketahui jika Anda merakit paket secara manual: pemeriksaan yang Anda butuhkan adalah pada nama yang dihilangkan, bukan yang Anda ketik.
Nama yang seluruhnya terdiri dari tanda baca tidak menyisakan apa pun, sehingga kembali ke Skin ditambah posisinya dalam daftar.
Slim membutuhkan string geometri yang tepat
Setiap entri menamai sebuah model, dan ada dua:
geometry.humanoid.custom— klasik, lengan 4 pikselgeometry.humanoid.customSlim— slim, lengan 3 piksel
Kesalahan ini adalah penyebab umum skin proporsi Alex muncul dengan lengan kotak-kotak Steve. Teksturnya baik-baik saja; modelnya adalah yang diminta. Pembuat paket menyimpulkannya dengan mengambil sampel kolom lengan keempat, tetapi skins.json yang ditulis tangan harus mengatakannya secara eksplisit, dan kedua string berbeda empat karakter di bagian akhir.
Entri juga membawa "type": "free", dan jubah adalah PNG tambahan opsional yang direferensikan dari entri yang sama — jubah tersebut ikut dalam paket skin daripada sebagai unduhan terpisah.