Guides / Commands & Data

Uma cabeça personalizada armazena uma URL em JSON base64, não uma imagem

O componente de perfil contém base64 de {textures:{SKIN:{url:…}}}. É por isso que a aparência de uma cabeça é fixa no momento em que foi criada, e por que o banco de dados pode ter dezenas de milhares de entradas.

Uma Cabeça de Jogador personalizada não contém uma imagem. Ela contém um hash de textura, encapsulado em JSON, encapsulado em base64, dentro do componente de perfil do item.

As camadas

Começando com um hash, o comando é construído assim:

1. hash        e3b0c44298fc1c149afbf4c8996fb924…
2. JSON        {"textures":{"SKIN":{"url":"http://textures.minecraft.net/texture/<hash>"}}}
3. base64      eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6…
4. component   /give @p player_head[profile={properties:[{name:"textures",value:"<base64>"}]}]

Quatro camadas para dizer "esta cabeça se parece com aquela imagem". A propriedade é sempre nomeada textures, e o valor é sempre o base64 daquele formato JSON.

Duas coisas se seguem diretamente:

Uma cabeça é um instantâneo, não um link para uma pessoa. A URL aponta para um arquivo de textura imutável, não para uma conta. O que quer que aquele hash tenha resolvido quando a cabeça foi criada é o que ela sempre mostrará.

Os dados são minúsculos. Uma entrada de cabeça é um nome, um hash e algumas tags — sem bytes de imagem. É por isso que um catálogo pode conter dezenas de milhares de cabeças como JSON estático simples e ainda carregar rapidamente.

Por que o catálogo carrega por categoria

O banco de dados aqui é a coleção de cabeças CC0 de TheSilentPro, e ela é buscada uma categoria por vez em vez de tudo de uma vez. Um índice lista as categorias e suas contagens; escolher uma busca apenas aquele arquivo.

Isso não é engenharia preguiçosa, é o único formato que funciona neste tamanho. A coleção inteira como um único JSON seria um download grande para alguém que quisesse três cabeças de uma categoria.

O limite de renderização de 300 itens é um limite do DOM, não um limite de pesquisa

Os resultados são exibidos no máximo 300 por vez. A pesquisa ainda é executada em tudo na categoria carregada — o limite se aplica a quantos são transformados em nós DOM, não a quantos são considerados.

Essa distinção importa quando uma pesquisa diz que está mostrando os primeiros 300: as entradas ausentes foram encontradas e estão sendo retidas da página, não excluídas da consulta. Reduzir a pesquisa as traz para o alcance em vez de pesquisar mais intensamente.

Exibir dezenas de milhares de elementos de uma vez é o que o limite existe para evitar, e é um limite real em vez de um número redondo defensivo — uma grade tão grande deixa de ser rolável muito antes de deixar de ser renderizável.

Nada aqui faz upload de nada

Os dados da cabeça são JSON estático de mesma origem. A única solicitação de terceiros é a prévia <img> de mc-heads.net, que resolve um hash em uma imagem para exibição. O comando /give é montado localmente a partir do hash, então o comando funciona independentemente de a prévia ter carregado ou não.

Banco de cabeças de jogador →

More guides

Browse all →

Procurando mais ferramentas de Minecraft?

Um conjunto de geradores, visualizadores e conversores que rodam no navegador — tudo grátis.