TDXDevelopment
TDX VotePlusConfiguration

vote-party

Server-wide vote party, the shared counter, the rewards and how it behaves on a network.

A vote party is a server-wide goal. Every vote from every player adds one to a shared counter, and when the counter reaches the threshold, the party rewards are paid to everyone who is online.

The vote party progress GUI

The vote party menu with the shared counter and progress bar.

Quick example

plugins/TDXVotePlus/vote-party.yml
enabled: true
threshold: 100
broadcast-to-online: true

rewards:
  - type: message
    target: self
    value: "<#FFD93D>✦ VOTE PARTY ✦ <#5EEEA0>Enjoy the rewards!"
  - type: command
    value: "give %player% diamond 3"
  - type: money
    value: 1000

Reference

KeyTypeDefaultNotes
enabledbooleantrueMaster switch. When off, votes do not move the counter at all.
thresholdint100Votes needed to fire a party.
broadcast-to-onlinebooleantruetrue pays the rewards to every online player. false pays nobody, see below.
rewardslistSame syntax as vote-rewards.yml. Runs once per online player.

In party rewards %player% is the player being paid, and %total_parties% is the number of parties fired so far. %votes% and %streak% are always 0 here.

Despite its name, broadcast-to-online does not switch the chat announcement on or off. The announcement (party.triggered in messages.yml) is always sent. Setting this key to false stops the rewards, which is only useful when another plugin hands out the prize by listening to the party event. To silence the announcement instead, set party.triggered to "".

What happens when it fires

  1. The threshold is subtracted from the counter. Votes that arrived past the threshold are kept, so a counter of 103 with a threshold of 100 starts the next round at 3.
  2. party.triggered is broadcast.
  3. Every online player runs through rewards. Offline players get nothing, a party is not queued for them.

The counter is stored in the database after every vote, so it survives restarts and crashes. Queued offline votes move the counter when they are claimed, not when they arrive.

Admins can read and steer it with /voteplus party, /voteplus party trigger and /voteplus party set <value>. Players see progress on the Vote Party button in the /vote menu.

Picking a threshold

The right number depends on how many votes your server gets per day. A rough guide:

Average daily votesSuggested thresholdFires about every
20502.5 days
501503 days
1002502.5 days
2505002 days
50010002 days

Aim for a party every 2 to 4 days. More often and it stops feeling special, less often and most players never see one.

On a network

With MySQL, the party counter is shared by every server on the same database, even when they use different mysql.server-id values. A vote on Survival and a vote on Skyblock move the same counter.

When the threshold is reached, the server that counted the deciding vote fires first. The other servers check the shared counter every 5 seconds, notice that a party happened, and fire their own announcement and rewards for their own online players. Each server reads threshold and rewards from its own vote-party.yml, so keep those files in step unless you want different prizes per server.

If you want each server to have its own separate party, give each one its own database. There is no per-server party switch.