Skip to main content

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.

note

📸 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.

tip

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:

SectionPathDescription
Sites/dashboard/votingAdd, edit, and remove voting sites
Rewards/dashboard/voting/rewardsConfigure vote and monthly reward templates
Queue/dashboard/voting/queueMonitor the reward command queue
Leaderboard/dashboard/voting/leaderboardView monthly results and trigger manual processing

Managing Vote Sites​

From Dashboard → Voting, you can add or edit voting sites. Each site has:

FieldDescription
Site NameDisplay name shown to players on the /vote page
Service NameInternal identifier used to match incoming vote webhooks
Vote URLDirect link to your server's listing on the voting site
ActiveWhether the site is shown and accepting votes
Display OrderOrder 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.

FieldDescription
Reward Typevote (per-vote reward) or monthly_top (end-of-month award)
Command TemplateCommand to execute - supports {player}, {uuid}, {month}, and {voteCount} placeholders
Execute AsWhether to run the command as console or the player
Server ScopeWhich server(s) the command should run on
ActiveWhether 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.

warning

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.