DGuard

NuVotifier: votes from server lists and rewards

When a player votes for your server on a server list, the site can tell your server about it over the Votifier protocol. The NuVotifier plugin receives the vote and a separate listener plugin hands out the reward. Here's the setup, keys and tokens, vote forwarding on a network and what to open in the firewall.

The DGuard team8 min read

In short: drop NuVotifier into plugins/ and restart — it creates its config and keys and listens on port 8192. On the server list, enter your address, that port and the public key from plugins/NuVotifier/rsa/public.key (or a token, if the site supports protocol v2). Install a reward plugin — NuVotifier doesn't give rewards itself. Open only the vote port in the firewall, and on a network put NuVotifier on the proxy and forward votes to the servers.

What Votifier and NuVotifier are

Votifier is the original plugin and protocol that server lists use to tell a server about a player's vote. NuVotifier is a secure replacement for the original Votifier: any reward plugin that works with Votifier works with it too. NuVotifier is open source under GPLv3, one jar for Bukkit, Spigot and Paper, Sponge 7, BungeeCord and Waterfall, and Velocity. Official releases are on GitHub, with a mirror on SpigotMC.

The latest release of the original NuVotifier on GitHub is 2.7.3. There's also a fork, azuvotifier (also GPL-3.0), on Modrinth: it lists Paper, Folia, Velocity and BungeeCord support and points to the same setup guide. Whichever you pick, check that the plugin page lists your server version.

A single server: setup

  1. 1

    Install the plugin

    The NuVotifier jar goes into plugins/, then a full restart. How to install plugins: install a plugin.

  2. 2

    Check the port

    NuVotifier listens on 8192 by default. The port must be free and differ from the game port: if Minecraft is on 25565, NuVotifier can't use 25565. On shared hosting, ask support to open a port for it.

  3. 3

    Add the server to a list

    Enter the address, the NuVotifier port and the contents of public.key — or the token, if the site accepts protocol v2.

  4. 4

    Install a reward plugin

    NuVotifier only receives the vote. A listener plugin hands out the reward: items, currency, a chat message.

  5. 5

    Test a vote

    /testvote simulates a vote, and a server list may also offer to send a test vote. If the log shows nothing, the site couldn't reach the port — see below.

plugins/NuVotifier/config.yml — the essentials (single server)
host: 0.0.0.0
port: 8192
disable-v1-protocol: false
tokens:
  default: <generated on first start>
forwarding:
  method: none

Reload the config with /nvreload — from the console only. The developers don't support /reload or PlugMan: after them NuVotifier may stop working until a full restart.

RSA key and token: protocols v1 and v2

RSA key (v1)Token (v2)
What it isA pair of files, public.key and private.key, in plugins/NuVotifier/rsa/A short secret string under tokens in the config
Who gets itThe server list gets only public.key. Never share private.keyOnly server lists that support NuVotifier voting (v2), and your own servers on a network
ReliabilityThe old protocol: the developers call it insecure, and sites often don't notice failed deliveriesThe new protocol: more secure and easier to diagnose

disable-v1-protocol is false by default: per the config comment, most voting sites only support v1, so the developers don't recommend turning it off on a server that takes votes from sites. The keys only work as a pair — don't separate them. If the log says Could not decrypt data (is your key correct?), the public key on the server list doesn't match yours.

A reward plugin

NuVotifier's documentation lists well-known listeners for Bukkit servers, such as VotingPlugin (open source on GitHub, listed on SpigotMC) and SuperbVote; some listeners are paid. Pick one for your server version and for whether you need network support. If the server lags when votes come in, the cause is usually not NuVotifier — it works off the main thread — but the listener or the commands it runs. The spark profiler finds the culprit: see server lag.

A server network: vote forwarding

On a Velocity or BungeeCord network, NuVotifier goes on the proxy and on every server. The proxy receives votes from server lists and forwards them to the servers. There are two methods, and the developers recommend the first.

  • `pluginMessaging` forwards over the plugin channel (nuvotifier:votes) through existing player connections. On the servers: forwarding.method: pluginMessaging and port: -1 — they need no port of their own. On the proxy: a free port (8192 works) and the same method. By default a vote goes to every server behind the proxy; excludedServers leaves some out, and onlySendToJoinedServer: true sends it only to the server the player is on. Votes for empty servers are cached in a file, for 10 days by default.
  • `proxy` makes the proxy connect to each server's NuVotifier the way a server list would. On the servers: their own port, the token from tokens.default and disable-v1-protocol: true; on the proxy: method: proxy with address, port and token for each server. There's no vote cache and it's harder to set up — use it only if the first method doesn't fit.
BungeeCord proxy: plugins/NuVotifier/config.yml (on Velocity, the same keys in config.toml)
host: 0.0.0.0
port: 8192
forwarding:
  method: pluginMessaging
  pluginMessaging:
    channel: nuvotifier:votes
    cache: file
    onlySendToJoinedServer: false

Firewall: open only the vote port

A server list connects to NuVotifier over TCP, so besides the game port open only the vote port — on the proxy, if you run a network. With pluginMessaging the NuVotifier ports on the servers behind the proxy are off (-1); with proxy only your proxy connects to them, so open them for the proxy, not the whole internet. At home you also need port forwarding on the router — see server IP and port.

ufw on a VPS: the game port and the vote port
sudo ufw allow 25565/tcp   # Minecraft or the proxy
sudo ufw allow 8192/tcp    # NuVotifier
sudo ufw status verbose

If votes don't arrive and the log is empty, the developers' troubleshooting guide lists the usual causes: NuVotifier didn't enable, couldn't bind the port, listens on the wrong IP (try host: 0.0.0.0), is blocked by a firewall or sits behind NAT without port forwarding.

Rewards, automation and the anticheat

The vote itself is cast on the server list's website, and the anticheat doesn't see it: it won't catch vote manipulation on a site. But rewards for votes, playtime and leaderboards attract people who play without being there: the character stands around for days, fishing and eating on its own while the owner sleeps. That tilts rewards and the economy towards automation.

CheatDGuardGrimACVulcanPolarIntaveMatrix
AntiAFKfakes a player at the keyboard
AutoFishfishes by itself
AutoEateats by itself
Who checks automation cheats — per our comparisonAll 47 kinds of cheats in the comparison

DGuard — the best anticheat for a modern Minecraft server — catches AntiAFK, AutoFish and AutoEat along with combat, movement and building cheats — 47 cheat types from the comparison in all. Server lists bring players in, but fair play keeps them: a server where you never meet KillAura or Fly is one players recommend themselves. More on attracting and keeping players: how to promote a server.

FAQ

What port does NuVotifier use?

8192 by default, over TCP. It's set by port in plugins/NuVotifier/config.yml. It must differ from the game port and be open in the firewall.

The vote arrived, so why no reward?

NuVotifier only receives votes — a separate listener plugin, such as VotingPlugin or SuperbVote, gives rewards. Without one the vote shows up in the log and nothing else happens.

Which key do I give a server list?

For protocol v1, only public.key from plugins/NuVotifier/rsa/. Never share private.key. If the site supports protocol v2, you can give it the token from tokens.

How do I set up voting on a Velocity network?

Install NuVotifier on the proxy and on every server. On the proxy: an open port and forwarding.method: pluginMessaging; on the servers: the same method and port: -1. The servers must be reachable only through the proxy.

Sources

All sections

Run the best anticheat for modern Minecraft

DGuard catches all 47 kinds of cheats in our comparison — the closest rival, Intave, has 27. Full protection on every plan, free up to 30 players online.