QueQiao

QueQiao V2 protocol bridge plugin supporting forward/reverse WebSocket connections for message exchange between Minecraft and external systems

information
management

Installation command

!!MCDR plugin install queqiao

Synced at

...

Last update

...

Latest version

Total downloads

2

Back to catalogue

QueQiao MCDR

鹊桥 V2 协议对接 MCDReforged 插件
A MCDReforged plugin bridging the QueQiao V2 protocol

Version MCDR Python License

基于 MCDReforged 的鹊桥 V2 协议端,支持**正向 WebSocket(客户端)反向 WebSocket(服务端)**两种连接方式,实现 Minecraft 服务端与外部系统(如 NoneBot / 鹊桥服务端)的实时消息互通。

A QueQiao V2 protocol endpoint based on MCDReforged, supporting both forward WebSocket (client) and reverse WebSocket (server) connection modes for real-time message exchange between a Minecraft server and external systems (e.g. NoneBot / QueQiao server).

✨ 功能特性

连接能力

  • 🔌 双模式 WebSocket:客户端模式主动连接鹊桥服务端;服务端模式被动等待鹊桥客户端接入
  • 🔁 自动重连(客户端模式):可配置重连间隔与最大重试次数
  • 🔥 热重载!!queqiao reload 重载配置并复用旧连接,无需重启服务器

API 处理(鹊桥 → MCDR)

API说明
broadcast广播消息到游戏
send_private_msg发送私聊消息给指定玩家
send_title发送标题/副标题(可配置淡入/停留/淡出时长)
send_actionbar发送 ActionBar 消息
send_rcon_command执行 RCON 命令并返回结果
get_status查询服务器状态(CPU/内存/玩家/MOTD 等)

游戏事件转发(MCDR → 鹊桥)

事件来源
玩家加入 / 退出MCDR 内置事件
玩家聊天 / 命令MCDR USER_INFO 事件
玩家死亡MoreGameEvents PlayerDeathEvent
玩家成就MoreGameEvents PlayerAdvancementEvent

📦 安装

方式一:直接下载 .mcdr 包

Releases 下载 queqiao-vX.X.X.mcdr,放入 MCDR 的 plugins/ 目录即可。

方式二:源码安装

git clone https://github.com/Minecraft-UniBot/QueQiao.MCDReforged.git
cd MCDReforged
uv sync

将整个目录作为 Directory Plugin 放入 MCDR 插件目录,或自行打包:

uv run python -m mcdreforged pack

🔧 配置

首次加载会在 config/queqiao/config.json 生成默认配置:

{
  "server_name": "MCDR",
  "access_token": "",
  "client_origin": "mcdr",
  "minecraft": {
    "host": "",
    "port": 0
  },
  "client": {
    "enable": false,
    "url": "ws://127.0.0.1:8080/minecraft/ws",
    "reconnect_interval": 5,
    "reconnect_max_times": 0
  },
  "server": {
    "enable": false,
    "host": "0.0.0.0",
    "port": 8080
  },
  "log_events": true
}

字段说明

字段说明
server_name本服务器名称,用于 Header x-self-name 与事件标识
access_token鉴权 Token,留空则不发送 Authorization
client_origin客户端来源标识,默认 mcdr
minecraft.host / minecraft.portMC 服务器地址,用于 Server List Ping。留空则自动从 MCDR 解析,解析不到时回退 127.0.0.1:25565
client.enable启用客户端模式
client.url鹊桥服务端 WebSocket 地址
client.reconnect_interval重连间隔(秒)
client.reconnect_max_times最大重连次数,0 表示无限重试
server.enable启用服务端模式
server.host / server.portWebSocket 服务端监听地址
log_events是否在日志中打印事件转发记录

客户端模式

client.enable 设为 true,填写鹊桥服务端的 WebSocket 地址。需与鹊桥 config.yml 中的 websocket_server 配置对应。

服务端模式

server.enable 设为 true,插件将启动 WebSocket 服务端。需在鹊桥 config.ymlwebsocket_client.url_list 中填写本插件的监听地址。

🎮 命令

命令权限说明
!!queqiao2显示帮助
!!queqiao status2查看连接状态(模式、玩家、CPU、内存、MOTD 等)
!!queqiao reload2重载配置并重新连接

📋 依赖

运行环境

  • MCDReforged >= 2.15.0
  • Python >= 3.12

Python 包

  • websockets >= 16.0
  • PyYAML >= 6.0
  • psutil >= 5.9

MCDR 插件依赖

插件用途必需
MoreGameEvents玩家死亡、成就事件
Minecraft Data API玩家坐标、生命值、经验等级
online_player_api在线玩家列表⚠️ 可选(缺失时回退 MCDR 内置接口)

📁 项目结构

MCDReforged/
├── queqiao/
│   ├── __init__.py        # 插件入口、命令注册、生命周期管理
│   ├── config.py          # 配置加载与默认配置
│   ├── websocket.py       # WebSocket 连接管理(客户端/服务端)
│   ├── handler.py         # 鹊桥 API 请求处理(WS → MCDR)
│   ├── events.py          # 游戏事件转发(MCDR → WS)
│   ├── schema.py          # QueQiao V2 协议事件结构构建
│   ├── status.py          # 服务器状态采集(CPU/内存/玩家)
│   └── server_ping.py     # MC Server List Ping 协议实现
├── lang/                  # 多语言文件
│   ├── en_us.json
│   └── zh_cn.json
├── mcdreforged.plugin.json  # MCDR 插件元数据
├── pyproject.toml           # Python 项目配置
└── requirements.txt         # 依赖声明

🛠️ 开发

本项目使用 uv 作为包管理器:

# 安装依赖
uv sync

# 打包 .mcdr
uv run python -m mcdreforged pack

# 运行测试 / 调试
uv run python -c "import queqiao"

📚 对接

  • UniBot — Minecraft 跨平台机器人,本插件为其 MCDR 端实现
  • nonebot-adapter-minecraft — NoneBot 的 Minecraft 适配器,通过鹊桥协议与本插件互通
  • 鹊桥项目 — 鹊桥协议官方实现

📄 License

MIT

README source: README.md