ข้อความสีแดงเดียวกันพังคนละแบบบน 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 มีสถานะ: รหัสสีจะรีเซ็ตการจัดรูปแบบ ดังนั้น §c§lBold คือสีแดงและตัวหนา แต่ §l§cBold เป็นแค่สีแดง — รหัสสีที่ตามหลังตัวหนาจะล้างมันทิ้ง ใส่สีก่อน แล้วค่อยจัดรูปแบบ MiniMessage เป็นโครงสร้างต้นไม้ — <red><bold>text</bold></red> ปิดได้สะอาด การแปลงสตริง MiniMessage ที่ซ้อนกันเป็นรหัส Legacy จะสูญเสียโครงสร้าง เพราะ Legacy ไม่มีแท็กปิด
การหลบอักขระ
MiniMessage มอง < เป็นไวยากรณ์ ผู้เล่นที่ชื่อ <Steve> จะทำให้ปลั๊กอินใดก็ตามที่แยกวิเคราะห์ชื่อของเขาเป็นคอมโพเนนต์พัง รูปแบบ Legacy มีปัญหาเดียวกันกับ & ซึ่งเป็นเหตุผลว่าทำไมปลั๊กอินหลายตัวจึงต้องใช้ && หรือแฟล็กในคอนฟิกเพื่อหลบอักขระ
เขียนข้อความครั้งเดียว เลือกภาษาเฉพาะถิ่นที่ปลั๊กอินของคุณแยกวิเคราะห์จริง ๆ แล้วคัดลอกสตริงที่ตรงเป๊ะจาก Server Text Studio