Commands
AstralDungeons registers a single base command, /dungeon, from two independent ACF BaseCommand classes — one shipped in the bridge module (the lobby) and one in the paper module (dungeon servers) — with different aliases, class-level permissions and subcommands. See Overview: Two-module architecture for how the two builds relate.
Every subcommand method takes a Player as its first parameter, so all subcommands are player-only — none of them are console-runnable.
/dungeon (lobby)
Registered by the bridge module's DungeonCommand. Aliases: /dungeon, /dungeons, /dg (@CommandAlias("dungeon|dungeons|dg")). The base command carries no class-level permission.
Subcommand | Syntax | Permission | Description |
|---|---|---|---|
(default) |
| — | Placeholder only: replies |
|
| — | Creates a dungeon instance for the player's party. See |
|
|
| Reloads the bridge's configuration — |
/dungeon create <blueprintId>
Requires the player to already be in an AstralParty party, resolved with PartyAPI#findByPlayer. If they aren't, the command replies You must be in a party to create a dungeon instance. and stops there.
Otherwise it calls ServerService#createInstance(player, party, blueprintId), which dispatches the creation request to every connected dungeon server and teleports the requesting player plus the rest of the party to whichever eligible server accepts it — effectively the emptiest server able to host that blueprint. See Overview: Creating a dungeon instance for the full request/response flow, and Dungeon & Room Blueprints for what a blueprint ID refers to. On success the player sees Dungeon instance created successfully!; on failure (RPC error, or no eligible server accepted the request) an error message is shown instead.
blueprintId tab-completes with @dungeonBlueprints — see Tab completion.
/dungeon (dungeon server)
Registered by the paper module's DungeonCommand. Aliases: /dungeon, /dungeons (@CommandAlias("dungeon|dungeons")). The class-level @CommandPermission("dungeons.command") gates the entire base command, so every subcommand on this module also requires dungeons.command.
Subcommand | Syntax | Permission | Description |
|---|---|---|---|
|
|
| Reloads |
Tab completion & argument resolution
Name | Module | Registered as | Source |
|---|---|---|---|
| Bridge |
|
|
| Dungeon server |
|
|
The paper module also registers a DungeonBlueprint context resolver (DungeonContextResolver, via registerContext(DungeonBlueprint.class, ...)), which pops the next raw argument and resolves it to a DungeonBlueprint through plugin.blueprints().findDungeon(...), throwing an invalid-argument error (Dungeon blueprint not found: <id>) if no blueprint with that ID is loaded. It is registered but not currently consumed by any subcommand parameter on either module.
Permission summary
Node | Module | Grants |
|---|---|---|
| Dungeon server | Class-level gate on the entire |
| Both |
|