Configuration
AstralVote#loadConfiguration loads config.yml into MainConfiguration and messages.yml into the VotesMessages enum. It also copies (but does not parse) database.properties on first run — that file configures the standalone master module's own MySQL connection and has no effect on the Paper plugin.
config.yml
Key | Type | Description |
|---|---|---|
| MiniMessage | Deserialized into |
| Run once per claimed vote when a player uses | |
| Map of service | The vote services players can vote for. Map keys are arbitrary ids for YAML organization only — see below. |
The shipped config.yml has no notification-message key at all, even though MainConfiguration declares it as a required (non-@Nullable) ComponentWrapper record component. Since Configurate maps camelCase Java fields to kebab-case YAML keys, the expected key is notification-message. Whether a missing key here causes a load failure or resolves to an empty component depends on ComponentWrapper's own deserializer — either way, the field is dead: nothing in the plugin ever calls MainConfiguration#notificationMessage().
services
Each entry is a MainConfiguration.VoteService record and doubles as a ComplexPlaceholder under the service namespace (see Placeholders).
Field | Type | Description |
|---|---|---|
| String | The identifier |
| String | Display name. Also accepted (case-insensitively) as a match against the vote's |
| String | The voting site URL, substituted into |
| Duration | How long after a vote for this service before the player can vote again. Parsed by |
DurationParser's regex ((\d+)\s*(y|d|h|ms|m|s)) requires a unit letter directly after every number — each match is scanned independently and a bare number with no unit is silently dropped rather than erroring. The shipped cooldown: "1h30" therefore parses as exactly 1 hour, not "1 hour 30 minutes": the 1h group matches, but the trailing 30 has no unit and is discarded. Use "1h30m" to get the intended 90-minute cooldown.
The map key itself (serveurs-prives, serveurs-minecraft) is not read as data — only id/name/link/cooldown inside each entry matter for matching and display.
messages.yml
Backed by the VotesMessages enum (MessageEnum), loaded via AstralVote#loadEnum. Every value is a MiniMessage ComponentWrapper. The shipped file is French.
Key | Placeholders | Sent when |
|---|---|---|
| — | A |
|
| The cooldown for a service the player already voted for has elapsed and they haven't been re-notified since. |
|
| On join, if the player has unclaimed votes, reminders are enabled, and at least one unclaimed vote's service cooldown has already elapsed. |
| — |
|
|
|
|
| — | A database error occurred while fetching or persisting votes during |
| — |
|
| — |
|
See also
Overview — cooldown/reminder/claim mechanics these keys drive.
Actions —
claim-actions' bracket syntax.Placeholders —
%votes_*%and theservicechain placeholder.