Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 

Repository files navigation

ChatLink

一个让玩家创建聊天域并通过外部服务器进行消息转发的 Minecraft Fabric 客户端 Mod。

Minecraft 原版聊天依赖加入的 Minecraft 服务器,玩家脱离服务器后无法与朋友持续聊天。ChatLink 提供一个不依赖 Minecraft 服务器的聊天域系统,让玩家通过外部聊天服务器进行消息转发,但聊天体验仍在游戏内。

使用说明

安装

  1. 下载 最新版本 的 chatlink-*.jar
  2. 放入 Minecraft 的 mods 文件夹
  3. 启动游戏

按键绑定

按键 功能
右 Alt(默认) 打开 GUI

可在「选项 → 按键控制 → 按键绑定」中自定义。

指令

所有指令以 /chatlink 开头:

指令 说明
connect <IP:Port> 连接聊天服务器
disconnect 断开连接
status 查看连接状态、服务器地址、已加入的域
name <备注名> 设置服务器备注名
domains 列出公开域列表
create <名称> [public|private] [show|hide] 创建聊天域
join <域ID> 加入指定域
leave 离开活跃域
delete <域ID> 删除指定域(仅创建者)
gui 打开 GUI 界面
chat 切换域聊天模式
switch <域ID> 切换活跃域
msg <玩家名> <消息> 发送私聊消息
role <域ID> <玩家名> <角色> 设置域内角色(CREATOR/ADMIN/MEMBER)
kick <域ID> <玩家名> 踢出域内玩家
mute <域ID> <玩家名> [秒数] 禁言玩家(默认 300 秒)
unmute <域ID> <玩家名> 解除禁言
desc set <域ID> <描述> 设置域描述
desc show <域ID> 查看域描述

聊天

使用 /chatlink chat 切换域聊天模式。开启后,所有在聊天栏发送的消息将发送到活跃域而非 Minecraft 服务器。

功能特性

  • 聊天域系统 — 创建公开/私密聊天域,通过分享域 ID 邀请其他玩家加入
  • 多域同时在线 — 可同时加入多个域,自由切换活跃域,不同域消息互不干扰
  • 私聊 — 向指定玩家发送私密消息,不经过任何域
  • 域内角色 — 创建者/管理员/成员三级角色,支持禁言和踢人
  • 域描述 — 为域设置描述信息,方便玩家了解域主题
  • 消息历史 — 加入域时自动推送最近 20 条消息,快速了解上下文
  • 未读提醒 — 非活跃域收到消息时显示未读计数,切换域时自动清零
  • 外部服务器连接 — TCP 长连接 + JSON 协议,断线自动重连(最多 3 次,间隔 5 秒)
  • 用户认证 — 使用 Minecraft UUID + 玩家名自动认证
  • Discord 风格 GUI — 深色毛玻璃面板、三栏布局、流畅动画、圆角设计
  • Windows 系统通知 — 托盘图标 + 系统通知气泡,非活跃域消息实时推送
  • HUD 未读角标 — 游戏画面右上角显示未读消息计数,一目了然
  • 玩家头像 — 动态生成首字母彩色头像,玩家角色彩色徽章
  • 右键菜单 — 右键玩家名弹出操作菜单(私聊、@、禁言、踢出)
  • 通知配置 — 面板位置、系统通知、消息音效均可自定义
  • 国际化 — 支持中文(简体)和英文,根据游戏语言自动切换
  • 音效通知 — 连接成功和创建域成功时播放提示音

架构概览

src/main/java/com/xingdu/chatlink/
├── ChatLinkMod.java                    # Mod 主入口
├── mixin/
│   └── ChatHudMixin.java              # 聊天 HUD Mixin
└── client/
    ├── ChatLinkClient.java            # 客户端入口
    ├── chat/
    │   ├── ChatMessageHandler.java    # 域聊天模式切换
    │   └── UnreadManager.java         # 未读消息管理
    ├── command/
    │   └── ModCommands.java           # 指令系统(19 个子命令)
    ├── config/
    │   └── ModConfig.java             # 配置持久化(多域支持)
    ├── gui/
    │   ├── ChatLinkScreen.java        # 基类(毛玻璃、动画)
    │   ├── ConnectScreen.java         # 连接服务器界面
    │   ├── MainScreen.java            # 主界面(三栏 Discord 风格)
    │   ├── DomainListScreen.java      # 域列表界面
    │   ├── CreateDomainScreen.java    # 创建域界面
    │   ├── SettingsScreen.java        # 设置界面
    │   ├── theme/
    │   │   └── DiscordTheme.java     # Discord 风格颜色常量
    │   ├── panels/
    │   │   ├── ServerListPanel.java   # 左侧服务器栏
    │   │   ├── DomainListPanel.java   # 中间域列表栏
    │   │   └── ChatPanel.java         # 右侧聊天面板
    │   └── widgets/
    │       ├── PlayerAvatar.java      # 玩家头像
    │       └── ContextMenu.java       # 右键菜单
    ├── keybind/
    │   └── ModKeyBindings.java        # 按键绑定(右 Alt)
    ├── network/
    │   ├── ChatServerClient.java      # TCP 网络客户端
    │   ├── MessageProtocol.java       # 消息协议构建
    │   └── NetworkEventHandler.java   # 网络事件处理
    ├── notification/
    │   ├── NotificationManager.java   # 统一通知分发
    │   ├── TrayManager.java           # Windows 托盘图标
    │   └── WindowsNotification.java   # 系统通知
    ├── mixin/
    │   ├── ChatHudMixin.java          # 聊天 HUD Mixin
    │   └── InGameHudMixin.java        # HUD 角标 Mixin
    └── sound/
        └── SoundManager.java          # 音效管理

通信协议

客户端与服务器通过 TCP 长连接通信,消息格式为 JSON(以 \n 分隔)。

消息格式

{"type": "<类型>", "data": { ... }}

消息类型

类型 方向 说明
auth 客户端→服务端 认证(UUID + 用户名)
heartbeat 双向 心跳(30s 间隔)
list_domains 客户端→服务端 查询公开域列表
create_domain 客户端→服务端 创建域(自动加入)
join_domain 客户端→服务端 加入域
leave_domain 客户端→服务端 离开域
chat_message 双向 域内聊天消息广播
delete_domain 客户端→服务端 删除域(仅创建者)
player_joined 服务端推送 玩家加入域通知
player_left 服务端推送 玩家离开域通知
private_message 双向 私聊消息
private_message_sent 服务端推送 私聊发送确认
message_history 服务端推送 消息历史
set_role 客户端→服务端 设置角色
kick_player 客户端→服务端 踢出玩家
mute_player 客户端→服务端 禁言玩家
unmute_player 客户端→服务端 解除禁言
set_description 客户端→服务端 设置域描述
domain_description 服务端推送 域描述变更通知
domain_joined_list 服务端推送 已加入域列表

连接流程

TCP 连接 → 认证 → 心跳循环(30s)→ 获取域列表/已加入域列表 → 正常通信

超时配置: 连接超时 5s,心跳超时 60s,断线自动重连 3 次(间隔 5s)

详细 JSON 格式见 docs/protocol-spec.md。

构建

git clone https://github.com/AlsoLate/chatlink.git
cd chatlink
./gradlew build

编译产物在 build/libs/chatlink-0.2.0+mc1.21.11.jar。

反馈

QQ 群:950162690

许可证

MIT License

作者

星渡

About

ChatLink - 一个让玩家创建聊天域并通过外部服务器进行消息转发的 Minecraft Fabric 客户端 Mod

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors