VotingPlugin — Overview
VotingPlugin is a highly configurable Minecraft voting and rewards system designed for Spigot/Paper servers, with optional BungeeCord/Velocity proxy support.
It focuses on reliability, flexibility, and performance, handling high vote volumes with ease.
Highlights
- Stable & Reliable – Handles offline players, delayed callbacks, and high vote loads.
- Flexible Rewards – Reward per site, per milestone, top voters, and more.
- Network Support – Works on single servers or proxy networks (Bungee/Velocity).
- Integrated Placeholders – Extensive PlaceholderAPI support for live stats.
- Simple Admin Tools – Clear configuration files and easy-to-test rewards.
- SQL Storage – Supports MySQL and SQLite (flatfile may be removed in future).
Supported Platforms
- Spigot/Paper: 1.19+
- Proxies: BungeeCord, Waterfall, Velocity
- Vote Listeners: Works with NuVotifier, VotifierPlus (by BenCodez), and compatible alternatives.
Default File Layout
Default configuration files:
https://github.com/BenCodez/VotingPlugin/tree/master/VotingPlugin/src/main/resources
Spigot Server Files
Path: /plugins/VotingPlugin/
| File / Folder | Description |
|---|---|
| Rewards/ | Contains reward files (see examples below). |
| TopVoter/ | Stores previous TopVoter info (must be enabled). Monthly TopVoter is enabled by default. |
| BungeeSettings.yml | Important Bungee-related settings. |
| Config.yml | Main plugin settings: user storage, formatting, vote reminding, permissions, etc. |
| GUI.yml | Configures GUI options (chest/book menus). Can disable GUIs if desired. |
| Shop.yml | VoteShop configuration (available in version 6.17+). |
| ServerData.yml | Internal plugin data for vote parties and top voter stats (do not edit). |
| SpecialRewards.yml | Defines rewards for AllSites, FirstVote, TopVoter, VoteParty, Milestones, Cumulative totals, etc. |
| Users.db | Player data when using SQLite. |
| VoteSites.yml | Defines all vote sites, including URL/service name, delay, and rewards. |
Rewards Folder
Path: /plugins/VotingPlugin/Rewards/
| File / Folder | Description |
|---|---|
| DirectlyDefined/ | Auto-generated rewards linked to SpecialRewards or VoteSites (do not edit). |
| ExampleAdvanced.yml | Example of advanced reward logic (conditions, random ranges, etc.) – View on GitHub |
| ExampleBasic.yml | Example of simple per-vote rewards – View on GitHub |
Proxy Server Files
| File | Description |
|---|---|
| bungeeconfig.yml | Contains proxy-side configuration (Bungee/Velocity). |
| nonvotedplayerscache.json | Caches users who logged in within 5 days but haven’t voted (requires AllowUnJoined: false). |
| secretkey.key | Encryption key for SOCKET communication. Must match Spigot servers if using SOCKET mode. |
| votecache.json | Cache used for PLUGINMESSAGING mode. |
Quick Start
- Install a vote listener plugin – either VotifierPlus or NuVotifier.
- Place VotingPlugin in your
/plugins/directory. - Configure
/plugins/VotingPlugin/VoteSites.ymlwith your vote sites and rewards. - Edit
Config.ymlto your preferences. - Restart the server and test a vote.
For proxies, also configure
bungeeconfig.ymland set up the same MySQL database across servers.
Commands and Permissions
| Command | Description |
|---|---|
/vote |
Shows vote sites and player totals. |
/v |
Alias for /vote. |
/adminvote |
Admin command root. |
/av |
Alias for /adminvote. |
Permissions
VotingPlugin.Player– Main permission for normal player commands.
Granted by default (can be disabled inConfig.yml).
See the Commands and Permissions page for all available nodes and usage.
Storage
VotingPlugin stores player and vote data in the backend defined in:
- Config.yml (Spigot)
- bungeeconfig.yml (Proxy)
Supported Backends
- SQLite – Default local database (
Users.db). - MySQL – Recommended for networks and multi-server setups.
Flatfile support may be removed in future versions.
Reward System
VotingPlugin rewards players automatically after a vote.
If the player is offline, rewards are given on next login (no claim GUI).
Reward types include:
- Commands
- Messages
- Experience
- Points (internal or economy)
- Random ranges using NumberCommand
Examples:
- ExampleBasic.yml
- ExampleAdvanced.yml
Configuration Highlights
| Option | Description |
|---|---|
| OnlineMode | Controls whether votes are processed by online player name or all votes are accepted. (See OnlineMode page) |
| VoteReminding | Periodically reminds players to vote. |
| TopVoter Settings | Monthly/weekly tracking and resets. |
| BungeeSettings.yml | Used for proxy setups. |
| SpecialRewards.yml | AllSites, VoteParty, and milestone rewards. |
Network / Proxy Setup
VotingPlugin supports all major proxy methods:
- PLUGINMESSAGING – Easiest for most setups.
- REDIS – Easiest behind PLUGINMESSAGING
- MQTT – Uses an mqtt broker
- SOCKET – Encrypted communication between proxy and servers (requires
secretkey.keyand open ports). - MYSQL – Uses mysql to forward votes.
Detailed instructions and examples:
https://wiki.bencodez.com/en/VotingPlugin/Proxy-Setups
Troubleshooting
- Confirm your vote listener plugin (VotifierPlus or NuVotifier) is running and configured correctly.
- Verify ports, tokens, and callback URLs on your vote sites.
- Use
/adminvotesubcommands for testing (not/av debug). - Check your server logs for incoming votes and reward messages.
Common problems: incorrect service names, blocked ports, or outdated Votifier configurations.
Developer Tools
- VotingPluginEditor – Desktop application for configuring VotingPlugin visually.
View on GitHub
Related Pages
Support
For issues, report them on the GitHub repository or on Discord.
Keep both VotifierPlus and VotingPlugin updated for best reliability and feature compatibility.