为什么我们的聊天更好
常见的做法是用好几个插件拼出完整的聊天:格式插件 + 物品展示插件 + 跨服插件 + 禁言插件。每个都很好,但它们是各自设计的,跨服时最容易出问题。 云聊天从第一行代码起就按「跨服」来设计 ,下面是同样的需求在两种做法下的差别。
一张表看差异
| 需求 | 常见的拼装方案 | CloudChat 云聊天 |
|---|---|---|
| 要装几个插件 | 格式、展示、跨服、禁言各一个,版本要彼此兼容 | 一个(跨服时代理端再放一个,BungeeCord / Velocity 同一个 jar) |
| 跨服公屏 | 通常需要 MySQL 或 Redis 做中转 | 只用代理端的插件消息,不需要任何数据库 |
| 跨服物品展示 | 展示数据只在发送者的分流,别的服点开常常是空的或过期 | 展示随消息送到每个分流,别的服点开就是完整内容(附魔、潜影盒、自定义物品) |
| 展示整个背包 | 少见;有的话内容大时容易被截断 | [inv] 含装备与副手;内容超过原版 32 KB 上限时自动分片再重组,实测 36 格大物品背包完整显示 |
| 物品悬停 | 悬停内容由发送者的分流决定 | 每个分流用自己读到的物品重建悬停说明;旧版本分流的物品送到新版本分流时会自动升级数据 |
| 跨服私聊 | 需要另一个插件,或只能在同一个分流私聊 | /msg /r 跨服,不在线马上提示;管理员可监听全服私聊 |
| 禁言 | 只在下指令的那个分流有效,或要靠数据库同步 | 全服立即生效;当时没开机的分流,玩家进服时由代理端带过去 |
| 玩家输入安全 | 视插件而定,有的允许玩家写点击 / 悬停 标签 | 玩家只能用颜色、装饰、渐变;客户端伪造的跨服消息被代理端丢弃 |
| 中文 | 多为英文配置,需要自己翻译 | 配置与提示全部中文 |
| 价格 | 部分功能需要付费插件 | 永久免费,资源中心登录即领 |
关于对比
「常见的拼装方案」指的是用多个独立插件分别实现格式、展示、跨服、禁言的组合,不特指某个插件;具体表现依你选用的插件与版本而定。
实测,不是宣传
2.0 发布前,我们用 BungeeCord + 两台子服 + 自动化机器人,把正式发布的(混淆后的)jar 跑了一遍:
| 项目 | 结果 |
|---|---|
跨服公屏、[i] [inv] [ender] 链接与名称 | ✅ |
在另一个分流打开 [i]、[inv]、[ender],内容正确且拿不走 | ✅ |
| 36 格、每格带超长随机名称的背包(超过 32 KB,需要分片) | ✅ 36/36 |
跨服私聊、/r 回复、不在线提示 | ✅ |
| 本服频道不外流、管理频道只有有权限的人看得到 | ✅ |
| 跨服禁言、解禁;分流关机期间下的禁言,开机后仍生效 | ✅ |
| @提及的音效与动作栏提示(跨服) | ✅ |
| 客户端伪造跨服封包 | ✅ 被代理端丢弃 |
什么情况下最适合云聊天
- 有两个以上分流:不想为了聊天多维护一个数据库。
- 玩家爱晒装备:
[inv]一打,全服都能看。 - 从旧版聊天插件换过来:第一次启动自动导入
group.yml聊天格式与quiz.yml抢答题库。 - 想要中文:配置文件逐项中文注释,提示消息全部可改。
目前不包含的功能
- 聊天记录写入数据库 / 网页查看(后台日志会记录每一条聊天)
- 屏蔽某个玩家(/ignore)
- Folia 服务端