·
426 commits
to Forge-1.20.1
since this release
e33chat v2.4.0(= 2.3.17 全量内容正式发版;三端同步:Fabric / Forge / NeoForge)
2.3.16 回归修复 + UI 回退 + 新功能 + 性能优化(三端同步:Fabric / Forge / NeoForge)
Bug 修复:
- 气泡间距错位:2.3.16 渲染循环 off-by-one——间距先算 screenY 后加 contentY,与高度/跳转循环不一致,首对消息间距错位;已修正
- 头像全部消失:2.3.16 引入
hide_repeated_avatars时自比判定写反(先赋值再比较恒为 true),开启时连组内首条头像也被隐藏;已修正 - 上方向键历史跳级:mod 发送后不关闭聊天屏(原版关闭重开),历史游标只在开屏时初始化,发送新消息后游标停在旧位置,按上键会跳过刚发的消息;现在每次发送后重同步游标
- 头像锚点回退:2.3.16 把头像锚点从名字行顶改到气泡顶,实机观感不对,回退到旧锚点
UI 回退(2.3.16 风格改动按实机反馈回退,行为不变):
- 弹层族回退旧样式:设置/表情/常用语/搜索面板、@提及弹层、右键菜单全部回到纹理背景 + 直角外框
- 间距回退均匀:两档组内/组间间距回退为均匀
message_gap - 引用块圆角跟随配置:不再硬编码,跟随
bubble_corner_radius message_gap设置说明补上范围 0–12
新功能:
- bubble_size(客户端,5–14 px 默认 9):气泡大小可调——气泡内文字的目标高度(像素),气泡框/引用块/xN 角标等比缩放,名字行与头像保持原大小
- close_chat_on_send(客户端,默认关):发送消息后关闭聊天框(原版行为),默认关闭方便连发
- banner_opacity(客户端,0–100 默认 100):通知横幅背景不透明度可调(文本与头像保持清晰)
- media_auto_clean(服务端,默认开):服务器配置界面新增开关,自动清理超过 7 天的托管图片(开服时清理一次,之后每 6 小时最多一次)
性能:
- 历史存盘异步化:聊天历史的定期全量重写(10000 条上限下可达几十 MB)移到专用后台 IO 线程,渲染线程只保留毫秒级的列表快照;原子替换机制不变,写入中断时旧文件完好
注意:服务端配置网络包新增字段,客户端与服务端需同时升级,否则打开服务端配置界面会报错。
测试:Forge 315 / NeoForge 314 / Fabric 284 全绿
2.3.16 regression fixes + UI rollbacks + new features + a performance tweak (all loaders: Fabric / Forge / NeoForge)
Bug fixes:
- Message spacing off by one: the 2.3.16 render loop applied the gap after computing screenY but before contentY, out of sync with the layout/jump loops - first-pair spacing was wrong; fixed
- Avatars all hidden: the 2.3.16
hide_repeated_avatarscheck compared a message against itself (assigned before comparing, always true), hiding even the first avatar of a group when enabled; fixed - Up-arrow history skipping: the mod keeps the chat screen open after sending (vanilla closes and reopens it), and the history cursor was only initialized on open, so pressing Up after sending jumped over the freshly sent messages; the cursor now re-syncs after every send
- Avatar anchor rollback: 2.3.16 moved the avatar hit anchor from the name-row top to the bubble top; it felt off in-game, reverted to the old anchor
UI rollbacks (2.3.16 style changes reverted after hands-on feedback, behavior unchanged):
- Popup family back to the old look: settings/emoji/quick-chat/search panels, the @mention popup and context menus return to textured backgrounds with square outlines
- Uniform spacing: the two-tier in-group/section spacing is back to a uniform
message_gap - Quote-block radius follows config: no longer hardcoded, follows
bubble_corner_radius message_gapsetting description now documents the 0-12 range
New features:
- bubble_size (client, 5-14 px, default 9): adjustable bubble size - sets the target height of the bubble text in pixels; the bubble frame, quote block and xN badge scale proportionally while the sender-name row and avatar keep their size
- close_chat_on_send (client, default off): close the chat screen after sending a message (vanilla behaviour); off by default so you can send several messages in a row
- banner_opacity (client, 0-100, default 100): notification banner background opacity is now adjustable (text and avatar stay readable)
- media_auto_clean (server, default on): new toggle in the server config screen - automatically deletes server-hosted chat images older than 7 days (once on server start, then at most every 6 hours)
Performance:
- History saves off the render thread: the periodic full-history rewrite (tens of megabytes at the 10000-message cap) now runs on a dedicated background IO thread; the client thread only takes a millisecond-fast list snapshot. The atomic tmp+move scheme is unchanged - an interrupted write still leaves the previous file intact
Note: the server-config network packet gained a field; client and server must be upgraded together, or the server config screen will fail to open.
Tests: Forge 315 / NeoForge 314 / Fabric 284 all green