MC Toolkit

คู่มือ / คำสั่งและข้อมูล

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

หัวจะเก็บภาพสกิน ณ ขณะหนึ่ง ไม่ใช่ลิงก์แบบเรียลไทม์ นี่คือส่วนประกอบโปรไฟล์ ทำไมหัวเก่าถึงแสดงสกินผิด และการค้นหา UUID เข้ามาเกี่ยวข้องอย่างไร

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

คำสั่ง

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

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

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

หัวที่ให้ด้วย profile="Notch" จะเก็บแค่ชื่อเท่านั้น มันเป็นโปรไฟล์แบบไดนามิก — ทูลทิปของ ไอเทมบอกไว้อย่างนั้น — และไคลเอนต์ของผู้เล่นแต่ละคนจะค้นหาชื่อและดึงสกินมาตอนวาดหัว หัวจะเก็บภาพ ณ ขณะหนึ่งแบบตายตัวก็ต่อเมื่อโปรไฟล์ของมันมีเทกซ์เจอร์อยู่ด้วย:

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

ผลที่ตามมาสองข้อ:

  • หัวที่อิงจากชื่อจะตามสกินปัจจุบันของผู้เล่น มันจะถูกค้นหาอีกครั้งตอนวาด ไคลเอนต์ จะเก็บสกินที่ค้นหาไว้จนกว่าจะไม่ถูกใช้งานเป็นเวลาห้าถึงนาที เฉพาะหัวที่มีพร็อพเพอร์ตี textures เท่านั้นที่จะถูกตรึงไว้กับสกินเดียว
  • ที่ที่มันถูกแปลงค่าเป็นเครื่องของผู้ชม หัวที่มีพร็อพเพอร์ตี textures ฝังอยู่จะเรนเดอร์ โดยไม่ต้องค้นหาเลย ส่วนหัวที่อิงจากชื่อจะขึ้นอยู่กับไคลเอนต์ของผู้ชมแต่ละคนที่ต้องเข้าถึง Mojang ไม่ใช่โหมดออนไลน์ของเซิร์ฟเวอร์

ทำไมหัวถึงว่างเปล่าหรือแสดงสตีฟ

เรียงตามความเป็นไปได้:

  1. ชื่อไม่ถูกแปลงค่าสำหรับไคลเอนต์นี้ API ของ Mojang เข้าไม่ถึง หรือการค้นหายังค้างอยู่ หัวจะแสดงสกินเริ่มต้นจนกว่าจะเสร็จ
  2. ชื่อไม่มีอยู่ Mojang จะไม่คืนค่าอะไรสำหรับบัญชีที่ถูกลบหรือไม่เคยลงทะเบียน
  3. ยังแปลงค่าอยู่ การค้นหาทำงานเบื้องหลัง ดังนั้นหัวอาจแสดงสกินเริ่มต้นชั่วครู่หลังจาก ที่มันปรากฏขึ้นครั้งแรก

หัวที่อิงจากชื่อจะลองใหม่ด้วยตัวเองเมื่อรายการแคชของมันหมดอายุ หากต้องการตรึงสกินแทน ให้ให้หัวพร้อมพร็อพเพอร์ตี textures — /fetchprofile name <name> จะแปลงค่าผู้เล่นและ เสนอส่วนประกอบเต็มให้คัดลอก หรือหัวสำเร็จรูปให้

หัวแบบกำหนดเองใช้เทกซ์เจอร์ ไม่ใช่ชื่อ

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

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

รูปแบบ UUID

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

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

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

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

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

คู่มือเพิ่มเติม

ดูทั้งหมด →