← ZombieMod ReForged

Permissions

Six permission nodes, and every one defaults to the op level the command always needed. With no permissions mod installed nothing changes: op your staff and the whole tree follows. With one, you can hand a single branch to somebody who is not an op - a storyteller who can call a horde without also being handed /stop.

The nodes

Split by what an owner delegates.

Six rather than one per command, because the useful split is by what you hand over, not by what a command is called. Spawning things and running hordes are what a game master does; the corpse ledger and observer mode are staff tools; config changes what the server does for everyone.

Node Default Grants
zombiemod.spawn op level 2 /zombiemod spawn
zombiemod.horde op level 2 /zombiemod horde list, start and stop
zombiemod.corpse op level 2 The whole corpse ledger - list, give, respawn, forget
zombiemod.observe op level 2 Turning observer mode on, for yourself or anyone, and off for someone else
zombiemod.status op level 2 /zombiemod status
zombiemod.config op level 3 /zombiemod config

All six are booleans - nothing here takes a number. zombiemod.* is your permissions mod's wildcard rather than a node of ZombieMod's; LuckPerms and SableCraft Standards both expand it.

How the defaults behave

The default is the level, and the level still works.

A node's default answer is "does this player hold op level 2" (3 for config), which is exactly what NeoForge's own handler returns when no permissions mod is installed. So:

  • ▸No permissions mod: identical to every earlier release. A plain op can run all of it.
  • ▸A permissions mod that grants nothing: still identical, because an unset node falls through to its default. Installing a manager changes nothing until you grant or deny something.
  • ▸A grant: the player runs that branch whether or not they are an op.
  • ▸A deny on an op: the branch is refused to them. A permissions mod's explicit answer beats the level, in both directions.

The case this was built for

Hordes for the storyteller, not /stop.

A storyteller running sessions with LegendQuest StoryTeller should be able to call hordes and spawn genera into the story - and should not be an op, because op brings /stop, /ban and every block on the server with it. With SableCraft Standards' handler selected:

/rank group storyteller create
/rank group storyteller set zombiemod.spawn true
/rank group storyteller set zombiemod.horde true
/rank group storyteller set zombiemod.observe true
/rank user <player> group add storyteller

/rank check <player> zombiemod.horde tells you which rule answered. LuckPerms is the same shape with its own commands. For all of it in one line, set zombiemod.* true - but that includes config and the corpse ledger, so decide whether you mean it.

▸

A storyteller with these runs the encounter from inside it. /zombiemod horde start directs a horde at whoever typed it, and spawn with no position spawns where they are looking - which is the point.

Every command, and what it needs

The whole tree, by node.

/zm is an alias for /zombiemod and carries exactly the same gates - a redirect onto the same command tree, not a second registration, so the two cannot drift apart.

Open to everyone

Command What it does
/zombiemod list Every genus loaded.
/zombiemod bestiary Your ZombieDex, in chat.
/zombiemod bestiary book The same dex as a written book - works on a vanilla client.
/zombiemod bestiary info <genus> One genus's entry.
/zombiemod observe off Turns your own observer mode off. Always available.

zombiemod.spawn - op level 2

Command What it does
/zombiemod spawn <genus> [pos] Spawns one where you are looking, or at a position.

zombiemod.horde - op level 2

Command What it does
/zombiemod horde list The defined hordes.
/zombiemod horde start <horde> Calls a horde in.
/zombiemod horde stop Stops the running horde.

zombiemod.corpse - op level 2

Command What it does
/zombiemod corpse list [player] The corpse ledger.
/zombiemod corpse give <player> [index] Hands a corpse's contents back.
/zombiemod corpse respawn <player> [index] [here] Rebuilds the corpse, optionally where you are looking.
/zombiemod corpse forget <player> Drops a corpse from the ledger.

zombiemod.observe - op level 2

Command What it does
/zombiemod observe Toggles your own observer mode - the node is only checked when turning it on.
/zombiemod observe on [player] Observer mode on, for you or someone else.
/zombiemod observe off <player> Turns someone else's off.

zombiemod.status and zombiemod.config

Command What it does
/zombiemod status What the mod believes its settings are. Op level 2 by default.
/zombiemod config Lists the runtime toggles. Op level 3 by default.
/zombiemod config <toggle> [on|off] Sets one; with no on/off, flips it. Op level 3 by default.

Two deliberate holes

The bar sits on what grants something, never on the way out.

/zombiemod observe off is open to everybody, permanently. Turning your own invulnerability off is not a power, and gating it caused a real incident: observer mode was switched on for a player who was later deopped, and the only command that could switch it off needed the permission they had just lost. They were invulnerable, could not fix it, and could not ask an op to fix it either, because the command only ever acted on whoever typed it.

Command Needs
observe (toggle your own) zombiemod.observe - but only when turning on. The off direction is checked in code, because one node cannot bar a single direction.
observe on · observe on <player> zombiemod.observe
observe off Nothing - anyone, always.
observe off <player> zombiemod.observe

Neither /zombiemod nor /zm carries a bar at its root. A child command's requirement is combined with its parent's, so a restrictive root could not be relaxed by a permissive child - a gated root would put the bestiary permanently out of a normal player's reach. Every subcommand carries its own gate instead.

Console and command blocks

No player, so the level still decides.

A node is a question about a player. The console, a command block and an /execute with no player behind it have no identity a permissions mod could grant to, so they pass on op level exactly as before: level 2 for everything, level 3 for config. A command block runs at level 2 and always could.

Permission is not the whole story, though. Several commands act on whoever typed them, so they need a player and fail from the console with "a player is required to run this command", however high the permission.

Runs from the console Needs a player
/zombiemod list /zombiemod bestiary, bestiary book, bestiary info - it is your dex
/zombiemod status /zombiemod spawn <genus> with no position - it spawns where you are looking
/zombiemod config ... /zombiemod horde start, horde stop - a horde is directed at a player
/zombiemod corpse list · corpse forget /zombiemod observe, observe on, observe off with no player named
/zombiemod spawn <genus> <pos> /zombiemod corpse respawn ... here - "here" is where you are looking
/zombiemod observe on|off <player> /zombiemod corpse give, only when the owner is offline, since the items then drop at the admin's feet

/zombiemod spawn is the one worth knowing: give it an explicit position and it works from a command block or the console, and both ~ ~ ~ and ^ ^ ^5 work.

Client commands

No permission at any level.

These run entirely on the player's own machine, so they change nothing on the server and are only there for players who installed the mod client-side.

Command What it does
/zmdex render [size] One PNG per genus under screenshots/zombiemod/ - 64 to 1024px, default 256.
/zmdex cancel Stops a render in progress.

There is also a keybind, Z by default, that opens the ZombieDex screen - rebindable under Controls.

What is not permission-gated

Zombies do not check your rank.

  • ▸Being attacked. Genera check nothing about the player they hunt. Ops are not exempt; that is what observer mode is for.
  • ▸Infection, conversion and mutation. They apply to anyone.
  • ▸Reloading genera. There is deliberately no /zombiemod reload - genera are datapack data, so vanilla's own /reload picks up changes, and its permission is vanilla's business.
  • ▸The bestiary unlocking. Entries unlock by meeting things, per player.