跳到正文

Styled Chat

作者:Patbox

随心打造服务器聊天的样式!

收藏

截图

介绍

介绍由机器翻译自 Modrinth 原页面,仅供参考。

Logo

Styled Chat

这是一个简单的模组,允许服主更改其聊天界面的外观!

它添加了对 Minecraft 支持的现代聊天格式的支持,
但许多聊天模组/插件会忽略这种格式。

它也与任何使用Placeholder API的模组兼容。

它还支持通过权限为每位玩家更改样式(支持 LuckPerms 和 PlayerRoles)

此模组仅在 Fabric 模组加载器及兼容环境下运行!

如果你有任何问题,可以在我的Discord上提问

也欢迎查看我的其他模组和项目,你可能会觉得它们很有用!

Example image
Example image2

命令(及权限):

  • /styledchat – 主命令(styledchat.main,默认可用)
  • /styledchat reload – 重新加载配置和样式(需要 styledchat.reload)
  • /styledchat set <player> <type> <value> – 更改玩家的个人样式为(需要 styledchat.set)
  • /styledchat get <player> <type> – 发送玩家的样式(需要 styledchat.get)
  • /styledchat clear <player> <type> – 清除玩家的样式(需要 styledchat.clear)

配置:

你可以在 ./config/styled-chat.json 找到配置文件。
格式使用简化文本格式。
它支持使用来自Placeholder API的占位符。
此外,每种消息类型都有几个自己的局部变量。

{
  "CONFIG_VERSION_DONT_TOUCH_THIS": 3,
  "_comment": "修改任何内容前,请先查看 https://github.com/Patbox/StyledChat#configuration",
  "text_formatting": {
    // 启用聊天中的链接解析
    "parse_links": true,
    // 启用 Markdown
    "markdown": true,
    // 启用聊天中旧版(&x)代码的支持(仅玩家输入时生效)
    "legacy_formatting": false,
    // 启用其他模组提供的格式化功能(如果模组实现不正确,可能会影响 StyledChat 的格式化)
    "formatting_from_other_mods": false
  },
  "chat_preview": {
    // 在聊天预览中发送完整消息(包括消息周围的所有格式)
    "send_full_message": false,
    // 格式化必须使用聊天预览,否则禁用格式化
    "require_for_formatting": false
  },
  "auto_completion": {
    // 启用标签自动补全(例如 <red>、<rainbow>)
    "tags": false,
    // 启用标签别名自动补全(例如 <c>、<rb>)
    "tag_aliases": false,
    // 启用表情符号自动补全(例如 :pos:、:item:)
    "emoticons": false
  },
  // 默认样式设置
  "default": {
    // 显示名称(本地变量:${default}、${name})
    "display_name": "${default}",
    // 消息样式
    "message_formats": {
      // 聊天消息样式(本地变量:${player}、${message})
      "chat": "<${player}> ${message}",
      // 加入游戏消息(本地变量:${player})
      "joined_the_game": "<yellow><lang:multiplayer.player.joined:'${player}'></yellow>",
      // 更改名称后加入游戏的消息(本地变量:${player}、${old_name})
      "joined_after_name_change": "<yellow><lang:multiplayer.player.joined.renamed:'${player}':'${old_name}'></yellow>",
      // 玩家首次加入游戏的消息(本地变量:${player})
      "joined_for_first_time": "<yellow><lang:multiplayer.player.joined:'${player}'></yellow>",
      // 玩家离开服务器的消息(本地变量:${player})
      "left_game": "<yellow><lang:multiplayer.player.left:'${player}'></yellow>",
      // 玩家死亡消息(本地变量:${player}、${default_message})
      "base_death": "${default_message}",
      // 完成进度任务(本地变量:${player}、${advancement})
      "advancement_task": "<lang:chat.type.advancement.task:'${player}':'${advancement}'>",
      // 完成进度挑战(本地变量:${player}、${advancement})
      "advancement_challenge": "<lang:chat.type.advancement.challenge:'${player}':'${advancement}'>",
      // 完成进度目标(本地变量:${player}、${advancement}) 
      "advancement_goal": "<lang:chat.type.advancement.goal:'${player}':'${advancement}'>",
      // 队伍消息,仅发送者可见(本地变量:${team}、${displayName}、${message})
      "sent_team_chat": "<lang:'chat.type.team.sent':'<hover\\:\\'<lang\\:chat.type.team.hover>\\'><suggest_command\\:\\'/teammsg \\'>${team}':'${displayName}':'${message}'>",
      // 队伍消息,其他队伍成员可见(本地变量:${team}、${displayName}、${message})
      "received_team_chat": "<lang:'chat.type.team.text':'<hover\\:\\'<lang\\:chat.type.team.hover>\\'><suggest_command\\:\\'/teammsg \\'>${team}':'${displayName}':'${message}'>",
      // 私信,仅发送者可见(本地变量:${receiver}、${sender}、${message})
      "sent_private_message": "<gray><italic><lang:commands.message.display.outgoing:'${receiver}':'${message}'>",
      // 私信,其他人可见(本地变量:${receiver}、${sender}、${message})
      "received_private_message": "<gray><italic><lang:commands.message.display.incoming:'${sender}':'${message}'>",
      // /say 命令的输出(本地变量:${player}、${message})
      "say_command": "[${player}] ${message}",
      // /me 命令的输出(本地变量:${player}、${message})
      "me_command": "<lang:'chat.type.emote':'${player}':'${message}'>",
      // 玩家宠物死亡时发送的死亡消息(本地变量:${default_message}、${pet})
      "pet_death": "${default_message}"
    },
    // 链接样式(本地变量:${link}、${url})
    "link_style": "<underline><c:#7878ff>${link}",
    // 剧透内容样式(本地变量:${spoiler})
    "spoiler_style": "<gray>${spoiler}",
    // 剧透样式使用的符号
    "spoiler_symbol": "▌",
    // 玩家可使用的格式
    "formatting": {
      // “格式标签”:true/false
      "dark_red": true,
      "green": true,
      "underline": true,
      "dark_green": true,
      "black": true,
      "yellow": true,
      "bold": true,
      "italic": true,
      "dark_blue": true,
      "dark_purple": true,
      "gold": true,
      "red": true,
      "aqua": true,
      "gray": true,
      "light_purple": true,
      "blue": true,
      "white": true,
      "dark_aqua": true,
      "dark_gray": true,
      "spoiler": true,
      "strikethrough": true
    },
    // 玩家可使用的表情符号列表(在聊天中输入 :name:)。支持占位符
    "emoticons": {
      // “名称”: “值”
      "potion": "🧪",
      "item": "[%player:equipment_slot mainhand%]",
      "trident": "🔱",
      "rod": "🎣",
      "shrug": "¯\\_(ツ)_/¯",
      "bow": "🏹",
      "bell": "🔔",
      "heart": "❤",
      "bucket": "🪣",
      "sword": "🗡",
      "shears": "✂",
      "pos": "%player:pos_x% %player:pos_y% %player:pos_z%",
      "fire": "🔥",
      "table": "(╯°□°)╯︵ ┻━┻",
      // 自 2.2.1+1.20.1 起,也可以使用以下语法从文件导入。
      "$emojibase:builtin:joypixels": "${emoji}",
      // 值与其他条目相同,只是 ${emoji} 会被读取到的表情符号替换(例如,你可以应用字体)
      // 格式为 $TYPE:SOURCE:PATH
      // TYPE 为 “emojibase”(Emojibase.dev 简写)、“cldr”(Unicode cldr-json 注释)
      //      或 “default”(与本文件相同的样式,不包括导入项)
      // SOURCE 指定存储类型,PATH 指定文件路径
      //     “builtin” 从模组附带的 json 文件加载(“joypixels” 或 “emojibase”)
      //     “from_file” 从相对于配置目录的文件加载(例如,“emoji.json”指向“[SERVER]/config/emoji.json”)
      
    }
  },
  // 包含条件的样式列表,按从上到下的顺序应用
  "styles": [
    {
      // 应用于玩家的样式条件
      "require": {
        "type": "...",
        // 相关说明请见:https://github.com/Patbox/PredicateAPI/blob/master/BUILTIN.md
      },
      /* 其余部分与“default”字段相同,但所有字段均为可选 */
    }
  ]
}

聊天格式化

如果玩家拥有所需权限(styledchat.format.[tag_name],其中 [tagname] 是 Text Parser 标签),就可以在聊天中使用 Simplified Text 标签。
此外,你可以在配置文件中启用 Markdown 和旧版(&X)格式化

配置示例

{
  "CONFIG_VERSION_DONT_TOUCH_THIS": 3,
  "_comment": "更改任何内容前,请参阅 https://github.com/Patbox/StyledChat#configuration",
  "text_formatting": {
    "legacy_formatting": true,
    "parse_links": true,
    "markdown": true,
    "formatting_from_other_mods": true
  },
  "chat_preview": {
    "send_full_message": false,
    "require_for_formatting": false
  },
  "auto_completion": {
    "tags": false,
    "tag_aliases": false,
    "emoticons": true
  },
  "default": {
    "display_name": "${vanillaDisplayName}",
    "message_formats": {
      "chat": "${player} <dark_gray>»</dark_gray> ${message}",
      "joined_the_game": "<gray>✚</gray> <color:#85ff8f><lang:multiplayer.player.joined:'${player}'>",
      "joined_after_name_change": "<gray>✚</gray> <color:#85ff8f><lang:multiplayer.player.joined.renamed:'${player}':'${old_name}'>",
      "joined_for_first_time": "<yellow><lang:multiplayer.player.joined:'${player}'></yellow>",
      "left_game": "<gray>☁</gray> <color:#ff8585><lang:multiplayer.player.left:'${player}'>",
      "base_death": "<gray>☠</gray> <color:#d1d1d1>${default_message}",
      "advancement_task": "<lang:chat.type.advancement.task:'${player}':'${advancement}'>",
      "advancement_challenge": "<lang:chat.type.advancement.challenge:'${player}':'${advancement}'>",
      "advancement_goal": "<lang:chat.type.advancement.goal:'${player}':'${advancement}'>",
      "sent_team_chat": "<lang:'chat.type.team.sent':'<hover\\:\\'<lang\\:chat.type.team.hover>\\'><suggest_command\\:\\'/teammsg \\'>${team}':'${displayName}':'${message}'>",
      "received_team_chat": "<lang:'chat.type.team.text':'<hover\\:\\'<lang\\:chat.type.team.hover>\\'><suggest_command\\:\\'/teammsg \\'>${team}':'${displayName}':'${message}'>",
      "sent_private_message": "<gray>[<green>PM</green> → ${receiver}] <dark_gray>»<reset> ${message}",
      "received_private_message": "<gray>[<green>PM</green> ← ${sender}] <dark_gray>»<reset> ${message}",
      "say_command": "<red>[${player}] ${message}",
      "me_command": "<green>* ${player} ${message}",
      "pet_death": "糟了!${default_message}"
    },
    "link_style": "<underline><blue>${link}",
    "spoiler_style": "<dark_gray>${spoiler}",
    "spoiler_symbol": "▌",
    "formatting": {
      "dark_red": true,
      "underline": true,
      "yellow": true,
      "italic": true,
      "dark_blue": true,
      "dark_purple": true,
      "gold": true,
      "red": true,
      "aqua": true,
      "gray": true,
      "light_purple": true,
      "white": true,
      "pos": true,
      "dark_gray": true,
      "spoiler": true,
      "strikethrough": true,
      "st": true,
      "b": true,
      "item": true,
      "green": true,
      "dark_green": true,
      "black": true,
      "i": true,
      "bold": true,
      "blue": true,
      "dark_aqua": true
    },
    "emoticons": {
      "potion": "🧪",
      "trident": "🔱",
      "rod": "🎣",
      "shrug": "¯\\_(ツ)_/¯",
      "bow": "🏹",
      "bell": "<yellow>🔔",
      "heart": "<red>❤",
      "bucket": "🪣",
      "sword": "🗡",
      "shears": "✂",
      "fire": "🔥",
      "table": "<rb>(╯°□°)╯︵ ┻━┻"
    }
  },
  "styles": [
    {
      "require": {
        "type": "permission",
        "permission": "group.admin",
        "operator": 4
      },
      "display_name": "<dark_gray>[<red>管理员</red>]</dark_gray> <c:#ffe8a3>${vanillaDisplayName}</c>",
      "message_formats": {
        "chat": "${player} <dark_gray>»</dark_gray> <orange>${message}",
        "base_death": ""
      },
      "formatting": {},
      "emoticons": {}
    },
    {
      "require": {
        "type": "permission",
        "permission": "group.default"
      },
      "display_name": "<dark_gray>[<aqua>玩家</aqua>]</dark_gray> <dark_aqua>${vanillaDisplayName}</dark_aqua>",
      "message_formats": {},
      "formatting": {},
      "emoticons": {}
    },
    {
      "require": {
        "type": "permission",
        "permission": "group.vip",
        "operator": 3
      },
      "message_formats": {},
      "formatting": {},
      "emoticons": {
        "potato": "<rb>土豆"
      }
    }
  ]
}

常见问题

Styled Chat 支持哪些 Minecraft 版本?

Styled Chat 支持 Minecraft Java 版 1.17–26.3,共 34 个版本,可用的加载器:Fabric / Quilt。下载时注意选择和你游戏版本一致的文件。

Styled Chat 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric / Quilt,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:仅服务端。

评论

登录后评论和评分

Patbox 的其他作品

查看全部 →