1.8.9 协议网络
完整实现 Minecraft 1.8.9(协议 47)网络栈:数据包、NBT、AES/RSA 加密与 zlib 压缩,可直接连接真实服务器。
完整的客户端体验:从网络协议到渲染管线,全部使用 Rust 实现。
完整实现 Minecraft 1.8.9(协议 47)网络栈:数据包、NBT、AES/RSA 加密与 zlib 压缩,可直接连接真实服务器。
基于 ash 的 Vulkan 后端:区块网格并行构建(rayon)、天空盒、实体模型、粒子系统与附魔光效。
Microsoft / Xbox Live OAuth 登录全流程,带本地账号缓存,支持正版服务器验证。
内置 mlua(Lua 5.4)脚本桥接,Keystrokes HUD 等模组可通过 Lua 编写与热加载。
区块 / 方块 / 实体 / 光照全栈实现,含流体与连接玻璃等原版渲染行为对齐。
自绘 UI 与字体渲染(fontdue)、rodio 音频回放、gilrs 跨平台手柄输入,资源包与皮肤加载一应俱全。
内置完整的客户端模组框架:每个模组运行在隔离的 Lua 5.4 沙箱中,通过声明式权限访问事件驱动的 API。
每个模组拥有独立的 Lua 5.4 状态机,无文件系统、OS 与原生代码访问;单模组 16 MiB 内存上限、25 万指令数熔断。
manifest.json 声明所需能力;网络修改、封包发送、协议翻译等敏感权限需在 permissions.json 中显式批准。
游戏内 /mods reload 即可重载模组,配置项自动生成可视化设置界面,错误隔离不影响其他模组。
Keystrokes HUD、Old Animations、PVP Tweaks 等官方模组均由该框架实现,可直接参考源码。
-- 定义配置项(自动生成设置界面)
local config = game.config.define({
{ key = "enabled", type = "boolean",
label = "Enabled", default = true }
})
-- 订阅 HUD 渲染事件并绘制文字
game.events.on("render.hud.after", function(event)
if config.get("enabled") then
event.draw:text({
text = "Hello, RustCraft!",
x = 8, y = 8, scale = 1.0,
color = { r = 0.5, g = 1.0, b = 0.5, a = 0.85 }
})
end
end)
完整的模组开发文档共 22 章,按主题索引如下(外链至官方文档站)。
模组结构、manifest、权限申请、生命周期与热重载、配置项定义、事件系统基础。
→ 客户端game.client / player / input / ui / world —— 快照读取、FOV 与相机覆盖、输入观察、世界与实体查询。
→ 网络封包观察 / 修改 / 取消 / 发送,连接事件,以及跨版本协议翻译器(47 ↔ 其他版本)。
→ 渲染第一人称手臂 / 物品变换、HUD 绘制(文字 / 矩形 / 线条 / 图片)、渲染事件总线、模组资源。
→ 数据模组级持久化键值存储、日志输出、tick 生命周期事件与调试手段。
→ 参考完整事件参考表、安全限制与运行时配额,以及一个端到端的完整模组示例。
→无游戏引擎,从窗口到像素全部手写。Rust 2021 edition。
| 分类 | Crate | 用途 |
|---|---|---|
| 窗口与输入 | winit · gilrs | 窗口、键鼠与手柄事件 |
| 图形渲染 | ash · gpu-allocator | Vulkan 绑定与显存分配 |
| 着色器 | shaderc | build.rs 编译 GLSL → SPIR-V |
| 数学 | nalgebra | 线性代数与变换 |
| 网络 | reqwest · flate2 | HTTP 与协议压缩 |
| 加密 | aes · rsa · sha1/sha2 | 协议加密与正版验证 |
| 脚本 | mlua | Lua 5.4 模组桥接 |
| 音频 / 图像 / 字体 | rodio · image · fontdue | 声音回放、纹理加载、字体光栅化 |
| 并发 | rayon | 并行区块网格构建 |
需要 Rust 工具链与支持 Vulkan 的 GPU 驱动。
# 克隆仓库
git clone https://github.com/RustCraftMC/RustCraft-Public.git
cd RustCraft
# 调试构建(opt-level=1)
cargo build
# 发布构建(LTO thin · panic=abort · strip)
cargo build --release
# 启动游戏
cargo run
# 测试 / Lint / 格式
cargo test && cargo clippy && cargo fmt -- --check
运行时需要 Minecraft 1.8.9 客户端资源(纹理 / 声音),放置于 assets/ 目录。
首次登录走 Microsoft OAuth 浏览器授权,之后令牌缓存在本地。
仓库内 minecraft/ 目录为反编译的 1.8.9 Java 源码,仅用于行为对照。
src/
├── main.rs # 入口 · 日志初始化 · Vulkan 层兼容处理
├── assets/ # 纹理 / 模型 / 资源包 / 皮肤 / 声音
├── auth/ # Microsoft / Xbox Live OAuth
├── client/ # 游戏逻辑 · 输入 · 背包 · 物理 · 网络会话
├── entity/ # 实体系统
├── net/ # 1.8.9 协议 · 数据包 · NBT · 加密
├── render/ # Vulkan 渲染器 · 管线 · HUD · 天空
├── scripting/ # Lua 模组桥接
├── ui/ # 字体 · 控件 · i18n · 菜单
└── world/ # 区块 · 方块 · 光照 · 网格