TDXDevelopment
TDX VotePlusConfiguration

vote-rewards

The rewards paid on every vote, all nine reward types, the vote broadcast and the offline queue.

vote-rewards.yml is the reward list that runs every time a vote is counted, whichever site it came from. It is separate from milestones (thresholds) and monthly rewards (end of month payout), but all three use the reward syntax described on this page.

Quick example

plugins/TDXVotePlus/vote-rewards.yml
broadcast: true

rewards:
  - type: message
    target: self
    value: "<#5EEEA0>Thanks for voting, <#A8D8F0>%player%<#5EEEA0>!"

  - type: command
    value: "give %player% diamond 1"

  - type: money
    value: 250

  - type: exp
    value: 50
    mode: points

Every entry runs, top to bottom, on every vote. There is no "pick one" unless you use chance or random.

The amount key is value, for money and exp alike. An entry written with amount: is read as 0 and pays nothing. The same goes for chance: it is a fraction from 0 to 1 under the key chance, not a percent.

Placeholders

These work in the value of command and message rewards. They are not replaced in an item's name or lore.

TokenReplaced with
%player%The voter's name
%uuid%The voter's UUID
%world%The world the voter is in
%service%The vote site name as sent by the site
%address%The address the vote came from
%votes%The voter's total votes, including this one
%streak%The voter's current streak, including this vote

PlaceholderAPI tokens are not resolved in rewards. If you need one inside a command, run the command through a plugin that parses them.

Reward types

Sends a MiniMessage line. target: self (the default) sends it to the voter, target: broadcast sends it to the whole server.

- type: message
  target: self
  value: "<#5EEEA0>Thanks for voting on <white>%service%<#5EEEA0>!"

Runs a command from console. Write it without the leading slash.

- type: command
  value: "give %player% diamond 1"

- type: command
  value: "lp user %player% parent add voter"

Needs Vault and an economy plugin. Without them the reward is skipped and a line is written to console.

- type: money
  value: 250

mode: points (the default) gives raw experience points, mode: levels gives whole levels.

- type: exp
  value: 50
  mode: points

Gives an item. If the inventory is full, the rest drops at the player's feet.

- type: item
  material: DIAMOND_SWORD
  amount: 1
  name: "<#FFD93D>Voter Blade"
  lore:
    - "<#A8D8F0>Earned by voting"
  enchantments:
    sharpness: 3
    unbreaking: 2
  custom-model-data: 1001
KeyDefaultNotes
materialRequired. Bukkit material name.
amount1Stack size.
nameMiniMessage display name.
loreList of MiniMessage lines.
enchantmentsMap of enchantment to level. Use vanilla ids such as sharpness, levels above the vanilla cap are allowed.
custom-model-dataNumber for resource pack models.

Reward items are built with every item flag hidden, so the tooltip does not list the enchantments or attribute lines. The enchantments still work. Put what matters in the lore.

Wraps one other reward and runs it only some of the time. chance is a fraction: 0.05 is 5 percent, 1.0 is always.

- type: chance
  chance: 0.05
  reward:
    type: command
    value: "give %player% diamond_block 1"

Picks count different entries from a weighted pool. Higher weight means more likely. Weights do not need to add up to 100.

- type: random
  count: 1
  pool:
    - weight: 50
      reward: { type: money, value: 100 }
    - weight: 25
      reward: { type: exp, value: 20, mode: points }
    - weight: 5
      reward: { type: command, value: "give %player% gold_ingot 4" }

With these weights, about 62 percent of votes pay money, 31 percent pay experience and 6 percent give gold. count: 2 would pick two different entries per vote, never the same one twice.

Applies a potion effect. Use the vanilla effect id, such as speed, haste or night_vision.

- type: potion
  effect: speed
  duration: 600        # ticks, 20 per second, so 600 is 30 seconds
  amplifier: 1         # 0 is level I, 1 is level II
  ambient: false
  particles: true

duration defaults to 600, amplifier to 0, ambient to false and particles to true.

Launches one firework at the voter.

- type: firework
  power: 1
  shape: BALL_LARGE
  trail: true
  flicker: false
  colors: [AQUA, YELLOW]
  fade: [WHITE]
KeyDefaultNotes
power1Flight height, 0 to 3 is sensible.
shapeballBALL, BALL_LARGE, STAR, BURST or CREEPER.
trailtrue
flickerfalse
colorswhiteList of colour names, see below. Hex codes are not accepted.
fadenoneSame names as colors.

Colour names: WHITE, SILVER, GRAY, BLACK, RED, MAROON, YELLOW, OLIVE, LIME, GREEN, AQUA, TEAL, BLUE, NAVY, FUCHSIA, PURPLE, ORANGE. A name that is not on this list is ignored.

An entry with an unknown type, or one missing a required key, is skipped when the file loads, in most cases with a warning in console. The rest of the list still runs.

Broadcast

The top-level broadcast key controls whether the public vote.broadcast line from messages.yml is sent when a vote is counted. It does not affect message rewards.

ValueBehaviour
true (default)Every real-time vote broadcasts vote.broadcast to the whole server.
falseThe public line is never sent. Personal reward messages still are.

Replayed offline votes have their own switch, broadcast-on-claim, below.

Offline queue

When a vote arrives for a player who is not online, VotePlus can store it and pay it when they next log in.

plugins/TDXVotePlus/vote-rewards.yml
offline-queue:
  enabled: true
  notify-on-join: true
  broadcast-on-claim: false
KeyDefaultNotes
enabledtruetrue queues votes for offline players. false counts the vote straight away but pays that player nothing.
notify-on-jointrueTells the player on join how many votes were claimed for them (offline.auto-claimed in messages.yml) or are waiting (offline.pending).
broadcast-on-claimfalseWhether vote.broadcast is also sent for each replayed vote.

Whether queued votes are paid on join or wait for /vote claim is decided by general.auto-claim-offline in config.yml.

A replayed vote runs through the same reward list as a live one and counts for the day it was cast, so a player who voted every day while away keeps their streak. It only adds to today's, this week's and this month's counters if it was cast in that period.

broadcast-on-claim is false by default because a player who has been away for a week replays seven votes at once. With the public line on, that is seven "just voted" messages in chat in the same second. The voter still gets their own reward messages either way.