TDXPlugins
TDX VotePlusConfiguration

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

plugins/TDXVotePlus/vote-rewards.yml
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: 250

Vanilla XP points (not levels).

- type: exp
  amount: 50

Send 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: 1001

A 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: true

Spawns 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: true

Combining types

You can mix any number of reward types in the same rewards: list. A typical setup looks like:

plugins/TDXVotePlus/vote-rewards.yml
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.