TDXDevelopment
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.

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.

plugins/TDXVotePlus/vote-rewards.yml
broadcast: true
ValueBehaviour
true (default)Every real-time vote broadcasts the vote.broadcast template to the whole server.
falseThe 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.

plugins/TDXVotePlus/vote-rewards.yml
offline-queue:
  enabled: true
  notify-on-join: true
  broadcast-on-claim: false

enabled

ValueBehaviour
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".
falseOffline 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
ValueBehaviour
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.
trueReplayed 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.