Spelershoofden op gebruikersnaam: hoe de profile-component werkt en waarom hoofden leeg worden
Een hoofd slaat een skin-momentopname op, geen live link. Hier is de profile-component, waarom een oud hoofd de verkeerde skin toont en hoe UUID-opzoeking werkt.
Een spelershoofd geven klinkt alsof het één argument zou moeten zijn. Dat is het ook, maar wat er wordt opgeslagen is niet wat mensen verwachten, en dat verklaart de meeste eigenaardigheden rondom hoofden.
Het commando
/give @p player_head[profile="Notch"]
Het profile component replaced the old SkullOwner NBT. Snippets using {SkullOwner:"Notch"} are pre-1.20.5 and do nothing now.
Wat er daadwerkelijk wordt opgeslagen
Een hoofd slaat niet een gebruikersnaam op om de skin later op te halen. Wanneer het hoofd wordt gemaakt, zet de server de naam om naar een UUID en een textuur-momentopname, en bakt dat in het voorwerp:
"profile": {
"name": "Notch",
"id": [I; …],
"properties": [{ "name": "textures", "value": "<base64>" }]
}
Twee gevolgen:
- Een hoofd dat een jaar geleden is gemaakt, toont de skin van dat jaar. Als de speler diens skin verandert, werkt dit
hoofden die al in de wereld zijn geplaatst niet bij. Dit is geen bug en er is geen vernieuwing.
- Hoofden werken offline. Eenmaal ingebakken is er geen Mojang API-aanroep nodig om er een te renderen, wat
verklaart waarom hoofden blijven werken op servers in offline-modus terwijl /give ... profile="Name" does not resolve there.
Waarom een hoofd leeg is of Steve toont
Op volgorde van waarschijnlijkheid:
- De naam kon niet worden omgezet. Server in offline-modus, of de API was onbereikbaar toen het
commando werd uitgevoerd. Niets om in te bakken, dus je krijgt een standaardversie.
- De naam bestaat niet. Mojang retourneert niets voor verwijderde of nooit geregistreerde
accounts.
- Chunk niet herladen. Het hoofd wordt asynchroon geladen; af en toe moet je even wegkijken
en weer terugkijken.
Wachten helpt zelden — als het profiel bij aanmaak niet is ingebakken, blijft het leeg. Geef het hoofd opnieuw.
Aangepaste hoofden gebruiken de textuur, niet een naam
Decoratieve hoofden — meubels, eten, mob-hoofden uit catalogi — hebben geen eigenaar. Ze bevatten alleen de properties texture value with a base64 blob pointing at a texture URL. That is why they are shareable as a single long give command and why they never break when a player renames.
De base64 decodeert naar een kleine JSON met een textures.SKIN.url on textures.minecraft.net. Nothing else in it matters for rendering.
UUID-formaten
Er bestaan twee vormen en ze zijn niet in elke context uitwisselbaar:
trimmed 069a79f444e94726a5befca90e38aaf5
dashed 069a79f4-44e9-4726-a5be-fca90e38aaf5
Commando's en NBT vereisen over het algemeen de vorm met koppeltekens of een integer-array. Web-API's retourneren meestal de verkorte vorm. Converteren daartussen is mechanisch — voeg koppeltekens in na 8, 12, 16 en 20 tekens.
Geef een hoofd op basis van een gebruikersnaam, blader door catalogi met decoratieve hoofden of converteer tussen UUID-formaten in de Spelershoofd- & gebruikersnaamtools.