Embellish Chat

Embellish Chat

用物品和物品栏展示、提及以及格式化来增强Minecraft聊天。

管理

Embellish Chat

Embellish Chat 通过物品与物品栏展示、内置图标、提及以及富文本格式来增强 Minecraft 聊天体验。玩家可以展示装备、打开展示的物品栏,并使用更具表现力的聊天功能,而无需在客户端安装该模组。


✨ 主要功能

  • 物品与物品栏展示 使用 [i]、[inv] 和 [end] 直接在聊天中展示你手持的物品、物品栏或末影箱,让其他玩家可以交互式地查看它们。

  • 内置聊天图标 使用 :name: 语法将基于 Minecraft 的内置图标插入消息中。

  • 富文本聊天格式 使用粗体、斜体、下划线、删除线、自定义字体、十六进制颜色、渐变、预设和彩虹效果来为消息设置样式。

  • 智能提及系统 提及玩家、@here、@team(name)、@world(name) 或 @everyone,并提供清晰的通知。也支持 LuckPerms 群组提及。

  • 实用的聊天工具 将鼠标悬停在消息上可查看精确时间戳,点击消息可复制其内容及时间戳。

  • 服务端模组,带有可选客户端功能 Embellish Chat 的所有核心聊天功能完全在服务端运行。玩家无需在客户端安装该模组。 它被标记为 服务端与客户端,仅因为当模组安装在客户端上时可使用可选的客户端提及自动补全功能。


🛠️ 样式系统

直接在聊天窗口中使用以下模式即可应用样式:

功能 语法 示例 展示
粗体 **Text** **You really need to read this!** Bold
斜体 _Text_ _This is top secret..._ Italic
下划线 __Text__ __Check this out__ Underline
删除线 ~~Text~~ ~~We don’t talk about this anymore~~ Strike
混淆 ||Text|| ||Unreadable text|| Obfuscated
颜色(十六进制) [Text]<#RRGGBB> [Blue]<#0000FF> like the deep ocean Color
颜色(渐变) [Text]<#RRGGBB #R...> [Grraaaaaaadieeeeent]<#ffaaaa #aaaaff #aaffaa> Color
颜色(预设) [Text]<preset> [pink]<pink> pig Color
颜色(彩虹) [Text]<RAINBOW> look at this [rainbow]<RAINBOW> Color
链接 [Text](URL) Download it [here](https://modrinth.com/mod/embellish-chat) Link
字体 [Text]{path} [Blorp Zorp]{minecraft:alt} Font
物品 [i] Look at my [i] Item
物品栏 [inv] Look at my [inv] Inventory
末影箱 [end] Look at my [end] EnderChest
图标 :name: I :love: you AtlasIcon
提及 @PlayerName Hello, @User Mention

注意

  • 链接: 内置的默认链接规则仅匹配 https:// URL。
  • 颜色: 预设(例如 pink)定义在 presets.json/color 中。
  • 字体: path 需要带命名空间的 ID(例如 minecraft:alt)。
  • 图标与物品精灵图: 图标预设和物品精灵图渲染使用图集支持的组件,因此不支持较旧的 Minecraft 版本。
  • 更多信息: 有关高级语法、样式组合和详细规则,请参阅 /embellish-chat help style 或 StyleWiki。

🗣️ 提及系统

目标 行为
@PlayerName 提及特定玩家。
@team(name) 提及指定队伍中的所有玩家。
@group(name) 提及指定 LuckPerms 群组中的所有玩家。
@world(name) 提及指定世界中的所有玩家。
@everyone 提及服务器上的所有玩家。
@here 提及同一世界中可配置半径内(默认:64 格)的玩家。

注意

  • 行为: 成功提及会向目标发送通知音效,并自动为文本着色(例如,着色为队伍颜色)。
  • 依赖项: @group 需要 LuckPerms。没有它,群组提及将被忽略。
  • 颜色: @team 和 @Player 提及从 config.json 中的 team_color 值开始,然后在可用时使用目标的队伍/显示样式。如果 team_color 为 null,提及文本将不着色。
  • 音效: 通知音效使用 UI 分类(在 Minecraft 1.21.5 及更早版本中回退到 PLAYER 分类)。
  • 更多信息: 有关提及类型的完整列表和高级用法,请参阅 MentionWiki。

⌨️ 命令

管理员命令

需要 OP 等级 2(或在 1.21.11+ 上为 GAMEMASTERS_CHECK)。

  • /embellish-chat reload 立即重新加载 /config/embellish-chat/ 下的所有配置文件。
  • /embellish-chat ban/pardon <player> 阻止或恢复玩家对所有模组功能的访问。
  • /embellish-chat stress_test <ticks> <count> <text> 在 <ticks> 内重复模拟 <count> 条消息,以对服务器的消息处理性能进行压力测试。
  • /embellish-chat regex_test <regex> <text> 使用提供的 <regex> 对 <text> 进行测试,并高亮显示捕获组以分析匹配结果。

用户命令

对 所有玩家 可用(无需权限)。

  • /embellish-chat open <player> 打开指定玩家最后分享的物品栏/末影箱/物品。
  • /embellish-chat help mention 根据你的权限显示你可用的提及规则。
  • /embellish-chat help style 根据你的权限显示你可用的样式规则。
  • /embellish-chat help icon 以 name - icon 格式显示 presets.json/icon 中可用的图标预设。
  • /embellish-chat notification 切换你个人的提及通知偏好。(由配置中的 notify_command_enabled 全局启用/禁用)。

⚙️ 配置

Embellish Chat 通过使用正则表达式提供强大的功能。 由于正则表达式本身较为困难,建议利用各种 AI 工具来创建和优化规则。

配置

配置文件位于 config/embellish-chat/config.json。

{
  //version
  "version": "current mod version",
  
  //setting
  "delimiter": ",",
  "timestamp": "yyyy-MM-dd HH:mm:ss",
  "command_alias": "ec",
  "url_color": "#0000EE",
  "team_color": "#FF55FF",
  "notify_command_enabled": true,
  "notify_mention_enabled": true,
  "require_same_channel": true,
  "disable_vanilla_chat_format": false,
  
  //player list
  "banned_players": [],
  "notify_off_players": []
}
  • version 字段不得手动修改。
  • ConfigManager 会分别写入 config.json、styles.json、mentions.json 和 presets.json,然后在加载时将它们合并为一个运行时 Config。
  • 缺失的部分会在该合并步骤中从内置默认值恢复。
  • 如果存储的 version 与运行中的模组版本不匹配,模组将保留当前内存中的配置,并忽略不匹配的加载。
  • 核心配置逻辑定义在 style_rules 和 mention_rules 中。
  • 规则从上到下处理,因此将通配规则放在靠前位置可能会覆盖下方定义的更具体的规则。
  • delimiter 值在内部作为正则表达式处理;诸如 | 等特殊字符必须正确转义。
  • 当配置以非空白值加载时,command_alias 会注册一个额外的根命令,该命令重定向到 /embellish-chat。
  • team_color 是用于为 @team 和 @Player 提及设置样式时的基础颜色。
  • 如果 team_color 缺失或设置为 null,这些提及将不带自动颜色。
  • 启用 require_same_channel 时,ADVANCED_CHAT_CHANNEL 提及将限制为发送者当前的 Advanced Chat 频道。
  • 重新加载配置会刷新运行时样式和提及处理器,因此更新后的 style_rules、mention_rules、timestamp、url_color、whitelist、color、icon 和 item 值会立即生效。
  • 为避免 JSON 语法错误并确保配置有效,强烈建议使用 Web 配置生成器。

样式

配置文件位于 config/embellish-chat/styles.json。

{
  "style_rules": {
    "embellish-chat.chat": [
      {
        "pattern": " ... ",
        "comment": "...",
        "styles": [
          {
            "styleType": " ... ",
            "preset": " ... "
          }
        ]
      }
      ...
    ]
  }
}
  • pattern:这是用于扫描文本的正则表达式。它必须有两个捕获组。
    • group 1:这是要设置样式的文本。
    • group 2:这是作为选项传递的文本。
  • comment:此注释用于 /embellish-chat help style。
  • styles:定义要应用于捕获组 1 的样式。
    • styleType:这是样式类型。你可以使用 StyleWiki 中列出的所有类型。
    • preset:这是预设值。如果提供了值,则始终使用它;如果为空,则改用用户捕获组 2 的内容。
  • 诸如 embellish-chat.chat 之类的每个顶级键也被视为权限节点。
  • 每个 styleType 名称必须与运行时 StyleRegistry 中注册的处理器匹配。

提及

配置文件位于 config/embellish-chat/mentions.json。

{
  "mention_rules": {
    "embellish-chat.mention": [
      {
        "pattern": " ... ",
        "comment": "...",
        
        "title": " ... ",
        "sound": { ... },
        
        "cooldown": 0,
        "onlyTarget": false,
        
        "mentions": [
          {
            "mentionType": " ... ",
            "preset": " ... "
          }
        ],
        "styles": [ ... ]
      }
      ...
    ]
  }
}
  • pattern:这是用于扫描文本的正则表达式。它必须有一个捕获组。
    • 这是提及选项(例如队伍名称、LuckPerms 群组)。
  • comment:此注释用于 /embellish-chat help mention。
  • title:这是显示在被提及玩家屏幕上的标题。
    • %player:displayname% 是发送提及的玩家的显示名称。
  • sound:定义通知音效设置。
    • id:音效标识符。
    • category:音效分类。
    • volume:音效音量。
    • pitch:音效音调。
  • cooldown:这是提及冷却时间,单位为秒。
    • 设置为 0 可禁用冷却。
  • onlyTarget:
    • 当设置为 true 时,阻止消息全局广播,仅发送给目标。
  • mentions:定义要执行的提及操作。
    • mentionType:这是提及类型。你可以使用 MentionWiki 中列出的所有类型。
    • preset:这是可选的预设值。
  • styles:定义触发提及时要应用的样式。
    • 工作方式与样式规则部分相同。

预设

配置文件位于 config/embellish-chat/presets.json。

{
  "prefix": {
    " ... ": " ... "
  },
  "whitelist": [
    " ... "
  ],
  "icon": {
    " ... ": {
      "atlas": " ... ",
      "sprite": " ... "
    }
  },
  "item": {
    " ... ": {
      "atlas": " ... ",
      "sprite": " ... "
    }
  },
  "color": {
    " ... ": " ... "
  }
}
  • prefix:使用权限节点作为其键,每个值是一个字符串,会作为带有占位符标签的文本组件解析。
  • whitelist:用于 URL 样式类型。如果留空,则允许所有 URL。
  • icon:由 ICON_PRESET 和 /embellish-chat help icon 使用。
  • item:这会为特定物品 ID 覆盖 SHOW_ITEM 使用的图集精灵图。
  • color:用于样式中的颜色预设。

📜 兼容性

✅ 完全支持

  • Fabric Permissions API(内置)
    • style_rules 和 mention_rules 中定义的键直接充当权限节点。
    • 规则根据玩家的权限从上到下进行评估。
  • Text Placeholder API(内置)
    • 支持提及标题和样式预设中的动态占位符。
    • 独有: 使用 %embellish-chat:content% 访问原始、未解析的聊天消息。
  • 带样式的昵称
    • 支持通过昵称提及玩家。
  • LuckPerms
    • @group 提及类型必需。没有它,群组提及将被忽略。
  • Advanced Chat
    • @channel 提及类型必需。没有它,频道提及将被忽略。
  • Geyser(基岩版)
    • Java 版和基岩版之间的提及可无缝工作。
    • 注意: 高级样式(悬停文本、点击事件)可能无法在基岩版客户端上完全渲染。
  • Minecraft 局域网游戏
    • 已在标准局域网世界中测试。

❗ 已知冲突

  • Styled Chat
    • Styled Chat 优先。 如果安装了它,Embellish Chat 的样式功能将被覆盖。
    • 提及仍然有效: 提及和通知系统仍可正常工作。
    • 性能提示: 如果你必须同时使用两者,请删除 Embellish Chat 的 style_rules 中的所有条目,以防止不必要的后台处理。

📜 许可证与链接

本项目根据 Apache License 2.0 许可。

请从以下官方来源下载模组,以确保你获得最新、最安全的版本。欢迎链接到这些页面;请避免重新托管文件。


✨ 反馈与支持

发现错误或有功能请求?请打开一个 issue 或在项目的 Discord 服务器上联系我们。

如果你想更早收到更新,请在我们的 Modrinth 页面上点击爱心 ❤️!你的支持意义重大!