Astral Realms Documentation Help

Staff Menus

The paper module owns every staff-facing punishment GUI. All of them are ordinary AstralCore menu blueprints under plugins/AstralPunishments/menus/punishments/, opened by MenuService with the data already fetched and wrapped as placeholders — so the blueprints stay pure YAML and can be restyled freely.

Blueprint

Menu id

Opened by

lookup.yml

punishment-lookup

/lookup, every section's back button, an alt row

history.yml

punishment-history

/history, the hub's history button

detail.yml

punishment-detail

A history row

confirm-pardon.yml

punishment-confirm-pardon

The detail menu's pardon button

alts.yml

punishment-alts

/alts, the hub's alts button

iphistory.yml

punishment-ip-history

The hub's addresses button

list.yml

punishment-list

/banlist, /mutelist, /warnlist, /staffhistory

The history, detail and pardon flow has its own page: Punishment History GUI.

The lookup hub

/lookup <player> opens punishment-lookup, a 27-slot router with one button per section. The three sections are pre-counted in parallel before the menu opens, so each button can show how many entries it holds before the viewer drills in.

Parameter

Value

target

The looked-up account (MinecraftPlayerPlaceholder).

historyCount

Number of punishments ever recorded against them.

altCount

Number of accounts sharing an address.

ipCount

Number of addresses on record.

Each button runs [lookup] with its section and %parameters_target_uuid%.

Alts

punishment-alts lists every account that has connected from an address this one has also used — exact-IP alt detection over ip_history, most recently shared connection first. Each row is enriched, in a single follow-up round-trip, with that account's live enforcement status, so the listing shows at a glance who is already banned or muted. Clicking a row opens that account's lookup hub, which is what makes walking an alt network a matter of clicking through it.

Rows are provided as %parameters_alts% under the alts layout taint and rendered through the alt placeholder namespace. An account with no alts gets the no-alts message and no menu.

IP history

punishment-ip-history lists every address the account has connected from, most recently seen first — %parameters_ips% under the ips taint, rendered through the ip namespace. Empty answers no-ip-history.

In-force listings

/banlist, /mutelist and /warnlist share one blueprint, punishment-list, differing only in the rows and headings passed to it: every punishment of those types currently in force network-wide, newest first, capped at 500 rows. /staffhistory <staff> uses the same blueprint for a different question — every punishment that staff member has issued, including lapsed and lifted ones, since the point there is what they handed out rather than what is still standing.

Parameter

Value

punishments

The rows, as punishment placeholders, under the punishments taint.

title/heading/subheading/icon

Per-listing labels and the header item's material.

count

How many rows are shown.

Clicking a row opens that player's lookup hub. An empty result answers no-results and opens nothing.

[lookup]

The single navigation action behind the whole family — hub buttons, section back buttons and alt clickthroughs all go through it.

Arg

Type

Description

section

PlaceholderWrapper<String>

One of hub, history, alts, ip. Case-insensitive; an unknown section is logged and does nothing.

targetId

PlaceholderWrapper<UUID>

The account to open the section for.

actions: - "[lookup] alts %parameters_target_uuid%" - "[lookup] hub %parameter_alt_id%"

Because it takes a UUID rather than a resolved player, the action re-resolves the account itself — which is why an alt row can route straight into another player's hub without the menu ever loading that player.

See also

Last modified: 25 September 2026