Skip to content

项目概览 ​

网易我的世界基岩版机器人客户端(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 目录> 指定。

项目结构 ​

text
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++ 依赖均随仓库提供并从源码编译,构建过程不需要联网下载。

库版本构建方式
Python3.12.2需本机安装 3.12 开发组件(头文件 + python312.lib),动态链接;运行库 python312.dll + python312/ 随发布包提供
OpenSSL3.5.1cmake 配置期自动从源码构建;Windows 上 Perl 不可用时回退到项目自带静态 .lib
jsoncpp1.9.6add_subdirectory
libdatachannel最新add_subdirectory(含 libjuice / libsrtp / usrsctp)
libwebsockets4.5add_subdirectory
SLikeNet定制(RakNet 魔改)add_subdirectory
zlib1.3.1add_subdirectory

内嵌 Python 模块(19 个) ​

模块用途
engine事件 / 指令 / 坐标 / RPC
setting玩家 / 版本信息
mod_log日志
utility加解密
pkt协议数据包读写
aesAES-128-ECB
_chachaChaCha20
_websocketWebSocket
rotorRotor 加密
fopMCP 文件(遗留)
_client客户端实例(遗留)
client_instancepybind11 包装
easy_utilspybind11 加解密
_raknetRakNet(遗留)
tan_lobby_game_clicpp_wrapperNetherNet(运行时注册)
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.dllHTTPS / TLS
_hashlib.pydhashlib 的 OpenSSL 实现
_sqlite3.pyd + sqlite3.dllSQLite
_ctypes.pyd + libffi-8.dllctypes
unicodedata.pyd _decimal.pyd _lzma.pyd _bz2.pyd _elementtree.pyd pyexpat.pyd常见插件依赖
zlib1.dllzlib 模块

想加更多扩展?

官方平台 wheel 直接装就行:

bash
pip install numpy --target "Vector\python312\Lib\site-packages"

详见Python 运行时与扩展。

配置文件 ​

文件作用
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_nethernetNetherNet 直连模式启动
--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)

验证运行 ​

bash
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 与反作弊校验

下一步 ​

第三方库请参阅各自目录下的许可证文件