Głowy graczy po nazwie użytkownika: jak działa komponent profilu i dlaczego głowy są puste
Głowa przechowuje migawkę skina, a nie aktywne łącze. Oto komponent profilu, wyjaśnienie, dlaczego stara głowa pokazuje zły skin i jak w to wszystko wpisuje się wyszukiwanie UUID.
Nadanie głowy gracza wydaje się być prostym argumentem. I jest, ale to, co zostaje zapisane, nie jest tym, czego ludzie się spodziewają, i to wyjaśnia większość dziwactw związanych z głowami.
Komenda
/give @p player_head[profile="Notch"]
Komponent profile zastąpił stary NBT SkullOwner. Fragmenty kodu używające {SkullOwner:"Notch"} pochodzą sprzed wersji 1.20.5 i obecnie nie działają.
Co faktycznie jest przechowywane
Głowa nie przechowuje nazwy użytkownika i nie pobiera skina później. Kiedy głowa jest tworzona, serwer rozwiązuje nazwę do UUID i migawki tekstury, a następnie zapisuje to w przedmiocie:
"profile": {
"name": "Notch",
"id": [I; …],
"properties": [{ "name": "textures", "value": "<base64>" }]
}
Dwie konsekwencje:
- Głowa stworzona rok temu pokazuje skin z tamtego roku. Zmiana skina przez gracza nie aktualizuje głów już znajdujących się w świecie. To nie jest błąd i nie ma odświeżania.
- Głowy działają offline. Po zapisaniu, nie jest potrzebny żaden Zew (Call) API Mojang do jej renderowania, dlatego głowy przetrwają na serwerach w trybie offline, podczas gdy
/give ... profile="Name"nie zostanie tam rozwiązane.
Dlaczego głowa jest pusta lub pokazuje Steve'a
W kolejności prawdopodobieństwa:
- Nazwa nie została rozwiązana. Serwer w trybie offline lub API było niedostępne, gdy uruchomiono komendę. Nic do zapisania, więc otrzymujesz domyślną głowę.
- Nazwa nie istnieje. Mojang nie zwraca nic dla usuniętych lub nigdy niezarejestrowanych kont.
- Chunk nie został ponownie załadowany. Głowa rozwiązuje się asynchronicznie; czasami trzeba odwrócić wzrok i spojrzeć ponownie.
Czekanie rzadko pomaga — jeśli profil nie został zapisany podczas tworzenia, pozostaje pusty. Nadaj głowę ponownie.
Niestandardowe głowy używają tekstury, a nie nazwy
Dekoracyjne głowy — meble, jedzenie, głowy mobów z katalogów — nie mają właściciela. Przenoszą tylko wartość tekstury properties z blobem base64 wskazującym na URL tekstury. Dlatego można je udostępniać jako pojedynczą długą komendę give i dlatego nigdy się nie psują, gdy gracz zmienia nazwę.
Base64 dekoduje się do małego JSON-a zawierającego textures.SKIN.url na textures.minecraft.net. Nic innego w nim nie ma znaczenia dla renderowania.
Formaty UUID
Istnieją dwie formy i nie są one zamienne w każdym kontekście:
trimmed 069a79f444e94726a5befca90e38aaf5
dashed 069a79f4-44e9-4726-a5be-fca90e38aaf5
Komendy i NBT zazwyczaj wymagają formy z myślnikami lub tablicy liczb całkowitych. Web API zazwyczaj zwracają skróconą formę. Konwersja między nimi jest mechaniczna — wstaw myślniki po 8, 12, 16 i 20 znakach.
Nadaj głowę na podstawie nazwy użytkownika, przeglądaj katalogi dekoracyjnych głów lub konwertuj między formatami UUID w Narzędziach do Głów Graczy i Nazw Użytkowników.