HyChatter

HyChatter

Hytale轻量级RPG聊天模组:独立频道、快捷指令、减少刷屏

生活质量

------------------------

施工中

免责声明: 此模组仍在开发中。发现 Bug 或有想法?请在 Discord 上告知我们。

报告问题时,请包含: 你的 HyChatter.json5Errors.json5Moderation.json5ChatForwarder.json5(如果你使用了转发功能),以及服务器日志的相关部分。对于转发问题,请在转发器配置中将 debug: true 设置为详细日志。

------------------------

HyChatter — Hytale 服务器的智能聊天

HyChatter 增加了频道(全局、区域、队伍)、带有提示音和弹窗通知的@提及私聊管理功能(屏蔽词、反垃圾、禁言)、加入/离开消息自定义玩家拥有频道、一个持久的频道 HUD 覆盖层以及一个原生 Discord 桥接。所有内容都可通过 JSON5 配置,并可使用 /hc reload 重载 — 无需重启服务器。



概览

  • 一个指令枢纽:所有功能通过 /hychatter/hc 访问。
  • 频道面板 UI — 通过 /hc/hc ui 打开:聊天标签页(全局、区域、队伍、自定义频道)、我的频道以及管理标签页(需要 OP 权限或 hychatter.moderation 权限)。可以切换频道、管理自定义频道(成员、踢出、@提及),并直接在游戏中编辑管理功能的开关和数值。
  • 频道 HUD 覆盖层 — 一个常驻屏幕的小条形栏,始终显示你当前的活跃频道和键盘快捷键。切换频道时即时更新。
  • 模组兼容 — 可与 MultipleHUD、PartyPro 和 EndlessLeveling 等模组协同工作,不会产生冲突。
  • 已在 play.hylordia.com 服务器上使用。

功能详情

聊天频道

  • 全局 [G] — 所有在线玩家可见。
  • 区域 [R] — 仅在可配置距离内的玩家可见(默认 100 格,同一世界)。
  • 队伍 [P] — 仅限你的队伍成员。当安装了 PartyPro 时自动集成。
  • 频道面板/hc/hc ui 打开重新设计的 UI:聊天标签页(选择全局、区域、队伍或自定义频道)、我的频道(创建/加入/管理)以及供工作人员使用的管理标签页。可在面板内撰写并发送消息。
  • 切换 — 使用 /hc swap 随时在 HyChatter 聊天和默认游戏聊天之间切换。

加入/离开消息

自定义玩家看到他人加入或离开时的消息。

  • 在你的服务器上 — 可开关本地消息并设置格式(例如 [+] {name} 加入了游戏)。启用后,默认的游戏加入/离开消息将被隐藏,仅显示你设置的消息。
  • 跨服务器 — 可选择将加入/离开消息转发到其他服务器(HUB/SPOKE),并使用不同的格式(例如 {name} 加入了 {server})。本地消息和转发消息是分开设置的:你可以使用其中一种、另一种,或两种都使用。

所有选项均在 HyChatter.json5(加入/离开部分)中。

多服务器聊天(可选)

跨多个服务器发送全局聊天消息:一个HUB(例如大厅)服务器连接到多个SPOKE服务器。仅转发全局聊天;提及功能也可跨服务器工作。使用 /hc reload 重载配置以应用转发器更改。

HUB 示例(大厅 — 监听连接):

{
"enabled": true,
"serverId": "Lobby",
"secret": "yourSharedSecret",
"mode": "HUB",
"listenHost": "0.0.0.0",
"listenPort": 25650,
"forwardTo": [],
"remoteFormat": "&7[&b{server}&7] &f{name}&7: &f{message}",
"maxLineBytes": 8192,
"debug": true
}

SPOKE 示例(游戏服务器 — 连接到 HUB):

{
"enabled": true,
"serverId": "HollowCrown",
"secret": "yourSharedSecret",
"mode": "SPOKE",
"hubHost": "LOBBY_IP",
"hubPort": 25650,
"forwardTo": [],
"remoteFormat": "&7[&b{server}&7] &f{name}&7: &f{message}",
"maxLineBytes": 8192,
"debug": true
}

管理功能

mods/HyChatter/Moderation.json5 中配置 — 或者使用 /hc 中的管理标签页(需要 OP 权限或 hychatter.moderation 权限)来开关选项、设置冷却时间、默认禁言时长和最大消息长度,无需编辑文件。屏蔽词仍需在 JSON5 文件中编辑。

  • 词句屏蔽 — 替换被屏蔽的词语(例如替换为 * 或自定义字符串)。
  • 反垃圾 — 冷却时间和爆发限制;可选择自动临时禁言。
  • 链接 — 屏蔽 URL 和 Discord 邀请链接,或允许特定域名。
  • 禁言/hc mute / /hc unmute;可选择持久化禁言记录。
  • 安全 — 最大消息长度;自定义频道名称可被屏蔽词检查过滤。

频道 HUD 覆盖层

一个常驻屏幕的小条形栏,始终显示玩家当前所在的频道以及切换频道的键盘快捷键。频道标识:全局(CTRL+2)、区域(CTRL+3)、队伍(CTRL+4,仅当安装了 PartyPro 时显示)以及玩家已加入的最多两个自定义频道(CTRL+5/6)。当前激活的频道标识高亮显示;未激活的频道标识变暗。可在 HyChatter.json5 中使用 channelHudEnabled 启用或禁用此覆盖层。

与 MultipleHUD 兼容 — 在运行 MultipleHUD 的服务器上,HyChatter 的覆盖层会被干净地整合到组合 HUD 文档中,与其他模组(PartyPro、EndlessLeveling 等)不会产生冲突。

默认频道

HyChatter 可以为每位玩家设置一个默认频道。优先级: 1) 玩家自行选择(通过 /hc chatdefault 设置),2) 配置中的服务器默认频道。加入服务器时、闲置超时后或离开自定义频道时,玩家将返回此默认频道。

自定义频道(玩家拥有)

玩家可以创建私人频道,邀请其他玩家,并以 [频道名] 的形式聊天。频道名支持颜色代码&5&#RRGGBB),并在 UI 和聊天中显示为彩色。只有成员才能查看和使用该频道。在 /hc 面板中,管理频道可以查看成员列表:可以踢出成员(仅限频道所有者)以及@(发送弹窗通知:在聊天中输入 @用户名 进行提及)。非成员可以发送加入请求(向频道所有者发送弹窗通知)。如果频道所有者离开服务器,则该频道将对所有成员移除。@提及在自定义频道中仅会通知该频道的成员。

@提及

输入 @玩家名 可以提醒某人:聊天中高亮显示,可选播放提示音,以及可选弹窗通知(均可配置)。发送确认功能也可用,包括在开启转发时跨服务器工作。

私聊

/msg <玩家名> <消息>(或 /w/whisper)和 /reply <消息>(或 /re)。格式可配置;消息保持私密。

LuckPerms(可选)

如果安装了 LuckPerms,HyChatter 可以使用玩家的前缀。当前缀数据尚未就绪时,它会安全地回退。

Discord 桥接(内建,可选)

HyChatter 包含一个原生 Discord 桥接 — 无需第三方模组。在 mods/HyChatter/DiscordBridge.json5 中配置。

  • 双向聊天中继 — 全局聊天双向流通:游戏内的消息出现在 Discord,Discord 的消息出现在游戏中(使用 toHytaleFormat 格式化,例如 &9[Discord] &f{name}: {message})。
  • 玩家通知 — 加入、离开和死亡事件可发布到另一个 Discord 通知频道,并支持可配置的格式(🟢/🔴 加入/离开,☠ 死亡)。
  • 跨服务器感知 — 来自 SPOKE 服务器的转发消息在 Discord 格式中包含 {server}
  • 表情处理 — Discord 自定义表情(例如 :skull:)和标准 Unicode 表情会被转换为可读的 :name: 文本形式在游戏中显示,而不是显示为 ??

// DiscordBridge.json5
{
"enabled": true,
"botToken": "YOUR_BOT_TOKEN",
"channelId": "YOUR_CHANNEL_ID",
"toDiscordFormat": "**{name}**: {message}",
"toHytaleFormat": "&9[Discord] &f{name}&7: &f{message}",
"notificationChannelId": "YOUR_NOTIF_CHANNEL_ID",
"notifyJoin": true,
"notifyLeave": true,
"notifyDeath": true
}

HyDiscordX(可选)

如果安装了 HyDiscordX,你也可以通过 HyDiscordX 中继选择的频道。在 HyChatter.json5 中启用:hyDiscordXCompatEnabledhyDiscordXBridgeChannels。无硬性依赖。

配置文件与重载

  • 主配置: mods/HyChatter/HyChatter.json5

  • 错误/消息: mods/HyChatter/Errors.json5

  • 管理功能: mods/HyChatter/Moderation.json5

  • 转发器: mods/HyChatter/chatForwarder/ChatForwarder.json5

  • Discord 桥接: mods/HyChatter/DiscordBridge.json5

更改任何配置后,运行 /hc reload — 无需重启。

颜色

在你的格式中使用 &0&f&r&#RRGGBB(不要使用 §)。参考:hytaletools.cc/tools/color-codes


指令与权限

所有内容均在 /hychatter/hc 下。在游戏中输入 /hc 查看完整列表。别名使用与主指令相同的权限。

基础权限:hychatter.command — 运行 /hc 所需(包括 /hc help/hc ui)。将此权限授予任何需要使用 HyChatter 的玩家;然后可以使用下方特定子指令的权限。

玩家指令(将这些权限授予你的默认用户组)

  • hychatter.command.gchat — 全局聊天。 /gchat/hc gchat
  • hychatter.command.rchat — 区域聊天。 /rchat/hc rchat
  • hychatter.command.pchat — 队伍聊天。 /pchat/hc pchat
  • hychatter.command.msg — 私信。 /msg <玩家名> <消息>/w
  • hychatter.command.reply — 回复上一条私聊。 /reply/re
  • hychatter.command.chatdefault — 设置你的默认频道。 /hc chatdefault global|region|party|off|inherit
  • hychatter.command.swap — 在 HyChatter 聊天和默认游戏聊天之间切换。 /hc swap

自定义频道

  • hychatter.command.ch.create — 创建一个频道。 /hc channel create <频道名>
  • hychatter.command.ch.invite — 邀请一名玩家(仅限频道所有者)。 /hc channel invite <频道名> <玩家名>
  • hychatter.command.ch.leave — 离开一个频道。 /hc channel leave [频道名]
  • hychatter.command.ch.rename — 重命名频道(频道所有者)。 /hc channel rename <频道名> <新名称>
  • hychatter.command.ch.kick — 踢出一名成员(频道所有者)。 /hc channel kick <频道名> <玩家名>
  • hychatter.command.ch.transfer — 转移频道所有权。 /hc channel transfer <频道名> <玩家名>
  • hychatter.command.ch.list — 列出你的频道。 /hc channel list
  • 加入或切换:/hc channel join <频道名> — 非成员发送加入请求(向所有者发送弹窗通知)。

管理员指令

  • hychatter.command.reload — 重载所有配置和转发器。 /hc reload
  • hychatter.command.mute — 禁言一名玩家。 /hc mute <玩家名> [秒数]
  • hychatter.command.unmute — 解除禁言。 /hc unmute <玩家名>
  • hychatter.command.chaton — 在服务器范围内开启 HyChatter。 /chaton
  • hychatter.command.chatoff — 关闭 HyChatter。 /chatoff
  • hychatter.command.ch.serverlist — 列出服务器上的所有自定义频道。 /hc channel serverlist

管理标签页(游戏内 UI):hychatter.moderation — 访问 /hc 中的管理标签页以查看和编辑管理设置(OP 权限也可访问)。

管理功能绕过(如果在 Moderation.json5 中启用):hychatter.moderation.bypasshychatter.moderation.bypass.*


配置要点

主配置HyChatter.json5):serverEnabledregionRadiusidleResetSecondsallowPlayerColors、提及选项(提示音、弹窗通知、高亮颜色)、私聊格式以及加入/离开选项(本地和转发格式及开关)。

服务器默认频道:defaultChatChannel 设置为 "GLOBAL""REGION""PARTY""OFF" / "NONE"

"defaultChatChannel": "REGION",
"defaultGlobalChat": false


PlaceholderAPI(可选)

HyChatter 可以在格式中使用 PlaceholderAPI。即使没有它,其他所有功能仍然正常工作。

  1. 安装 PlaceholderAPI 并将其 .jar 文件放入 /mods/ 目录。
  2. 启动服务器一次,以便创建 /mods/PlaceholderAPI/expansions/ 等文件夹。
  3. 对于 CurseForge 构建,请从 ecloud.placeholderapi.com 手动下载扩展并将其放入 expansions/ 文件夹。
  4. 重载 PlaceholderAPI:/papi reload
  5. 测试:/papi parse "TEST -> %your_placeholder%"
  6. 在 HyChatter 格式中使用 %placeholder%;HyChatter 自己的占位符保持为 {name}{message} 等形式。然后运行 /hc reload

占位符仅应用于服务器控制的格式字符串,不应用于玩家的原始输入,以避免滥用。