Skip to content

Minecraft vote rewards with VotingPlugin

Server lists send a message to your server for every vote, but nothing happens until a reward plugin reacts to it. VotingPlugin is a popular choice: it gives items, money or commands per vote site, shows vote links with /vote and adds extras like vote parties and streaks. This guide connects it to BestMCServerList step by step.

Updated:

How a vote turns into a reward

Three parts work together. A player votes on a server list. The list sends a vote message to Votifier on your server, together with the player name and a service name that identifies the list. VotingPlugin listens for these messages, looks up the vote site whose ServiceSite matches the service name, and runs that site's rewards.

So VotingPlugin does not receive votes on its own. You need a working Votifier first, usually NuVotifier. If you have not set it up yet, follow the NuVotifier setup guide and come back.

  • Votifier receives the vote and checks it (token for v2, RSA key for v1).
  • VotingPlugin matches the service name and gives the rewards.
  • BestMCServerList sends the service name BestMCServerList.

Step 1: Install VotingPlugin

  1. Make sure NuVotifier runs and is reachable. A test vote from your Votifier page should show up in the console.
  2. Put the VotingPlugin JAR into the plugins folder of your Spigot or Paper server and restart once.
  3. VotingPlugin creates its files, among them plugins/VotingPlugin/VoteSites.yml for the vote sites and Config.yml for general settings.

On a proxy network, votes usually arrive at the proxy and rewards run on the backend servers. Keep VoteSites.yml the same on every backend.

Step 2: Add BestMCServerList to VoteSites.yml

Each list you are on gets its own entry under VoteSites. The key is an internal name: keep it short, without spaces and without dots. The important line is ServiceSite.

plugins/VotingPlugin/VoteSites.yml
VoteSites:
  BestMCServerList:
    Enabled: true
    Name: 'BestMCServerList'
    Priority: 5
    ServiceSite: 'BestMCServerList'
    VoteURL: 'https://bestmcserverlist.net/server/your-server/vote'
    VoteDelay: 24h
    WaitUntilVoteDelay: false
    VoteDelayDaily: true
    ForceOffline: false
    DisplayItem:
      Material: 'DIAMOND'
      Amount: 1
    Rewards:
      Commands:
      - 'eco give %player% 250'
      - 'give %player% diamond 2'
      Messages:
        Player: '&aThanks for voting on BestMCServerList!'
  • Enabled: true is needed, the default is false.
  • ServiceSite must match the service name the list sends. VotingPlugin compares it case-insensitively, but otherwise the text has to be identical. For us it is BestMCServerList.
  • VoteURL is the link players get with /vote. Copy your vote link from your server page; your-server stands for your own slug.
  • DisplayItem is required for every site, because it is shown in VotingPlugin's menus.
  • The commands run from the console, and %player% becomes the voter's name. eco give needs an economy plugin; use whatever commands your server has.

Save the file and run /av reload.

Step 3: Vote delay and the daily reset

On BestMCServerList each Minecraft name can vote once per server and calendar day, and the day follows the time zone Europe/Berlin. A new vote is possible right after midnight Berlin time, not 24 hours after the last one.

  • VoteDelay: 24h is used for /vote next, the countdown players see. It does not block votes.
  • VoteDelayDaily: true resets the delay once a day instead, which fits lists with a daily reset like ours. VoteDelayDailyHour sets the hour in server time (1–24). If your server clock does not run on Berlin time, keep the difference in mind when you set it.
  • WaitUntilVoteDelay: true would reject votes that arrive before the delay is over. Leave it on false: we already enforce one vote per name and day, and a wrong delay setting would cost players their rewards.

Step 4: Test the rewards

  1. Run /av vote <player> BestMCServerList. This runs the rewards of that site for a player and shows that your reward config works. It does not test Votifier.
  2. Open your Votifier page on BestMCServerList and press Send test vote. We send a vote for the name TestVote, which does not count for the ranking. The delivery log shows whether your server accepted it.
  3. Check the console for a line like [VotingPlugin] Received a vote from service site 'BestMCServerList' by player 'TestVote'!.
  4. Run /av servicesites to list the service names VotingPlugin has received so far.

If the test vote arrives but VotingPlugin reports an unknown service site, the ServiceSite line is the problem. With AutoCreateVoteSites: true in Config.yml (the default), VotingPlugin may also create a new entry by itself; it still needs Enabled: true and your rewards.

Bedrock players and offline votes

Bedrock players who join through Geyser and Floodgate have a name prefix, by default a dot: .Steve. They vote with that full name, and we pass it to Votifier unchanged. In VotingPlugin, set the same prefix in Config.yml. On a network use the same value in the proxy and in every backend:

plugins/VotingPlugin/Config.yml
BedrockPlayerPrefix: '.'

.Steve and Steve are different players. Never remove the prefix to make a name fit.

Players do not have to be online when they vote. Rewards have a RewardType of ONLINE, OFFLINE or BOTH (the default). Test offline votes as well, because commands that need an online player behave differently.

Vote parties, milestones and streaks

Once the basic rewards work, SpecialRewards.yml adds goals that keep players voting: a VoteParty that triggers when the whole server reaches a number of votes, VoteMilestones for personal totals and VoteStreaks for voting several days in a row. Keep rewards useful but fair; rewards that break your economy make voting feel mandatory.

Want a rank badge for top voters? The LuckPerms prefix guide shows how to give players an image prefix with a command, which you can run as a reward.

Common mistakes

ProblemFix
Test vote arrives, nobody gets anythingThe vote site is not enabled, or ServiceSite is not BestMCServerList. Check /av servicesites.
Nothing in the console at allVotifier does not receive the vote. Check port, token and firewall with the delivery log on your Votifier page.
NuVotifier logs that no listeners are availableVotingPlugin is not installed or did not load. Check the startup log.
/av vote works, real votes do notThe admin command skips Votifier. Test with Send test vote instead.
Bedrock players get nothingBedrockPlayerPrefix does not match your Floodgate prefix.

Frequently asked questions

What is the service name of BestMCServerList for VotingPlugin?

It is BestMCServerList. Put exactly this into the ServiceSite line of the vote site in VoteSites.yml.

Do I need NuVotifier for VotingPlugin?

Yes. VotingPlugin gives the rewards, but the votes reach your server through Votifier. NuVotifier is the maintained version and supports protocol v1 and v2.

When can players vote again on BestMCServerList?

Once per Minecraft name, server and calendar day. The day changes at midnight in the time zone Europe/Berlin.

Do Bedrock players get vote rewards?

Yes, if they vote with their full Floodgate name such as .Steve and BedrockPlayerPrefix in VotingPlugin matches your Floodgate prefix.

Sources

Checked against the official documentation: