🗳️ Event Voting
EventForge can let players vote for the next event instead of always starting one directly.
Voting is useful for SMPs, prisons, minigame hubs, seasonal rotations and community-driven event nights.
Event voting is included in EventForge v1.0.3, but it is disabled by default. Enable it when you want players to choose events.
What voting does
When a vote starts, EventForge broadcasts clickable event options in chat.
Players can click an option or use a command to vote.
When the vote ends, EventForge selects the winning event and starts it through the normal EventForge start flow.
That means the winner still respects:
loaded event templates
active event checks
cooldowns
conditions
minimum player rules
objective start checks
manual queue mode
Enable manual voting
Manual voting is configured in config.yml.
voting:
enabled: true
default-duration: 60s
min-options: 2
max-options: 5
allow-vote-change: true
start-winner-automatically: true
broadcast-result: true
By default, voting.enabled is false on new installs.
Set it to true when you want to use event voting.
Voting settings
| Setting | Description |
|---|---|
enabled | Enables or disables manual event voting |
default-duration | How long admin-started votes last |
min-options | Minimum amount of events required in a vote |
max-options | Maximum amount of events allowed in a vote |
allow-vote-change | Lets players change their vote before the vote ends |
start-winner-automatically | Starts the winner automatically when the vote ends |
broadcast-result | Broadcasts the vote result when the vote ends |
Supported duration examples:
30s
60s
1m
5m
1h
Admin commands
Start a vote:
/eventforge vote start <event1> <event2> [event3...]
The /ef alias also works:
/ef vote start mining_rush mob_hunt fishing_frenzy
Other admin commands:
/eventforge vote cancel
/eventforge vote status
/eventforge vote confirm
Player command
Players vote with:
/events vote <event>
When a vote is active, /events vote tab completion only suggests the current vote options.
Players can also click the event options in chat if clickable vote broadcasts are enabled through the default messages.
Vote result behaviour
When the vote ends:
highest vote count wins
no votes = no event starts
tied top events = EventForge randomly chooses one tied winner
If start-winner-automatically is true, the winner starts automatically.
If it is false, the winning event is held as a pending winner.
An admin can then start it with:
/eventforge vote confirm
Manual queues and voting
Voting works with manual queue events.
If the winning event uses:
participation:
mode: MANUAL
EventForge opens that event's queue instead of starting the event instantly.
Example flow:
vote starts
players vote for Mining Rush
Mining Rush wins
Mining Rush opens a queue
players join with /events join mining_rush
queue countdown completes
event starts
only queued players can score
Reload safety
Running:
/eventforge reload confirm
cancels any active event vote before EventForge reloads config files and runtime data.
This prevents old vote timers from continuing after the plugin has reloaded.
Tab completion
Admin tab completion supports:
/eventforge vote start
/eventforge vote cancel
/eventforge vote status
/eventforge vote confirm
When starting a vote, EventForge suggests loaded event IDs and avoids suggesting duplicate event IDs already used in the same command.
Player tab completion supports:
/events vote <event>
Only active vote options are shown.
Scheduled voting
EventForge v1.0.3 also supports scheduled voting.
Scheduled voting starts votes automatically from schedule_config.yml.
This is separate from normal per-event schedules.
Use manual voting for admin-run votes. Use scheduled voting when you want EventForge to automatically ask players which event should run next.
Enable scheduled voting
Scheduled voting is configured in:
plugins/EventForge/schedule_config.yml
By default, scheduled voting is disabled.
scheduled-voting:
enabled: false
To enable it:
scheduled-voting:
enabled: true
Scheduled vote example
scheduled-voting:
enabled: true
schedules:
hourly_vote:
enabled: true
type: INTERVAL
every: 1h
duration: 60s
options:
- mining_rush
- mob_hunt
- fishing_frenzy
randomize-options: false
randomize-amount: 3
start-winner-automatically: true
announce-before:
- 5m
- 1m
require-no-active-events: true
require-no-active-vote: true
This starts a vote every hour using the listed event options.
Scheduled vote settings
| Setting | Description |
|---|---|
enabled | Enables this scheduled vote entry |
type | Schedule type. Currently supports INTERVAL |
every | How often the vote should start |
duration | How long the vote lasts |
options | Event IDs included in the vote |
randomize-options | Randomly choose options from the configured list |
randomize-amount | Amount of random options to choose |
start-winner-automatically | Starts the winner automatically |
announce-before | Announcements sent before the vote starts |
require-no-active-events | Skips the vote if an event is active |
require-no-active-vote | Skips the vote if another vote is active |
Scheduled vote announcements
Use announce-before to warn players before a scheduled vote starts.
announce-before:
- 5m
- 1m
- 30s
EventForge broadcasts the announcement when the scheduled vote reaches those times.
Randomized scheduled votes
Scheduled votes can randomly choose options from a larger event pool.
randomize-options: true
randomize-amount: 2
With five configured events, EventForge randomly chooses two options each time the scheduled vote starts.
This keeps repeated scheduled votes from feeling the same every time.
Scheduled vote skip rules
Use these settings to prevent overlaps:
require-no-active-events: true
require-no-active-vote: true
If an event is already active, the scheduled vote is skipped and rescheduled.
If another vote is already active, the scheduled vote is skipped and rescheduled.
Viewing schedules
Run:
/eventforge schedules
This shows normal per-event schedules and scheduled event votes.
Scheduled vote entries show:
scheduled vote ID
time until next vote
configured option IDs
Validation
/eventforge validate checks voting and scheduled voting config.
It can detect issues such as:
invalid scheduled vote interval
invalid vote duration
missing options
unknown event IDs
duplicate options
too few valid options
invalid randomize amount
invalid announce-before values
You can also validate the schedule file directly:
/eventforge validate schedule_config.yml
Placeholders and API
Voting also includes PlaceholderAPI placeholders and public API services.
Useful docs:
PlaceholderAPI
Developer API
Bukkit Events
The voting API exposes immutable snapshots instead of internal vote runtime objects.