Configuration
AstralPunishments ships separate config files per module — velocity/ and paper/ each get their own copy, loaded independently on onEnable/loadConfiguration(). They point at the same database and schema, so either module can read punishments the other wrote.
database.properties
Both modules copy and load a standard HikariCP JDBC properties file — see the AstralCore database docs for the field reference. The shipped default in both modules points at the same schema:
The tables it expects (punishments, ip_history) are defined in velocity/src/main/resources/schema.sql — see Overview → Data model for the shape.
messages.yml (velocity)
Loaded via loadEnum("messages.yml", PunishmentMessages.class) into the velocity PunishmentMessages enum. Every key is a MiniMessage string; %target_name%, %reason%, %source% and %duration% are available wherever the corresponding punishment supplies them (see the command feedback table below).
Key | Used by |
|---|---|
|
|
|
|
|
|
| Unused by any command path (kept for parity; see note below). |
|
|
| Screen shown to a banned player, both on issue and at the |
|
|
|
|
| Screen shown to an IP-banned player, both on issue and at the |
|
|
|
|
| Any command whose async pipeline fails (database, messaging). |
|
|
messages.yml (paper)
Loaded the same way on the paper side, backing the history GUI and pardon action. These ship in French (the velocity messages.yml above ships in English) — both are per-server, freely re-translatable.
Key | Used by |
|---|---|
|
|
| Pardon action, when the clicking player lacks the type-specific unban/unmute node. |
| Pardon action, after a successful pardon. |
| Pardon action, if the punishment was pardoned by someone else between opening the menu and clicking confirm. |
| Pardon action, for a |
|
|
| Any async failure (database lookup, menu open). |
display.yml
Maps each PunishmentType to the ItemStackWrapper (material / name / lore) used as its icon in the history GUI — loaded into PunishmentDisplayConfiguration (Map<PunishmentType, ItemStackWrapper>). The history rows copy-from this icon and append their own per-punishment lore.
Key | Type | Description |
|---|---|---|
|
| One entry required per |
Menu blueprints
history.yml, detail.yml, and confirm-pardon.yml under menus/punishments/ (registering the menu ids punishment-history, punishment-detail and punishment-confirm-pardon respectively) are copied out of the jar on first load (copyResource, since the menus/ folder isn't auto-extracted) and loaded by MenuService#load(). See Punishment History GUI for their content and click flow.