Compatibility
Minecraft: Java Edition
Platforms
Tags
Creators
Details
JExVote
The Votifier Reward System
Built-in Votifier server · Streaks & Freezes · Vote Jackpot & Party · Vote Shop · Bedrock support
Supports Votifier v1 (RSA) and NuVotifier v2 (HMAC) — no external Votifier plugin required.
What's New
Since the last update, JExVote gained five new systems and a full GUI rebuild:
- Streak Freezes — protect a streak when a day is missed. Everyone starts with one free freeze, more are bought with vote points via
/vote freeze. - Vote Gifting —
/vote gift <player>or/vote gift randomkeeps a friend's streak alive when they can't log in. - Vote Jackpot — every vote rolls one prize from a 10-entry weighted pool, odds shown in the menu, fully editable in
rewards.yml. - Vote Party (Premium) — a shared server-wide vote counter rewards every contributor when the target is hit.
- Vote Shop (Premium) — spend vote points on crate keys, cosmetics (particle trails, lanterns, froglights), and fly time.
- Bedrock support — matches Geyser/Floodgate players by their configurable name prefix (default
!) so cross-platform servers get vote credit correctly. - Every GUI rebuilt — help, overview, shop, and streak views now share one design system: unified gradient headers, fixed pagination row, live progress bars.
There are now 14 reward types (with chance and lucky joining the original 12), plus an optional embedded REST API (default port 8096) for pulling vote statistics into a website backend.
What is JExVote?
JExVote handles everything related to server voting, from receiving votes from voting sites to rewarding players, tracking streaks, and displaying statistics.
It ships with its own Votifier-compatible server, so you do not need NuVotifier or any other listener plugin. Simply point your vote sites at the configured port and JExVote handles the rest.
Votes can:
- trigger configurable rewards
- contribute toward vote streaks
- populate the leaderboard
- reward milestones
- provide vote points for the shop
Administrators receive complete control through commands and hot-reloadable configuration files.
Feature Overview
-
Built-in Votifier server
- Supports both Votifier v1 (RSA) and NuVotifier v2 (HMAC-SHA256).
- No NuVotifier dependency.
-
14 reward types
- Commands
- Items
- XP
- Currency (JExEconomy)
- Permissions (LuckPerms)
- Sounds
- Particles
- Titles
- Teleports
- Composite bundles
- Choice menus
- Custom handler hooks
- Chance rewards
- Lucky (weighted jackpot) rewards
-
Streak Freezes
- Automatic streak protection.
- One free freeze on the first vote.
- Additional freezes purchased with vote points.
- Per-rank limits via
jexvote.freeze.max.<n>.
-
Vote Gifting
/vote gift <player>/vote gift random- Pass a streak day to another player.
- Once per day by default.
-
Vote Jackpot
- 10-entry weighted prize pool.
- Rolls every vote.
- Drop chances displayed in-game.
- Fully editable in
rewards.yml.
-
Vote Party (Premium)
- Shared server-wide vote counter.
- Rewards every contributor when the goal is reached.
-
Weekend Multipliers (Premium)
- Multiply vote points.
- Multiply reward amounts.
- Configurable schedule.
-
Vote Shop (Premium)
- Spend vote points on:
- crate keys
- cosmetics
- fly time
- Spend vote points on:
-
Bedrock (Geyser/Floodgate) support
- Matches usernames using a configurable Bedrock prefix (default
!).
- Matches usernames using a configurable Bedrock prefix (default
-
Embedded REST API
- Optional local API.
- Default port:
8096. - Exposes vote and streak statistics.
-
Vote Streaks
- Configurable timeout.
- Milestone rewards.
- Unlimited milestone support.
-
Per-site Rewards
- Extra rewards for specific voting sites.
-
Offline Vote Queue
- Stores votes while players are offline.
- Delivers them automatically on next login.
-
Interactive GUIs
- Vote overview
- Leaderboard
- Streak progress
- Rewards menu
-
Vote Site Cooldowns
- Rolling cooldowns.
- Fixed daily resets.
- Displays remaining time to players.
-
Vote Points
- Configurable per-site values.
- Separate from vote count.
- Used for freezes and the vote shop.
-
Broadcasts & Private Messages
- Broadcast modes:
- everyone
- everyone except voter
- disabled
- Anti-spam cooldown.
- Optional private thank-you message.
- Broadcast modes:
-
Multi-language
- English
- German
- Czech
- Slovak
- Custom translations supported.
-
Record Retention
- Automatically purges old vote records.
-
Spigot / Paper / Folia Compatible
- Uses FoliaLib for scheduling.
-
Customizable Commands
- Aliases
- Command trees
- Translations---
GUIs
Vote Overview
Image:
970516
The main menu players see when they type /vote.
Features:
- Personal vote statistics
- Current streak progress bar
- Configured vote sites with clickable links
- Navigation to:
- Leaderboard
- Streak view
Leaderboard
Image:
970517
A paginated all-time leaderboard.
Features:
- Player heads for the top 3
- Total votes
- Monthly votes
- Current streak
- Vote points
- Visual vote bar
- Arrow buttons for page navigation
Streak Progress
Image:
970518
Displays:
- Current streak
- Highest streak
- All configured milestones
Milestone colors:
- 🟢 Achieved
- 🟡 Next target
- 🔴 Locked
Includes a 20-segment progress bar showing progress toward the next reward.
Setup Guide
Step 1 — Install
Drop JExVote.jar into your plugins/ folder and restart the server.
On first launch JExVote automatically generates:
- configuration files
- an RSA keypair
- a Votifier token
Step 2 — Configure the Votifier Server
Open config.yml and check the votifier section.
votifier:
host: '' # Leave empty to bind all interfaces
port: 8192 # Port vote sites connect to
token: '' # Auto-generated on first run
If your host requires a specific bind address, set host accordingly.
The token is generated automatically during first startup.
Copy it from config.yml into your voting site's Votifier configuration.
Important
Ensure port 8192 (or your configured port) is open in your firewall or hosting panel. Vote sites must be able to connect directly.
Step 3 — Add Vote Sites
Edit sites.yml:
sites:
serverliste:
display-name: "Serverliste.net"
service-name: "Serverliste"
vote-url: "https://serverliste.net/vote/12345"
cooldown-minutes: 1440
points-per-vote: 1
mcserverlist:
display-name: "MC Server List"
service-name: "MCServerList"
vote-url: "https://minecraft-server-list.com/server/12345/vote/"
daily-reset: "00:00"
timezone: "Europe/Berlin"
points-per-vote: 2
Cooldown Modes
Choose one per site.
Rolling cooldown
cooldown-minutes: 1440
Players may vote again after the specified number of minutes.
Fixed daily reset
daily-reset: "00:00"
timezone: "Europe/Berlin"
Everyone may vote again at the configured time.
Important
service-namemust exactly match the identifier sent by the voting site.
If unsure:
/jexvote fakevote <player> TestService
or inspect the server log to see the incoming service name.
Step 4 — Configure Rewards
Open rewards.yml.
Example:
default-rewards:
- type: command
command: "give {player} diamond 1"
as-console: true
- type: sound
sound: ENTITY_PLAYER_LEVELUP
volume: 1.0
pitch: 1.2
- type: title
title: "<green>Thank you!"
subtitle: "<gray>Your vote has been counted."
fade-in: 10
stay: 40
fade-out: 10
Rewards are divided into three categories.
Default Rewards
Granted for every vote, regardless of site.
Streak Rewards
Awarded when reaching configured streak milestones.
Site Rewards
Additional rewards for a specific vote site.
Step 5 — Verify
Run:
/jexvote fakevote <yourname>
Verify that:
- rewards execute
- broadcasts appear
- GUIs update correctly
The console logs every received vote, including:
- protocol version
- service name
Reward Types
JExVote includes 14 reward types.
| Type | Description | Key Fields |
|---|---|---|
| command | Execute a console or player command | command, as-console |
| item | Give an item stack with optional NBT | material, amount, name, lore, enchantments |
| xp | Grant vanilla XP | amount |
| currency | Deposit into a JExEconomy currency | currency, amount |
| permission | Grant a timed LuckPerms permission | permission, duration, server |
| sound | Play a sound | sound, volume, pitch |
| particle | Spawn particles | particle, count, offset |
| title | Display a title and subtitle | title, subtitle, fade-in, stay, fade-out |
| teleport | Teleport the player | world, x, y, z, yaw, pitch |
| composite | Bundle multiple rewards | rewards |
| choice | Let the player choose from a GUI | options |
| custom | Hook into custom plugin logic | handler, data |
| chance | Reward based on probability | chance, reward |
| lucky | Weighted reward pool (Vote Jackpot) | entries |
Commands & Permissions
Player Commands
/vote Opens the vote GUI
/vote help Shows player command help
/vote sites Lists all vote sites with clickable links
/vote stats [player] View vote statistics
/vote top [count] View the all-time leaderboard (max 50)
/vote rewards View jackpot odds, active multiplier, and Vote Party progress
/vote freeze Buy a Streak Freeze with vote points
/vote gift <player> Gift a streak day to a player
/vote gift random Gift a streak day to a random online player
/vote shop Open the Vote Shop (Premium)
Permission
jexvote.command.vote
Alias
/v
Admin Commands
/jexvote Shows admin help
/jexvote info Shows edition, version, site count, and Votifier port
/jexvote reload Hot-reloads config.yml, rewards.yml, and sites.yml
/jexvote reset <player> Resets all vote data for a player
/jexvote resetmonthly Resets monthly vote counts for every player
/jexvote fakevote <player> [service] Simulates a vote for testing
Alias
/jv
Permission Nodes
jexvote.command.vote Access to /vote and all subcommands
jexvote.command.admin Access to /jexvote and /jexvote info
jexvote.command.admin.reload Reload configuration files
jexvote.command.admin.reset Reset player data and monthly counts
jexvote.command.admin.fakevote Simulate test votes
Configuration Reference
config.yml — Full Reference
# ── Votifier Server ─────────────────────────
votifier:
host: '' # Bind address (empty = all interfaces)
port: 8192 # Port for vote site connections
token: '' # HMAC token (auto-generated)
# ── Broadcasts ──────────────────────────────
broadcast:
mode: 'all' # all | others | none
cooldown-minutes: 30
# ── Private Messages ────────────────────────
private-message:
enabled: true
# ── Offline Queue ───────────────────────────
offline-vote-queue: true
# ── Streaks ─────────────────────────────────
streak:
timeout-hours: 36
claim-mode: 'auto'
bonus-commands:
7:
- "give {player} diamond 3"
14:
- "give {player} diamond 5"
30:
- "give {player} diamond_block 1"
- "broadcast &6{player} &7reached a &630-day &7vote streak!"
# ── Housekeeping ────────────────────────────
records:
retention-days: 90
Streak System
Streaks track how many consecutive days a player has voted.
By default, players have 36 hours between votes before their streak resets, providing some flexibility beyond a strict 24-hour window.
Streak milestones can trigger two independent reward systems.
Bonus Commands
Configured in config.yml:
streak:
bonus-commands:
Designed for simple command execution.
Examples include:
- Giving items
- Broadcasting messages
- Running console commands
Streak Rewards
Configured in rewards.yml:
streak-rewards:
Uses the complete reward system, including:
- Items
- Currency
- Titles
- Particles
- GUI choices
- Custom rewards
- Any other supported reward type
Both systems can trigger at the same milestone.
For example, a 30-day streak could:
- Broadcast a server message
- Give items
- Award currency
- Open a reward selection menu
simultaneously.
GUI Integration
Streak progress appears throughout the plugin.
Vote Overview
Displays:
- Current streak
- Progress bar toward the next milestone
Streak GUI
Displays:
- Every configured milestone
- Achieved milestones
- Upcoming milestone
- Locked milestones
- Progress toward the next reward
Engagement Systems
❄ Streak Freezes
A Streak Freeze automatically protects a player's streak if they miss a day.
No command is required to activate one.
If a vote arrives after the streak would normally expire, the required number of freezes is consumed and the streak continues uninterrupted.
Players receive:
- 1 free freeze on their first vote
- Additional freezes purchased with vote points using:
/vote freeze
Configurable options include:
- Freeze cost
- Maximum owned freezes
- Hours protected per freeze
Per-rank limits are controlled with:
jexvote.freeze.max.<n>
Vote Gifting
Gift a streak day to another player.
/vote gift <player>
or
/vote gift random
Rules:
- Advances only the recipient's streak
- The sender still receives their own vote rewards
- One gift per day by default
- Rank permissions can increase the limit
jexvote.gift.daily.<n>
A player may only receive one gift each day.
Vote Jackpot
Every vote rolls one prize from a 10-entry weighted prize pool.
Possible rewards range from:
- Small currency prizes
- Rare crate keys
- Top-tier jackpot rewards
Use:
/vote rewards
to view:
- Drop chances
- Reward list
- Historical drop counts
The entire pool is configured in rewards.yml using the lucky reward type.
Vote Party (Premium)
A shared server-wide vote counter.
When the target is reached:
- Every contributing player receives rewards
- Online players are rewarded immediately
- Offline players receive rewards when they next join
Afterwards, the counter resets automatically.
Weekend multipliers can increase:
- Vote points
- Reward amounts
Vote Shop (Premium)
Spend vote points on exclusive items including:
- Crate keys
- Permanent particle trails
- Lantern cosmetics
- Froglight cosmetics
- Timed fly access
Each item includes a preview before purchase.
The previous command-based flight system:
/vote fly
has been removed.
Flight is now exclusively purchased through the Vote Shop, while event-based flight remains reserved for server events.


