zed-0xff/ZombieBuddy

Games

Lets Project Zomboid modders patch game classes at runtime with annotated Java agents instead of replacing files.

292
73
Java
MIT
11 months old

What ZombieBuddy Does

ZombieBuddy is a Java agent framework for Project Zomboid modders. It builds on ByteBuddy to intercept and modify game classes at runtime, so mods no longer need to bundle .class files and manually replace game files. Patches can target individual methods, allowing multiple mods to patch the same class, and are less likely to break when the game updates. The framework also exposes Java classes and global functions to Lua and loads Java code from mods. Read the project overview

It is aimed at two groups: players who want to install Java-based mods, and modders who want to write patches against game classes without access to the game's source code.

Install for Players

ZombieBuddy requires Project Zomboid Build 42+ and Java 25, which the game itself requires.

  • Windows: Run the ZombieBuddy installer, choose the launch modes to patch, and review the confirmation preview before applying. The installer also offers an uninstall option.
  • macOS/Linux: Copy ZombieBuddy.jar into the game directory and add -javaagent:ZombieBuddy.jar -- to the launch options.

The installation guide covers security warnings, manual installation, and policy modes; the uninstall guide explains removing launch options and installed files.

Write a Mod

Modders need Gradle to build Java mods. The basic flow from the README is:

  1. Add require=\ZombieBuddy, javaJarFile, and javaPkgName to your mod.info.
  2. Write patch classes with @Patch annotations.
  3. Build the JAR and place it in media/java/.

A minimal patch looks like this:

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!");
    }
}

The modding guide covers creating patches, Lua exposure, mod signing, and examples. Runnable examples include ZBHelloWorld for basic patching and ZBLuaPerfMon for Lua performance monitoring. The Lua API reference documents events, watches, and Java mod status APIs, while dev/debug functions lists utilities such as zbinspect, zbmethods, and zbgrep.

Constraints and Safety

Java mods run as part of the game process and have unrestricted access to the system, so they can execute arbitrary code. Only install Java mods from trusted sources, and review their source when available. Mod signing exists, but the mod signing documentation explains what signatures prove and do not prove. Agent behavior can be tuned through command-line parameters such as verbosity and policy. The project is MIT-licensed under the terms in LICENSE.txt.

HotRepo's take

On November 1, 2026, ZombieBuddy appeared in the Java daily list at fourth place, with 292 stars and 73 forks, gaining 5 stars that day. That is a narrow, single-day signal from a language-specific list, so it does not establish adoption or long-term pull. The technical fact that stands out is the annotation-based runtime patching model: it replaces whole-file replacement with method-level interception, which is a more surgical approach for a game that updates frequently. The tradeoff is explicit: once Java mods are enabled, they run with full system access, making mod source trust a practical requirement rather than a formality.

Written by AI from the project's README, updated . The project's own docs are the source of truth.