TDXPlugins
TDX VotePlusGuides

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 YourPlayerName

You 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:

plugins/TDXVotePlus/vote-rewards.yml
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 YourPlayerName

You should immediately see:

  • A diamond appear in your inventory
  • The <#4DA6E8>TEST: vote received from ...</> line in chat
  • The vote sound + particles fire
  • latest.log show 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

/vote

The 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 YourPlayerName

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