Guides / Commands & Data

/tellraw JSON 文本:clickEvent、hoverEvent 以及你的消息为何不显示

一个错误的括号就会让 tellraw 静默失败。本文介绍了组件的结构、聊天中实际可用的点击和悬停操作,以及人们常忽略的转义规则。

/tellraw 接受一个 JSON 文本组件,其失败模式非常不友好:格式错误的组件会不显示任何消息,也不报错。以下内容旨在帮助你一次性写出正确的结构。

三种有效结构

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

列表形式适用于任何有趣的内容,因为每个元素都可以拥有自己的格式。第一个元素的格式会被其余元素继承,除非它们自己覆盖了该格式——这就是为什么人们会意外地看到整条消息都变成了金色。为了避免这种情况,请用空字符串开始一个列表:

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

点击操作

clickEvent 接受一个动作和一个值:

动作注意
run_command/spawn以玩家身份运行,权限级别与玩家相同
suggest_command/msg Steve 填充聊天框,但不发送
open_urlhttps://…打开前会提示
copy_to_clipboard任意文本分享坐标最友好的方式
change_page页码仅限书

run_command 有一个陷阱:它以点击玩家的权限执行,而不是命令方块的权限。一个调用 /gamemode creative 的菜单对普通玩家来说什么也做不了。

悬停操作

"hoverEvent":{"action":"show_text","contents":["Click to teleport"]}

show_textshow_itemshow_entity。请注意 contents——旧的指南使用 value,它已被替换,现在会静默失败。这个单一的重命名解释了许多从教程中复制的失效悬停提示。

转义是出错的关键

整个组件是一个命令参数,因此内部的引号必须在命令解析器中幸存下来。在命令方块中,直接输入即可。在函数文件中,不需要反斜杠转义。在 /give 成书中,JSON 是一个字符串中的字符串,需要转义——这种情况会产生一堆难以阅读的 \"

经验法则:如果你要在物品组件中嵌套文本组件,请使用工具而不是手动构建。

文本中的选择器

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

在发送时解析为玩家名称。{"score":{"name":"@s","objective":"Kills"}} 获取一个记分板值。两者都比你自己尝试连接值要好。

翻译键跨语言传播

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

以每个玩家自己的语言渲染——韩语客户端显示 제작대,日语客户端显示 作業台。对于多语言服务器来说,这比硬编码英语要好得多。

Text & Display Command Builder 中,以当前形式直观地构建组件,包括点击和悬停操作。

文字与显示命令生成器 →

More guides

Browse all →

还想找别的我的世界工具?

一整套在浏览器里运行的生成器、查看器和转换器,全部免费。