项目概览
网易我的世界基岩版机器人客户端(Vector),基于 C++17 与 CMake 构建, 内嵌 Python 3.12.2 运行插件(已从 Python 2.7 完成迁移)。
主要开发/运行平台为 Windows (MSVC);Linux x86_64 / Android (Termux) 曾支持, 但 Py3 迁移后尚未同步(见构建 · 其他平台)。 所有第三方 C/C++ 依赖均随仓库提供并从源码编译,构建时无需外部包管理器、无需联网; 唯一需要本机预装的是 Python 3.12 的开发组件(头文件 + python312.lib)。
主要特性
- Minecraft 基岩版协议客户端:登录 / 鉴权 / 数据包编解码
- 多种网络后端
- SLikeNet(RakNet 魔改分支)— 联机通信
- libwebsockets — WebSocket 协议
- libdatachannel — WebRTC DataChannel(含 libjuice / libsrtp / usrsctp)
- NetherNet 连接模式(
--start_nethernet)
- 内嵌 Python 3.12.2 运行时:19 个内置模块(
engine/setting/mod_log/utility/pkt/aes/_chacha/_websocket/rotor/fop/_client/client_instance/easy_utils/_raknet/tan_lobby_game_clicpp_wrapper/api_errors/nbt/packets/game_state) - 随包 Python 运行时:CPython 3.12.2 以
python312.dll+python312/随包提供, 用户不需要自己装 Python;官方平台 wheel(numpy / Pillow 等)可直接使用 - 终端界面:固定表头(状态 + 动画)+ 独立日志区直显插件输出;支持滚轮 / PageUp / PageDown 翻历史,也可拖拽选中复制文本(见终端界面)
- 插件热重载:每 1.5 秒扫描插件目录变更,保存即生效
- 加密与鉴权:AES-GCM / AES-CTR / AES-ECB、ChaCha20、Rotor、ECC / ECDSA 密钥交换、Base64
- MCP 文件系统模式:可由
client_cfg.json中的no_launch_mcp字段控制(MCP 为遗留功能) - 皮肤系统:皮肤数据解析、皮肤 / 模型文件加载与转换
环境要求
| 平台 | 要求 |
|---|---|
| Windows(主平台) | Visual Studio 2026(MSVC v145 工具集)、CMake 4.x(最低 3.20)、Python 3.12 + Development 组件(提供 Python.h 与 python312.lib) |
| Linux x86_64 | 历史支持(clang / gcc);改为动态嵌入后未回归验证 |
| Android ARM64 | 历史支持(Termux 原生编译);同上未回归验证 |
关于那个「Python 3.12」
它不只是构建工具,而是链接目标:configure 阶段 find_package(Python3 3.12 COMPONENTS Development REQUIRED) 必须找到 3.12 的开发文件 (头文件 + python312.lib),链接进 Program.exe 后运行时再用同目录的 python312.dll。
版本必须正好 3.12(cp312 ABI)。CMake 找不到时用 -DPython3_ROOT_DIR=<你的 Python 3.12 目录> 指定。
项目结构
NTVECTOR_Platform/
├── CMakeLists.txt # 根 CMake 配置
├── application/ # 主程序源码(目标名:Program)
│ ├── Core/ Crypto/ Network/ Packets/ NBT/ platform/ # 协议、网络、登录、加密等
│ ├── Python/ # PythonRuntime.cpp(解释器初始化 / 模块注册)等
│ ├── PythonAPI/ # NBT、数据包、game_state 等 pybind11 绑定
│ │ └── Stubs/ # 类型桩(*.pyi,供 IDE 补全)
│ └── include/ # SLikeNet、zlib、pybind11、OpenSSL
├── cmake/ # FindPrebuiltDeps / BuildOpenSSL / Platform 等
│ ├── Platform.cmake # 平台检测 + CMAKE_MSVC_RUNTIME_LIBRARY(/MD)
│ └── BuildOpenSSL.cmake # configure 期从源码构建 OpenSSL(需 Perl,可回退)
├── docs/ # 文档源码
├── third_party/ # 第三方依赖源码
│ ├── jsoncpp/ libdatachannel/ libwebsockets/ openssl/ ...
└── tools/ # 辅助脚本与原生测试运行时的目录布局
构建产物旁边必须有 python312.dll、python3.dll 与 python312/ 目录 (标准库 Lib/ + 扩展 DLLs/ + site-packages/),PYTHONHOME 指向它。 build_release.ps1 会自动把这些整理进 dist\,并带上三个 VC 运行时 DLL。
依赖
所有 C/C++ 依赖均随仓库提供并从源码编译,构建过程不需要联网下载。
| 库 | 版本 | 构建方式 |
|---|---|---|
| Python | 3.12.2 | 需本机安装 3.12 开发组件(头文件 + python312.lib),动态链接;运行库 python312.dll + python312/ 随发布包提供 |
| OpenSSL | 3.5.1 | cmake 配置期自动从源码构建;Windows 上 Perl 不可用时回退到项目自带静态 .lib |
| jsoncpp | 1.9.6 | add_subdirectory |
| libdatachannel | 最新 | add_subdirectory(含 libjuice / libsrtp / usrsctp) |
| libwebsockets | 4.5 | add_subdirectory |
| SLikeNet | 定制(RakNet 魔改) | add_subdirectory |
| zlib | 1.3.1 | add_subdirectory |
内嵌 Python 模块(19 个)
| 模块 | 用途 |
|---|---|
engine | 事件 / 指令 / 坐标 / RPC |
setting | 玩家 / 版本信息 |
mod_log | 日志 |
utility | 加解密 |
pkt | 协议数据包读写 |
aes | AES-128-ECB |
_chacha | ChaCha20 |
_websocket | WebSocket |
rotor | Rotor 加密 |
fop | MCP 文件(遗留) |
_client | 客户端实例(遗留) |
client_instance | pybind11 包装 |
easy_utils | pybind11 加解密 |
_raknet | RakNet(遗留) |
tan_lobby_game_clicpp_wrapper | NetherNet(运行时注册) |
api_errors | 原生接口共享异常 |
nbt | 强类型 NBT 读取 / 修改 / 序列化 |
packets | 协议对象(CommandRequest / Packet) |
game_state | 已确认的游戏状态查询 |
接口细节见 Python 原生接口。
标准库扩展模块
CPython 3.12 把 _socket / select / _ssl 等一批 stdlib C 模块做成了独立 .pyd。 当前是动态嵌入,这些文件直接用官方的,放在 python312\DLLs\ 里即可 —— 不需要编进 exe、 也不需要维护白名单。
| 文件 | 用途 |
|---|---|
_socket.pyd select.pyd | 网络与 IO 复用,框架硬依赖 |
_ssl.pyd + libssl-3.dll + libcrypto-3.dll | HTTPS / TLS |
_hashlib.pyd | hashlib 的 OpenSSL 实现 |
_sqlite3.pyd + sqlite3.dll | SQLite |
_ctypes.pyd + libffi-8.dll | ctypes |
unicodedata.pyd _decimal.pyd _lzma.pyd _bz2.pyd _elementtree.pyd pyexpat.pyd | 常见插件依赖 |
zlib1.dll | zlib 模块 |
想加更多扩展?
官方平台 wheel 直接装就行:
pip install numpy --target "Vector\python312\Lib\site-packages"配置文件
| 文件 | 作用 |
|---|---|
mc.cfg | 启动配置(JSON):room_info(服务器 IP / 端口)、player_info(账号 / 昵称 / token)、misc(鉴权服务器地址、引擎版本、网易 SID 等)、skin_info(皮肤 / 模型路径) |
client_cfg.json | 客户端配置(JSON):no_launch_mcp 是否启用 MCP 文件系统模式(旧 options.txt 已并入) |
skin_data.json | 皮肤数据 |
旧版本中的
options.txt已废弃并入client_cfg.json。
命令行参数
| 分类 | 参数 | 作用 |
|---|---|---|
| 启动 | --config <file> | 指定启动配置文件(默认 mc.cfg) |
--start_nethernet | NetherNet 直连模式启动 | |
--do_main <event> | 触发指定主事件 | |
--start_from_launcher=1 | 由启动器拉起 | |
| 账号 / 鉴权 | --UserID <id> | 用户 ID |
--DisplayName <name> | 显示名称 | |
--MD5Token <token> | 鉴权 token | |
--xuid <xuid> | Xbox / 网易 XUID | |
--operator_name <name> | 操作员名称 | |
--operator_uid <uid> | 操作员 UID | |
--AuthServerUrl <url> | 鉴权服务器地址 | |
--auto_auth_input | 自动鉴权输入 | |
| 服务器 | --ServerIP <ip> | 服务器 IP |
--ServerPort <port> | 服务器端口 | |
--NeteaseServerID <sid> | 网易服务器 SID | |
--HostNethernetId <id> | 主机 NetherNet 会话 ID | |
--FromNethernetId <id> | 来源 NetherNet 会话 ID | |
| 版本 | --protocol <ver> | 协议版本号 |
--EngineVersion <ver> | 引擎版本 | |
--PatchVersion <ver> | 补丁版本 | |
--ExpandParams <params> | 附加参数 | |
| 皮肤 | --skin_image_path <path> | 皮肤图片文件路径 |
--skin_model_path <path> | 皮肤模型文件路径 | |
--operator_client_data <file> | 指定客户端数据文件 | |
| 调试 / 行为 | --logger | 启用日志(程序自身日志也进终端日志区) |
--disout | 出错即退出 | |
--script_mcp | 启用 MCP 模式 | |
--no_request_chunk | 不请求区块 | |
--g79 | 平台模式(g79) | |
--pause | 暂停并等待输入 | |
| 界面 | (默认) | 开启终端界面(固定表头 + 日志区) |
--no-ui | 关闭终端界面,使用普通输出 | |
--ui-demo | 预览三种状态并输出 ui_diag.txt(不连服务器) | |
--mouse-scroll | 捕获鼠标以支持滚轮翻日志(F7 可随时切换) | |
| 插件 | --PluginDir <dir> | 指定插件目录,默认 ./scripts(同时写入 VECTOR_PLUGIN_DIR) |
验证运行
Program.exe --config mc.cfg --logger
Program.exe --start_nethernet --UserID xxx --DisplayName xxx --MD5Token xxx- 日志:
log.txt(完整)、dis.log(断开 / 封禁) PlayStatus value: 3= PlayerSpawn(正常进服),不是错误;0= 登录成功;1/2/4/5/6才是失败- 反作弊封禁「因违规游戏行为,您的账号被禁止进入游戏」= RPC / MCP 校验链有问题, 详见 RPC 与反作弊校验
