Repository navigation
Troubleshooting Advanced
This is a second-level diagnostic guide for administrators who already followed first-vote verification. It targets VotingPlugin 7.1.1 unless a section explicitly says otherwise.
The most useful question is: At what stage does one known test vote stop progressing? Fix the earliest failed stage before changing unrelated settings.
A. Voting website sends vote
|
B. VotifierPlus / NuVotifier receives record
|
C. VotingPlugin receives and matches ServiceSite
|
D. Player identity and vote data accepted/stored
|
E. [Proxy only] vote forwarded or cached for eligible backend
|
F. Reward rules evaluated and delivered (or deferred)
| Last confirmed stage | Look at | First place to investigate |
|---|---|---|
| A only | Website dashboard / external test | Listener TCP port, DNS, public IP, firewall, Votifier v1/v2 key or token |
| B | Listener console | Is VotingPlugin installed and loaded on this process? Duplicate listener forwarding? |
| C | VotingPlugin console | Enabled VoteSites entry, exact ServiceSite name, vote delay enforcement |
| D | Database/startup logs | UUID mode, SQL/SQLite errors, player-known/AllowUnjoined checks |
| E | Proxy + backend logs |
BungeeMethod, shared SQL, backend Server names, SendVotesToAllServers
|
| F | Reward logs/console |
Rewards path, permissions, command syntax, online/offline context, overlapping rewards |
Start with one test vote and its timestamp; repeating votes can complicate cooldown and duplicate analysis.
A standalone/server admin can run:
/av vote <player> <site>
On a proxy:
/votingpluginproxy status
/votingpluginproxy vote <player> <site>
These are useful for isolating VotingPlugin and forwarding behavior, but do not verify inbound access to the Votifier port or the website's Votifier protocol and key/token.
Send a real or listener-generated vote after the internal test. On a healthy path, look for:
[VotifierPlus] Debug: Received vote record -> Vote (from:SERVICESITEHERE username:ExamplePlayer ...)
[VotingPlugin] Received a vote from service site 'SERVICESITEHERE' by player 'ExamplePlayer'!
Exact listener logging varies by build and debug configuration.
- Verify the listener is installed on the process receiving website traffic. In a standard proxy topology, it runs on the proxy.
- Read its generated config:
host: 0.0.0.0means bind on local interfaces, not an address for voting sites. Set the site's public hostname/IP separately. - Confirm the actual TCP listener port (e.g., VotifierPlus often defaults to
8192) is allocated and reachable. This is normally not Minecraft's25565game port. - Check firewall rules at the hosting provider, OS, container, router/NAT, and any tunnel. Verify the bind succeeded and no other process owns the port.
- Match the site's Votifier v1 public key or enabled v2 token protocol. Never disclose
rsa/private.key; do not force v2-only mode while any site still uses v1. - Restart after changing the listener's bind, port, or protocol settings.
If no listener packet arrives, editing VoteSites.yml cannot fix the problem.
- Confirm both plugins loaded without startup exceptions.
- Confirm VotingPlugin and the listener are on the same proxy/backend process where the Votifier event is emitted.
- Avoid simultaneously enabling listener-to-backend forwarding and VotingPlugin proxy forwarding; each vote should enter VotingPlugin once.
- Temporarily enable bounded debug around one vote if needed. Backend
Config.ymlsupportsDebugLevel: EXTRA; the proxy has its own debug options. - Restore normal logging after gathering a small, redacted excerpt.
The incoming vote's ServiceSite is set by the voting website. The matching VoteSites.yml entry might look like:
VoteSites:
MyListing:
Enabled: true
ServiceSite: 'SERVICESITEHERE'
VoteURL: 'https://replace-with-real-vote-url.example'Compare the actual received value in logs or /av servicesites. Matching is case-insensitive but otherwise requires the received service identifier, not an assumed domain. Review the generated site if AutoCreateVoteSites: true is enabled, and replace its placeholder URL/rewards.
Once intended sites work, set AutoCreateVoteSites: false and reload to avoid unknown service IDs automatically creating more entries. With 7.1.1, creating additional sites through /av gui after disabling auto-create may require temporarily re-enabling it; direct YAML edits do not.
Check in this order:
-
Correct section: A per-site reward belongs in
VoteSites.<site>.Rewards; a milestone or vote party is configured inSpecialRewards.yml. See Where to Set Rewards. - Correct player: Verify the identity delivered by Votifier and the target stored by VotingPlugin. Do not silently strip the Bedrock prefix.
- Command syntax: For external crate or economy plugins, test the exact give command in the server console using a real username.
-
Dependencies: A
Moneyreward needs an economy integration; plugin-specific commands need their respective plugin and correct permissions. -
Eligibility: Check permission/world/time restrictions and any
AdvancedPriorityconditions. Only the first matchingAdvancedPrioritybranch executes. -
Proxy routing: On eligible backends, check
ProcessRewards,SendVotesToAllServers, and the configured server role. - Offline behavior: Actions requiring an online player may be deferred or behave differently. Reconnect the player and inspect queued delivery.
A processed vote and successful player total do not prove every reward effect ran.
Inspect all paths before disabling anything:
- Is VotifierPlus forwarding to backends while VotingPlugin forwards the same incoming vote?
- Are there multiple enabled listener instances seeing the same website notification?
- Is proxy
SendVotesToAllServers: trueintentionally letting multiple backends process a vote? For one-server rewards, reviewfalseand the targeted backend policy. - Does
EverySiteRewardoverlap with the per-site reward? - Are both a legacy first-vote reward and its
VoteMilestonesreplacement enabled? - Are multiple enabled milestones or VoteParty reward sections matching the same vote?
Do not try to fix duplicate processing by arbitrarily deleting user totals; isolate and correct the duplicate route first.
For the standard PLUGINMESSAGING topology:
- All involved instances must use the same selected
BungeeMethodand compatible database settings. - Proxy
bungeeconfig.ymlcontains the main shared SQL config; backendConfig.ymlshould useDataStorage: MYSQLand matchingDatabasecredentials. - Backend
BungeeSettings.ymlmust haveUseBungeecord: trueand a uniqueServername matching the proxy's registered server. - Plugin messaging needs an online-player connection to carry messages. Offline votes can be cached for later delivery, depending on settings.
- The proxy key
AllowUnJoinedand backendAllowUnjoineddiffer in capitalization; the standard layout uses proxy false, backend true. - Check
BlockedServers/WhiteListedServersandSendVotesToAllServersbefore blaming the transport.
For HTTP transport or dedicated voting proxies, do not follow 7.1.1 instructions: those features are documented as development-build-only in their respective reference pages.
See Proxy Setups and PLUGINMESSAGING.
| Symptom | Investigation |
|---|---|
| Driver class missing / connection initialization fails | Check selected DbType and matching JDBC driver on both proxy and backends; Velocity may require MySQLDriver |
| SQL connection refused/authentication failed | Verify private hostname, port, credentials, grants, firewall, and database availability |
| Standalone SQLite data missing | Check whether DataStorage changed unexpectedly or the Users.db file/path was replaced |
| Different totals across a proxy network | Verify shared SQL, proxy BungeeManageTotals: true, server names, and forwarding; do not switch to unsupported per-backend total handling |
| Shared user data is temporarily loading | Inspect the exact API caller and storage/cache logs; don't interpret a transient unavailable value as proof of an actual balance or completed reward |
Before attempting a reset, SQL conversion, or rollback, stop all affected data writers (not just vote intake), make a coordinated backup of SQL/SQLite data and related plugin files, and follow the existing Data Storage Migration guide. For JAR upgrades, keep the previous artifacts and a verified restore point. This page does not require a separate, not-yet-merged upgrade guide.
-
OnlineModeneeds to match the network's UUID identity policy on every instance sharing data. - Floodgate/Geyser players may need the configured
BedrockPlayerPrefix(often a period) in the vote-site player-name field. - A prefixed Bedrock name and the matching unprefixed Java name can represent different people. Removing the prefix to make a vote site accept the name may credit another identity.
- Do not change identity mode or prefix on a live server without a planned data migration.
-
AllowUnjoined/AllowUnJoinedcan prevent votes for never-joined identities. That is not the same as processing a valid offline vote for an existing player.
See Bedrock Player Support and Online / Offline Mode.
-
VoteDelayinfluences when/vote nextconsiders a site available; it does not automatically reject an early real vote. -
WaitUntilVoteDelay: truecan reject early real votes; only use it when the website's actual cooldown matches your configuration. - Daily/weekly/monthly vote logic, milestones and streaks depend on the configured vote rules and period boundaries; inspect the matching reward section before changing timestamps or user data.
- Shared reset coordination via
GlobalDatais work in progress in 7.1.1. Verify a consistent SQL backup and test on staging before enabling it.
See Service Sites, Vote Streak System, and Global Data Handling.
Record:
- Plugin exact version/build, server type/version, Java version, and listener version.
- Standalone or proxy topology,
BungeeMethod, database type, and backend names (use non-sensitive aliases where needed). - One bounded timestamped test vote and the last stage it reached.
- Relevant redacted listener, proxy, and backend logs with warnings/exceptions.
- The
ServiceSitevalue and only the relevant, redacted reward/config fragment. - Whether the affected player was online and whether the issue reproduces after reconnect.
Do not share SQL passwords, Votifier private keys, Votifier v2 tokens, proxy/Redis/MQTT credentials, authentication cookies, or full unredacted logs. Disable extra debug after the test.
Back to First Vote Verification or the FAQ.
- Vote Milestones
- Vote Streak System
- Vote Reminders β Current System
- Legacy Vote Reminding
- Vote Broadcast System
- Vote Logging
- Webhooks
- Time Changes
- Month Date Totals
- VoteShop
- Rewards Cookbook β Copyable Recipes
- Rewards Overview β Start Here
- Special Rewards
- Reward System Concepts
- Reward File Format
- Where to Set Rewards
- All Reward Possibilities
- AdvancedPriority Rewards
- Reward Examples
- Delayed Reward Command
- World Example
- VotingPlugin-Specific Rewards
- Commands & Permissions
- Signs
- API
- PlaceholderAPI Placeholders
- Minecraft Server Lists
- Bedrock Player Support
- Transferring Data Storage