RepoDaily · 2026-07-24 · Security tool

Pumpkin:用 Rust 从零重写的 Minecraft 服务器,主打性能、安全与可扩展

#12 Security tool Rust +563 Pumpkin-MC/Pumpkin 打开仓库

Pumpkin 用 Rust 重写了 Minecraft 服务器的协议、世界与实体层,内置加密、多线程区块处理与漏洞防护,但核心玩法系统仍未完成 1.0.0。

项目类型Security tool
最适合希望用内存安全的高性能 Rust 服务器核心替换 JVM 方案的运维人员和 Rust 开发者,且能接受 pre-1.0 状态。
风险等级高 — 区块生成、红石、战斗、实体 AI 等核心系统在 1.0.0 发布前仍处于未完成状态。
评估时间2–4 小时即可完成编译、TOML 配置并使用 Quick Start 指南建立本地 Java Edition 连接。

核心问题: 你的目标玩法场景是否只依赖 Pumpkin 已发布的特性?红石、战斗、怪物 AI 和区块生成是否是必须项?

85/100

RepoDaily 采用评分

RepoDaily 将该项目的采用分评为 85/100(强):分数来自文章来源、安装路径、生产风险、差异化、许可证清晰度以及 AI/Agent 适配度。

基于 RepoDaily 来源和采用说明的方向性评分,不是基准测试。风险: 高
100证据质量

包含 5 个来源、覆盖 3 类来源;如有 RepoDaily 独有模块,会进一步提高证据分。

100可安装/可试用性

检测到 6 个工作流步骤、6 个下一步动作,以及 3 个命令/安装信号。

54维护可信度

趋势热度为 +563 stars;如内容中有 release、issue 或维护信号,会提高维护可信度。

77生产准备度

采纳风险标记为 high,并包含 5 条安全说明与 4 条跳过条件。

100差异化

3 个机会视角、4 个替代方案,以及 3 个类型化模块支撑差异化判断。

82许可证清晰度

文章中包含许可证来源或许可证表述。

78Agent / AI 适配度

文章正文和元数据中检测到 5 个 AI/Agent 相关信号。

项目概览

Pumpkin 是一个完全用 Rust 编写的 Minecraft 服务器实现。它没有在现有 Java 生态上打补丁,而是从零重建了协议层、世界层、玩家层和实体层,利用 Rust 的所有权模型和多线程运行时同时追求吞吐量与内存安全。README 明确将目标定义为:快速、高效、可定制,同时遵循原版游戏机制。

仓库以 Cargo workspace 形式组织,包含十一个成员 crate——pumpkin-protocol、pumpkin-world、pumpkin-inventory、pumpkin-config、pumpkin-plugin-api、pumpkin-data 和 pumpkin-codecs 等——这种划分将网络、世界状态、游戏数据和未来插件接口清晰地分离。workspace 要求 Rust 1.95 和 edition 2024,release 配置启用了 LTO、剥离调试信息,并使用单一 codegen-unit 以优化二进制文件。

安全被视为与性能同等重要的设计支柱。README 在五项核心目标中明确列出'Security: Prioritizes security by preventing known security exploits',仓库内附带的 SECURITY.md 将漏洞报告引导至私有邮箱,承诺 48 小时内响应。协议层已实现加密和数据包压缩,配置系统允许管理员关闭不必要的功能以缩小攻击面。

但 Pumpkin 明确标注为重度开发中。置顶 issue #449 追踪 1.0.0 发布前的剩余工作,区块生成(#36)、红石(#1402)、战斗(#1404)、实体 AI(#1406)、命令(#15)和插件(#1407)的追踪 issue 均未关闭。今天的评估者需要将自己的需求与已发布功能逐一对照,而非假设所有原版玩法已就绪。

解决什么问题

  • 传统基于 Java 的 Minecraft 服务器承载 JVM 内存开销和 GC 停顿,在高人数下影响 tick 一致性。
  • 运维人员反复面对协议层攻击——数据包泛洪、畸形握手、认证绕过——在遗留技术栈中需要持续修补。
  • 建立在过时 API 上的插件生态在每次 Minecraft 版本升级时容易断裂,迫使运维在稳定性和新功能间二选一。
  • 现有服务器替代方案很少能同时将多线程世界处理、现代系统语言和代理兼容性整合到一个代码库中。

工作原理

  1. Pumpkin 以原生 Rust 二进制形式运行,从包含十一个 crate 的 Cargo workspace 构建,主服务器 crate 依赖 pumpkin-protocol、pumpkin-world、pumpkin-config 和 pumpkin-plugin-api。
  2. 协议层处理 Java Edition(以及开发中的 Bedrock)连接,包括服务器状态/ping、通过 AES/CFB8/CTR crate 实现的加密,以及通过 async-compression 实现的数据包压缩。
  3. CPU 密集型任务(如区块处理)被分发到 Rayon 线程池,而 Tokio 管理异步 I/O——CONTRIBUTING.md 明确警告贡献者不要在 Tokio 运行时上阻塞 Rayon 调用。
  4. 服务器行为通过 pumpkin-config 处理的 TOML 文件配置,管理员可以关闭不需要的功能以减小运行时攻击面。
  5. 代理集成在协议层完成,可接受来自 Bungeecord 或 Velocity 网络的转发连接,无需单独的代理插件。
  6. RCON 和 Query 端点提供远程管理和状态报告,权限和翻译系统控制游戏内访问和本地化。

架构解读:Workspace 布局与运行时策略

Pumpkin 的 Cargo.toml 定义了 resolver 版本 3 的 workspace,包含十一个成员 crate:pumpkin-api-macros、pumpkin-config、pumpkin-util、pumpkin-inventory、pumpkin-macros、pumpkin-protocol、pumpkin-world、pumpkin(主二进制)、pumpkin-data、pumpkin-plugin-api 和 pumpkin-codecs。codegen crate pumpkin-codegen 被排除在默认构建之外。

workspace 锁定 Rust 1.95 和 edition 2024。release 配置将 LTO 设为 true、剥离 debuginfo、并使用 codegen-units = 1——这种组合以更长的编译时间换取更小的二进制体积和更高的运行时性能。单独的 profiling 配置继承自 release,但保留调试符号且不剥离。

并发跨两个运行时分工。Tokio(1.53)处理异步网络 I/O,Rayon(1.12)和 Crossbeam(0.8)管理 CPU 密集型并行工作。加密栈引入 aes 0.9、cfb8 0.9 和 ctr 0.10,与协议层声明的加密和数据包压缩支持一致。

安全态势:漏洞防护与报告通道

  • README 将安全列为五项核心目标之一:'Prioritizes security by preventing known security exploits。'
  • SECURITY.md 禁止公开 issue 报告,将漏洞引导至 lilalexmed@proton.me,承诺 48 小时响应窗口。
  • 漏洞报告需包含问题类型、受影响源文件路径、tag/branch/commit 引用、复现步骤和 PoC 代码。
  • 配置系统允许关闭不必要的功能,为最小化部署缩减运行时攻击面。
  • 加密(AES/CFB8/CTR)和数据包压缩直接在 pumpkin-protocol 中实现,而非委托给外部封装。

RepoDaily 实操路径:从克隆到本地连接

Pumpkin 在源码包中未发布预编译二进制文件;预期路径是使用 Rust 1.95 或更高版本从源码构建。README 引导新用户访问 docs.pumpkinmc.org/#quick-start 的 Quick Start 指南。

贡献者 fork 仓库后,从 rust-lang.org 安装 Rust,在本地分支上修改并提交 PR。CI 通过 cargo clippy --all-targets 强制零 Clippy 警告,并通过 cargo test 要求所有单元测试通过。

构建完成后,服务器通过 pumpkin-config crate 管理的 TOML 文件配置。运维可在不修改源码的情况下切换协议功能、世界设置和服务器子系统,然后用 Java Edition 客户端连接以验证握手、加密和世界加载管线。

维护风险:Pre-1.0 路线图与开放追踪 Issue

  • Issue #449 追踪 1.0.0 发布前的剩余工作——项目明确声明处于重度开发中。
  • 区块生成(#36)、红石(#1402)、战斗(#1404)、实体 AI(#1406)、命令(#15)和插件(#1407)均为开放的追踪 issue,意味着核心玩法循环尚未完成。
  • Bedrock Edition 支持在 README 的协议功能列表中标注为 W.I.P。
  • 进度系统、怪物、动物、村民和 Boss 实体均被单独标注为 W.I.P,因此生存模式玩法尚未功能完整。
  • 贡献指南指出 Clippy 设置'相对严格'且'可能令人沮丧',即便能保护代码质量,也可能拖慢社区 PR 的吞吐速度。

谁适合关注

适合关注

  • 你运营 Java Edition 服务器,希望将 Rust 原生核心与现有 JVM 部署进行基准对比。
  • 你是 Rust 开发者,正在评估一个结构良好的 workspace 以参与游戏服务器基础设施开发。
  • 你的场景集中在已发布功能上:世界加载、区块保存(Vanilla/Linear/Pump)、玩家移动、物品栏、传送和代理转发。
  • 你需要 RCON 和 Query 进行远程管理,并希望通过 TOML 配置服务器子系统。

可以先跳过

  • 你现在就需要一台生产就绪的生存服务器——红石、战斗调优、怪物 AI 和区块生成仍未完成。
  • 你需要成熟的插件生态;插件 API crate 已存在,但插件支持仍是开放 issue(#1407)。
  • 你主要服务 Bedrock Edition 客户端;Bedrock 协议支持被明确标注为开发中。
  • 你无法从源码构建或需要官方分发的预编译二进制文件。

风险与注意事项

Pumpkin 的基础设施令人印象深刻——协议、加密、压缩、世界 I/O 和代理支持——但完整原版体验所需的核心玩法系统仍停留在 pre-1.0.0 路线图上。

  • Issue #449 是开放的 pre-1.0.0 追踪器;README 声明项目处于重度开发中。
  • 红石(#1402)、战斗(#1404)、区块生成(#36)、实体 AI(#1406)、命令(#15)和插件(#1407)均未解决。
  • 源码包中未分发预编译二进制文件;部署需要 Rust 1.95 工具链和源码构建。
  • 严格的 Clippy deny 规则可能拖慢外部贡献速度,并增加 fork 维护者的维护负担。
  • 安全是 README 中五项核心目标之一,聚焦于防范已知的 Minecraft 服务器漏洞利用。
  • SECURITY.md 提供私有报告通道(lilalexmed@proton.me),48 小时确认 SLA,并要求结构化的漏洞细节包括 PoC 代码。
  • 加密在 pumpkin-protocol 内通过 aes、cfb8 和 ctr crate 原生实现,覆盖认证和会话加密管线。
  • TOML 配置系统允许运维关闭不需要的功能,限制暴露的协议面。
  • workspace 在 Clippy 中 deny 了 dbg_macro、print_stdout 和 print_stderr,防止生产构建中的意外调试输出。

替代方案比较

方案适用场景代价
PaperMC
你现在就需要一台生产就绪的 Java Edition 服务器和成熟插件生态。免费,GPL 授权,但需要 JVM 运行时。
Purpur
你想要 Paper 兼容的性能补丁加上额外的配置和玩法自定义选项。免费,开源,基于 JVM。
Folia
你需要 JVM 上的多线程 tick,且能接受实验性的插件兼容性。免费,开源,基于 JVM。
Valence
你想要一个以程序化世界生成为导向的 Rust Minecraft 服务器框架,而非原版玩法对等。免费,MIT 授权。

这个趋势说明了什么

将 Rust 原生 tick 性能与 JVM 服务器做基准对比

已有 Paper 或 Purpur 部署的运维可以使用 CONTRIBUTING.md 中提到的 Criterion 基准工具,在相同负载配置下对 Pumpkin 进行内存占用、tick 一致性和单玩家 CPU 成本的测量。

通过 Quick Start 指南搭建 Pumpkin 实例,加载固定世界,并在相同玩家负载下将 RCON 报告的 TPS 和常驻内存与匹配的 Paper 服务器对比。

贡献一个被追踪的 pre-1.0 系统

由于红石(#1402)、战斗(#1404)、实体 AI(#1406)和区块生成(#36)均被单独追踪,Rust 开发者可以选取一个范围明确的子系统,利用项目的自动化 PR 快速通道(在 PR 标题末尾添加 🤖🤖🤖)提交贡献。

克隆 workspace,本地运行 cargo clippy --all-targets 和 cargo test,然后针对一个开放追踪 issue 提交包含 CONTRIBUTING.md 所需描述字段的 PR。

加固协议层的漏洞抗性

由于安全是项目的显式目标,且协议 crate 已处理加密和压缩,具备网络安全经验的贡献者可以聚焦 pumpkin-protocol 内的数据包校验、速率限制和畸形输入处理。

审查加密路径(aes/cfb8/ctr crate),起草模糊测试或数据包变异测试计划,并在公开 issue 之前通过 SECURITY.md 报告发现。

下一步建议

本地构建 Pumpkin 并用 Java Edition 客户端连接

评估 Pumpkin 是否适合你的最快路径是:构建 workspace、通过 TOML 配置最小化服务器、用单个 Java Edition 客户端连接以验证协议握手、加密、世界加载和玩家移动管线。

  1. 从 rust-lang.org 安装 Rust 1.95 或更高版本。
  2. 克隆仓库并运行 cargo build --release 以生成启用 LTO 的优化二进制文件。
  3. 按照 docs.pumpkinmc.org/#quick-start 的 Quick Start 指南生成 TOML 配置。
  4. 启动服务器并使用支持目标协议版本的 Java Edition 客户端连接。
  5. 使用 RCON 端点验证远程管理功能,并检查服务器日志中的未实现功能警告。
  6. 在决定更大范围部署前,将任何缺失的玩法与追踪 issue(#449、#36、#1402、#1404、#1406)交叉对照。

RepoDaily 判断

Pumpkin 是当前热度最高的 Rust 原生 Minecraft 服务器项目之一:多 crate workspace、严格 Clippy 策略、内置加密、代理兼容和清晰的安全报告流程。但它仍是 pre-1.0.0——红石、战斗、怪物 AI、区块生成和插件 API 都是未完成项。今天评估它的价值在于协议级性能和代码质量,而非作为生产生存服务器的直接替换。

信息来源