/tellraw JSON text: clickEvent, hoverEvent และทำไมข้อความของคุณถึงไม่แสดง
วงเล็บผิดเพียงอันเดียวก็ทำให้ tellraw ล้มเหลวแบบเงียบๆ ได้ นี่คือโครงสร้างส่วนประกอบ, การกระทำ click และ hover ที่ใช้งานได้จริงในการแชท และกฎการหลีกเลี่ยงอักขระที่คนมักจะพลาด
/tellraw ใช้ส่วนประกอบข้อความ JSON และโหมดความล้มเหลวก็ไม่เป็นประโยชน์: ส่วนประกอบที่ผิดรูปแบบจะ ไม่สร้างข้อความและไม่มีข้อผิดพลาด ทุกอย่างด้านล่างนี้เกี่ยวกับการทำให้โครงสร้างถูกต้องตั้งแต่ครั้งแรก
สามรูปแบบที่ถูกต้อง
"plain string"
{"text":"one component"}
["joined ",{"text":"list","color":"gold"}]
รูปแบบรายการเป็นรูปแบบที่ใช้สำหรับสิ่งใดๆ ที่น่าสนใจ เพราะแต่ละองค์ประกอบสามารถมีการจัดรูปแบบของตัวเองได้ การจัดรูปแบบขององค์ประกอบแรกจะถูกสืบทอดโดยส่วนที่เหลือ เว้นแต่จะมีการแทนที่ ซึ่งเป็นเหตุผลที่คนมักจะได้รับข้อความทั้งหมดเป็นสีทองโดยไม่คาดคิด เริ่มรายการด้วยสตริงว่างเพื่อหลีกเลี่ยงสิ่งนั้น:
/tellraw @a ["",{"text":"Warning: ","color":"red"},{"text":"low health"}]
การกระทำเมื่อคลิก (Click actions)
clickEvent รับการกระทำและค่า:
| การกระทำ | ค่า | หมายเหตุ |
|---|---|---|
run_command | /spawn | ทำงาน ในฐานะผู้เล่น ตามระดับสิทธิ์ของผู้เล่น |
suggest_command | /msg Steve | เติมกล่องแชท แต่ไม่ส่ง |
open_url | https://… | แจ้งเตือนก่อนเปิด |
copy_to_clipboard | ข้อความใดๆ | เป็นมิตรที่สุดสำหรับการแชร์พิกัด |
change_page | หมายเลขหน้า | สำหรับหนังสือเท่านั้น |
run_command เป็นอันที่มีกับดัก: มันจะทำงานด้วยสิทธิ์ ของผู้เล่นที่คลิก ไม่ใช่ของบล็อกคำสั่ง (Command Block) เมนูที่เรียก /gamemode creative จะไม่ทำงานสำหรับผู้เล่นทั่วไป
การกระทำเมื่อวางเมาส์ (Hover actions)
"hoverEvent":{"action":"show_text","contents":["Click to teleport"]}
show_text, show_item และ show_entity โปรดทราบ contents — คู่มือเก่าๆ ใช้ value ซึ่งถูกแทนที่ไปแล้วและตอนนี้ล้มเหลวแบบเงียบๆ การเปลี่ยนชื่อเพียงครั้งเดียวนั้นเป็นสาเหตุของข้อความแนะนำเมื่อวางเมาส์ (hover tooltips) ที่ตายไปจำนวนมากที่คัดลอกมาจากบทเรียน
การหลีกเลี่ยงอักขระคือจุดที่มันพัง
ส่วนประกอบทั้งหมดเป็นอาร์กิวเมนต์คำสั่งเดียว ดังนั้นเครื่องหมายคำพูดภายในต้องรอดจากการแยกวิเคราะห์คำสั่ง ในบล็อกคำสั่ง (Command Block) ให้พิมพ์โดยตรง ใน ไฟล์ฟังก์ชัน ไม่จำเป็นต้องมีการหลีกเลี่ยงอักขระด้วยเครื่องหมายแบ็กสแลช ใน /give หนังสือเขียนแล้ว (Written Book) JSON เป็นสตริงภายในสตริงและ จำเป็น ต้องมีการหลีกเลี่ยงอักขระ — นั่นคือกรณีที่สร้างกำแพงของ \" ที่อ่านไม่ออก
กฎง่ายๆ: หากคุณกำลังซ้อนส่วนประกอบข้อความภายในส่วนประกอบไอเทม ให้สร้างด้วยเครื่องมือแทนที่จะทำด้วยมือ
ตัวเลือกภายในข้อความ
{"selector":"@p","separator":{"text":", "}}
จะถูกแปลงเป็นชื่อผู้เล่นในเวลาที่ส่ง {"score":{"name":"@s","objective":"Kills"}} ดึงค่าจากสกอร์บอร์ด ทั้งสองวิธีดีกว่าการพยายามเชื่อมค่าด้วยตัวเอง
คีย์การแปลเดินทางข้ามภาษา
{"translate":"block.minecraft.crafting_table"}
จะแสดงผลในภาษาของผู้เล่นแต่ละคน — 제작대 สำหรับไคลเอนต์ภาษาเกาหลี, 作業台 สำหรับภาษาญี่ปุ่น สำหรับเซิร์ฟเวอร์หลายภาษา นี่ดีกว่าการฮาร์ดโค้ดภาษาอังกฤษอย่างเคร่งครัด
สร้างส่วนประกอบด้วยภาพ ด้วยการกระทำเมื่อคลิกและวางเมาส์ในรูปแบบปัจจุบัน ใน Text & Display Command Builder