Werchat

Werchat

一个功能齐全的聊天插件,包含适用于Hytale服务器的聊天频道系统。通过可自定义的频道、私人消息和审核工具来组织玩家交流。

实用

Werchat

Latest Release License GitHub Stars

Hytale 服务器的频道聊天系统。 多频道、快速聊天路由、私信、昵称和审核——全部集成于一个插件中。

Discord

YouTube 视频

功能

频道系统 — 支持多个频道,可自定义颜色、昵称,并具有基于距离和世界的消息投递功能。

快速聊天 — 使用前缀符号将消息路由到任意频道,无需手动切换。! 为全局频道,~ 为交易频道。

私信/msg/r 命令支持回复追踪、忽略列表和离线检测。

玩家昵称 — 自定义显示名称,最长 20 个字符,支持十六进制颜色和双色渐变。

提及系统@玩家名 高亮显示,支持自定义颜色和粗体格式。

审核工具 — 每个频道独立封禁、禁言、管理、词语过滤(审查/拦截模式)和聊天冷却。

权限集成 — 支持 HyperPerms 和 LuckPerms 的前缀/后缀,以及十六进制颜色代码。

PlaceholderAPI 集成 — 支持在频道格式文本中使用外部 %...% 占位符,并内置了 %werchat_*% 扩展。

插件 API — 对外提供轻量级 WerchatAPI,供其他插件查询频道、管理成员关系/焦点,并通过 Werchat 的消息管道提交聊天内容。

消息颜色 — 独立设置消息文本的颜色和渐变,与昵称颜色分开。

持久化存储 — 基于 JSON 的数据存储,带有脏标记 + 延迟保存(20 秒)机制,并在服务器关闭时执行最后的刷新。

快速开始

  1. Werchat-1.1.9.jar 放入 mods/ 文件夹
  2. 启动服务器 —— 会默认创建四个频道
  3. 使用 /ch list 查看频道,使用 /ch join <频道名> 加入频道
  4. 输入 !hello 在全局频道快速聊天,或输入 ~hello 在交易频道快速聊天
/ch list                    # 列出所有频道
/ch global                  # 切换到全局频道
/ch join trade              # 加入交易频道
/msg Steve Hey!             # 发送私信
/ch playernick CoolName     # 设置昵称

默认频道

频道 昵称 颜色 范围 自动加入 快速聊天符号
全局 Global 白色 (#ffffff) 无限制 !
本地 Local 灰色 (#808080) 100 格
交易 Trade 金色 (#ffd700) 无限制 ~
支持 Support 绿色 (#00ff00) 无限制

命令

玩家命令

命令 别名 描述
/ch list /ch l 列出所有频道
/ch join <频道名> [密码] /ch j 加入频道
/ch leave <频道名> 离开频道
/ch <频道名> 切换活跃频道
/ch who <频道名> /ch w 查看频道成员
/ch info <频道名> 查看频道详情
/ch create <名称> [昵称] 创建新频道
/ch playernick <名称> [#颜色] [#渐变] /ch pnick, /ch nickname 设置昵称
/ch msgcolor <#颜色> [#渐变] /ch chatcolor 设置消息颜色
/ch help /ch ? 显示命令帮助

消息命令

命令 别名 描述
/msg <玩家> <消息> /whisper, /w, /tell, /pm 发送私信
/r <消息> /reply 回复上一条私信
/ignore <玩家> 切换忽略玩家
/ignorelist 列出已忽略的玩家

管理员/管理命令

命令 别名 描述
/ch color <频道名> <#十六进制> [#十六进制] 设置频道标签颜色(以及可选的消息颜色)
/ch nick <频道名> <昵称> 设置频道快捷名称
/ch rename <频道名> <新名称> 重命名频道
/ch password <频道名> [密码] /ch pass 设置或清除频道密码
/ch distance <频道名> <方块数> /ch range 设置范围(0 = 无限制)
`/ch world <频道名> add remove <世界>`
/ch mod <频道名> <玩家> /ch moderator 添加频道管理员
/ch unmod <频道名> <玩家> 移除频道管理员
/ch ban <频道名> <玩家> 封禁频道中的玩家
/ch unban <频道名> <玩家> 解封玩家
/ch mute <频道名> <玩家> 禁言频道中的玩家
/ch unmute <频道名> <玩家> 取消禁言
/ch remove <频道名> /ch delete, /ch del 删除频道
/ch reload 从磁盘重新加载 Werchat 配置和频道数据

频道管理员可以在自己的频道内使用管理命令,无需全局权限节点。

权限节点 描述
werchat.* 所有 Werchat 权限(通配符)
werchat.list 列出频道
werchat.join 加入频道
werchat.leave 离开频道
werchat.create 创建频道
werchat.who 查看频道成员
werchat.info 查看频道信息
werchat.switch 切换活跃频道
werchat.color 设置频道颜色
werchat.nick 设置频道昵称
werchat.password 设置频道密码
werchat.rename 重命名频道
werchat.remove 删除频道
werchat.mod 管理频道管理员
werchat.distance 设置频道范围
werchat.ban 封禁/解封频道的玩家
werchat.mute 禁言/取消禁言频道中的玩家
werchat.world 设置世界限制
werchat.reload 重新加载 Werchat 配置/频道数据
werchat.msg 发送私信
werchat.ignore 忽略玩家
werchat.quickchat 使用快速聊天符号
werchat.playernick 设置自己的昵称
werchat.playernick.others 设置其他玩家的昵称
werchat.nickcolor 设置昵称颜色/渐变
werchat.msgcolor 设置自己的消息颜色
werchat.msgcolor.others 设置其他玩家的消息颜色
werchat.cooldown.bypass 绕过聊天冷却

拥有 werchat.** 权限的玩家也会绕过冷却和词语过滤器。

每个频道的权限节点:

  • werchat.channel.<频道名>.join
  • werchat.channel.<频道名>.speak
  • werchat.channel.<频道名>.read(主要接收/读取节点)

只有在 channelPermissions.enforce 启用时,这些节点才会在正常的 /ch 和聊天流程中生效。

配置

配置文件:mods/com.werchat_Werchat/config.json

查看完整配置

{
  "defaultChannelName": "Global",
  "autoJoinDefault": true,
  "showJoinLeaveMessages": true,
  "allowPrivateMessages": true,
  "channelPermissions": {
    "enforce": false
  },
  "banMessage": "You have been banned from {channel}",
  "muteMessage": "You have been muted in {channel}",
  "wordFilter": {
    "enabled": false,
    "mode": "censor",
    "replacement": "***",
    "notifyPlayer": true,
    "warningMessage": "Your message contained inappropriate language.",
    "words": ["..."]
  },
  "cooldown": {
    "enabled": false,
    "seconds": 3,
    "message": "Please wait {seconds}s before sending another message.",
    "bypassPermission": "werchat.cooldown.bypass"
  },
  "mentions": {
    "enabled": true,
    "color": "#FFFF55"
  },
  "ignoreChatCancellations": false
}
默认值 描述
defaultChannelName "Global" 玩家默认所在的频道
autoJoinDefault true 连接时自动加入默认频道
showJoinLeaveMessages true 向频道广播加入/离开消息
allowPrivateMessages true 是否启用 /msg 命令
channelPermissions.enforce false 在正常 /ch 和聊天流程中强制使用每个频道的 join/speak/read 节点
banMessage "You have been banned from {channel}" 向被封禁玩家显示的消息
muteMessage "You have been muted in {channel}" 向被禁言玩家显示的消息
wordFilter.enabled false 启用词语过滤器
wordFilter.mode "censor" censor 替换不良词语,block 拒绝消息
wordFilter.replacement "***" 审查模式下的替换字符串
wordFilter.notifyPlayer true 触发过滤时警告玩家
wordFilter.warningMessage "Your message contained..." 警告消息文本
wordFilter.words (默认列表) 要过滤的词语(不区分大小写)
cooldown.enabled false 启用聊天冷却
cooldown.seconds 3 消息间隔秒数
cooldown.message "Please wait {seconds}s..." 冷却消息
cooldown.bypassPermission "werchat.cooldown.bypass" 绕过冷却的权限
mentions.enabled true 启用 @提及 高亮
mentions.color "#FFFF55" 提及高亮的十六进制颜色
ignoreChatCancellations false 即使被其他插件取消也处理聊天

channelPermissions.enforce 启用时:

  • join 检查在 /ch join/ch <频道名> 自动加入时触发。
  • speak 检查在发送消息前触发。
  • read 检查在发送者选择和按接收者投递时触发。
  • 密码检查仍然有效;权限节点不会绕过频道密码。

频道格式占位符

自定义频道消息格式支持以下占位符:

占位符 描述
{name} 完整频道名称
{nick} 频道昵称/缩写
{color} 频道颜色代码
{sender} 玩家显示名称
{msg} 消息内容
{prefix} 玩家的权限前缀(HyperPerms/LuckPerms)
{suffix} 玩家的权限后缀(HyperPerms/LuckPerms)

默认格式:{nick} {sender}: {msg}

当安装了 PlaceholderAPI 时,格式文本也支持 PlaceholderAPI 占位符。

Werchat 还注册了一个内置的 PlaceholderAPI 扩展,标识符为 werchat。你可以在 Github ReadMe 中找到所有可用的占位符。

链接


HyperSystems 套件的一部分:HyperPerms | HyperHomes | HyperFactions | Werchat