Głowy graczy według nazwy użytkownika: jak działa komponent profilu i dlaczego głowy stają się puste
Głowa przechowuje migawkę skina, a nie aktywne odwołanie. Oto komponent profilu, dlaczego stara głowa pokazuje zły skin i jak wpisuje się w to wyszukiwanie UUID.
Nadanie głowy gracza brzmi jak coś, co powinno być jednym argumentem. I jest, ale to, co zostaje zapisane, nie jest tym, czego ludzie się spodziewają — i to wyjaśnia większość osobliwości związanych z głowami.
Komenda
/give @p player_head[profile="Notch"]
Komponent profile zastąpił stary NBT SkullOwner. Fragmenty używające {SkullOwner:"Notch"} pochodzą sprzed 1.20.5 i nic teraz nie robią.
Co właściwie zostaje zapisane
Głowa nadana jako profile="Notch" przechowuje tylko nazwę. To dynamiczny profil — tak mówi podpowiedź przedmiotu — a klient każdego gracza wyszukuje nazwę i pobiera skin, gdy rysuje głowę. Głowa zawiera stałą migawkę tylko wtedy, gdy jej profil obejmuje samą teksturę:
"profile": {
"name": "Notch",
"id": [I; …],
"properties": [{ "name": "textures", "value": "<base64>" }]
}
Dwie konsekwencje:
- Głowa oparta na nazwie podąża za aktualnym skinem gracza. Jest wyszukiwana ponownie przy rysowaniu; klient przechowuje wyszukany skin, dopóki nie pozostanie nieużywany przez pięć minut. Tylko głowa zawierająca właściwość
texturesjest zamrożona na jednym skinie. - Miejscem rozwiązywania jest maszyna odbiorcy. Głowa z zapisaną właściwością
texturesrenderuje się bez żadnego wyszukiwania. Głowa oparta na nazwie zależy od tego, czy klient każdego odbiorcy dotrze do Mojang, a nie od trybu online serwera.
Dlaczego głowa jest pusta lub pokazuje Steve'a
Według prawdopodobieństwa:
- Nazwa nie została rozwiązana dla tego klienta. API Mojang było nieosiągalne lub wyszukiwanie wciąż trwa; głowa pokazuje domyślny skin, dopóki się nie zakończy.
- Nazwa nie istnieje. Mojang nic nie zwraca dla usuniętych lub nigdy niezarejestrowanych kont.
- Wciąż trwa rozwiązywanie. Wyszukiwanie działa w tle, więc głowa może pokazywać domyślny skin przez chwilę po pierwszym pojawieniu się w polu widzenia.
Głowa oparta na nazwie ponawia próbę sama, gdy wygaśnie jej wpis w pamięci podręcznej. Aby zamiast tego zamrozić skin, nadaj głowę z jej właściwością textures — /fetchprofile name <name> rozwiązuje gracza i oferuje pełny komponent do skopiowania lub gotową głowę do nadania.
Niestandardowe głowy używają tekstury, nie nazwy
Głowy dekoracyjne — meble, jedzenie, głowy mobów z katalogów — nie mają właściciela. Zawierają tylko wartość tekstury properties z ciągiem base64 wskazującym na URL tekstury. Dlatego można je udostępniać jako jedną długą komendę give i dlatego nigdy się nie psują, gdy gracz zmieni nazwę.
Base64 dekoduje się do małego JSON-a zawierającego textures.SKIN.url na textures.minecraft.net. Nic więcej w nim nie ma znaczenia dla renderowania.
Formaty UUID
Istnieją dwie formy i nie są wymienne w każdym kontekście:
trimmed 069a79f444e94726a5befca90e38aaf5
dashed 069a79f4-44e9-4726-a5be-fca90e38aaf5
Komendy i NBT zazwyczaj oczekują formy z myślnikami lub tablicy liczb całkowitych. API internetowe zwykle zwracają formę skróconą. Konwersja między nimi jest mechaniczna — wstaw myślniki po 8, 12, 16 i 20 znaku.
Nadaj głowę z nazwy użytkownika, przeglądaj katalogi głów dekoracyjnych lub konwertuj między formatami UUID w Player Head & Username Tools.