First-vote setup
From a clean Paper install to a working /vote menu in five minutes.
This guide walks you through getting your first vote to land correctly on a fresh server. Follow it once on a staging box before you run it on production — testing the loop end-to-end is a lot easier when no real players are watching.
What you'll need
- A Paper / Spigot 1.20+ server you can stop and restart
- NuVotifier (or another Votifier-compatible plugin) installed
- A vote tracker site you've already registered the server on (any one will do — Minecraft-MP, TopG, Planet Minecraft, etc.)
- The TDX VotePlus jar from your purchase account
Steps
Confirm NuVotifier is actually receiving votes
Before installing VotePlus, prove that the existing setup is working.
/nvreload
/testvote YourPlayerNameYou should see a [NuVotifier] Got a protocol v1 vote record from ...
line in latest.log. If you don't, fix that first — VotePlus reacts
to the same event NuVotifier dispatches, so if NuVotifier isn't
receiving votes, neither will VotePlus.
Drop in TDX VotePlus and start once
Place the jar in plugins/, start the server, and let it generate
the default config tree under plugins/TDXVotePlus/. Stop the server
once it finishes loading — we want to edit the configs from a known
clean state before running real votes.
Edit vote-sites.yml to match your real sites
Open plugins/TDXVotePlus/vote-sites.yml and replace the example
sites. The site key must match the serviceName your tracker
sends — that's how the cooldown timer is keyed. If you don't know
what your tracker sends, leave the example sites in for now and
move on; you can fix them after the test vote.
Define a minimal reward pool
Open plugins/TDXVotePlus/vote-rewards.yml and replace the default
rewards with something obvious you'll notice when it fires:
rewards:
- type: command
value: "give %player% diamond 1"
- type: message
value: "<#4DA6E8>TEST: vote received from %site%</>"A diamond is impossible to miss in your inventory, and the chat message confirms the placeholder substitution actually works.
Start the server and fire a test vote
/stop
# (start the server again)
/testvote YourPlayerNameYou should immediately see:
- A diamond appear in your inventory
- The
<#4DA6E8>TEST: vote received from ...</>line in chat - The vote sound + particles fire
latest.logshow a[TDXVotePlus] Vote received from ...line
If any of those four things is missing, walk back through the steps — the problem is almost always either NuVotifier not dispatching the event or a typo in the reward pool.
Open the in-game GUI
/voteThe main menu should open with your sites listed. Open the
leaderboard tab — your test player should be at #1 with one vote.
Open the milestones tab — the first-vote milestone should already
be marked as completed.
Replace the test rewards with your real ones
Now that the loop is proven, edit vote-rewards.yml again and put
in the rewards you actually want to ship. Run /voteplus reload to
pick them up without restarting.
/voteplus reload
/testvote YourPlayerNameVerify the new rewards fire correctly, and you're done.
After this guide, the natural next steps are tuning your vote party threshold, defining milestones, and (if you have multiple backends) setting up per-server isolation.