Un pack de skins Bedrock, c'est quatre fichiers, et deux de ses modes d'échec sont silencieux
Deux UUID qui doivent être différents, un fichier de langue qui n'est pas facultatif, et des clés de skin qui suppriment la ponctuation — ainsi « Mon Skin ! » et « Mon Skin ? » deviennent un seul skin sans erreur.
Un .mcpack est un fichier zip avec une extension différente, et un pack de skins à l'intérieur nécessite exactement quatre types de fichiers :
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
Trois des quatre sont faciles à configurer correctement. Les échecs intéressants proviennent tous de la relation entre eux.
Les deux UUID doivent être différents
manifest.json contient un UUID dans son header et un autre dans son module skin_pack :
{
"format_version": 1,
"header": { "name": "…", "uuid": "…", "version": [1, 0, 0] },
"modules": [ { "type": "skin_pack", "uuid": "…", "version": [1, 0, 0] } ]
}
Ce sont deux identités distinctes — le pack, et ce qu'il contient — et réutiliser une valeur pour les deux est une véritable erreur, même si rien ne se plaint au moment de la compilation.
Il y a une deuxième conséquence, plus subtile : une réimportation avec les mêmes UUID est traitée comme le même pack, et Minecraft conserve silencieusement la copie qu'il possède déjà. Modifier un pack, le reconstruire avec les mêmes identifiants et le réimporter donne l'impression que rien n'a été fait. Chaque compilation de cette page obtient de nouveaux UUID pour cette raison exacte, c'est aussi pourquoi la réimportation d'un pack modifié nécessite un nouveau téléchargement plutôt qu'une nouvelle compression de l'ancien.
Le fichier de langue n'est pas facultatif
skins.json ne contient jamais de nom d'affichage. Il contient une clé, et texts/en_US.lang mappe cette clé à du texte :
skinpack.<PackKey>=My Pack
skin.<PackKey>.<SkinKey>=My First Skin
Si vous livrez le pack sans le fichier de langue, aucune erreur ne se produit — chaque skin apparaît simplement dans le jeu sous sa clé brute. C'est la raison la plus courante pour laquelle un pack assemblé à la main semble défectueux alors qu'il est validé correctement.
Les clés suppriment la ponctuation, et les doublons se fusionnent
Une clé doit être alphanumérique. Tout le reste est supprimé :
| votre nom | clé |
|---|---|
My Skin! | MySkin |
My Skin? | MySkin |
Skin #2 | Skin2 |
!!! | Skin1 (repli, par position) |
Les deux premières lignes sont le piège. Deux skins nommés distinctement par un humain deviennent une seule clé, et une clé en double ne génère pas d'erreur — elle se fusionne silencieusement en un seul skin dans le jeu. Vous téléchargez douze skins, vous en obtenez onze, et rien ne vous dit lequel a disparu.
Le constructeur ici se défend contre cela en ajoutant un compteur à toute clé qu'il a déjà utilisée, de sorte que le deuxième MySkin devient MySkin1. Bon à savoir si vous assemblez un pack à la main : la vérification que vous devez effectuer porte sur les noms épurés, pas sur ceux que vous avez tapés.
Un nom entièrement composé de ponctuation ne laisse rien du tout, il se replie donc sur Skin plus sa position dans la liste.
Slim nécessite la bonne chaîne de géométrie
Chaque entrée nomme un modèle, et il y en a deux :
geometry.humanoid.custom— classique, bras de 4 pixelsgeometry.humanoid.customSlim— slim, bras de 3 pixels
Faire cette erreur est la cause habituelle d'un skin aux proportions d'Alex qui apparaît avec les bras massifs de Steve. La texture est correcte ; le modèle est celui qui est demandé. Le constructeur de pack l'infère en échantillonnant la quatrième colonne du bras, mais un skins.json écrit à la main doit le spécifier explicitement, et les deux chaînes diffèrent de quatre caractères à la fin.
Les entrées contiennent également "type": "free", et une cape est un PNG supplémentaire facultatif référencé à partir de la même entrée — la cape voyage à l'intérieur du pack de skins plutôt que comme un téléchargement séparé.