Kepala Pemain berdasarkan nama pengguna: cara kerja komponen profil dan mengapa kepala jadi kosong
Sebuah kepala menyimpan cuplikan kulit, bukan tautan langsung. Inilah komponen profil, mengapa kepala lama menampilkan kulit yang salah, dan bagaimana pencarian UUID berperan.
Memberikan kepala seorang pemain terdengar seperti seharusnya cukup dengan satu argumen. Memang begitu, tetapi apa yang tersimpan tidak seperti yang dibayangkan orang, dan itulah yang menjelaskan sebagian besar keanehan terkait kepala.
Perintahnya
/give @p player_head[profile="Notch"]
Komponen profile menggantikan NBT SkullOwner yang lama. Cuplikan yang menggunakan {SkullOwner:"Notch"} berasal dari sebelum 1.20.5 dan tidak berfungsi lagi sekarang.
Apa yang sebenarnya tersimpan
Kepala yang diberikan sebagai profile="Notch" hanya menyimpan namanya saja. Itu adalah profil dinamis — begitu kata tooltip itemnya — dan klien setiap pemain mencari nama tersebut dan mengambil kulitnya saat menggambar kepala itu. Kepala hanya membawa cuplikan tetap ketika profilnya menyertakan teksturnya sendiri:
"profile": {
"name": "Notch",
"id": [I; …],
"properties": [{ "name": "textures", "value": "<base64>" }]
}
Dua konsekuensinya:
- Kepala berbasis nama mengikuti kulit pemain saat ini. Kulit itu dicari ulang saat digambar; klien menyimpan kulit hasil pencarian sampai tidak digunakan selama lima menit. Hanya kepala yang membawa properti
texturesyang terkunci pada satu kulit. - Tempat penyelesaiannya adalah mesin penampil. Kepala dengan properti
texturesyang sudah tertanam akan dirender tanpa pencarian sama sekali. Kepala berbasis nama bergantung pada klien setiap penampil yang dapat menjangkau Mojang, bukan pada mode online server.
Mengapa kepala jadi kosong atau menampilkan Steve
Berdasarkan urutan kemungkinan:
- Nama itu tidak dapat diselesaikan untuk klien ini. API Mojang tidak dapat dijangkau, atau pencariannya masih tertunda; kepala menampilkan kulit bawaan sampai pencarian selesai.
- Nama itu tidak ada. Mojang tidak mengembalikan apa pun untuk akun yang dihapus atau yang belum pernah terdaftar.
- Masih dalam proses penyelesaian. Pencarian berjalan di latar belakang, jadi kepala bisa menampilkan kulit bawaan sesaat setelah pertama kali muncul di layar.
Kepala berbasis nama akan mencoba lagi dengan sendirinya setelah entri cache-nya kedaluwarsa. Untuk mengunci kulit sebagai gantinya, berikan kepala dengan properti textures-nya — /fetchprofile name <name> menyelesaikan seorang pemain dan menawarkan komponen lengkap untuk disalin, atau kepala siap pakai untuk diberikan.
Kepala kustom menggunakan tekstur, bukan nama
Kepala dekoratif — perabot, makanan, kepala mob dari katalog — tidak memiliki pemilik. Kepala itu hanya membawa nilai tekstur properties dengan blob base64 yang menunjuk ke URL tekstur. Itulah sebabnya kepala tersebut dapat dibagikan sebagai satu perintah give yang panjang dan mengapa kepala itu tidak pernah rusak ketika seorang pemain mengganti nama.
Base64 tersebut didekode menjadi JSON kecil yang berisi textures.SKIN.url pada textures.minecraft.net. Tidak ada hal lain di dalamnya yang penting untuk rendering.
Format UUID
Ada dua bentuk dan keduanya tidak dapat dipertukarkan di setiap konteks:
trimmed 069a79f444e94726a5befca90e38aaf5
dashed 069a79f4-44e9-4726-a5be-fca90e38aaf5
Perintah dan NBT umumnya menginginkan bentuk bertanda hubung atau array bilangan bulat. API web biasanya mengembalikan bentuk tanpa tanda hubung. Mengonversi di antara keduanya bersifat mekanis — sisipkan tanda hubung setelah 8, 12, 16, dan 20 karakter.
Berikan kepala dari nama pengguna, jelajahi katalog kepala dekoratif, atau konversi antarformat UUID di Player Head & Username Tools.