MC Toolkit

Guides / Commandes et données

Têtes de joueur par pseudo : comment fonctionne le composant profile et pourquoi les têtes deviennent blanches

Une tête stocke un instantané de skin, pas un lien actif. Voici le composant profile, pourquoi une ancienne tête affiche le mauvais skin, et où intervient la résolution d'UUID.

Donner la tête d'un joueur semble devoir se faire en un seul argument. C'est le cas, mais ce qui est stocké n'est pas ce que les gens imaginent, 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"} datent d'avant la 1.20.5 et ne font plus rien aujourd'hui.

Ce qui est réellement stocké

Une tête donnée sous la forme profile="Notch" ne stocke que le nom. C'est un profil dynamique — l'infobulle de l'objet le dit — et le client de chaque joueur résout le nom puis récupère le skin au moment de dessiner la tête. Une tête ne porte un instantané figé que lorsque son profil inclut la texture elle-même :

"profile": {
  "name": "Notch",
  "id": [I; …],
  "properties": [{ "name": "textures", "value": "<base64>" }]
}

Deux conséquences :

  • Une tête basée sur un nom suit le skin actuel du joueur. Elle est résolue à nouveau au moment du rendu ; le client conserve un skin résolu jusqu'à ce qu'il soit resté inutilisé pendant cinq minutes. Seule une tête portant une propriété textures est figée sur un skin.
  • La résolution se fait sur la machine du spectateur. Une tête avec une propriété textures intégrée s'affiche sans aucune résolution. Une tête basée sur un nom dépend de la capacité du client de chaque spectateur à joindre Mojang, et non du mode en ligne du serveur.

Pourquoi une tête est blanche ou affiche Steve

Par ordre de probabilité :

  1. Le nom n'a pas pu être résolu pour ce client. L'API de Mojang était injoignable, ou la résolution est encore en attente ; la tête affiche un skin par défaut jusque-là.
  2. Le nom n'existe pas. Mojang ne renvoie rien pour les comptes supprimés ou jamais enregistrés.
  3. Résolution en cours. La résolution s'exécute en arrière-plan, donc une tête peut afficher un skin par défaut un instant après être apparue à l'écran.

Une tête basée sur un nom réessaie d'elle-même une fois son entrée de cache expirée. Pour figer un skin à la place, donnez la tête avec sa propriété textures — /fetchprofile name <name> résout un joueur et propose le composant complet à copier, ou une tête prête à l'emploi à donner.

Les têtes personnalisées utilisent la texture, pas un nom

Les têtes décoratives — meubles, nourriture, têtes de créatures issues de catalogues — n'ont pas de propriétaire. Elles ne portent 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 cassent jamais quand un joueur change de pseudo.

Le base64 se décode en un petit JSON contenant un textures.SKIN.url sur textures.minecraft.net. Rien d'autre n'importe 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 tirets ou un tableau d'entiers. Les API web renvoient souvent la forme tronquée. La conversion entre les deux est mécanique — insérez des tirets après 8, 12, 16 et 20 caractères.

Donnez une tête à partir d'un pseudo, parcourez les catalogues de têtes décoratives, ou convertissez entre formats d'UUID dans les Outils de tête de joueur et de pseudo.

Têtes et pseudos de joueur →

Plus de guides

Tout voir →