Skip to content

Repository files navigation

简体中文 | English

E33Chat

以聊天 APP 风格重铸原版聊天框

MC Loader Side Java Version License

E33Chat 是一款聊天增强模组,把原版聊天 HUD 重做成聊天 APP 风格:气泡与头像、@ 提及、私聊侧边栏、搜索、表情与常用语、引用回复、通知横幅、本地聊天记录,并自带一套重做的设置界面。


目录


安装要求

依赖 类型 说明
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 可选 显示离线玩家头像

安装方法

  1. Releases 下载对应平台的 JAR
  2. 放入 .minecraft/mods/ 目录(与你的加载器匹配,勿混装多平台 JAR)
  3. 启动游戏

快速开始

  1. 打开聊天框,即可看到 E33Chat 面板
  2. 点击左下角 齿轮 → 菜单 → 设置,进入配置界面
  3. 在「聊天框」分类中调整面板宽度、气泡颜色、圆角、背景模糊
  4. 在「通知」分类中配置 @ 提示音、横幅提醒、系统消息横幅、私聊音效与总音量

功能

  • 💬 聊天气泡 — 消息带玩家头像和名字,自定义气泡颜色、文字颜色、圆角半径,深色 / 浅色主题,面板背景模糊 + 可调不透明度
  • 🛠️ 配置界面 — 按 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 弹确认放弃
  • 标签页与选项列表常驻滚动条,缓出平滑滚动,可拖拽滑块 / 点轨道翻页
  • 数值项可手输,音效音量用滑条

UI 纹理自定义(资源包覆盖)

界面结构元素、图标与状态高亮全部走纹理渲染,默认纹理为 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 的「谁说的」判定层,目标是把玩家消息和系统 / 广播消息分对。系统通道消息按以下顺序判定(命中即停):

  1. 分类器 — 已知翻译键(私聊 / 公屏 / 广播)确定性路由
  2. 回声抑制 — 自己发的消息回显不会重复显示
  3. 模板层(2.2.6+)— 服务端配置了模板时按声明精确解析,见 服务端消息格式模板
  4. 私聊关键词 — 系统消息里的私聊(悄悄 / whisper / 私聊等,须在首个冒号前)
  5. 点击事件 — 消息带「点击私聊」结构时按命令里的真名归属(昵称服天线)
  6. 装饰玩家行 — 名字锚点 + 分隔符结构解析(Steve: hi<Steve> hiSteve >> hi、后缀称号、legacy § 色码、裸中文短名)
  7. 灰字兜底 — 以上都不确认时保守显示为系统灰字,绝不误归属

兼容性

模组 / 插件 状态
No Chat Reports 等禁用举报插件 自 2.1.0 起自动兼容,无需配置
CustomSkinLoader 安装后显示离线玩家头像
ModernUI 可点击文本的下划线 / 点击区域已做边界兼容
Quark 等物品分享 系统消息中的物品图标可正常渲染
ChatHeads, ChatAnimation 默认生效(原版聊天框保留渲染,仅上移避开 HUD 图标)
昵称插件 部分支持,见 常见问题
改聊天格式插件(EssentialsChat / CMI / DeluxeChat 等) 服务端配置模板适配(含常见格式预设),见 [服务端消息格式模板](#服务端消息格式模板)

服务端消息格式模板

插件(或 NCR 这类移除聊天举报的 Mod)常会改写聊天格式:加称号前缀、把冒号换成箭头、名字带颜色。E33Chat 的内置守卫只能认出「有玩家在说话」,读不出名字和内容。模板 = 服务端向客户端声明格式:告诉它装饰名、正文(私聊还有收发者)在什么位置,命中即精确解析、跳过守卫链。

启用

服务端装 E33Chat → 玩家进服后,OP 输入 /e33chat gui 打开服务端配置界面,在「聊天模板」/「私聊模板」分类里添加模板,保存后自动同步给所有客户端(含新进服玩家)。

快速上手

  1. 从消息生成:界面里点「从消息生成…」,粘贴一行带名字的真实聊天(如 [大佬]Steve: 你好),自动推断模板填入
  2. 预设一键加:预设区列出常见插件默认格式(EssentialsX / DeluxeChat / CMI 等),点 + 即加
  3. 预览验证:预览框输入任意消息,立即显示解析出的名字与内容
  4. 手动填:照着聊天里看到的格式写,分隔符原样保留

字段占位符

占位符 含义
{display_name} 玩家显示名(带称号装饰的完整名字)
{name} 玩家名(与 {display_name} 等价,二选一)
{prefix} 前缀装饰(称号等)
{content} 消息正文(必须恰好一个,可在任意位置——后缀式也支持)
{sender} / {target} 私聊发送者 / 接收者(含则视为私聊模板)
{sep} 自动匹配 >> / : / / » / > 或纯空格——一条模板覆盖多种分隔符

命令(OP)

/e33chat template list                      # 查看模板
/e33chat template set chat <模板>           # 添加聊天模板
/e33chat template set whisper <模板>        # 添加私聊模板
/e33chat template remove chat <序号>        # 删除
/e33chat template clear chat                # 清空(恢复守卫识别)
/e33chat template test chat <序号> <文本>    # 离线试跑解析

模板列表留空 = 关闭模板,回落到守卫识别,一切照旧。


已知限制

  1. 仅支持 Forge 1.20.1、NeoForge 1.21.1、Fabric 1.21.1
  2. 昵称与真名毫无关联、且插件既没挂「点击私聊」也没同步 Tab 名时,消息显示为系统灰字(模板也救不了——名字门槛与守卫共享同一解析源)
  3. 服务器把玩家消息转成与聊天同构的广播格式(如 系统>>Steve: xxx)时,纯客户端无法可靠识别
  4. 名字与内容之间纯空格、无任何分隔符的聊天格式,无法识别玩家
  5. 离线服同名玩家与系统前缀碰撞的极端情况无法区分
  6. NCR 加密聊天会显示密文
  7. 自定义字体可能影响气泡宽度、换行与点击区域
  8. 私聊命令格式由服务器决定,不保证 /msg/tell/w 全部可用
  9. 不自动识别 Unicode 箭头分隔符(),放宽此规则会误判逗号广播
  10. 模板解析只作用于系统通道的消息(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 列表名

昵称与真名毫无关联且以上两条通道都不存在时,消息显示为系统灰字。

服务器改了聊天格式(插件/NCR),消息对不上?

消息格式模板(2.2.6+):OP 输入 /e33chat gui,在「聊天模板」里用「从消息生成」粘贴一条真实聊天行,或从预设区一键加常见插件格式,保存即同步全服。模板列表留空则恢复守卫识别。

模板也匹配不上怎么办?

模板要求名字能解析到玩家(在线 / 见过的 / 你自己)。装饰名含分隔符可能截断名字(换分隔符规避);昵称完全不含真名且不在线时模板与守卫都无法识别,会显示灰字——这是已知边界。

可以放进整合包吗?

可以,无需额外授权。


故障排查

  1. 确认 Minecraft 版本与模组版本匹配
  2. 确认模组加载器已正确安装
  3. 确认没有混装多个平台的 JAR(如同时装 Forge 版和 Fabric 版)
  4. 备份 config/e33chat-client.toml,删除测试是否配置损坏
  5. 只保留 E33Chat 排查模组冲突
  6. 检查是否使用了自定义字体或资源包
  7. 查看 .minecraft/logs/latest.log[e33chat] 相关错误
  8. 提交 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
  • 截图或视频 + 稳定的复现步骤

许可证

MIT License

Copyright © 2026 E33EPUS

About

a minecraft mod

Resources

Stars

20 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages