ข้อความสีแดงเดียวกันพังไม่เหมือนกันบน Java และ Bedrock
โค้ดสีที่แสดงผลสมบูรณ์แบบในปลั๊กอินหนึ่งกลับกลายเป็นเครื่องหมายแอมเพอร์แซนด์แบบข้อความธรรมดาในอีกปลั๊กอินหนึ่ง รูปแบบคือสาเหตุ ไม่ใช่ปลั๊กอิน
โค้ด § และแท็ก MiniMessage สามารถอธิบายสีเดียวกันได้ แต่ก็ยังถูกเซิร์ฟเวอร์เดียวกันปฏิเสธ ข้อความสีบนเซิร์ฟเวอร์ไม่ใช่รูปแบบเดียว — มันมีอย่างน้อยห้ารูปแบบ และปลั๊กอินต่างๆ ก็ไม่เห็นตรงกันว่ายอมรับรูปแบบไหน
ห้าภาษาเฉพาะถิ่น
| ภาษาเฉพาะถิ่น | หน้าตาเป็นแบบนี้ | อยู่รอดที่ไหน |
|---|---|---|
| Legacy section | §cHello | แชทวานิลลา, ปลั๊กอินเก่า |
| Ampersand legacy | &cHello | ไฟล์คอนฟิก, ปลั๊กอินหลายตัว |
| BungeeCord hex | &x&f&f&0&0&0&0 | ปลั๊กอินพร็อกซี, แชทบางตัว |
| MiniMessage | <red>Hello</red> | ปลั๊กอิน Paper สมัยใหม่ |
| JSON component | {"text":"Hello","color":"red"} | คำสั่งวานิลลา, /tellraw |
รูปแบบแอมเพอร์แซนด์ไม่ใช่โค้ดสีเลยจนกว่าจะมีอะไรบางอย่างแปลมันไป วาง &c ลงในปลั๊กอินที่คาดหวัง MiniMessage แล้วผู้เล่นจะอ่านเห็นเป็นตัวอักษรธรรมดา
โค้ด Legacy มีสีไม่พอใช้
ระบบเครื่องหมายเซกชันมีชุดตัวอักษรสีแบบตายตัว บวกกับตัวสลับการจัดรูปแบบ ไม่มีทางแสดงสีใดๆ ก็ได้ตามใจในระบบนี้ Hex มาทีหลัง และรูปแบบ BungeeCord เข้ารหัสมันทีละตัวอักษร — &x ตามด้วยเลขฐานสิบหกหกหลักที่นำหน้าด้วย & ซึ่งเป็นเหตุผลว่าทำไมมันถึงดูยาวขนาดนั้น
MiniMessage รับ #ff0000 โดยตรง JSON รับ hex เดียวกันเป็นค่าสตริง
Java และ Bedrock ไม่เห็นตรงกัน
Bedrock ใช้เครื่องหมายเซกชันเช่นกัน แต่ชุดสีและการจัดการรีเซ็ตการจัดรูปแบบต่างจาก Java สตริงที่แสดงผลถูกต้องบนเซิร์ฟเวอร์ Java อาจแสดงตัวอักษรแปลกปลอมบนไคลเอนต์ Bedrock และพร็อกซี cross-play มักแปลระหว่างสองแบบนี้แทนที่จะส่งข้อความผ่านตรงๆ ถ้าเซิร์ฟเวอร์ของคุณรับผู้เล่น Bedrock ให้ทดสอบผลลัพธ์บนทั้งสองฝั่ง
กับดักการซ้อน
โค้ด Legacy มีสถานะ: โค้ดสีจะรีเซ็ตการจัดรูปแบบ ดังนั้น §l§cBold คือสีแดงและตัวหนา แต่ §c§lBold เป็นตัวหนาสีแดงเพียงจนถึงโค้ดสีถัดไป ซึ่งจะล้างตัวหนาทิ้ง MiniMessage เป็นโครงสร้างต้นไม้ — <red><bold>text</bold></red> ปิดได้สะอาด การแปลงสตริง MiniMessage ที่ซ้อนกันเป็นโค้ด Legacy จะสูญเสียโครงสร้าง เพราะ Legacy ไม่มีแท็กปิด
การหลบอักขระ
MiniMessage มอง < เป็นไวยากรณ์ ผู้เล่นที่ชื่อ <Steve> จะทำให้ปลั๊กอินใดก็ตามที่แยกวิเคราะห์ชื่อของเขาเป็นคอมโพเนนต์พัง รูปแบบ Legacy ก็มีปัญหาเดียวกันกับ & ซึ่งเป็นเหตุผลว่าทำไมปลั๊กอินหลายตัวจึงต้องใช้ && หรือแฟล็กในคอนฟิกเพื่อหลบอักขระ
เขียนข้อความครั้งเดียว เลือกภาษาเฉพาะถิ่นที่ปลั๊กอินของคุณแยกวิเคราะห์จริงๆ แล้วคัดลอกสตริงที่ตรงเป๊ะจาก Server Text Studio