Spielerköpfe nach Nutzernamen: Wie die Profilkomponente funktioniert und warum Köpfe leer bleiben
Ein Kopf speichert einen Skin-Schnappschuss, keine Live-Verbindung. Hier erfahren Sie, wie die Profilkomponente funktioniert, warum ein alter Kopf den falschen Skin anzeigt und wie die UUID-Suche ins Spiel kommt.
Einen Spielerkopf zu geben, klingt nach einer einfachen Sache mit einem Argument. Das ist es auch, aber was gespeichert wird, ist nicht das, was die Leute erwarten, und das erklärt die meisten Kopf-bezogenen Merkwürdigkeiten.
Der Befehl
/give @p player_head[profile="Notch"]
Die profile-Komponente hat das alte SkullOwner NBT ersetzt. Code-Schnipsel, die {SkullOwner:"Notch"} verwenden, sind vor Version 1.20.5 und haben jetzt keine Funktion mehr.
Was tatsächlich gespeichert wird
Ein Kopf speichert nicht einen Nutzernamen und ruft den Skin später ab. Wenn der Kopf erstellt wird, löst der Server den Namen in eine UUID und einen Textur-Schnappschuss auf und backt diesen in das Item ein:
"profile": {
"name": "Notch",
"id": [I; …],
"properties": [{ "name": "textures", "value": "<base64>" }]
}
Zwei Konsequenzen:
- Ein vor einem Jahr erstellter Kopf zeigt den Skin von damals. Der Kostümwechsel des Spielers aktualisiert keine Köpfe, die sich bereits in der Welt befinden. Dies ist kein Fehler und es gibt keine Aktualisierung.
- Köpfe funktionieren offline. Einmal gebacken, ist kein Mojang API-Rufen erforderlich, um einen Kopf darzustellen, weshalb Köpfe auf Offline-Servern überleben, während
/give ... profile="Name"dort nicht aufgelöst wird.
Warum ein Kopf leer ist oder Steve anzeigt
In der Reihenfolge der Wahrscheinlichkeit:
- Der Name konnte nicht aufgelöst werden. Offline-Server, oder die API war nicht erreichbar, als der Befehl ausgeführt wurde. Nichts zum Backen, also erhalten Sie einen Standardkopf.
- Der Name existiert nicht. Mojang gibt nichts für gelöschte oder nie registrierte Konten zurück.
- Chunk nicht neu geladen. Der Kopf wird asynchron aufgelöst; gelegentlich müssen Sie wegschauen und wieder zurückblicken.
Warten hilft selten – wenn das Profil bei der Erstellung nicht gebacken wurde, bleibt es leer. Geben Sie den Kopf erneut.
Benutzerdefinierte Köpfe verwenden die Textur, nicht einen Namen
Dekorative Köpfe – Möbel, Essen, Mob-Köpfe aus Katalogen – haben keinen Besitzer. Sie tragen nur den properties-Texturwert mit einem Base64-Blob, der auf eine Textur-URL verweist. Deshalb können sie als ein einziger langer Give-Befehl geteilt werden und deshalb gehen sie nie kaputt, wenn ein Spieler seinen Namen ändert.
Das Base64 wird zu einem kleinen JSON dekodiert, das ein textures.SKIN.url auf textures.minecraft.net enthält. Nichts anderes darin ist für die Darstellung relevant.
UUID-Formate
Es gibt zwei Formen, und sie sind nicht in jedem Kontext austauschbar:
trimmed 069a79f444e94726a5befca90e38aaf5
dashed 069a79f4-44e9-4726-a5be-fca90e38aaf5
Befehle und NBT benötigen im Allgemeinen die gestrichelte Form oder ein Integer-Array. Web-APIs geben normalerweise die gekürzte Form zurück. Die Umwandlung zwischen ihnen ist mechanisch – fügen Sie Bindestriche nach 8, 12, 16 und 20 Zeichen ein.
Geben Sie einen Kopf von einem Nutzernamen, durchsuchen Sie Kataloge für dekorative Köpfe oder konvertieren Sie zwischen UUID-Formaten in den Spielerkopf- & Nutzernamen-Tools.