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. The actual voting happens on that external site - a separate plugin watches for your vote there and reports it back to Zander, which makes sure the same vote on the same site on the same day only counts once before adding it to your monthly total.
Check your own stats and vote history any time via your profile, or query /vote/player/<uuid>?month=YYYY-MM directly.
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 - everyone tied for the highest vote count that month. Rewards are delivered as in-game commands (items, currency, ranks, etc.) the next time you're online on a matching server, using the same delivery system that powers rewards in the Mixed and Webstore modules. The winner(s) are also announced in Discord.
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 - supports {player}, {uuid}, {month}, and {voteCount} placeholders |
| 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 its own, shortly after midnight UTC on the 1st of each month, rewarding everyone tied for the top vote count and posting a results message to Discord. You can also trigger processing manually from Dashboard → Voting → Leaderboard → Process Month. It's safe to click more than once - Zander checks whether a month has already been processed and won't reward the same voters twice.
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​
Reward commands wait in a queue until the in-game plugin picks them up and runs them on the player's next visit. Monitor queue status at Dashboard → Voting → Queue, filterable by status (pending, claimed, completed, failed) and player.
Staff can also manually credit a missed vote to a player's monthly total from the admin API, useful when a vote-listener plugin drops an ingest call.
Configuration​
Accepting Votes​
Voting sites need somewhere to tell Zander that a vote happened. Configure your voting site's webhook (its way of automatically notifying another service) to send that notification to this web address:
POST /vote/ingest
It should send the information in this format:
{
"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.