Voting
Reward your community for voting on server listing sites. Zander tracks votes as they come in, maintains a public monthly leaderboard, and automatically runs reward commands in-game at the end of each month — no manual processing required.
📸 Screenshot: The /vote page showing a list of voting sites, a vote button for each, and the current month's leaderboard
For Players
How to Vote
Browse all configured voting sites at /vote. Each site links directly to the server's listing page where you can cast your vote. Votes are recorded automatically once detected.
The page also shows the monthly leaderboard — the top voters for the current month. Climb the leaderboard to earn end-of-month rewards configured by your staff.
Monthly Rewards
At the end of each month, Zander automatically processes rewards for eligible voters. Rewards are delivered as in-game commands (items, currency, ranks, etc.) executed via the command bridge when you next join the server.
Make sure your Minecraft account is linked to your website account so your votes are credited correctly.
For Staff
Dashboard
The voting dashboard at Dashboard → Voting (requires zander.web.voting) has four sections:
| Section | Path | Description |
|---|---|---|
| Sites | /dashboard/voting | Add, edit, and remove voting sites |
| Rewards | /dashboard/voting/rewards | Configure vote and monthly reward templates |
| Queue | /dashboard/voting/queue | Monitor the reward command queue |
| Leaderboard | /dashboard/voting/leaderboard | View monthly results and trigger manual processing |
Managing Vote Sites
From Dashboard → Voting, you can add or edit voting sites. Each site has:
| Field | Description |
|---|---|
| Site Name | Display name shown to players on the /vote page |
| Service Name | Internal identifier used to match incoming vote webhooks |
| Vote URL | Direct link to your server's listing on the voting site |
| Active | Whether the site is shown and accepting votes |
| Display Order | Order in which sites appear on the /vote page |
Reward Templates
Reward templates define what commands run when a player votes or wins a monthly top-voter award. Configure them at Dashboard → Voting → Rewards.
| Field | Description |
|---|---|
| Reward Type | vote (per-vote reward) or monthly_top (end-of-month award) |
| Command Template | Command to execute — use {player} as the player name placeholder |
| Execute As | Whether to run the command as console or the player |
| Server Scope | Which server(s) the command should run on |
| Active | Whether this template is included in processing |
Monthly Reward Processing
Zander automatically processes monthly rewards on the 1st of each month at 00:05 UTC via voteMonthlyRewardCron. You can also trigger processing manually from Dashboard → Voting → Leaderboard → Process Month.
Only trigger manual processing after the month has ended and all votes have been recorded. Processing the same month twice may result in duplicate rewards.
Reward Queue
Commands generated by reward processing are queued in the database and consumed by the zander-addon plugin via the command bridge. Monitor queue status at Dashboard → Voting → Queue, filterable by status (pending, claimed, completed, failed).
Configuration
Accepting Votes (Ingest)
Voting sites send vote notifications to your ingest endpoint:
POST /vote/ingest
Configure your voting site's webhook to point to this URL. The expected body is:
{
"playerName": "Steve",
"playerUuid": "...",
"serviceName": "your-service-name",
"receivedFrom": "site-identifier",
"receivedAt": "ISO date"
}
serviceName must match the Service Name configured for that site in the dashboard.
config.json
Monthly reward processing tie-breaking behaviour is configured in config.json (votes with equal counts are broken by earliest timestamp by default).
Feature Toggle
"vote": false
Disabling this removes the /vote page, stops vote ingestion, and disables the voting dashboard.