Commands
AstralTower registers commands from both modules independently — the paper module's /tower and /spawn run on tower servers, the bridge module's /tower (a different BaseCommand, base alias tower|tour) runs on the lobby. See Overview: two-module architecture.
/tower (tower server)
Registered by the paper module's TowerCommand (@CommandAlias("tower")). Class-level @CommandPermission("tower.command") gates the entire base command. All subcommands take a Player and are player-only, except reload (CommandSender).
Subcommand | Syntax | Permission | Description |
|---|---|---|---|
|
|
| Skips the player's current tower instance to the next room. No-ops with an error if their world isn't part of a tower instance. |
|
|
| Sends the instance back to the previous room. |
|
|
| Jumps the instance directly to room |
|
|
| Prints the current room index, remaining enemy count, and room phase. |
|
|
| Prints the current room index, total room count, and instance state. |
|
|
| Console-runnable. Reloads |
/spawn (tower server)
Registered by the paper module's SpawnCommand. Alias: /spawn. No class-level permission. Player-only (@Default takes a Player).
Sends the player to the spawn server group via TeleportationService#sendToGroup.
/tower (lobby)
Registered by the bridge module's TowerCommand. Aliases: /tower, /tour (@CommandAlias("tower|tour")). No class-level permission — each subcommand carries its own.
Subcommand | Syntax | Permission | Description |
|---|---|---|---|
(default) |
| — | Opens the |
|
|
| Creates a tower instance for the player's party. See below. |
|
|
| Unpauses the tower queue. Replies |
|
|
| Pauses the tower queue (blocks the portal and new instance creation). Replies |
|
|
| Console-runnable. Reloads |
/tower create
Requires the player to already be in an AstralParty party and to be its owner — otherwise it replies not-in-party. Delegates to InstanceService#createInstance, which checks party size against maximum-party-size (party-too-large), that the party doesn't already have an instance (party-already-in-instance), and that the owner and every member have at least one daily ticket (not-enough-tickets), before finding a target server and sending the creation request. See Overview: creating a tower instance for the full flow and its reply messages (creating-instance, instance-created, no-server-found, unexpected-error).
The entry portal (a cuboid defined by portal.min/portal.max, only active on server groups listed in portal-enabled-groups) drives the same createInstance call, but additionally requires access-permission and checks the queue isn't paused first — see Configuration: bridge config.yml.
/tower tickets (lobby)
Registered by the bridge module's TicketsCommand, nested under /tower tickets.
Subcommand | Syntax | Permission | Description |
|---|---|---|---|
(default) |
| — | Player-only. Shows the player's own ticket balance ( |
|
|
| Shows |
|
|
| Sets |
|
|
| Adds |
|
|
| Subtracts |
set/add/take all reply with ticket-balance-updated-other (%player_name% + the new %balance%) and operate on the target's TowerPlayerData (AstralSync player data), not the tower instance's session state.
/tower instance (lobby)
Registered by the bridge module's InstanceCommand, nested under /tower instance.
Subcommand | Syntax | Permission | Description |
|---|---|---|---|
(default) |
|
| Lists every known tower instance grouped by server, resolving each server's display name asynchronously. |
Permission summary
Node | Module | Grants |
|---|---|---|
| Paper | Class-level gate on the entire |
| Paper | Individual |
| Bridge |
|
| Bridge |
|
| Bridge |
|
| Bridge |
|
| Bridge |
|
| Bridge | Required to use the entry portal (configurable). |
| Paper | Bypasses the arena-protection listener (block break/place, item drop, right-click, signs) — see Overview. |