Commands
Commands are registered through Brigadier, so tab completion knows which tilesets exist and which players you can invite.
Permissions
Section titled “Permissions”| Node | Grants | Default |
|---|---|---|
dungeon.use |
entering a dungeon at all | op |
dungeon.admin |
creating, destroying and inspecting dungeon worlds, and toggling the daily bypass | op |
mazegen.use |
generating mazes, and using the build tools | op |
dungeon.use defaults to op. Opening a new feature to the whole server at once
risks somebody spending their one daily on a broken dungeon, which they cannot
get back until tomorrow. Grant it in LuckPerms or permissions.yml when you are
ready.
/dungeon for players
Section titled “/dungeon for players”| Command | Does |
|---|---|
/dungeon |
where you stand: today’s entry, Souls and shards, current run |
/dungeon run [tileset] |
build today’s dungeon and go in |
/dungeon leave |
end your run |
/dungeon party |
who is with you |
/dungeon invite <player> |
ask somebody to come |
/dungeon knock <player> |
ask to be let into theirs |
/dungeon accept [player] |
confirm an invite or a knock |
/dungeon join <player> |
enter a run already in progress, until its lever is pulled |
/dungeon for admins
Section titled “/dungeon for admins”Everything here needs dungeon.admin.
| Command | Does |
|---|---|
/dungeon dryrun <tileset> [days] |
build a whole dungeon with no player, report it, throw it away |
/dungeon loot <tier> [theme] |
roll one chest and print what came out |
/dungeon grant <player> <shards> |
add or remove Soul Shards, −16 to 16 |
/dungeon admin |
toggle your own daily bypass |
/dungeon close <run> |
force a run to end |
/dungeon reload |
re-read config.yml |
/dungeon world create <id> |
make an empty dungeon world |
/dungeon world destroy <id> |
delete one |
/dungeon world list |
list them |
/dungeon world bench <count> |
time world creation, 1–64 |
dryrun
Section titled “dryrun”/dungeon dryrun v1/dungeon dryrun v1 7It builds the day’s dungeon from the console with nobody in it, reports the room count, the monsters by kind, the chests, the boss room’s bounds, the lever, the floating sign’s text, the exit portal’s block, every NPC it stood up, both info boards’ contents and the boss spawning, then deletes the world.
The optional day count runs it for a date in the future, which is how you find out whether a change works on all five elements rather than just the one today happens to be.
It also prints the economy: the exchange rate, the price of a seat, the cap, and
the shards a run of this tileset is expected to pay. That report goes red when a
tileset has no [loot] sign in it and no clear bonus is set, because a Soul
cannot be earned on it at all.
If you add a feature, add a line to the dryrun. Everything in this project that broke silently broke because nothing printed it.
/dungeon admin turns the daily bypass on and off for whoever runs it. With it
on, entry is free and the daily is never consulted, no day is stamped and no run
is counted, and nothing found counts: chests hold their loot and never a Soul
Shard, and the clear bonus pays nothing.
The toggle lives in memory and is cleared when you log in, so a night of testing cannot leave an account sitting outside the economy it was being used to tune. That is the reason it is a toggle rather than a permission, since a permission is invisible and stays on.
Who may stand in a dungeon world
Section titled “Who may stand in a dungeon world”Membership is checked on presence rather than on the way in, since a player can
arrive by /tp, a spectator teleport, a /back plugin, a portal or a login at a
saved position, and those routes cannot all be listed. Teleports, world changes,
joins, respawns and portals are checked as they happen, and a sweep once a second
covers anything that moves a player without firing an event. Anyone who fails is
put back at the same home a run sends people to, and the console says who, how,
and which check refused them.
dungeon.admin on its own does not pass. It has to be dungeon.admin with the
bypass switched on for the session, for the same reason the bypass defaults off
at login. /dungeon world create therefore says so rather than teleporting you
into a world you would be removed from a second later.
The ejection count is in /dungeon dryrun, where it should read zero.
What reload leaves alone
Section titled “What reload leaves alone”/dungeon reload re-reads config.yml: loot tiers, NPC roles, board settings and
the souls numbers. It does not touch the ledger, which is state rather than
configuration, and reloading it would roll back everybody’s day.
Purses already saved are not re-folded when the exchange rate changes. Loose
shards are folded into Souls as they are earned and again when the ledger is read
at startup, so a change to shards-per-soul reaches what people already hold at
the next restart.
The generator underneath. Builders mostly need savetile and the rest is tileset
plumbing.
| Command | Does |
|---|---|
/maze savetile <set> <name> |
save the current selection as a tile |
/maze tool / tool wand <set> |
the tile stamp and cell wand |
/maze select / frame |
selection helpers |
/maze tiles / newset / deletetile / deleteset |
manage tilesets |
/maze gen / preview |
generate a maze, or print what one would be |
/maze undo / cancel |
take one back, or stop one mid-paste |
/maze daily |
what today’s maze would be |
/maze weights <set> <tile> <value|auto> |
tile frequency |
/maze convert / export |
schematic migration and topology export |
/maze demotiles |
rewrite the built-in demo tileset |
/maze modes |
generator algorithms |
/maze reload |
re-read config |
/maze reload does not reload tilesets and says so when you run it. To force one,
use /maze tiles <name>, which reloads from disk. savetile re-reads the set as
it writes.