Guides / Commands & Data

หัวผู้เล่นตามชื่อผู้ใช้: ส่วนประกอบโปรไฟล์ทำงานอย่างไรและทำไมหัวถึงว่างเปล่า

หัวผู้เล่นจะเก็บสแนปช็อตสกิน ไม่ใช่ลิงก์แบบเรียลไทม์ นี่คือส่วนประกอบโปรไฟล์ เหตุผลที่หัวเก่าแสดงสกินผิด และวิธีที่การค้นหา UUID เข้ามาเกี่ยวข้อง

การให้หัวผู้เล่นดูเหมือนควรจะเป็นอาร์กิวเมนต์เดียว แต่มันไม่ใช่สิ่งที่คนส่วนใหญ่คาดหวัง และนั่นอธิบายความผิดปกติส่วนใหญ่ที่เกี่ยวข้องกับหัวผู้เล่น

คำสั่ง

/give @p player_head[profile="Notch"]

ส่วนประกอบ profile เข้ามาแทนที่ NBT SkullOwner แบบเก่า โค้ดที่ใช้ {SkullOwner:"Notch"} เป็นของเวอร์ชันก่อน 1.20.5 และไม่ทำงานแล้วในปัจจุบัน

สิ่งที่ถูกจัดเก็บจริง

หัวผู้เล่น ไม่ได้ เก็บชื่อผู้ใช้และดึงสกินในภายหลัง เมื่อสร้างหัวผู้เล่น เซิร์ฟเวอร์จะแปลงชื่อเป็น UUID และ สแนปช็อตพื้นผิว แล้วนำไปฝังในไอเท็ม:

"profile": {
  "name": "Notch",
  "id": [I; …],
  "properties": [{ "name": "textures", "value": "<base64>" }]
}

ผลที่ตามมาสองประการ:

  • หัวผู้เล่นที่สร้างเมื่อปีที่แล้วจะแสดงสกินของปีนั้น การที่ผู้เล่นเปลี่ยนสกินของตนเองไม่ได้อัปเดตหัวผู้เล่นที่มีอยู่ในโลกแล้ว นี่ไม่ใช่ข้อผิดพลาดและไม่มีการรีเฟรช
  • หัวผู้เล่นทำงานแบบออฟไลน์ได้ เมื่อถูกฝังแล้ว ไม่จำเป็นต้องมีการเรียก API ของ Mojang เพื่อเรนเดอร์ ซึ่งเป็นเหตุผลว่าทำไมหัวผู้เล่นจึงอยู่รอดได้บนเซิร์ฟเวอร์โหมดออฟไลน์ ในขณะที่ /give ... profile="Name" ไม่สามารถแก้ไขได้ที่นั่น

ทำไมหัวผู้เล่นถึงว่างเปล่าหรือแสดงเป็น Steve

เรียงตามลำดับความน่าจะเป็น:

  1. ชื่อไม่สามารถแก้ไขได้ เซิร์ฟเวอร์โหมดออฟไลน์ หรือ API ไม่สามารถเข้าถึงได้เมื่อคำสั่งทำงาน ไม่มีอะไรจะฝัง คุณจึงได้ค่าเริ่มต้น
  2. ชื่อไม่มีอยู่จริง Mojang จะไม่ส่งคืนข้อมูลใดๆ สำหรับบัญชีที่ถูกลบหรือไม่ได้ลงทะเบียน
  3. ไม่ได้โหลดชังก์ใหม่ หัวผู้เล่นจะถูกแก้ไขแบบอะซิงโครนัส บางครั้งคุณต้องมองไปทางอื่นแล้วกลับมามองใหม่

การรอคอยไม่ค่อยช่วยอะไร หากโปรไฟล์ไม่ได้ถูกฝังตั้งแต่ตอนสร้าง มันก็จะยังคงว่างเปล่า ให้หัวผู้เล่นใหม่อีกครั้ง

หัวผู้เล่นแบบกำหนดเองใช้พื้นผิว ไม่ใช่ชื่อ

หัวผู้เล่นตกแต่ง เช่น เฟอร์นิเจอร์ อาหาร หัวม็อบจากแค็ตตาล็อก ไม่มีเจ้าของ พวกมันมีเพียงค่าพื้นผิว properties พร้อมกับข้อมูลไบนารี Base64 ที่ชี้ไปยัง URL ของพื้นผิว นั่นคือเหตุผลว่าทำไมพวกมันจึงสามารถแชร์ได้ด้วยคำสั่งให้เพียงคำสั่งเดียวที่ยาว และทำไมพวกมันจึงไม่เคยเสียเมื่อผู้เล่นเปลี่ยนชื่อ

Base64 จะถอดรหัสเป็น JSON ขนาดเล็กที่มี textures.SKIN.url บน textures.minecraft.net ไม่มีสิ่งอื่นใดในนั้นที่สำคัญสำหรับการเรนเดอร์

รูปแบบ UUID

มีสองรูปแบบและไม่สามารถใช้แทนกันได้ในทุกบริบท:

trimmed   069a79f444e94726a5befca90e38aaf5
dashed    069a79f4-44e9-4726-a5be-fca90e38aaf5

คำสั่งและ NBT โดยทั่วไปต้องการรูปแบบที่มีขีดคั่นหรืออาร์เรย์จำนวนเต็ม API บนเว็บมักจะส่งคืนแบบตัดออก การแปลงระหว่างกันเป็นไปโดยอัตโนมัติ — แทรกขีดคั่นหลังจากอักขระตัวที่ 8, 12, 16 และ 20

ให้หัวผู้เล่นจากชื่อผู้ใช้ เรียกดูแค็ตตาล็อกหัวผู้เล่นตกแต่ง หรือแปลงระหว่างรูปแบบ UUID ใน เครื่องมือหัวผู้เล่นและชื่อผู้ใช้

เครื่องมือหัวและชื่อผู้เล่น →

More guides

Browse all →

กำลังหาเครื่องมือ Minecraft อื่นอยู่ไหม

ชุดเครื่องมือสร้าง ดู และแปลงไฟล์ที่ทำงานในเบราว์เซอร์ ฟรีทั้งหมด