本站文本内容除另有声明外,转载时均必须注明出处,并遵守CC BY-NC-SA 3.0协议。(转载须知)
本站是中文Minecraft Wiki的镜像站,与Mojang Studios、Weird Gloop没有从属关系。(免责声明)

全站通知:

聊天类型定义格式

刷 历
编

阅读

    

2026-08-26更新

    

最新编辑:中文mcwiki机器人

阅读:

  

更新日期:2026-08-26

  

最新编辑:中文mcwiki机器人

来自Minecraft WIKI
(重定向自聊天类型)
跳到导航 跳到搜索
页面贡献者 :
中文Minecraft_Wiki
Information icon.svg
本条目所述内容仅适用于Java版。

聊天类型定义文件是聊天类型(Chat Type)在数据包中的数据驱动定义文件。

聊天类型

聊天类型是游戏用于标识不同聊天信息作用的元信息。例如,游戏内系统信息和玩家发出的聊天信息就不是一种聊天类型。

聊天类型可以控制聊天信息在聊天框内的显示样式,也可以控制聊天信息的复述内容。游戏内只会使用下列7种聊天类型,由数据包定义的其他聊天类型在游戏内无法使用任何方式调用,但数据包可以覆盖定义这7种聊天类型以控制聊天信息的显示样式和复述内容。

下表中,sender表示发送信息的玩家名称,target表示接收信息的玩家或队伍名称,content表示发送的聊天消息。

注册名 描述 默认聊天格式 默认复述功能格式
chat 玩家发送的聊天消息 <sender> content sender说content
emote_command 使用/me命令发送的消息 * sender content
msg_command_incoming 接收到来自其他玩家的私人消息 sender悄悄地对你说:content sender说content
msg_command_outgoing 发送给其他玩家的私人消息 你悄悄地对target说:content
say_command 使用/say命令发送的消息 [sender] content
team_msg_command_incoming 接收到来自队伍的队伍消息 target <sender> content
team_msg_command_outgoing 发送给队伍的队伍消息 -> target <sender> content

定义格式

聊天类型在游戏内使用CHAT_TYPE注册表,数据包路径为chat_type,即所有聊天类型定义文件都需要在data/<命名空间>/chat_type目录内定义,聊天类型标签则需要在data/<命名空间>/tags/chat_type目录内定义。

由于游戏不会使用数据包自定义的聊天类型,也没有提供使用自定义聊天类型的方式,所以实际上真正可以生效的聊天类型定义文件只有游戏内定义的7个聊天类型,数据包也只能覆盖定义这7个聊天类型,其他文件均不生效,但会被游戏解析。另外,游戏也不使用聊天类型标签,因此所有聊天类型标签在游戏内无任何作用。

聊天类型定义文件使用JSON格式,并具有下列结构:

聊天类型装饰

聊天消息会读取聊天类型中的装饰(Decoration)信息,将原始的发送者、接收者和消息内容格式化为文本组件或复述信息。

  • NBT复合标签/JSON对象 聊天类型装饰
    • 字符串*translation_key:一个翻译键。
    • NBT列表/JSON数组*parameters:传入到翻译文本中的参数。
      • 字符串:一个参数,对应的下标代表了传入到翻译文本中的顺序。具体取值见下文§ 生成翻译文本。
    • NBT复合标签/JSON对象style:(默认没有样式)设置文本组件的样式。此项对复述文本无效。

定义行为

聊天类型定义数据仅在服务端启动时被加载一次,使用/reload命令不可以使聊天类型定义被重新加载,而必须重启服务端。

生成翻译文本

当游戏在聊天栏内显示聊天信息,或复述聊天信息时,游戏就会读取对应聊天类型的装饰信息。

每种聊天类型的应用场景不同,导致实际上每种类型的参数不同。除一定存在的消息内容外,聊天信息还包含发送者和接收者,但有些类型不存在接收者。这三种参数可以在NBT列表/JSON数组*parameters中定义,游戏会将对应下标的参数转换为文本组件后传入翻译文本内进行替换。下表中给出了这三种参数的枚举值和使用条件:

枚举值 参数含义 聊天类型可用性
content 聊天信息的消息内容 所有聊天类型均可用
sender 聊天信息发送者的显示名称 所有聊天类型均可用
target 聊天信息接收者的显示名称 仅msg_command_outgoing、team_msg_command_incoming和team_msg_command_outgoing可用,其他聊天类型此项为空文本组件

NBT列表/JSON数组*parameters中参数可以重复出现。例如一个装饰信息中此项为["sender", "content", "sender"],且翻译文本为%s: %s (%s),假设发送者显示名称为A,消息内容为B,则最终显示的文本组件是A: B (A)。

历史

Java版
?加入了聊天类型以区分不同聊天信息。
1.1922w18a重写了聊天类型系统,加入了CHAT_TYPE可写注册表,添加了聊天类型定义格式。
1.19.122w24aNBT复合标签/JSON对象style现在是可选的。
pre2简化了NBT复合标签/JSON对象decoration,将其移入NBT复合标签/JSON对象chat和NBT复合标签/JSON对象narration中。
移除了NBT复合标签/JSON对象narration中的字符串priority。
移除了NBT复合标签/JSON对象overlay。聊天类型现在不再能够用于动作栏。
移除了内置聊天类型system、game_info和tellraw_command。
pre3聊天类型msg_command现在被拆分为msg_command_outgoing和msg_command_incoming。
将聊天类型参数team_name重命名为target。其现在也被用于聊天类型msg_command_outgoing。
pre5聊天类型team_msg_command现在被拆分为team_msg_command_incoming和team_msg_command_outgoing。

导航