zed-0xff/ZombieBuddy
游戏让《僵尸毁灭工程》模组作者用注解式 Java 代理在运行时修补游戏类,无需替换游戏文件。
项目用途
ZombieBuddy 是面向《僵尸毁灭工程》(Project Zomboid)模组作者的 Java agent 框架。它基于 ByteBuddy 在运行时拦截和修改游戏类,使 Java 模组不必再打包 .class 文件并手动替换游戏文件。补丁可以精确到单个方法,多个模组能修补同一个类,游戏更新后也更不容易失效。框架还支持把 Java 类和全局函数暴露给 Lua,并从模组中加载 Java 代码。项目说明
它面向两类人:想安装 Java 模组的玩家,以及没有游戏源码、但想修改游戏类行为的模组作者。
玩家安装
运行前提是《僵尸毁灭工程》Build 42 及以上版本,以及游戏本身要求的 Java 25。
- Windows:运行 ZombieBuddy 安装器,选择要修补的启动模式,并在应用前查看确认预览。安装器也提供卸载选项。
- macOS/Linux:把
ZombieBuddy.jar复制到游戏目录,并在启动参数中加入-javaagent:ZombieBuddy.jar --。
安装指南介绍了安全警告、手动安装和策略模式;卸载指南说明如何移除启动参数和已安装文件。
编写模组
模组作者需要 Gradle 来构建 Java 模组。README 给出的基本流程是:
- 在
mod.info中加入require=\ZombieBuddy、javaJarFile和javaPkgName。 - 用
@Patch注解编写补丁类。 - 构建 JAR 并放入
media/java/。
一个最小补丁如下:
import me.zed_0xff.zombie_buddy.annotations.Patch;
@Patch(className = "zombie.SomeGameClass", methodName = "someMethod")
public static class MyPatch {
@Patch.OnEnter
public static void enter() {
System.out.println("Method called!");
}
}
模组开发指南覆盖补丁编写、Lua 暴露、模组签名和示例。可运行的示例包括基础补丁的 ZBHelloWorld 和 Lua 性能监控的 ZBLuaPerfMon。Lua API 参考记录事件、watch 和 Java 模组状态接口,调试函数文档列出 zbinspect、zbmethods、zbgrep 等工具。
约束与安全
Java 模组在游戏进程内运行,对系统有不受限制的访问权限,可以执行任意代码。只安装来自可信来源的 Java 模组,条件允许时审查其源码。项目提供模组签名机制,但签名文档说明了签名能证明什么、不能证明什么。agent 行为可通过命令行参数调整,例如日志详细程度和策略。项目采用 MIT 许可证,具体条款见 LICENSE.txt。
HotRepo 点评
2026 年 11 月 1 日,ZombieBuddy 出现在 Java 日榜第 4 名,记录为 292 stars、73 forks,当天新增 5 stars。这只是语言榜单日的一次窄口径信号,不能说明采用率或长期热度。技术层面更值得注意的是注解式运行时补丁模型:它用方法级拦截替代整文件替换,对更新频繁的游戏来说更精细;代价也很明确——启用 Java 模组后,模组拥有完整系统权限,因此确认模组来源可信是实际必需,而非形式要求。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。