کلههای بازیکن با نام کاربری: مؤلفه پروفایل چگونه کار میکند و چرا کلهها خالی میشوند
یک کله عکسی از پوسته را ذخیره میکند، نه یک پیوند زنده. این بخش مؤلفه پروفایل است، چرایی نمایش پوسته اشتباه در کلههای قدیمی، و نحوه جایگیری جستجوی UUID.
دادن کله یک بازیکن به نظر میرسد که باید یک آرگومان باشد. همینطور است، اما آنچه ذخیره میشود چیزی نیست که مردم انتظار دارند، و این موضوع بیشتر اتفاقات عجیب مربوط به کلهها را توضیح میدهد.
دستور
/give @p player_head[profile="Notch"]
این profile component replaced the old SkullOwner NBT. Snippets using {SkullOwner:"Notch"} are pre-1.20.5 and do nothing now.
آنچه واقعاً ذخیره میشود
یک کله به هیچ وجه یک نام کاربری را ذخیره نمیکند تا بعداً پوسته را دریافت کند. هنگامی که کله ساخته میشود، سرور نام را به یک UUID و یک اسنپشات بافت، تبدیل کرده و آن را در آیتم تثبیت میکند:
"profile": {
"name": "Notch",
"id": [I; …],
"properties": [{ "name": "textures", "value": "<base64>" }]
}
دو نتیجه:
- کلهای که یک سال پیش ساخته شده، پوسته همان سال را نشان میدهد. تغییر پوسته توسط بازیکن،
کلههای موجود در جهان را بهروزرسانی نمیکند. این یک باگ نیست و هیچ تازهسازی وجود ندارد.
- کلهها به صورت آفلاین کار میکنند. پس از تثبیت، برای رندر کردن آن نیازی به فراخوانی Mojang API نیست، که
به همین دلیل است که کلهها در سرورهای حالت آفلاین باقی میمانند در حالی که /give ... profile="Name" does not resolve there.
چرا یک کله خالی است یا Steve را نشان میدهد
به ترتیب احتمال:
- نام شناسایی نشد. سرور در حالت آفلاین بوده، یا API هنگام اجرای دستور
در دسترس نبوده است. چیزی برای تثبیت وجود ندارد، بنابراین حالت پیشفرض را دریافت میکنید.
- نام وجود ندارد. Mojang برای حسابهای کاربری حذفشده یا ثبتنشده
چیزی برنمیگرداند.
- چانک بارگذاری مجدد نشده است. کله به صورت ناهمگام پردازش میشود؛ گاهی اوقات باید رویتان را برگردانید
و دوباره به آن نگاه کنید.
صبر کردن به ندرت کمک میکند — اگر پروفایل در هنگام ساخت تثبیت نشده باشد، خالی میماند. کله را دوباره بدهید.
کلههای سفارشی از بافت استفاده میکنند، نه نام
کلههای تزئینی — مبلمان، غذا، کله مابها از کاتالوگها — مالکی ندارند. آنها فقط شامل 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.
کد base64 به یک JSON کوچک رمزگشایی میشود که شامل یک textures.SKIN.url on textures.minecraft.net. Nothing else in it matters for rendering.
فرمتهای UUID
دو شکل وجود دارد و در همه زمینهها قابل جابجایی با یکدیگر نیستند:
trimmed 069a79f444e94726a5befca90e38aaf5
dashed 069a79f4-44e9-4726-a5be-fca90e38aaf5
دستورات و NBT معمولاً شکل خطتیرهدار یا یک آرایه عدد صحیح را میخواهند. وب APIها معمولاً بدون خطتیره برمیگردانند. تبدیل بین آنها مکانیکی است — بعد از نویسههای 8، 12، 16 و 20 خط تیره بگذارید.
یک کله را از روی نام کاربری بدهید، کاتالوگهای کلههای تزئینی را مرور کنید، یا فرمتهای UUID را تبدیل کنید در ابزارهای کله بازیکن و نام کاربری.