以聊天 APP 风格重铸原版聊天框
E33Chat 是一款聊天增强模组,把原版聊天 HUD 重做成聊天 APP 风格:气泡与头像、@ 提及、私聊侧边栏、搜索、表情与常用语、引用回复、通知横幅、本地聊天记录,并自带一套重做的设置界面。
- 安装要求
- 安装方法
- 快速开始
- 功能
- 聊天气泡与消息显示
- 私聊侧边栏
- 提及与通知
- 搜索表情与常用语
- 主题与设置界面
- UI 纹理自定义(资源包覆盖)
- 服务端加成
- 消息识别
- 兼容性
- 服务端消息格式模板
- 已知限制
- 隐私与数据
- 常见问题
- 故障排查
- 开发与构建
- 问题反馈
- 许可证
| 依赖 | 类型 | 说明 |
|---|---|---|
| Minecraft | 必需 | 1.20.1 (Forge) / 1.21.1 (NeoForge / Fabric) |
| Java | 必需 | 17+ (Forge 1.20.1) / 21+ (1.21.1) |
| Forge | 按平台 | 47.0.0+ (1.20.1) |
| NeoForge | 按平台 | 21.x (1.21.1) |
| Fabric Loader | 按平台 | 0.16.0+ (1.21.1) |
| Fabric API | 按平台 | 任意兼容版本 (1.21.1) |
| CustomSkinLoader | 可选 | 显示离线玩家头像 |
- 从 Releases 下载对应平台的 JAR
- 放入
.minecraft/mods/目录(与你的加载器匹配,勿混装多平台 JAR) - 启动游戏
- 打开聊天框,即可看到 E33Chat 面板
- 点击左下角 齿轮 → 菜单 → 设置,进入配置界面
- 在「聊天框」分类中调整面板宽度、气泡颜色、圆角、背景模糊
- 在「通知」分类中配置 @ 提示音、横幅提醒、系统消息横幅、私聊音效与总音量
- 💬 聊天气泡 — 消息带玩家头像和名字,自定义气泡颜色、文字颜色、圆角半径,深色 / 浅色主题,面板背景模糊 + 可调不透明度
- 🛠️ 配置界面 — 按 UI 元素分 5 标签页(聊天框 / HUD / 通知 / 侧边栏 / 高级),可折叠子分类树、行内预设色板、随圆角实时变化的气泡预览、快照式保存 / 退出、常驻滚动条 + 缓出平滑滚动
- 💾 聊天历史 — 按存档 / 服务器保存,重进恢复;纯文本日志格式(记事本直接可读);微信风格时间分隔线,跨天自动带日期;每 30 秒自动保存
- ✅ 防刷屏 — 重复消息自动合并计数(默认开启)
- @ 提及补全 — 输入
@弹出在线玩家列表,左键头像 @ta;被 @ / 引用回复时播放提示音 + 弹窗横幅 - 👥 私聊侧边栏 — 在线玩家列表,点名字开私聊;未读跳动红点;私聊消息独立横幅 + 提示音;公屏 / 私聊分栏
- 🔍 聊天搜索 — 实时匹配消息内容与发送者名,上下键跳转,支持中文
- 😊 表情 & 颜文字 — Emoji 面板 + 颜文字面板,点击在光标处插入
- 📌 常用语 — 保存常用短语,一键填充
- 📋 复制 & 引用回复 — 右键消息复制 / 引用回复
- 👤 头像交互 — 右键头像私聊 / 传送 / 屏蔽玩家,左键 @ta
- 🚫 屏蔽玩家 — 被屏蔽玩家的消息完全消失(原版聊天框 / 气泡 / 横幅 / 音效),屏蔽即刻生效并清除历史消息,重进服不恢复;名单可在设置 → 聊天框 → 屏蔽列表编辑(精确名字,逗号分隔)
- 🔔 通知横幅 — 屏幕顶部滑入弹窗,覆盖 @ / 引用 / 私聊 / 系统消息(系统横幅默认开启);音效总音量滑条,按类型独立开关
- 🗨️ 原版聊天框 — 不再用自定义 HUD 预览,原版聊天框正常渲染(上移避开 HUD 图标),ChatHeads / ChatAnimation 等改聊天框的 mod 直接生效
- 🌈 彩色消息 — 支持
&颜色 / 格式码,本地渲染上色,不修改发出的内容 - 📝 输入保留 — 关闭聊天框保留已输入文本
- 🧩 消息格式模板 — 服务端声明聊天格式,适配插件/NCR 改过的消息(
/e33chat gui配置)
- 每条消息渲染为气泡,带头像与玩家名
- 自己的气泡靠右、他人靠左,颜色各自可调
- 气泡圆角 0–10 可调(0 = 直角)
- 私聊显示为
<玩家名>[私聊] 内容,引用回复显示为<玩家名>[引用] 内容(黄色标签),名字保留服务器前缀装饰与团队颜色 - 原版聊天框在 HUD 上正常渲染(上移 8px 避开 E33Chat 图标)
- 在线玩家列表,点击发起私聊
- 未读私聊显示与侧边栏同款的跳动红点
- 搜索框过滤玩家
- 公屏 / 私聊分栏,公屏显示最近一条预览
- 隐藏名单:用通配符把 NPC / 机器人从列表剔除
- 输入
@弹在线玩家补全列表 - 左键玩家头像插入
@名字 - 被 @ 或引用时:通知横幅(滑入,圆角 + 投影)+ 提示音
- 私聊独立横幅与提示音
- 系统消息横幅默认开启(通知设置可关);通知横幅带「@ 我」快捷跳转按钮
- 可选「@ 必须带 @ 前缀」
- 高级:自我 @ / 自我引用 / 自我私聊通知开关(默认关,调试用)
- 音效总音量滑条统一调节所有提示音
- 聊天搜索:匹配消息内容 + 发送者名,实时高亮,上下键跳转
- 表情面板:emoji + 颜文字,点击在光标处插入
- 常用语面板:保存 / 管理短语,点击填充
- 深色 / 浅色两套主题
- 自定义气泡色、文字色、圆角、面板不透明度、背景模糊
- 设置界面按 UI 元素分 5 标签页(聊天框 / HUD / 通知 / 侧边栏 / 高级),页内可折叠子分类树
- 颜色项带行内预设色板 + hex 输入;「气泡与字体」页带随圆角实时变化的气泡预览
- 打开时快照、实时预览,底部「保存 / 退出」显示改动条数,ESC 弹确认放弃
- 标签页与选项列表常驻滚动条,缓出平滑滚动,可拖拽滑块 / 点轨道翻页
- 数值项可手输,音效音量用滑条
界面结构元素、图标与状态高亮全部走纹理渲染,默认纹理为 jar 内置 16×16 纯色 PNG(SimpleTexture 懒加载)。往资源包丢一张同路径 PNG 即可覆盖——颜色、图案、渐变全部由贴图决定,F3+T 即时生效。
路径约定:assets/e33chat/textures/gui/{dark|light}/<元素名>.png。默认贴图 16×16 纯色拉伸;hover/选中/关闭按钮等状态高亮同样纹理化(2.2.8 起可覆盖)。
| 元素 | 文件 | 渲染说明 |
|---|---|---|
| 面板背景/标题栏/底栏/侧边栏/分割线/输入框 | panel_bg.png 等 |
拉伸 |
| 右键菜单/弹窗/私聊横条/设置背景/内容区 | context_menu_bg.png 等 |
拉伸 |
| 滚动条轨道/滑块 | scrollbar_track.png scrollbar_thumb.png |
拉伸,走动态 alpha 通道 |
| 时间分隔符 | time_sep_bg.png |
拉伸,可覆盖底色 |
| 「已复制」提示 | toast_bg.png |
拉伸 × 动态透明度 |
| 常用语面板滚动条 | quick_scrollbar_track.png quick_scrollbar_thumb.png |
白色 × tint 主题色/hover 态 |
| HUD 强提示条 | strong_hint_bg.png |
拉伸,可覆盖底色 |
| 状态高亮(hover/选中/关闭) | hover_bg.png sidebar_selected.png sidebar_hover.png context_hover.png close_bg.png close_hover.png |
拉伸 |
| 图标(30 张) | settings.png copy.png 等 |
16×16 原尺寸,可覆盖 |
⚠️ 聊天气泡 / 引用回复块 / @提及横幅是 SDF 圆角(shader 数学渲染),任何圆角配置都平滑,但不可被资源包覆盖——它们不是纹理驱动(2.2.8 曾尝试 9-slice 纹理化,采样失配/放大问题多,已回退 SDF)。
服务端可不装。装上后额外激活:
- 引用回复的服务端挂起与同步
- 跨客户端 @ 提及同步(含中文名)
- 新玩家进服收到近期聊天历史的分发
use_tpa:头像传送改用/tpa- 消息格式模板:服务端声明聊天格式并同步给所有客户端(见下节)
聊天记录分发与改用
/tpa需在服务端配置文件手动启用;模板用/e33chat gui或命令配置(也可直接改服务端配置文件)
E33Chat 重做了聊天 HUD 的「谁说的」判定层,目标是把玩家消息和系统 / 广播消息分对。系统通道消息按以下顺序判定(命中即停):
- 分类器 — 已知翻译键(私聊 / 公屏 / 广播)确定性路由
- 回声抑制 — 自己发的消息回显不会重复显示
- 模板层(2.2.6+)— 服务端配置了模板时按声明精确解析,见 服务端消息格式模板
- 私聊关键词 — 系统消息里的私聊(悄悄 / whisper / 私聊等,须在首个冒号前)
- 点击事件 — 消息带「点击私聊」结构时按命令里的真名归属(昵称服天线)
- 装饰玩家行 — 名字锚点 + 分隔符结构解析(
Steve: hi、<Steve> hi、Steve >> hi、后缀称号、legacy§色码、裸中文短名) - 灰字兜底 — 以上都不确认时保守显示为系统灰字,绝不误归属
| 模组 / 插件 | 状态 |
|---|---|
| No Chat Reports 等禁用举报插件 | 自 2.1.0 起自动兼容,无需配置 |
| CustomSkinLoader | 安装后显示离线玩家头像 |
| ModernUI | 可点击文本的下划线 / 点击区域已做边界兼容 |
| Quark 等物品分享 | 系统消息中的物品图标可正常渲染 |
| ChatHeads, ChatAnimation | 默认生效(原版聊天框保留渲染,仅上移避开 HUD 图标) |
| 昵称插件 | 部分支持,见 常见问题 |
| 改聊天格式插件(EssentialsChat / CMI / DeluxeChat 等) | 服务端配置模板适配(含常见格式预设),见 [服务端消息格式模板](#服务端消息格式模板) |
插件(或 NCR 这类移除聊天举报的 Mod)常会改写聊天格式:加称号前缀、把冒号换成箭头、名字带颜色。E33Chat 的内置守卫只能认出「有玩家在说话」,读不出名字和内容。模板 = 服务端向客户端声明格式:告诉它装饰名、正文(私聊还有收发者)在什么位置,命中即精确解析、跳过守卫链。
服务端装 E33Chat → 玩家进服后,OP 输入 /e33chat gui 打开服务端配置界面,在「聊天模板」/「私聊模板」分类里添加模板,保存后自动同步给所有客户端(含新进服玩家)。
- 从消息生成:界面里点「从消息生成…」,粘贴一行带名字的真实聊天(如
[大佬]Steve: 你好),自动推断模板填入 - 预设一键加:预设区列出常见插件默认格式(EssentialsX / DeluxeChat / CMI 等),点
+即加 - 预览验证:预览框输入任意消息,立即显示解析出的名字与内容
- 手动填:照着聊天里看到的格式写,分隔符原样保留
| 占位符 | 含义 |
|---|---|
{display_name} |
玩家显示名(带称号装饰的完整名字) |
{name} |
玩家名(与 {display_name} 等价,二选一) |
{prefix} |
前缀装饰(称号等) |
{content} |
消息正文(必须恰好一个,可在任意位置——后缀式也支持) |
{sender} / {target} |
私聊发送者 / 接收者(含则视为私聊模板) |
{sep} |
自动匹配 >> / : / : / » / > 或纯空格——一条模板覆盖多种分隔符 |
/e33chat template list # 查看模板
/e33chat template set chat <模板> # 添加聊天模板
/e33chat template set whisper <模板> # 添加私聊模板
/e33chat template remove chat <序号> # 删除
/e33chat template clear chat # 清空(恢复守卫识别)
/e33chat template test chat <序号> <文本> # 离线试跑解析
模板列表留空 = 关闭模板,回落到守卫识别,一切照旧。
- 仅支持 Forge 1.20.1、NeoForge 1.21.1、Fabric 1.21.1
- 昵称与真名毫无关联、且插件既没挂「点击私聊」也没同步 Tab 名时,消息显示为系统灰字(模板也救不了——名字门槛与守卫共享同一解析源)
- 服务器把玩家消息转成与聊天同构的广播格式(如
系统>>Steve: xxx)时,纯客户端无法可靠识别 - 名字与内容之间纯空格、无任何分隔符的聊天格式,无法识别玩家
- 离线服同名玩家与系统前缀碰撞的极端情况无法区分
- NCR 加密聊天会显示密文
- 自定义字体可能影响气泡宽度、换行与点击区域
- 私聊命令格式由服务器决定,不保证
/msg、/tell、/w全部可用 - 不自动识别 Unicode 箭头分隔符(
→、⇒),放宽此规则会误判逗号广播 - 模板解析只作用于系统通道的消息(NCR / 旧路径插件 / 混合端把玩家消息降级后的通道);装饰性格式插件走签名通道时消息本就可靠,模板不参与。模板的已知边界:
- 装饰名本身含分隔符(如称号里带冒号)可能截断名字——换分隔符或调整模板规避
- 完全陌生的新玩家(从未在线见过)私聊时名字无法解析,回落守卫
{prefix}与{display_name}相邻无锚点时,前缀实际并入显示名(与守卫路径行为一致)
Warning
聊天记录以明文保存在本机 .minecraft/e33chat/history/ 目录。请勿在公共电脑或不受信任的环境中使用,避免敏感信息泄露。
- 聊天记录只存在本机,不会上传,也不会向作者或任何第三方发送数据
- 服务端模组仅用于消息转发(@ 同步 / 引用同步 / 历史同步),不收集客户端数据
- 含凭据的敏感命令(
/login/register等)自动跳过,不写入聊天记录 - 是否保存历史、是否启用同步,均可在配置中关闭
不必须。服务端安装后额外解锁:引用同步、@ 提及同步、新玩家聊天历史同步、头像传送改用 /tpa。
聊天面板左下角齿轮 → 菜单 → 设置。
客户端配置:config/e33chat-client.toml(Fabric 为 config/e33chat-client.json)| 服务端配置:saves/<世界名>/serverconfig/e33chat-server.toml(Fabric 为 .json)
.minecraft/e33chat/history/,按世界 / 服务器分目录。纯文本格式,每行 时间 发送者 内容,记事本直接可读;跨天的时间分隔线会自动带日期。
每 30 秒自动保存一次,正常退出(换世界 / 退服)时也保存。游戏崩溃 / 闪退最多丢最后 30 秒的记录;旧版 JSON 格式的记录会自动迁移。
在服务端配置中将 history_enabled 设为 false,重启服务器。
设置 → 聊天框 → 背景模糊 关掉。
客户端没把握它是玩家说的就保守归灰字(见 已知限制)。昵称插件 / 特殊广播格式是常见原因。
本 mod 在本地把 & 解析成颜色(需服务器颜色插件别人才看得到颜色),出站始终发原始 &、绝不发 §,所以不会因颜色码被踢。
部分支持。满足以下任一条件时消息能正确归属:
- 昵称上挂了「点击私聊」事件
- 同步更新了 Tab 列表名
昵称与真名毫无关联且以上两条通道都不存在时,消息显示为系统灰字。
用消息格式模板(2.2.6+):OP 输入 /e33chat gui,在「聊天模板」里用「从消息生成」粘贴一条真实聊天行,或从预设区一键加常见插件格式,保存即同步全服。模板列表留空则恢复守卫识别。
模板要求名字能解析到玩家(在线 / 见过的 / 你自己)。装饰名含分隔符可能截断名字(换分隔符规避);昵称完全不含真名且不在线时模板与守卫都无法识别,会显示灰字——这是已知边界。
可以,无需额外授权。
- 确认 Minecraft 版本与模组版本匹配
- 确认模组加载器已正确安装
- 确认没有混装多个平台的 JAR(如同时装 Forge 版和 Fabric 版)
- 备份
config/e33chat-client.toml,删除测试是否配置损坏 - 只保留 E33Chat 排查模组冲突
- 检查是否使用了自定义字体或资源包
- 查看
.minecraft/logs/latest.log中[e33chat]相关错误 - 提交 issue 时附上版本号、模组列表、
latest.log、截图和复现步骤
git clone https://github.com/E33EPUS/E33Chat.git
cd E33Chat
# Forge 1.20.1(默认分支)
./gradlew build
# NeoForge 1.21.1
git checkout Neoforge-1.21.1
./gradlew build
# Fabric 1.21.1
git checkout Fabric-1.21.1
./gradlew build- Forge 1.20.1:Java 17+,支持
--offline - NeoForge 1.21.1 / Fabric 1.21.1:Java 21+
- 运行测试:
./gradlew cleanTest test --offline -PrunTests
到 Issues 提交,尽量提供:
- E33Chat 版本 + Minecraft 版本 + 模组加载器版本
- 其他聊天相关模组列表
- GUI Scale + 自定义字体 / 资源包情况
.minecraft/logs/latest.log- 截图或视频 + 稳定的复现步骤
Copyright © 2026 E33EPUS