DaisyVotes — Troubleshooting
Organised by what you’re seeing, not by what’s broken. Start with the doctor either way.
Run the doctor first
Section titled “Run the doctor first”/daisyvotes doctorIt checks the receiver, your site aliases, reward commands, storage, file permissions, menu layout, custom-item plugins, and — on a network — whether your servers can actually see each other, and tells you which is wrong and what to do. Most of the problems below are already named in its output.
Votes never arrive
Section titled “Votes never arrive”By far the most common problem, and almost always one of five things. Work down the list — each step rules something out.
-
Is the receiver listening?
Terminal window /daisyvotes receiver statusIt should say listening and name a port. If it says disabled,
receiver.ymlhasmode: Disabled. If it says the port is in use, something else has it — usually NuVotifier, still installed. -
Is the port reachable from outside?
The voting site connects in to your server. The port must be open in your firewall and forwarded by your host, and it is not your Minecraft port. Test it from another machine:
Terminal window telnet your-server-ip 8192A connection that hangs open is correct — the receiver speaks first. Connection refused means the port is closed or nothing is listening.
-
Does the vote site have the right key?
Votifier v2 sites need the token from
receiver.yml(tokens.default). Votifier v1 sites need the public RSA key:Terminal window /daisyvotes receiver publickeyPaste it into the site exactly, including the header and footer lines if it asks for them. A wrong key produces a vote the receiver rejects rather than one it never sees — check the console.
-
Does the service name match a site?
This is the one people miss. DaisyVotes matches an incoming vote by comparing the service name the site sends against each site’s
idandservice-aliasesinmenus.yml. If nothing matches andsites.require-configured-siteistrue(the default), the vote is rejected.Turn on rejection logging to see exactly what the site called itself:
receiver.yml security:log-rejected-votes: trueThen vote. The console prints the service name. Add that string to the site’s
service-aliasesand reload. -
Is the site actually sending?
Most listings have a “test vote” button in their panel. If nothing reaches you and the port is open, the problem is on their side — some sites queue votes for hours, and some silently disable a listing whose test failed weeks ago.
Votes arrive but nothing is given out
Section titled “Votes arrive but nothing is given out”On Minecraft 1.21.0 – 1.21.4, update to 2.6.0. Every item DaisyVotes built from config threw an error on those versions, so votes were counted and rewards were silently never granted. The console shows NoSuchFieldError. This is fixed in 2.6.0.
Otherwise:
- The player was offline. Rewards queue for
/vote claim. Checkoffline-rewards.enabledinconfig.yml. - The player was in a restricted world. If you have configured
world-restrictionswithqueue-rewards: true, items are held deliberately and the player is told so. The vote itself still counts. - A
Commandreward is wrong. Reward commands run from console, so they need a player name —/daisyvotes doctorflags commands that reference a plugin you do not have. Test with/daisyvotes testvote <player>. - Their inventory was full. Items overflow to the ground at the player’s feet.
The leaderboard numbers look wrong
Section titled “The leaderboard numbers look wrong”A player seems to have lost votes
Section titled “A player seems to have lost votes”Most likely they exist twice. Voting sites usually do not send a Minecraft UUID, and before 2.6.0 a vote that arrived while the player was offline was recorded under a UUID derived from their name — not their real one. Votes cast while online and offline landed under two identities and their totals split between them.
2.6.0 stops new splits. It does not merge existing ones. To find them:
SELECT uuid, name, totalVotes FROM vote_players WHERE name = 'PlayerName';Two rows with the same name is the split. The fabricated UUID is a version-3 UUID — its 15th hex digit is 3.
Daily or weekly totals are stale
Section titled “Daily or weekly totals are stale”Before 2.6.0, scoped counters were only reset when that player next voted, so someone who last voted on Tuesday still showed Tuesday’s daily count on Friday — in game, in PlaceholderAPI, and on any website reading the database. Fixed in 2.6.0.
If you read these columns from a website, they must be filtered on the period key. See Database access.
/vote top and the top-voter awards disagree
Section titled “/vote top and the top-voter awards disagree”They measure different things, and that is intentional. /vote top reads each player’s counters; top-voter awards count rows in the vote log for the period. On a server that ran a version before 2.6.0, simultaneous votes could be credited once while both were still logged — so the log is the higher, and truer, number.
I changed the config and nothing happened
Section titled “I changed the config and nothing happened”- Candle
nameandloredo nothing. A site candle’s name comes fromdisplay-nameand its lore is generated. Usevote-menu.buttonsfor text you control. {site_votes},{site_reward_hint}and{cooldown}are not real. Older generatedmenus.ymlfiles shipped candle lore containing them; they never existed in the plugin. Harmless to leave, safe to delete.visuals.banner-styledoes nothing since 2.5.0.visuals.startup-bannerstill turns the banner off.- A button vanished. Its
slotis outside the menu’srows, it hasenabled: false, or two buttons share a slot and one is drawn over the other./daisyvotes doctorreports all three. - You edited the wrong file. Menus live in
menus.yml, rewards inrewards.yml, shop entries inshop.yml. Editingconfig.ymlwill not move a button. - A
%papi_placeholder%prints literally instead of resolving. Check/daisyvotes doctorfirst — PlaceholderAPI has to be installed. If it’s hooked, check where the placeholder is: it resolves in vote-menu item name/lore, action bars,/vote//daisyvotescommand replies, and aMessage-type reward’svalue— but aCommand-type reward’svaluenever resolves one, and neither do broadcasts or a handful of the direct per-vote chat confirmations (vote-received,wheel-reward-wonamong them). See Other plugins’ placeholders inside DaisyVotes for the full list.
Config files are watched, so edits apply on save — you do not need /daisyvotes reload, though it does no harm.
Database problems
Section titled “Database problems”Failed to create indexon MySQL, on an old build. Earlier versions emittedCREATE INDEX IF NOT EXISTS, which is MariaDB/SQLite/Postgres syntax that stock MySQL rejects — table setup could fail on genuine MySQL. Fixed; update if you still see it.- Duplicate rows. Schema migration only ever adds columns — it never adds a primary key to a table that already existed without one. If your tables predate DaisyVotes’ own creation of them, check with
SHOW CREATE TABLE player_site_votes;and add the primary key by hand. - Vote totals reset after upgrading to 2.5.0. Expected and documented — 2.5.0 moved to new column names. Your old rows are still there, unread. See Migrating.
backend: postgresfails on startup, on an old build. The Postgres driver was never actually bundled before 2.6.2 —backend: postgrescould only ever fail with aClassNotFoundException. Fixed; update. Postgres is otherwise the newest of the three supported backends — see Storage & Data.
Custom items (Nexo, Oraxen, ItemsAdder) not showing up
Section titled “Custom items (Nexo, Oraxen, ItemsAdder) not showing up”- The slot shows a plain material instead of your item. Either the named plugin isn’t installed/enabled, or it has no item with that id — both are typos or a load-order problem, not a DaisyVotes bug.
/daisyvotes doctornames the exact configured id and which plugin would resolve it. - Check the spelling of the prefix. It’s
nexo:,oraxen:, oritemsadder:, matched on the text before the first colon —itemsadder:mypack:rubyis correct; DaisyVotes handsmypack:rubyto ItemsAdder itself. - DaisyVotes has no hard dependency on any of the three. It reaches whichever is installed by reflection, so nothing needs to be added to
plugin.ymlon your end — DaisyVotes already soft-depends on all three for load order. If the plugin loads after DaisyVotes on a given start, that’s a load-order issue with the other plugin, not a missing dependency. - New in 2.6.2. If an item looks visually wrong in one menu but not another (name, model, glint), report it — this is the newest of this release’s changes.
Multi-server problems
Section titled “Multi-server problems”/daisyvotes doctorreports “Another server is already using server-id ’…’”. Two servers on this Redis network are answering to the samenetwork.yml→server-id. If you left it onauto, this can no longer happen from two servers sharing a machine (fixed in 2.6.2 —autonow derives from hostname and game port, not the server software name); a hand-set id that’s been copied to twonetwork.ymlfiles is the remaining way to hit this. Give each server its own id and reload both.- Vote counts drifted apart between servers before 2.6.2. That’s the symptom of the id collision above: each server read the other’s cross-server messages as its own echo and silently discarded them — cache invalidations, vote-party broadcasts and reward routing all included. Nothing errored. Updating and giving each server a distinct id stops new drift; it doesn’t reconcile numbers that already diverged.
- A vote on one server and a shop purchase on another, close together, used to be able to lose one of the two. Fixed in 2.6.2 — player-record updates now take a lock across the whole network, not just the one JVM. See Locking a player’s record across servers.
Testing without waiting for a real vote
Section titled “Testing without waiting for a real vote”/daisyvotes testvote <player> # simulates a vote on every site at once/daisyvotes testvote <player> <site> # simulates one site/daisyvotes forceparty # triggers a vote party now/daisyvotes givespin <player> 1 # grants a wheel spintestvote with no site completes the daily set in one command, so you can test /vote spin immediately. It runs the full pipeline — rewards, points, streak, party, Discord — so what you see is what a real vote does.
Getting help
Section titled “Getting help”Have this ready and most questions answer themselves:
- The output of
/daisyvotes doctor - Your DaisyVotes and Paper versions, and the exact Minecraft version
- The console from server start, and from the moment a vote should have arrived
receiver.ymlwith the tokens and private key removed