QueQiao

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

API

Installation command

!!MCDR plugin install queqiao

Synced at

...

Last update

...

Latest version

Total downloads

31

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