-
-
Notifications
You must be signed in to change notification settings - Fork 78
VoteMilestones
VoteMilestones allow you to run rewards when a player’s vote totals, points, or site counts reach specific conditions.
This system replaces legacy milestone systems such as FirstVote, Cumulative, and MileStones, while remaining fully backward-compatible through automatic migration.
This page explains how VoteMilestones really work, followed by lots of real examples.
All VoteMilestones are configured in:
plugins/VotingPlugin/SpecialRewards.yml
They live under two root sections:
VoteMilestonesOptions:
VoteMilestones:On every vote, VotingPlugin:
- Updates the relevant total (votes, points, sites, etc.)
- Evaluates all VoteMilestones
- Determines which milestones match
- Applies group selection rules
- Applies limits (cooldowns / windows)
- Executes rewards
VoteMilestones are not automatically one-time unless you use a Limit.
Groups control how many milestones can trigger per vote.
VoteMilestonesOptions:
Groups:
Default: ALL
RankRewards: HIGHEST| Mode | Meaning |
|---|---|
ALL |
All matching milestones in the group run |
FIRST |
Only the first matching milestone (file order) |
HIGHEST |
Only the “best” milestone runs |
HIGHEST rules
-
Atmilestones beatEvery - Higher matched value wins
- Earlier file order breaks ties
If a milestone has no Group, it automatically uses Default.
Basic structure:
VoteMilestones:
ExampleId:
Enabled: true
Total: ALLTIME_VOTES
At: 100
Group: Default
Limit:
Type: NONE
Rewards:
Commands:
- "say %player% hit %amount%"| Key | Purpose |
|---|---|
Enabled |
Enable/disable milestone |
Total |
What value is checked |
At |
Exact totals (supports ranges & lists) |
Every |
Repeating trigger |
Group |
Group selection bucket |
Limit |
Prevents re-triggering |
Rewards |
What runs when matched |
| Value | Meaning |
|---|---|
ALLTIME_VOTES |
Lifetime votes |
DAILY_VOTES |
Votes today |
WEEKLY_VOTES |
Votes this week |
MONTHLY_VOTES |
Votes this month |
POINTS |
Vote points |
ALLSITES_TODAY |
Unique sites voted today |
Friendly aliases like AllTime, Daily, Weekly, Monthly, and Points also work.
Every: 25Triggers when the total is divisible by 25 (25, 50, 75, …)
At: 50At:
- 25
- 50
- 100At:
- "10..100 step 10"
- "250..500 step 50"Ranges are expanded safely and automatically.
Limits control how often a milestone can trigger.
Limit:
Type: COOLDOWN
Duration: 12h| Type | Behavior |
|---|---|
NONE |
No limit |
WINDOW_DAY |
Once per day |
WINDOW_WEEK |
Once per week |
WINDOW_MONTH |
Once per month |
COOLDOWN |
Once per duration |
Duration supports:
30m, 12h, 1d, 2w, 1mo
VoteMilestones:
FirstVote:
Enabled: true
Total: ALLTIME_VOTES
At: 1
Rewards:
Messages:
Player: "&aThanks for your first vote!"
Commands:
- "eco give %player% 100"VoteMilestones:
FirstVoteToday:
Enabled: true
Total: DAILY_VOTES
At: 1
Rewards:
Messages:
Player: "&eThanks for voting today!"VoteMilestones:
Every10Votes:
Enabled: true
Total: ALLTIME_VOTES
Every: 10
Rewards:
Commands:
- "crate give %player% vote 1"VoteMilestones:
BigMilestones:
Enabled: true
Total: ALLTIME_VOTES
At:
- 25
- 50
- 100
Rewards:
Broadcast:
Message: "&6%player% reached %amount% total votes!"VoteMilestones:
SteppedMilestones:
Enabled: true
Total: ALLTIME_VOTES
At:
- "10..100 step 10"
- "250..500 step 50"
Rewards:
Commands:
- "eco give %player% %amount%"VoteMilestones:
Monthly50:
Enabled: true
Total: MONTHLY_VOTES
At: 50
Rewards:
Commands:
- "points give %player% 25"VoteMilestones:
PointRewards:
Enabled: true
Total: POINTS
At:
- 100
- 500
- 1000
Rewards:
Commands:
- "lp user %player% parent add vip"VoteMilestones:
AllSitesToday:
Enabled: true
Total: ALLSITES_TODAY
At: 5
Limit:
Type: WINDOW_DAY
Rewards:
Messages:
Player: "&aYou voted on all sites today!"VoteMilestones:
VoteBonusCooldown:
Enabled: true
Total: ALLTIME_VOTES
Every: 50
Limit:
Type: COOLDOWN
Duration: 12h
Rewards:
Commands:
- "eco give %player% 250"VoteMilestonesOptions:
Groups:
RankRewards: HIGHEST
VoteMilestones:
Rank50:
Group: RankRewards
Total: ALLTIME_VOTES
At: 50
Rewards:
Commands:
- "lp user %player% parent add bronze"
Rank100:
Group: RankRewards
Total: ALLTIME_VOTES
At: 100
Rewards:
Commands:
- "lp user %player% parent add silver"The following legacy sections are automatically migrated at startup:
FirstVote
FirstVoteToday
Cumulative
MileStones
AllSites
AlmostAllSites
New configurations should always use VoteMilestones.
| Placeholder | Meaning |
|---|---|
%player% |
Player name |
%amount% |
Matched milestone value |
%total% |
Same as amount |
%votemilestone% |
Milestone ID |
%total_type% |
Total type enum |
- Commands & Permissions
- API
- PlaceHolderAPI placeholders
- Minecraft Server Lists
- Bedrock Player Support
- Performance Settings
- Signs
- Special Rewards
- Time Changes
- Vote Reminding
- VoteMilestones
- VoteReminders
- Month Date Totals
- Transferring data storage within plugin