Skip to content

NuVotifier setup on Paper, Velocity and BungeeCord

NuVotifier is the piece between a server list and your reward plugin: the list connects to it for every vote, and it hands the vote to whatever plugin gives the reward. This guide sets it up on a single Paper server and on a Velocity or BungeeCord network, then checks everything with a test vote.

Updated:

How Votifier delivers a vote

  1. A player votes for your server on a list.
  2. The list opens a TCP connection to your server on the Votifier port and sends the player name, its own service name, an address and a timestamp.
  3. NuVotifier checks the message (RSA key for v1, token for v2) and fires a vote event.
  4. A reward plugin such as VotingPlugin listens for that event and gives the reward.

NuVotifier itself gives nothing. It ships without any listener, so you always need a second plugin for the rewards.

Step 1: Install NuVotifier on Paper or Spigot

Put the NuVotifier JAR into the plugins folder and start the server once. It creates its config, an RSA key pair and a token. The console prints the token on first start: Your default NuVotifier token is ….

plugins/Votifier/config.yml
host: 0.0.0.0
port: 8192
disable-v1-protocol: false
tokens:
  default: <generated token>
forwarding:
  method: none
  pluginMessaging:
    channel: nuvotifier:votes
  • host is the address NuVotifier listens on. By default it takes the IP your server is configured for, or 0.0.0.0 for all interfaces.
  • port is the Votifier port, 8192 by default. It must not be the Minecraft port.
  • tokens.default is used for every list unless you add a token under a list's service name.
  • The keys for v1 are created in plugins/Votifier/rsa/ as public.key and private.key.

Step 2: Make the port reachable

Lists connect from the internet, so the Votifier port has to be open for incoming TCP connections. This is where most setups fail.

  • Shared hosting: many panels only open the game port. Add an extra port in the panel and put exactly that number into port. Some hosts assign the number for you.
  • Own VPS or root server: allow the port in the firewall, for example ufw allow 8192/tcp.
  • At home: forward the port in your router to the machine that runs the server.

Restart the server after changing the config. NuVotifier also has /nvreload, which runs from the console.

Step 3: Choose v1 (public key) or v2 (token)

Protocol v1Protocol v2
SecretRSA key pairShared token
What the list needsContent of rsa/public.keyThe token from tokens.default
SupportClassic Votifier; most lists speak itNuVotifier and lists that support it

Never give anyone private.key. If a list supports v2, the token is the simpler choice: one line, no key file. BestMCServerList supports both, so pick what you like on your Votifier page.

Keep disable-v1-protocol: false on a single server. NuVotifier itself warns that many lists only speak v1.

Step 4: Velocity or BungeeCord networks

On a network, the list connects to the proxy. NuVotifier runs on the proxy and forwards votes to the backend servers where the reward plugin lives. The NuVotifier wiki recommends plugin messaging for most networks.

Proxy (Velocity)

plugins/nuvotifier/config.toml
host = "0.0.0.0"
port = 8192
disable-v1-protocol = false

[tokens]
default = "<generated token>"

[forwarding]
method = "pluginMessaging"

[forwarding.pluginMessaging]
channel = "nuvotifier:votes"
cache = "file"

On BungeeCord the same keys live in plugins/NuVotifier/config.yml in YAML form. cache = "file" keeps votes for players who are offline and delivers them later.

Every backend server (Paper)

plugins/Votifier/config.yml
port: -1
forwarding:
  method: pluginMessaging
  pluginMessaging:
    channel: nuvotifier:votes

port: -1 turns off the listener on the backend, so only the proxy receives votes. Make sure your backends are only reachable through the proxy, or someone could send fake votes.

The other option, method = "proxy", sends votes from the proxy to a NuVotifier port on each backend, configured with address, port and token per server under [forwarding.proxy.<name>]. It has no vote cache, so plugin messaging is usually the better fit.

Step 5: Enter the details and send a test vote

  1. Test locally first: /testvote Steve serviceName=BestMCServerList on Paper, or /ptestvote with the same arguments on the proxy. If your reward plugin reacts, the inside works.
  2. On BestMCServerList, open your server in the dashboard and go to Votifier. Enter the public address of the server or proxy, the port and the token (v2) or public key (v1), then save.
  3. Press Send test vote. We send a vote for TestVote that does not count for the ranking, and the delivery log shows within seconds whether it arrived.

Votes from BestMCServerList carry the service name BestMCServerList. Bedrock players who join through Geyser and Floodgate vote with their prefixed name, for example .Steve, and the name reaches NuVotifier unchanged. Each Minecraft name can vote once per server per calendar day, counted in Europe/Berlin time.

Not listed yet? Add your server first, then come back to this step.

Common errors and fixes

ProblemWhat to check
Connection refusedNuVotifier is not running or listens on another port. Compare the port in the config with what you entered.
Timed outA firewall or the host drops the traffic. Open the port for TCP or ask the host for an extra port.
Test arrives, players get nothingNo reward plugin. The console logs A vote was received, but you don't have any listeners available to listen for it.
Vote rejected with v2Token mismatch. Copy tokens.default again, without spaces or quotes.
Works on the proxy, not on the backendThe backend is not set to pluginMessaging, or the channel names differ.
Wrong port enteredThe Minecraft port answers instead of NuVotifier. Use the Votifier port.

Once votes arrive, set up the rewards: our guide to vote rewards with VotingPlugin covers the service name, VoteSites.yml and daily limits. For the bigger picture, see how to get players for a new server.

Frequently asked questions

Which port does NuVotifier use?

Port 8192 by default. You can change it in the config, but it must be a separate port from the Minecraft port and reachable from the internet over TCP.

Where do I find the NuVotifier token?

In plugins/Votifier/config.yml under tokens → default. The console also prints it on the first start.

Do I need NuVotifier on every server of my network?

With plugin messaging, yes: on the proxy to receive votes, and on each backend with forwarding.method: pluginMessaging and port: -1 to hand them to the reward plugin.

Should I use v1 or v2?

Use v2 with a token when the list supports it. v1 with the RSA public key exists for older setups. BestMCServerList supports both.

Does NuVotifier give rewards by itself?

No. It only receives votes. A reward plugin such as VotingPlugin has to listen for them.

Sources

Checked against the official documentation: