MC Toolkit

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

องค์ประกอบข้อความ /tellraw: click_event, hover_event และทำไมข้อความของคุณไม่แสดงอะไรเลย

วงเล็บผิดเพียงอันเดียวก็ทำให้ tellraw ไม่ส่งอะไรถึงเป้าหมายเลย นี่คือรูปร่างของคอมโพเนนต์ การกระทำคลิกและโฮเวอร์ที่ใช้ได้จริงในแชท และกฎการ escape ที่คนมักมองข้าม

/tellraw รับ text component และรูปแบบความล้มเหลวก็ไม่เป็นมิตรเอาเลย: คอมโพเนนต์ที่ผิดรูปแบบจะ ไม่ส่งข้อความถึงใครที่มันเล็งไว้เลย — ข้อผิดพลาดเดียวจะไปถึงคนที่รันคำสั่ง หรือไปอยู่ในเอาต์พุตของบล็อกคำสั่ง ที่ซึ่งไม่มีใครดูอยู่ ทุกอย่างด้านล่างนี้ว่าด้วยการทำรูปร่างให้ถูกตั้งแต่ครั้งแรก

สามรูปร่างที่ใช้ได้

"plain string"
{"text":"one component"}
["joined ",{"text":"list","color":"gold"}]

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

/tellraw @a ["",{"text":"Warning: ","color":"red"},{"text":"low health"}]

การกระทำเมื่อคลิก

click_event รับ action บวกกับฟิลด์เฉพาะของ action นั้น — ไม่มี value ที่ใช้ร่วมกัน:

Actionฟิลด์หมายเหตุ
run_commandcommand: "/spawn"รัน ในฐานะผู้เล่น ที่ระดับสิทธิ์ของผู้เล่นคนนั้น
suggest_commandcommand: "/msg Steve "เติมข้อความลงช่องแชท ไม่ส่ง
open_urlurl: "https://…"ถามยืนยันก่อนเปิด
copy_to_clipboardvalue: "any text"เป็นมิตรที่สุดสำหรับการแชร์พิกัด
change_pagepage: 2ใช้ได้กับหนังสือเท่านั้น

run_command คืออันที่มีกับดัก: มันทำงานด้วยสิทธิ์ของ ผู้เล่นที่คลิก ไม่ใช่ของบล็อกคำสั่ง เมนูที่เรียก /gamemode creative จะไม่ทำอะไรเลยสำหรับผู้เล่นทั่วไป

การกระทำเมื่อโฮเวอร์

"hover_event":{"action":"show_text","value":["Click to teleport"]}

show_text, show_item และ show_entity สังเกตชื่อให้ดี — คู่มือเก่า ๆ ใช้ hoverEvent, clickEvent และ contents ซึ่ง 1.21.5 แทนที่ด้วย hover_event, click_event และสำหรับ show_text ก็ใช้ value การเปลี่ยนชื่อนี้ทำให้ทูลทิปโฮเวอร์ที่คัดลอกจากบทเรียนใช้ไม่ได้ไปเยอะ

การ escape คือจุดที่มันพัง

คอมโพเนนต์ทั้งหมดคืออาร์กิวเมนต์เดียวของคำสั่ง ดังนั้นเครื่องหมายคำพูดข้างในต้องรอดผ่านตัวแยกวิเคราะห์คำสั่งให้ได้ ในบล็อกคำสั่ง พิมพ์ตรง ๆ ได้เลย ใน ไฟล์ฟังก์ชัน ไม่จำเป็นต้อง escape ด้วยแบ็กสแลช ในหนังสือเขียนแล้วแบบ /give หน้าแต่ละหน้าก็เป็น text component เช่นกัน เขียนเป็น SNBT — ไม่ต้อง escape สตริงซ้อนสตริงตั้งแต่ 1.21.5 เป็นต้นมา และหน้าที่เขียนเป็นสตริง JSON ที่ escape ไว้จะแสดงเป็นข้อความธรรมดาพร้อมเครื่องหมายคำพูดของมันเอง

กฎง่าย ๆ: ถ้าคุณกำลังซ้อน text component ไว้ใน item component ให้สร้างด้วยเครื่องมือแทนที่จะทำมือ

ตัวเลือกภายในข้อความ

{"selector":"@p","separator":{"text":", "}}

จะแปลงเป็นชื่อผู้เล่นตอนส่ง {"score":{"name":"@s","objective":"Kills"}} ดึงค่าจาก scoreboard ทั้งสองวิธีดีกว่าการพยายามต่อค่าด้วยตัวเอง

คีย์แปลภาษาข้ามภาษาได้

{"translate":"block.minecraft.crafting_table"}

จะแสดงในภาษาของผู้เล่นแต่ละคน — 제작대 สำหรับไคลเอนต์เกาหลี, 作業台 สำหรับไคลเอนต์ญี่ปุ่น สำหรับเซิร์ฟเวอร์หลายภาษานี่ดีกว่าการฮาร์ดโค้ดภาษาอังกฤษอย่างชัดเจน

สร้างและดูตัวอย่างข้อความและคำสั่งแสดงผลได้ที่ Text & Display Command Builder

ตัวสร้างคำสั่งข้อความและการแสดงผล →

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

ดูทั้งหมด →