TDXDevelopment
TDX Welcome Raffle

Installation

Install TDX Welcome Raffle, set up your prizes, and check them before the first newcomer arrives.

Requirements

DependencyVersionRequired
Java21+Yes
Paper or Folia1.20+Yes
PlaceholderAPI2.11+Optional (placeholder expansion)

Steps

Drop the jar in plugins/

Stop the server, copy TDXWelcomeRaffle-x.y.z.jar into plugins/, and start it again. The console prints a summary box when it loads:

latest.log
[INFO] [TDXWelcomeRaffle]  TDX Welcome Raffle v1.0.0, loaded in 41ms
[INFO] [TDXWelcomeRaffle]   Raffles      : enabled, 60s each, first join only
[INFO] [TDXWelcomeRaffle]   Keywords     : welcome, wlc
[INFO] [TDXWelcomeRaffle]   Prizes       : 3 loaded from rewards.yml

Find the files

config.yml
messages.yml
rewards.yml
  • config.yml, the timer, keywords, fair play rules and sounds
  • messages.yml, every chat line the plugin sends
  • rewards.yml, the prizes and their chances

Every file is commented, so read it top to bottom once.

Put your own prizes in rewards.yml

The shipped file has three examples (flytime, a Power Key and diamonds). Replace their commands with ones for the plugins you actually run. See rewards for every key.

Always put a message in quotes. A value that starts with & and has no quotes loses its first word, because YAML reads it as something else.

Reload and check the odds

/welcomeraffle reload
/welcomeraffle rewards

rewards lists every prize with its real chance in percent.

Test a prize, then a whole raffle

/welcomeraffle testreward <yourname> flytime

testreward gives the prize for real: its commands run and you get its message, so you can see each command works.

To run a full raffle without waiting for a new player, open one by hand for any player who is online, let someone else say "welcome", and draw it:

/welcomeraffle start <player>
/welcomeraffle status
/welcomeraffle draw <player>

The player the raffle is for cannot enter it, and with the default settings an entrant needs 10 minutes of playtime and a different IP address. While you test with your own alt accounts, set anti-abuse.min-playtime-minutes to 0 and anti-abuse.block-same-ip to false, and put them back afterwards.