Têtes de joueur par nom d'utilisateur : comment le composant de profil fonctionne et pourquoi les têtes restent vides
Une tête stocke un instantané de skin, pas un lien dynamique. Voici le composant de profil, pourquoi une vieille tête affiche le mauvais skin, et comment la recherche d'UUID s'intègre.
Donner une Tête de joueur semble ne nécessiter qu'un seul argument. C'est le cas, mais ce qui est stocké n'est pas ce à quoi les gens s'attendent, et cela explique la plupart des bizarreries liées aux têtes.
La commande
/give @p player_head[profile="Notch"]
Le composant profile a remplacé l'ancien NBT SkullOwner. Les extraits utilisant {SkullOwner:"Notch"} sont antérieurs à la version 1.20.5 et ne fonctionnent plus.
Ce qui est réellement stocké
Une tête ne stocke pas un nom d'utilisateur pour récupérer le skin plus tard. Lorsque la tête est créée, le serveur résout le nom en un UUID et un instantané de texture, et intègre cela dans l'objet :
"profile": {
"name": "Notch",
"id": [I; …],
"properties": [{ "name": "textures", "value": "<base64>" }]
}
Deux conséquences :
- Une tête fabriquée il y a un an affiche le skin de cette année-là. Le Changement de skin du Joueur ne met pas à jour les têtes déjà présentes dans le monde. Ce n'est pas un bug et il n'y a pas de rafraîchissement.
- Les têtes fonctionnent hors ligne. Une fois intégrées, aucun Appel à l'API Mojang n'est nécessaire pour les afficher, c'est pourquoi les têtes survivent sur les serveurs en mode hors ligne alors que
/give ... profile="Name"ne se résout pas là-bas.
Pourquoi une tête est vide ou affiche Steve
Par ordre de probabilité :
- Le nom n'a pas été résolu. Serveur en mode hors ligne, ou l'API était inaccessible lorsque la commande a été exécutée. Rien à intégrer, donc vous obtenez une valeur par défaut.
- Le nom n'existe pas. Mojang ne renvoie rien pour les comptes supprimés ou jamais enregistrés.
- Le chunk n'a pas été rechargé. La tête se résout de manière asynchrone ; occasionnellement, vous devez détourner le regard et regarder à nouveau.
Attendre aide rarement — si le profil n'a pas été intégré à la création, il reste vide. Redonnez la tête.
Les têtes personnalisées utilisent la texture, pas un nom
Les têtes décoratives — meubles, nourriture, têtes de mob des catalogues — n'ont pas de propriétaire. Elles ne contiennent que la valeur de texture properties avec un blob base64 pointant vers une URL de texture. C'est pourquoi elles sont partageables sous la forme d'une seule longue commande "give" et pourquoi elles ne se cassent jamais lorsqu'un Joueur change de nom.
Le base64 décode un petit JSON contenant un textures.SKIN.url sur textures.minecraft.net. Rien d'autre n'est important pour le rendu.
Formats d'UUID
Deux formes existent et elles ne sont pas interchangeables dans tous les contextes :
trimmed 069a79f444e94726a5befca90e38aaf5
dashed 069a79f4-44e9-4726-a5be-fca90e38aaf5
Les commandes et le NBT veulent généralement la forme avec des tirets ou un tableau d'entiers. Les API web renvoient généralement la forme tronquée. La conversion entre elles est mécanique — insérez des tirets après 8, 12, 16 et 20 caractères.
Donnez une tête à partir d'un nom d'utilisateur, parcourez les catalogues de têtes décoratives, ou convertissez entre les formats d'UUID dans les Outils de Tête de joueur et de Nom d'utilisateur.