PZ3D First Person Mod and ZombieBuddy on a Zomboid Server

Published on

Running PZ3D, the Project Zomboid first person mod, on a server: what ZombieBuddy needs, the zombiebuddy.lua error players get, and a clean removal.

Spiffo, the raccoon mascot of Project Zomboid, with a backpack in the rain while zombies crowd in behind him

Your group wants the Project Zomboid first person mod on your server. Or players suddenly can't join, and the message names a file called zombiebuddy.lua. Both lead to the same two mods: PZ3D, which brings the camera down to your character, and ZombieBuddy, the Java loader it runs on. Everything below was checked on 3 November 2026 against the authors' own pages; both mods change almost weekly, so check again on the day you install.

Quick answer: PZ3D, the Project Zomboid first person mod by kolpaque, has supported multiplayer since version 0.7.0, labelled experimental. A server needs the ZombieBuddy Java agent in ProjectZomboid64.json, \ZombieBuddy;\pz3d on the Mods= line, Workshop ID 3807334881 on WorkshopItems=, and one first start by hand to approve the JAR. Every player needs ZombieBuddy and the same pz3d release. The Indie Stone does not support Java mods and says updates break them without warning. "File doesn't exist on the server: media/lua/client/zombiebuddy.lua" usually means a player with ZombieBuddy joined a server that doesn't run it.

What PZ3D and ZombieBuddy Are

pz3d, listed on the Steam Workshop as Atmospheric Vanilla PZ in 3D, appeared on 24 September 2026 and reached version 0.9.11 on 2 November. Its author describes the goal as bringing "the camera down from isometric view to the character" and making "all vanilla Project Zomboid mechanics work from that perspective". Bugs and unfinished content are "100% expected", the page says.

Regular Workshop mods are Lua scripts, but pz3d "needs to load Java code and modify engine behavior beyond what the standard modding tools allow", its FAQ says, and ZombieBuddy provides that. ZombieBuddy is a Java agent that starts with the game's Java runtime and patches game classes while the game runs. pz3d requires the official ZombieBuddy 2.3.4 or newer, published on GitHub on 3 October 2026. ZombieBuddy's Workshop page lists B41 and B42.12 to B42.21 as supported game versions.

It isn't only pz3d. Project Viewpoint, with about 779,000 subscribers on 3 November against about 73,000 for pz3d, lists ZombieBuddy as a required item too. Its page says players "should also be able to join about any online server while using the mod, as long as its modlist is compatible". So even if you never install a Java mod yourself, your players may bring ZombieBuddy to your server.

Does the PZ3D First Person Mod Work in Multiplayer?

Yes, with a warning label. The release notes on pz3d.dev add multiplayer support in version 0.7.0, a later 0.8 release fixes "building barricades and other objects on servers", and the Workshop FAQ answers the multiplayer question with a plain yes. The 0.9.11 install guide still labels it "Experimental multiplayer" and tells you to start on a new test save. A guide that calls pz3d single player only was written for an earlier version. The author's Run on Server page covers one setup: a Linux dedicated server on Project Zomboid 42.21.0 with pz3d 0.9.11. The site has no Windows server guide as of 3 November.

What a Dedicated Server Needs

These steps follow pz3d's server page. <cachedir> is the server's data folder, ~/Zomboid of the user that runs the server unless you start it with -cachedir. The config file is <cachedir>/Server/<servername>.ini, usually servertest.ini.

  1. Stop the server. It rewrites its config when it shuts down, so changes made while it runs get lost.
  2. Put ZombieBuddy on the server. Get version 2.3.4 or newer from its GitHub releases (its installation guide says the Workshop works too), put the mod folder in <cachedir>/mods/ZombieBuddy and copy ZombieBuddy.jar next to the server's ProjectZomboid64.json.
  3. Add the Java agent. A dedicated server has no Steam launch options, so it goes into the vmArgs array of ProjectZomboid64.json. Keep the existing arguments and add this string, with a comma after the entry before it:
"-javaagent:ZombieBuddy.jar=frontend=console"

frontend=console makes ZombieBuddy ask its questions in the server console instead of a desktop window. The trailing -- that ZombieBuddy's guides insist on belongs to Steam launch options on a player's PC; pz3d's line for the JSON file has none.

  1. Add both mods to the .ini. pz3d's page gives these lines:
WorkshopItems=3807334881
Mods=\ZombieBuddy;\pz3d
DoLuaChecksum=true

Add them to your existing entries with semicolons, without duplicates. ZombieBuddy is on Mods= but not on WorkshopItems=, because this route loads it from <cachedir>/mods. pz3d writes both Mod IDs with a backslash; if the rest of your Mods= line looks different, our Build 42 mods guide explains both forms and how to let the game write the line. Start the server with Steam enabled, so without -nosteam, and it downloads pz3d from the Workshop without a subscription of its own.

  1. Approve the JAR on the first start. Start the server by hand in a terminal, as the same OS user that normally runs it, for example with bash start-server.sh in the game folder. ZombieBuddy shows the mod ID, the JAR's path, date and SHA-256 fingerprint, and loads nothing until you say yes. Approve pz3d, save the decision, then restart the server the way you normally run it.
  2. Set the rules for camera permissions and optimizations under Sandbox Options, then pz3d.

ZombieBuddy saves the approval per mod and per hash in ~/.zombie_buddy/mod_approvals.json of that user. On our Project Zomboid hosting you edit the .ini and add Workshop IDs through the panel yourself. The Java agent changes the game install and needs that hand-started first launch, so open a ticket and ask before you try it, as with any Java mod.

Why a Server Should Not Allow Every JAR

ZombieBuddy's policy= setting, documented in its command-line parameters, decides what happens to an unknown or changed JAR:

PolicyWhat it doesOn a server
prompt (default)Asks for every new or changed JARNeeds someone at the console
deny-newSilently skips any JAR that isn't approved yetFits a server that runs unattended
allow-allLoads every JAR without askingZombieBuddy itself says "Not recommended"

Approvals are tied to the file's hash, so unless you chose to trust a signed author (see below), every pz3d update brings a JAR ZombieBuddy hasn't approved yet. Under prompt, the next start asks again, with nobody at an unattended server to answer. Under deny-new, the new JAR is skipped and pz3d's Java side stays off until you approve it. Under allow-all, whatever the next update or a newly added Java mod brings runs at once, unseen.

ZombieBuddy's own warning is why that matters: Java mods loaded through it "have unrestricted access to your system and can execute arbitrary code", and on a server that system holds your saves and config files with their passwords. A practical setup: approve pz3d once under the default policy, then add deny-new for normal running, separated by a comma:

"-javaagent:ZombieBuddy.jar=frontend=console,policy=deny-new"

After each pz3d update, remove ,policy=deny-new for one hand-started run, approve the new JAR and put it back. Run the server as its own user, not as root. ZombieBuddy can also check signature files and let you trust a signed author, so that author's later JARs can load without a new question; kolpaque is on its list of known authors. Its signing docs still say plainly: "Signing does not prove that the mod is safe".

What The Indie Stone Says About Java Mods

A Note on Java Mods and Modding of 21 October 2026 says The Indie Stone officially supports Lua modding only. Java mods, "including third-party loaders, frameworks, and modifications that alter the game's underlying implementation, are not officially supported." On updates the note is blunt: "When we ship new updates, Java-based mods will be fundamentally broken by those updates, without warning." Bug reports are only considered when the problem can be reproduced without mods.

For a pz3d server that means:

  • Hold updates until the mods catch up. pz3d 0.9.11 is built for 42.21.0, and ZombieBuddy lists versions up to B42.21. Version 42.22 has been on the Pre-Release branch since 27 October, where The Indie Stone plans to keep each build at least a week before Stable. Don't update until pz3d's site names the new version.
  • Report bugs in the right place. Test without mods before reporting to The Indie Stone; pz3d problems go to the Discord its Workshop page links.
  • Back up <cachedir>/Saves before every mod change.

Fix "File Doesn't Exist on the Server: media/lua/client/zombiebuddy.lua"

Players are refused at login with:

File doesn't exist on the server: media/lua/client/zombiebuddy.lua

media/lua/client/ZombieBuddy.lua is one of ZombieBuddy's own Lua files (GitHub). With DoLuaChecksum=true, Project Zomboid compares the Lua files on both sides when a player joins, and this player has a ZombieBuddy file your server lacks. ZombieBuddy's 3.0 beta describes exactly this case: its new Stealth mode, "When you join a multiplayer server that doesn't have ZombieBuddy, hides ZombieBuddy's own Lua files from the server's checksum." Your server isn't broken; the player brought ZombieBuddy, usually for pz3d or Project Viewpoint.

Your options:

  1. The player tries Stealth mode, under Options, then Mods, in ZombieBuddy 3.0 BETA. It is a separate Workshop item that can't sit next to the release version, and its page warns that "Mod incompatibilities are expected."
  2. The player removes ZombieBuddy with its uninstall guide: launch option first, then the files. The Windows installer can undo its own changes.
  3. You switch off the checksum with DoLuaChecksum=false. A player in ZombieBuddy's Steam discussion reports that this let their group in. It turns off the whole check, so real mod mismatches no longer get a clear message at login; our checksum error guide explains that trade-off. Workable for a private group that knows its mod list, but on a public server you lose the warning for everyone.
  4. You run ZombieBuddy on the server the full way described above, if you want pz3d anyway.

Skip the tip in that thread to copy ZombieBuddy's Lua files into the game's own media/lua folders; its poster doubts it does anything.

What Each Player Needs

  • ZombieBuddy 2.3.4 or newer. On Windows, the installer from its GitHub releases or a manual install with the launch option -agentlib:zbNative --; on Linux, ZombieBuddy.jar in the game folder and -javaagent:ZombieBuddy.jar --. The -- is mandatory.
  • The same pz3d release as the server, as pz3d's server page says. Workshop subscribers get updates from Steam; a ZIP copy is updated by hand.
  • Enough memory for Java. pz3d asks for at least 6 GB; its installer raises the standard 3 GiB limit to 6 GiB.
  • Windows or Linux. macOS support is very early by the author's account, with no install guide yet.

Remove PZ3D and ZombieBuddy From a Server Cleanly

  1. Stop the server; back up <cachedir>/Saves and <cachedir>/Server.
  2. Edit the .ini. Remove only the pz3d and ZombieBuddy entries. Before:
WorkshopItems=1111111111;3807334881
Mods=\YourModID;\ZombieBuddy;\pz3d

After:

WorkshopItems=1111111111
Mods=\YourModID

1111111111 and YourModID stand for your other mods. Also remove 3619862853 if you added ZombieBuddy from the Workshop, and leave no stray semicolon at the end.

  1. Delete the local mod folders: <cachedir>/mods/ZombieBuddy, and <cachedir>/mods/pz3d if you used pz3d's ZIP route.
  2. Remove the Java agent string from vmArgs in ProjectZomboid64.json and fix the comma before it so the JSON stays valid. Set up before 0.7.0 with the old pz3d Loader? Remove that argument too.
  3. Delete ZombieBuddy.jar and, if it exists, ZombieBuddy.jar.new from the game folder.
  4. Optionally delete ~/.zombie_buddy, with the approvals and caches.
  5. Start the server and check the console shows no ZombieBuddy lines.

ZombieBuddy's Workshop FAQ says it is safe to add or remove on existing saves; pz3d's page says nothing about saves, hence the backup. Tell your players afterwards: anyone who keeps ZombieBuddy for single player will now get the zombiebuddy.lua error on your server, and the fixes above apply.

FAQ

Does PZ3D work in multiplayer? Yes, since pz3d 0.7.0, labelled experimental in the 0.9.11 install guide. The server and every player need ZombieBuddy and the same pz3d release.

What is ZombieBuddy (Zombie Buddy) in Project Zomboid? An open source Java agent by Andrey "Zed" Zaikin that lets mods patch the game's Java code while it runs. pz3d and Project Viewpoint require it. Besides subscribing, you copy a JAR into the game folder and add a launch option.

Is ZombieBuddy safe? It asks before loading any new or changed JAR, but its own docs say Java mods loaded through it have unrestricted access to your system. The Indie Stone advises open source mods and says popularity "absolutely is not a guarantee" of safety.

How do I fix "zombiebuddy.lua doesn't exist on the server"? The joining player runs ZombieBuddy and your server doesn't. The player can use Stealth mode in ZombieBuddy 3.0 BETA or remove ZombieBuddy, or you can set DoLuaChecksum=false, which switches off the whole Lua check.

Do players need ZombieBuddy to join a PZ3D server? Yes. New pz3d installs load their Java code through ZombieBuddy, and pz3d's server guide says players should install the same pz3d release locally.

Will PZ3D break when Build 42.22 comes out? Plan on it until pz3d and ZombieBuddy update: The Indie Stone says Java mods break with game updates without warning, and pz3d 0.9.11 is built for 42.21.0.

Sources

All opened on 3 November 2026: