βοΈ Running on Velocity
Velocity requires a MySQL driver to be installed.
You can download a prebuilt plugin here if needed:
π MySQLDriver (Jenkins) {.is-info}πΎ Database Requirement
All proxy methods require MySQL, with every server β including the proxy β pointing to the same database.
The proxy manages vote forwarding, user vote totals, and synchronization between servers.
Backend servers handle all rewards, milestones, and streaks locally. {.is-info}π¨ Votifier Configuration
Votifier (or VotifierPlus/NuVotifier) only needs to run on the proxy.
VotingPlugin automatically handles forwarding votes to backend servers. {.is-info}
Proxy Methods
VotingPlugin supports multiple communication methods between your proxy (BungeeCord/Velocity) and backend servers.
Each method provides the same core functionality β sending votes from the proxy to backend servers β but differs in setup and infrastructure requirements.
| Method | Description |
|---|---|
| PLUGINMESSAGING | Easiest option β drop and play. No extra setup needed beyond placing the plugin on all servers. |
| REDIS | Uses a Redis server for fast, reliable network-wide message passing. |
| MQTT | Relies on an MQTT broker for cross-server vote forwarding (ideal for distributed environments). |
| SOCKETS | Uses direct TCP socket connections (requires open ports between servers). |
| MYSQL | Shares vote data directly through the common MySQL database. |
How It Works

When a player votes:
- The proxy receives the vote from Votifier.
- VotingPlugin (Proxy) records the vote in the database and updates totals (if enabled).
- The proxy then forwards the vote to backend servers using the configured method.
- Each backendβs VotingPlugin instance handles rewards, milestones, and streaks locally.
The proxy acts as the central controller for vote tracking and forwarding.
Backend servers focus on reward delivery and gameplay logic.
Abilities
VotingPluginβs proxy integration provides full network-wide support for:
- π Global or per-server rewards
- π Proxy-wide or individual server vote parties
- β° Global time synchronization (via the
GlobalDatasetting) - π§± Server blocklist/whitelist controls
- π Multi-proxy synchronization
- π Centralized vote totals and logging handled by the proxy
- βοΈ Local reward and streak logic handled by backend servers
Multi-Proxy Support
For networks with multiple proxies, VotingPlugin supports PLUGINMESSAGING or REDIS synchronization across proxies.
β οΈ Note: Multi-proxy setups are experimental but functional in current releases.
See the full guide here:
π Multi-Proxy Setup
More Technical Details (Summary)
The proxy receives and manages votes from Votifier before forwarding them to backend servers.
Proxy Responsibilities
- π¨ Receives votes from Votifier on the proxy.
- π Handles time-change conditions when
GlobalDatais enabled (queues votes safely). - π§© Resolves UUIDs and supports Bedrock players (prefix detection).
- πΎ Manages totals when
BungeeManageTotals: trueβ updates MySQL totals (daily, weekly, monthly, all-time, and points). - π Updates vote party progress and broadcasts
VoteUpdate/VoteBroadcast. - π Forwards or caches votes for backend servers depending on player presence and configuration.
- π Supports multi-proxy setups, syncing votes across proxies and preventing duplicate rewards.
Backend Responsibilities
- Executes rewards, milestones, and streak tracking.
- Handles all in-game logic and GUI-related features.
Common Config Keys
| Key | Description |
|---|---|
BungeeManageTotals |
Enables proxy-managed totals. |
SendVotesToAllServers |
Sends votes to all servers or only playerβs current server. |
AllowUnJoined |
Ignores votes from players who never joined if false. |
WaitForUserOnline |
Queues votes until player logs in. |
GlobalData |
Enables global data/time sync and vote queueing. |
MultiProxySupport |
Allows votes to sync between multiple proxies. |
PrimaryServer |
Marks the main proxy handling totals. |
For a deeper technical breakdown, see the implementation in
VotingPluginProxy.java.