Skip to content
/ LinkMC Public

一个模块化的 Minecraft ↔ QQ 双向通信中枢,基于可配置的事件协议与 API 协议,实现跨平台消息转发、事件映射与功能扩展,支持任意符合规范的 Minecraft 插件与 OneBot 协议实现。

License

Notifications You must be signed in to change notification settings

ruomox/LinkMC

Repository files navigation

LinkMC

🌍 English | 简体中文

一个基于 Python 的高度模块化、可扩展的 QQ 群与 Minecraft 服务器双向互通中枢。

本项目采用清晰的分层架构设计,旨在提供稳定基础互通功能的同时,为未来接入大型语言模型 (LLM) 智能体、图像处理等复杂功能预留接口。

✨ 特性 (Current Features)

目前项目处于 第一阶段:基础互通与事件补齐

基础架构

  • 模块化设计:网关层负责连接,协议层负责数据翻译,业务层负责逻辑分发,高度解耦。
  • 健壮连接:MC 客户端网关内置自动断线重连机制,确保服务稳定性。
  • 配置中心化:所有连接信息、开关、协议定义均在一个配置文件中管理。

QQ → MC 方向

  • 基础群聊文本消息转发到 MC 服务器广播。
  • 自动过滤非目标群消息、富文本 (CQ码) 和链接,保持游戏内聊天屏整洁。

MC → QQ 方向 (基于鹊桥 QueQiao 插件)

  • 全事件支持:通过防腐层协议标准化 MC 事件数据。
  • 可配置转发:可在 config.py 中独立开关以下事件的通知:
    • 玩家聊天 (PlayerChatEvent)
    • 玩家加入游戏 (PlayerJoinEvent)
    • 玩家退出游戏 (PlayerQuitEvent)
    • 玩家死亡播报 (PlayerDeathEvent) - 已本地化为中文提示
    • 玩家获得成就 (PlayerAchievementEvent)

🏗️ 架构概览

本项目采用了经典的分层架构模式:

flowchart TB

%% =========================
%% 第一行:左上 + 右上
%% =========================
subgraph ROW_TOP[" "]
    direction LR

    subgraph Infrastructure["基础设施层"]
        direction TB
        Main_Node["main.py\n启动器 / 注册器"]
        Config_Node["config.py\n配置中心 / 功能开关"]
    end

    subgraph Protocols["协议与防腐层"]
        direction TB
        MC_Proto_Recv_Node["eventProtocol.py\nMC 接收标准化"]
        MC_Proto_Send_Node["MC 发送协议定义\n(in config)"]
    end
end

%% =========================
%% 中央:业务逻辑
%% =========================
Mapper_Node["messageMapper.py\n消息映射 / 分发中枢"]

%% =========================
%% 第三行:左下 + 右下
%% =========================
subgraph ROW_BOTTOM[" "]
    direction LR

    subgraph Gateways["网关层"]
        direction TB
        QQ_Gateway_Node["server4NapCat.py\nQQ 网关\n(WebSocket Server)"]
        MC_Gateway_Node["client4McPlugin.py\nMC 网关\n(WebSocket Client)"]
    end

    subgraph External["外部环境"]
        direction TB
        QQ_Node["QQ / IM 平台\n(OneBot 协议)"]
        MC_Node["Minecraft Server\n(插件 / Mod)"]
    end
end

%% =========================
%% 连接关系(逻辑不变)
%% =========================
Main_Node --> Config_Node
Main_Node --> QQ_Gateway_Node
Main_Node --> MC_Gateway_Node
Main_Node -- 注册回调 --> Mapper_Node

QQ_Gateway_Node <-- WebSocket --> QQ_Node
MC_Gateway_Node <-- WebSocket --> MC_Node

QQ_Gateway_Node -- 原始数据 --> Mapper_Node
MC_Gateway_Node -- 原始数据 --> MC_Proto_Recv_Node
MC_Proto_Recv_Node -- 标准化事件 --> Mapper_Node

Mapper_Node -- 调用发送接口 --> QQ_Gateway_Node
Mapper_Node -- 读取并发送 --> MC_Proto_Send_Node
MC_Proto_Send_Node --> MC_Gateway_Node

%% =========================
%% 样式
%% =========================
style Mapper_Node fill:#f9f,stroke:#333,stroke-width:2px,color:#000
Loading
  • 基础设施层:负责程序的启动、任务调度和配置管理。
  • 网关层:处理底层的 WebSocket 连接、鉴权和重连,不涉及业务逻辑。
  • 协议与防腐层:抹平不同 MC 服务端版本的数据差异,向上层提供标准化的数据接口。
  • 业务逻辑层:核心中枢,负责事件的过滤、加工、翻译和转发决策。

📋 前置要求

运行本项目需要以下环境:

  1. Python 3.10+ (推荐使用较新版本以获得更好的异步性能)
  2. Minecraft 服务器
    • 已安装 鹊桥 (QueQiao) 插件 (或其他兼容该协议的 Websocket 插件)。
  3. QQ 机器人环境
    • 运行 NapCat 或其他兼容 OneBot 11 协议的框架。

🚀 快速开始

1. 安装依赖

克隆仓库后,安装所需的 Python 库:

pip install websockets

2. 配置文件

复制或直接修改根目录下的 config.py 文件,填入你的实际环境信息:

# config.py

# --- 转发配置 ---
TARGET_QQ_GROUP_ID = 123456789  # 你的目标 QQ 群号

# --- NapCat 连接配置 (Python作为服务端) ---
NAPCAT_WS_PORT = 6100           # NapCat 配置的正向 WS 端口
NAPCAT_WS_TOKEN = "your_token"  # NapCat 配置的 Token

# --- McPlugin 连接配置 (Python作为客户端) ---
McPlugin_WS_URI = "ws://127.0.0.1:6101" # 鹊桥插件的 WS 地址
McPlugin_WS_TOKEN = "your_token"        # 鹊桥插件配置的 Token

# --- MC 事件转发开关 (按需开启) ---
ENABLE_MC_CHAT_FORWARD = True
ENABLE_MC_JOIN_NOTICE = True
# ... 其他开关

3. 启动中枢

确认 QQ 侧和 MC 侧的服务均已启动后,运行主程序:

python main.py

看到类似以下的日志即表示连接成功:

[MainBridge] INFO: -> 业务回调注册完毕,中枢神经已连接。
[MainBridge] INFO: ✅ 所有底层子模块启动完毕,双向转发中枢开始运行。
[NapCatServer] INFO: [连接管理] NapCat 已连接: 127.0.0.1:xxxxx
[McPluginClient] INFO: [连接成功] 已连接到 MC 插件! 双向通道建立。

🗺️ 开发路线图 (Roadmap)

本项目将按阶段进行迭代开发:

  • 阶段一:基础互通 (已完成)

    • 搭建模块化架构框架。
    • 实现基础的双向文本通信。
    • 补齐 MC 侧主要事件 (加入、退出、死亡、成就) 并实现配置化开关。
  • 阶段二:QQ 侧功能增强

    • 实现 QQ 富文本解析(处理 @、回复引用)。
    • 表情符号自动替换为颜文字。
    • 处理拍一拍等通知事件。
  • 阶段三:MC 侧接口补齐

    • 封装并启用 RCON 命令执行接口。
    • 封装 Title (标题)、Actionbar (状态栏) 消息接口。
    • 实现 QQ 群到 MC 的私聊功能。
  • 阶段四:多媒体交互

    • 实现 QQ 图片转 Minecraft 地图画并在游戏内显示。
    • 探索 MC 游戏内截图反向发送到 QQ 群。
  • 阶段五:智能体集成

    • 接入 LLM API。
    • 实现游戏内的智能 AI 玩家/助手,支持上下文对话。

📄 许可证

MPL-2.0

About

一个模块化的 Minecraft ↔ QQ 双向通信中枢,基于可配置的事件协议与 API 协议,实现跨平台消息转发、事件映射与功能扩展,支持任意符合规范的 Minecraft 插件与 OneBot 协议实现。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages