vote-rewards
The reward pool paid on every vote, items, money, commands, weighted pools.
vote-rewards.yml is the reward pool that fires every time a vote
arrives, regardless of which site it came from. This is the bread-
and-butter "thanks for voting" payout, it's separate from milestones
(one-shots) and monthly rewards (period payouts).
Quick example
rewards:
- type: command
value: "give %player% diamond 1"
- type: money
amount: 250
- type: exp
amount: 50
- type: message
value: "<#4DA6E8>Thanks for voting on <white>%site%</white>!</>"Every entry runs in order, every time. There is no "pick one" by
default, that's what chance and random are for.
Reward types
VotePlus supports nine reward types. Pick whichever matches what you want to give the player.
Run a console command. %player%, %uuid%, %site%, and PAPI
placeholders are substituted.
- type: command
value: "give %player% diamond 1"
- type: command
value: "lp user %player% parent add voter-tag"Requires Vault. Adds the amount to the player's balance through whatever economy plugin Vault is wired to.
- type: money
amount: 250Vanilla XP points (not levels).
- type: exp
amount: 50Send the player a MiniMessage line. Same placeholders as command.
- type: message
value: "<#4DA6E8>Thanks for voting on <white>%site%</white>!</>"Give the player a fully-specified ItemStack. Supports name, lore, enchants, and custom model data.
- type: item
material: DIAMOND_SWORD
amount: 1
name: "<#FFD700>Voter Blade</>"
lore:
- "<gray>Earned by voting"
- "<gray>%date%"
enchants:
SHARPNESS: 3
UNBREAKING: 2
custom-model-data: 1001A nested reward that fires only percent% of the time.
- type: chance
percent: 10
reward:
type: item
material: NETHERITE_INGOT
amount: 1
name: "<#FF9D5E>Lucky drop!</>"10% chance to receive a netherite ingot on each vote.
A weighted pool, exactly one of the entries fires. Higher weight
values are more likely.
- type: random
pool:
- weight: 70
reward: { type: money, amount: 100 }
- weight: 25
reward: { type: item, material: DIAMOND, amount: 1 }
- weight: 5
reward: { type: command, value: "give %player% netherite_ingot 1" }In this example, ~70% of votes give money, ~25% give a diamond, and ~5% give a netherite ingot. Weights don't need to sum to 100, the plugin normalises them.
A potion effect applied to the player.
- type: potion
effect: SPEED
duration: 600 # ticks (20 = 1 second), so 600 = 30 seconds
amplifier: 1 # 0 = level I, 1 = level II
ambient: false
particles: trueSpawns a firework at the player's location. Mostly for flair.
- type: firework
power: 1
effects:
- type: BALL_LARGE
colors: ["#4DA6E8", "#FFD700"]
fade-colors: ["#FFFFFF"]
flicker: true
trail: trueCombining types
You can mix any number of reward types in the same rewards: list.
A typical setup looks like:
rewards:
# Always: a guaranteed core reward
- type: command
value: "give %player% diamond 1"
- type: money
amount: 250
# Sometimes: a 5% lucky-drop on top
- type: chance
percent: 5
reward:
type: item
material: NETHERITE_SCRAP
amount: 1
name: "<#FF9D5E>Lucky drop!</>"
# Always: a thank-you message and a small firework
- type: message
value: "<#4DA6E8>Thanks for voting on <white>%site%</white>!</>"
- type: firework
power: 1
effects:
- type: BURST
colors: ["#4DA6E8"]Offline votes replay through the same reward pool when the
player joins, so you don't need a separate "offline" config. The
firework and message rewards still fire, they just fire on join
rather than at the moment the vote arrived.
Broadcast
The top-level broadcast key controls whether the public
vote.broadcast line from messages.yml fires when a vote is
processed. It's a global on/off, it does not affect personal
target: self reward messages.
broadcast: true| Value | Behaviour |
|---|---|
true (default) | Every real-time vote broadcasts the vote.broadcast template to the whole server. |
false | The public broadcast is silenced entirely. Personal reward messages still fire. |
The behaviour for replayed offline votes is governed by a separate key, see Offline queue below.
Offline queue
When a vote arrives for a player who isn't on the server right now,
VotePlus can stash it in the database and replay it the next time
they log in. The offline-queue block tunes that behaviour.
offline-queue:
enabled: true
notify-on-join: true
broadcast-on-claim: falseenabled
| Value | Behaviour |
|---|---|
true (default) | Offline votes are queued and replayed. Combined with general.auto-claim-offline in config.yml, you get either auto-replay on join or "stack up until /vote claim". |
false | Offline votes are dropped on the floor. Only useful if you really only care about live voters. |
notify-on-join
If true (default), players get a short message on join showing how
many offline votes they had queued and whether they were auto-claimed
or are still waiting for a manual claim. The exact text lives in
messages.yml under offline.auto-claimed / offline.pending.
broadcast-on-claim
Controls whether the public vote.broadcast line fires for each
replayed offline vote (auto-claim on join, or manual claim via
/vote claim and the Claim Votes GUI).
offline-queue:
broadcast-on-claim: false # default| Value | Behaviour |
|---|---|
false (default) | Replayed offline votes do not trigger the public broadcast. The voter still gets their personal reward messages and the offline.auto-claimed summary line. Counters, streaks, milestones, vote-party progress and rewards all apply normally. |
true | Replayed offline votes broadcast just like real-time votes. Use this only if you want returning voters to be visible to everyone after a long absence. |
Default is false because a player who's been gone for several days
replays one queued vote per missed day on join. With the public
broadcast on, that's a wall of "Player just voted!" lines hitting
chat at once. Suppressing replays keeps the reward experience for
the voter intact while sparing everyone else the spam.
This key only governs replayed offline votes. Real-time votes
still honour the top-level broadcast switch above. If you want
zero broadcasts ever, set both broadcast: false and leave
broadcast-on-claim: false.