Đầu người chơi theo tên người dùng: thành phần hồ sơ hoạt động như thế nào và tại sao đầu lại trống
Một cái đầu lưu trữ ảnh chụp nhanh giao diện, không phải liên kết trực tiếp. Đây là thành phần hồ sơ, lý do tại sao một cái đầu cũ hiển thị giao diện sai và cách tra cứu UUID.
Việc tạo Đầu người chơi nghe có vẻ chỉ cần một đối số. Đúng là vậy, nhưng những gì được lưu trữ lại không như mọi người mong đợi, và điều đó giải thích hầu hết các điều kỳ lạ liên quan đến đầu.
Lệnh
/give @p player_head[profile="Notch"]
Thành phần profile đã thay thế NBT SkullOwner cũ. Các đoạn mã sử dụng {SkullOwner:"Notch"} là từ phiên bản trước 1.20.5 và hiện không còn tác dụng.
Những gì thực sự được lưu trữ
Một cái đầu không lưu trữ tên người dùng và tìm nạp giao diện sau này. Khi cái đầu được tạo, máy chủ sẽ phân giải tên thành một UUID và một ảnh chụp nhanh kết cấu, sau đó đưa nó vào vật phẩm:
"profile": {
"name": "Notch",
"id": [I; …],
"properties": [{ "name": "textures", "value": "<base64>" }]
}
Hai hệ quả:
- Một cái đầu được tạo cách đây một năm sẽ hiển thị giao diện của năm đó. Việc Người chơi Thay đồ không cập nhật các cái đầu đã có trong thế giới. Đây không phải là lỗi và không có cơ chế làm mới.
- Đầu hoạt động ngoại tuyến. Sau khi được đưa vào, không cần Lời gọi API của Mojang để hiển thị, đó là lý do tại sao đầu vẫn tồn tại trên các máy chủ chế độ ngoại tuyến trong khi
/give ... profile="Name"không phân giải được ở đó.
Tại sao một cái đầu trống hoặc hiển thị Steve
Theo thứ tự khả năng:
- Tên không phân giải được. Máy chủ chế độ ngoại tuyến, hoặc API không thể truy cập được khi lệnh chạy. Không có gì để đưa vào, vì vậy bạn nhận được một cái đầu mặc định.
- Tên không tồn tại. Mojang không trả về gì cho các tài khoản đã bị xóa hoặc chưa bao giờ đăng ký.
- Chunk chưa được tải lại. Cái đầu phân giải không đồng bộ; đôi khi bạn cần nhìn đi chỗ khác rồi nhìn lại.
Chờ đợi hiếm khi có tác dụng — nếu hồ sơ không được đưa vào khi tạo, nó sẽ vẫn trống. Hãy tạo lại cái đầu.
Đầu tùy chỉnh sử dụng kết cấu, không phải tên
Các đầu trang trí — đồ nội thất, thức ăn, đầu mob từ danh mục — không có chủ sở hữu. Chúng chỉ mang giá trị kết cấu properties với một blob base64 trỏ đến một URL kết cấu. Đó là lý do tại sao chúng có thể chia sẻ dưới dạng một lệnh give dài duy nhất và tại sao chúng không bao giờ bị hỏng khi Người chơi đổi tên.
Base64 giải mã thành một JSON nhỏ chứa một textures.SKIN.url trên textures.minecraft.net. Không có gì khác trong đó quan trọng đối với việc hiển thị.
Định dạng UUID
Tồn tại hai dạng và chúng không thể hoán đổi cho nhau trong mọi ngữ cảnh:
trimmed 069a79f444e94726a5befca90e38aaf5
dashed 069a79f4-44e9-4726-a5be-fca90e38aaf5
Các lệnh và NBT thường muốn dạng có dấu gạch ngang hoặc một mảng số nguyên. Các API web thường trả về dạng đã cắt bớt. Việc chuyển đổi giữa chúng là cơ học — chèn dấu gạch ngang sau 8, 12, 16 và 20 ký tự.
Tạo một cái đầu từ tên người dùng, duyệt các danh mục đầu trang trí, hoặc chuyển đổi giữa các định dạng UUID trong Công cụ Đầu người chơi & Tên người dùng.