Cabeças de Jogador por nome de usuário: como o componente de perfil funciona e por que as cabeças ficam em branco
Uma cabeça armazena um instantâneo da skin, não um link ativo. Aqui está o componente de perfil, por que uma cabeça antiga mostra a skin errada e como a busca por UUID se encaixa.
Dar a cabeça de um jogador parece que deveria ser um único argumento. É, mas o que é armazenado não é o que as pessoas esperam, e isso explica a maioria das esquisitices relacionadas a cabeças.
O comando
/give @p player_head[profile="Notch"]
O componente profile substituiu o antigo NBT SkullOwner. Trechos usando {SkullOwner:"Notch"} são pré-1.20.5 e não fazem nada agora.
O que realmente é armazenado
Uma cabeça não armazena um nome de usuário e busca a skin mais tarde. Quando a cabeça é criada, o servidor resolve o nome para um UUID e um instantâneo da textura, e o incorpora ao item:
"profile": {
"name": "Notch",
"id": [I; …],
"properties": [{ "name": "textures", "value": "<base64>" }]
}
Duas consequências:
- Uma cabeça feita há um ano mostra a skin daquele ano. O jogador mudar sua skin não atualiza as cabeças já existentes no mundo. Isso não é um bug e não há atualização.
- As cabeças funcionam offline. Uma vez incorporadas, nenhuma chamada à API da Mojang é necessária para renderizá-las, razão pela qual as cabeças sobrevivem em servidores no modo offline, enquanto
/give ... profile="Name"não resolve lá.
Por que uma cabeça está em branco ou mostra o Steve
Em ordem de probabilidade:
- O nome não foi resolvido. Servidor no modo offline, ou a API estava inacessível quando o comando foi executado. Nada para incorporar, então você obtém um padrão.
- O nome não existe. A Mojang não retorna nada para contas excluídas ou nunca registradas.
- Chunk não recarregado. A cabeça é resolvida assincronamente; ocasionalmente você precisa desviar o olhar e olhar de volta.
Esperar raramente ajuda — se o perfil não foi incorporado na criação, ele permanece vazio. Dê a cabeça novamente.
Cabeças personalizadas usam a textura, não um nome
Cabeças decorativas — móveis, comida, cabeças de mobs de catálogos — não têm proprietário. Elas carregam apenas o valor da textura properties com um blob base64 apontando para uma URL de textura. É por isso que são compartilháveis como um único comando give longo e por que nunca quebram quando um jogador muda de nome.
O base64 decodifica para um pequeno JSON contendo um textures.SKIN.url em textures.minecraft.net. Nada mais nele importa para a renderização.
Formatos de UUID
Existem duas formas e elas não são intercambiáveis em todos os contextos:
trimmed 069a79f444e94726a5befca90e38aaf5
dashed 069a79f4-44e9-4726-a5be-fca90e38aaf5
Comandos e NBT geralmente querem a forma com traços ou um array de inteiros. As APIs da web geralmente retornam a forma sem traços. Converter entre elas é mecânico — insira traços após 8, 12, 16 e 20 caracteres.
Dê uma cabeça a partir de um nome de usuário, navegue por catálogos de cabeças decorativas ou converta entre formatos de UUID nas Ferramentas de Cabeça de Jogador e Nome de Usuário.