Configuration
The paper module reads a single config.yml, deserialized into LeaderboardsConfiguration (@ConfigSerializable). /leaderboard reload re-reads it without a restart. The master module has no YAML configuration of its own — it only copies a database.properties JDBC file on load.
config.yml
leaderboards
Map<String, Entry> — the map key is only used to iterate the config; the leaderboard's real id (used in commands, placeholders and packets) is the id field inside each entry, and the two should match.
Field | Type | Description |
|---|---|---|
| String | The leaderboard id. Used by |
|
| Icon shown for this leaderboard in menus (material, name, lore — standard AstralCore item). Also the target of |
|
| A MiniMessage component appended after a formatted score, e.g. a unit label. |
|
| How a raw |
|
| Ranking direction. |
FormatType
Controls how %entry_formattedScore% renders LeaderboardEntry.score() (a double).
Value | Renders as |
|---|---|
| Space-grouped integer ( |
| Comma-grouped integer ( |
| Human-readable duration, score treated as seconds (multiplied by 1000 before formatting). |
| Human-readable duration, score treated as milliseconds directly. |
SortDirection
Value | Ranking |
|---|---|
| Higher score ranks first — economy, kills, blocks. |
| Lower score ranks first — timed leaderboards such as |
builtin-leaderboards
Map<BuiltinLeaderboard, String> — maps a built-in tracked stat to the leaderboard id it should write to. Only BLOCKS, KILLS and FISHED exist as BuiltinLeaderboard values. If a built-in stat's key is missing from this map, PlayerDataListener skips flushing it on quit for that stat (logged, not an error).
See Developer API for what each built-in tracker counts.
database.properties (master only)
A standard JDBC properties file copied from the master module's jar on onLoad; it reuses AstralCore's connection model. See the AstralCore database docs.