Skip to main content

🗳️ 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.

info

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

SettingDescription
enabledEnables or disables manual event voting
default-durationHow long admin-started votes last
min-optionsMinimum amount of events required in a vote
max-optionsMaximum amount of events allowed in a vote
allow-vote-changeLets players change their vote before the vote ends
start-winner-automaticallyStarts the winner automatically when the vote ends
broadcast-resultBroadcasts 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.

tip

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

SettingDescription
enabledEnables this scheduled vote entry
typeSchedule type. Currently supports INTERVAL
everyHow often the vote should start
durationHow long the vote lasts
optionsEvent IDs included in the vote
randomize-optionsRandomly choose options from the configured list
randomize-amountAmount of random options to choose
start-winner-automaticallyStarts the winner automatically
announce-beforeAnnouncements sent before the vote starts
require-no-active-eventsSkips the vote if an event is active
require-no-active-voteSkips 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.