<本站文本内容除另有声明外,转载时均必须注明出处。(详情…本站文本内容除另有声明外,转载时均必须注明出处。(详情…中文Minecraft Wiki是完全公开的。请勇于扩充与修正内容!中文Minecraft Wiki是完全公开的。请勇于扩充与修正内容!Minecraft中文Wiki微博正在更新!或许有兴趣去看看Minecraft中文Wiki微博正在更新!或许有兴趣去看看想与其他用户进行编辑上的沟通?社区专页正是为此创建的。想与其他用户进行编辑上的沟通?社区专页正是为此创建的。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。需要管理员的协助?在管理员告示板留言也许可以帮到您。需要管理员的协助?在管理员告示板留言也许可以帮到您。>

原始JSON文本

来自Minecraft Wiki
跳转至: 导航搜索


Cleanup.svg
该文章需要整理以符合样式标准 讨论
请帮助优化文章样式来让它符合样式要求。

/tellraw/title命令使用严格的JSON语法。

告示牌被放置或修改时,或在一本成书被“翻开”(书写后第一次打开)时,记分板分数和目标选择器会被解析成具体的值。这些结果不再更新,使用NBT编辑器修改已存在的告示牌或已翻开的书也不会起作用。解析的结果无法在告示牌上换行,或在书上换页,超出的文字只会直接消失。

原始JSON文本的格式是
JSON字符串、
JSON列表或
复合标签。JSON文本的格式支持以下(大多是可选的)元素的JSON对象:


  • 直接显示的原始文本字符串。与只有标签
     text
    基础对象效果相同。

  • 每一个元素都与原始JSON文本结构重复。

  • 基础聊天组件对象。

    •  text:字符串,存储在聊天框中直接出现的纯文字。(如果是数字或布尔值则可以转化为字符串,如果是组合对象或者列表则会报错。)注意像是“@a”和“@p”的选择器并不会转译成玩家名字,必须使用selector代替。可以使用转义字符,例如用“\n”换行、“\t”缩进等。

    •  translate:显示文本的翻译标识符,用于将文本翻译至玩家使用的语言。此标识符与从assets文件夹或资源包中找到的语言文件的标识符一致。当text存在时忽略此参数。如果翻译标识符无效,则显示标识符本身。

    •  withtranslate所使用的聊天对象参数列表和字符串参数。
      • 该参数为当前语言翻译文本中出现的参数赋值,参数依序排列(例如,列表中的第一个元素将会取代翻译文本中的“%1$s”)。如果翻译标识符无效,但含有%s或%1$s这样的内容,则也能够替换。

    •  score:一个玩家在一个记分板目标里的分数。若该玩家没有被该记分板目标追踪,则什么都不显示。当上述的文本显示字段存在时忽略此参数。

      •  name:要被显示分数的玩家的名字。可使用选择器(例如@p),以及记分板系统中存在的虚拟玩家名称。另外,如果名称为“*”,会显示读者自己的分数(例如,/tellraw @a {"score":{"name":"*","objective":"obj"}}将给每个在线玩家显示他们自己在“obj”目标里的分数)。

      •  objective:要显示分数的记分板目标。

      •  value:可选。如果存在,将以此覆盖目标原先的分数。

    •  selector:一个包含了一个选择器(@s、@p、@a、@r或@e)的字符串以及可选的选择器参数。不像text,此处的选择器将会被解析为正确的玩家/实体名。如果多于一个玩家/实体符合条件,其将会被以例如“名字1, 名字2”或“名字1,名字2,名字3,名字4”的形式显示。当上述的文本显示字段存在时忽略此参数。在/tellraw命令中使用此标签时,点击结果中的玩家名称会出现私信该玩家的命令建议;按住⇧ Shift点击玩家名称会将名称填入聊天框中;按住⇧ Shift点击非玩家实体的名称会将其UUID填入聊天框中。

    •  keybind:显示用于执行特定操作的按键键位。例如,key.inventory会向玩家显示打开物品栏的按键,若玩家使用默认设置,则会显示“E”。当上述的文本显示字段存在时忽略此参数。

    •  nbt:一段NBT路径,用于从实体或方块处查找特定NBT数据标签的值并将其显示。当上述的文本显示字段存在时忽略此参数。

    •  interpret:布尔值,用于说明是否将
       nbt指示的字符串化NBT值解释为原始JSON文本(根据此原始JSON文本结构)。 若不为原始JSON文本则没有效果。

    •  block:字符串,指定要获取NBT数据标签的方块实体的坐标。坐标可以是绝对坐标或相对坐标
       nbt不存在时,该标签无效。

    •  entity:字符串,以目标选择器的形式指定要获取NBT数据标签的实体。
       nbt不存在时,该标签无效。

    •  storage:字符串,指定要获取NBT数据标签的命令存储命名空间ID
       nbt不存在时,该标签无效。

    •  extra:附加对象的列表,格式与基础对象相同。

      • 与基础聊天组件对象格式相同的附加对象。注意所有对象的属性都会被其子对象所继承,除了textextratranslatewithscore。这表意味着子对象会保留与父对象相同的格式和事件,除非子对象有自己的属性将其覆盖。

    •  color:渲染文字时使用的颜色。有效值有:“black”、“dark_blue”、“dark_green”、“dark_aqua”、“dark_red”、“dark_purple”、“gold”、“gray”、“dark_gray”、“blue”、“green”、“aqua”、“red”、“light_purple”、“yellow”、“white”和“reset”(取消父对象使用的颜色效果)。技术上来说,“bold” (粗体)、“underline”(下划线)、“italic”(斜体)、“strikethrough”(删除线)和“obfuscated”(模糊处理)都是可接受的,不过建议使用下文提到的标签来实现。

    •  bold:布尔值(true/false) - 是否将文字渲染为粗体,默认为false。

    •  italic:布尔值(true/false) - 是否将文字渲染为斜体,默认为false。

    •  underlined:布尔值(true/false) - 是否为文字添加下划线,默认为false。

    •  strikethrough:布尔值(true/false) - 是否为文字添加删除线,默认为false。

    •  obfuscated:布尔值(true/false) - 是否将文字模糊处理,默认为false。

    •  insertion:当玩家按住⇧ Shift并点击文字时,此字符串会自动填入聊天编辑框中。不会覆盖原有的文字。

    •  clickEvent:当玩家点击文字时产生的事件。

      •  action:当点击文字时所触发的行为。有效值为“open_url”(在玩家的默认浏览器中打开value中的URL地址)、“open_file”(打开用户计算机上的value文件)、“run_command”(以玩家的身份在聊天框中输入value值并提交。可以用来执行命令,但是如果玩家没有所需的权限,命令会失败)、“change_page”(只能用在成书中,如果该value页存在,翻至该页)、“suggest_command”(和“run_command”相似,但是文本只会出现在玩家的聊天输入栏,并不会自动提交。与insertion不同,这会直接取代原先在聊天输入框中的内容)和“copy_to_clipboard”(将value复制到剪贴板中)。“open_file”用于游戏自动生成的信息中(如截图时显示的信息),不能在命令和告示牌中使用。

      •  value:前述指定的action使用到的URL地址、文件、聊天内容、命令或书页。注意,命令之前一定要加上“/”斜杠。

    •  hoverEvent:当玩家将鼠标指针悬浮在文字之上时显示的说明提示。

      •  action:说明提示的类型。有效值为“show_text”(显示JSON文本)、“show_item”(显示一个可带NBT标签的物品)和“show_entity”(显示实体的名称,还可能显示其类型和UUID)。

      •  value:此标签的格式取决于action。注意,“show_text”是唯一接受对象作为value值的类型;其他类型对应的value值都是字符串,所以必须用引号引起。
        • “show_text”:可以是字符串,或是与基础对象格式相同的一个对象。注意,此对象的clickEventhoverEvent在说明提示中不会生效,但是它的格式和extra标签仍然有效。
        • “show_item”:与物品NBT标签格式相同的的字符串。包含“id”标签,和可选的“Damage”标签和“tag”标签(和/give命令所使用的“dataTag”标签中的组合相同)。
        • “show_entity”:描述一个组合的字符串,包含值“type”(例如“Zombie”)、“name”和“id”(要求为实体UUID,但接受任意字符串)。

由于extra标签的存在,以上格式可递归地嵌套成非常复杂与多功能的字符串。然而,JSON文本不必弄得如此复杂:几乎所有的属性都可选或会被忽略。

为了确保有效,每一个对象至少应该包含以下任意一个元素:texttranslatescoreselectorkeybind(其余的元素都是可选的)。为使用方便,整个对象可以只用一个字符串表示。此时字符串视为text的值。例如,"This is raw text"{"text":"This is raw text"}是等价的。这种写法在任何需要使用JSON文本的地方都是有效的(包括/tellraw里面所用到的<raw json message>参数,extra列表中的元素,以及hover_event中“show_text”的value值)。

/tellraw也接受一个对象及字符串数组,数组与extra的处理方式大致相同(首个元素视作其后元素的父元素,继承文字样式)。它也接受多层嵌套的数组树,这样会以最深层的数据开始解释。例如:

/tellraw @a ["Hello there, ",{"selector":"@p"},"."]
/tellraw @a [[[["The "],[["quick ","brown "],[{"selector":"@p"}," jumps "],"over "],"the "],["lazy ","dog."]]]

最后,不同于其他使用JSON的命令,/tellraw中的字符串允许通过\u####符号使用Unicode字符,其中####是表示Unicode字符的十六进制数。

外部链接
Skylinerw的JSON格式示例(英文)
Tellraw命令生成器(可选中文)
键位名称一览表