Văn bản JSON của /tellraw: clickEvent, hoverEvent và lý do tin nhắn của bạn không hiển thị gì
Chỉ một dấu ngoặc sai cũng khiến tellraw thất bại mà không báo lỗi. Dưới đây là cấu trúc thành phần, các hành động nhấp và di chuột thực sự hoạt động trong trò chuyện, cùng với quy tắc thoát ký tự mà mọi người thường bỏ qua.
/tellraw nhận một thành phần văn bản JSON, và chế độ lỗi không hữu ích: một thành phần bị định dạng sai sẽ không tạo ra tin nhắn hay lỗi nào. Mọi thứ dưới đây đều nhằm giúp bạn định dạng đúng ngay từ đầu.
Ba dạng hợp lệ
"plain string"
{"text":"one component"}
["joined ",{"text":"list","color":"gold"}]
Dạng danh sách là dạng nên dùng cho bất kỳ điều gì thú vị, vì mỗi phần tử có thể mang định dạng riêng của nó. Định dạng của phần tử đầu tiên sẽ được kế thừa bởi phần còn lại trừ khi chúng ghi đè lên nó — đó là lý do tại sao mọi người nhận được một tin nhắn toàn màu vàng một cách bất ngờ. Hãy bắt đầu một danh sách bằng một chuỗi rỗng để tránh điều đó:
/tellraw @a ["",{"text":"Warning: ","color":"red"},{"text":"low health"}]
Hành động nhấp (Click actions)
clickEvent nhận một hành động và một giá trị:
| Hành động | Giá trị | Ghi chú |
|---|---|---|
run_command | /spawn | Chạy như Người chơi, ở cấp độ quyền của họ |
suggest_command | /msg Steve | Điền vào hộp trò chuyện, không gửi |
open_url | https://… | Nhắc nhở trước khi mở |
copy_to_clipboard | bất kỳ văn bản nào | Thân thiện nhất để chia sẻ tọa độ |
change_page | số trang | Chỉ dành cho Quyển sách |
run_command là cái có một cái bẫy: nó thực thi với quyền của Người chơi nhấp, không phải của Khối lệnh. Một menu gọi /gamemode creative sẽ không làm gì đối với một Người chơi bình thường.
Hành động di chuột (Hover actions)
"hoverEvent":{"action":"show_text","contents":["Click to teleport"]}
show_text, show_item và show_entity. Lưu ý contents — các hướng dẫn cũ sử dụng value, đã bị thay thế và giờ đây thất bại mà không báo lỗi. Việc đổi tên duy nhất đó là nguyên nhân của rất nhiều chú giải công cụ di chuột bị hỏng được sao chép từ các hướng dẫn.
Thoát ký tự là nơi nó bị hỏng
Toàn bộ thành phần là một đối số lệnh, vì vậy các dấu ngoặc kép bên trong phải tồn tại qua bộ phân tích lệnh. Trong một Khối lệnh, hãy nhập trực tiếp. Trong một tệp hàm, không cần thoát ký tự bằng dấu gạch chéo ngược. Trong một /give Sách được viết, JSON là một Sợi chỉ bên trong một Sợi chỉ và cần thoát ký tự — đó là trường hợp tạo ra những bức tường \" không thể đọc được.
Quy tắc chung: nếu bạn đang lồng các thành phần văn bản bên trong một thành phần vật phẩm, hãy xây dựng nó bằng một công cụ thay vì làm thủ công.
Bộ chọn bên trong văn bản
{"selector":"@p","separator":{"text":", "}}
giải quyết thành tên Người chơi tại thời điểm gửi. {"score":{"name":"@s","objective":"Kills"}} kéo một giá trị bảng điểm. Cả hai đều tốt hơn việc tự mình cố gắng nối các giá trị.
Khóa dịch chuyển qua các ngôn ngữ
{"translate":"block.minecraft.crafting_table"}
hiển thị bằng ngôn ngữ riêng của mỗi Người chơi — 제작대 cho một máy khách tiếng Hàn, 作業台 cho một máy khách tiếng Nhật. Đối với một máy chủ đa ngôn ngữ, điều này tốt hơn nhiều so với việc mã hóa cứng tiếng Anh.
Xây dựng thành phần một cách trực quan, với các hành động nhấp và di chuột ở dạng hiện tại của chúng, trong Trình tạo lệnh Văn bản & Hiển thị.