Skip to main content

⚡ Actions & Triggers

Actions and triggers let events run extra behaviour when something happens.

For example, an event can:

broadcast a message when it starts
send a title when it finishes
play a sound when players score
run a command
send a webhook
show animated titles
show animated actionbars
use custom actions from addons
tip

Use actions when you want events to feel more custom and polished without needing a separate plugin or script.


Basic structure

Actions are configured under:

triggers:
trigger-name:
actions:
- type: ACTION_TYPE
message: "Message here"

Example:

triggers:
event-start:
actions:
- type: BROADCAST
message: "&bMining Rush has started!"

Supported triggers

EventForge supports these event-level triggers:

TriggerWhen it runs
event-startWhen the event starts
event-finishWhen the event finishes naturally
event-stopWhen the event is force-stopped
player-scoreWhen a player gains score

Example:

triggers:
event-start:
actions:
- type: BROADCAST
message: "&aThe event has started!"

event-finish:
actions:
- type: BROADCAST
message: "&eThe event has finished!"

player-score:
actions:
- type: ACTIONBAR
message: "&a+{score_change} points &7| Total: &f{new_score}"
info

Some objective types can also run their own actions. For example, capture zones, visit regions, interact blocks, and milestones can all run actions from their own sections.


Built-in action types

EventForge includes these built-in action types:

BROADCAST
MESSAGE
TITLE
ACTIONBAR
ANIMATED_TITLE
ANIMATED_ACTIONBAR
SOUND
COMMAND
EFFECT
PARTICLE
FIREWORK
WEBHOOK

Custom addons can also register more action types through the EventForge API.


Placeholders

Actions support EventForge placeholders.

PlaceholderDescription
{event}Event ID
{event_display}Event display name
{time_left}Time left
{elapsed}Time elapsed
{player}Player name, if the trigger has a player
{uuid}Player UUID, if available
{score}Player score
{rank}Player rank
{old_score}Previous score
{new_score}New score
{score_change}Score gained
{var:key}Event variable

Example:

triggers:
player-score:
actions:
- type: ACTIONBAR
message: "&a+{score_change} &7points &8| &f{new_score} total"

Milestone placeholders

Milestone actions can also use milestone placeholders.

PlaceholderDescription
{milestone}Milestone ID
{milestone_display}Milestone display name
{milestone_threshold}Milestone score threshold
{old_score}Score before crossing the milestone
{new_score}Score after crossing the milestone
{score}Current score
{score_change}Score gained

Example:

milestones:
enabled: true
thresholds:
50:
display-name: "&e50 Points"
once-per-player: true
actions:
- type: MESSAGE
message: "&aYou reached &f{milestone_display}&a!"

Event variables in actions

Actions support event variables.

variables:
event_color: "&b"
arena_name: "Spawn Mine"

triggers:
event-start:
actions:
- type: BROADCAST
message: "{var:event_color}&l{event_display} &7has started at &f{var:arena_name}&7!"

Variables are useful when you reuse colours, arena names, reward names, or phrases across the same event file.


Text effects in actions

Actions can use EventForge text effects.

triggers:
event-start:
actions:
- type: BROADCAST
message: "<gradient:#22d3ed:#ffffff>{event_display}</gradient> &7has started!"

Common effects:

<rainbow>Text</rainbow>
<gradient:#22d3ed:#ffffff>Text</gradient>
<pulse:#22d3ed:#ffffff>Text</pulse>
<shimmer:#22d3ed:#ffffff>Text</shimmer>
<stack:rainbow,wobble>Text</stack>

For the full list, read the Text Effects page.


Broadcast action

Sends a message to the server.

triggers:
event-start:
actions:
- type: BROADCAST
message: "&bMining Rush has started!"

With text effects:

triggers:
event-start:
actions:
- type: BROADCAST
message: "<gradient:#22d3ed:#ffffff>Mining Rush</gradient> &7has started!"

Message action

Sends a message to the player involved in the trigger.

This is most useful for player-based triggers such as player-score.

triggers:
player-score:
actions:
- type: MESSAGE
message: "&aYou gained &f{score_change} &apoints!"
info

If the trigger does not have a player, player-only actions may do nothing.


Title action

Sends a title to players.

triggers:
event-start:
actions:
- type: TITLE
title: "&b&lMining Rush"
subtitle: "&7Mine blocks to earn points!"
fade-in: 10
stay: 50
fade-out: 10

Useful settings:

SettingDescription
titleMain title text
subtitleSubtitle text
fade-inFade-in time in ticks
stayStay time in ticks
fade-outFade-out time in ticks

Animated title action

ANIMATED_TITLE lets you send title frames with text effects and placeholders.

triggers:
event-start:
actions:
- type: ANIMATED_TITLE
frames:
- title: "<stack:rainbow,wobble>{event_display}</stack>"
subtitle: "&7Mine blocks to score!"
fade-in: 5
stay: 40
fade-out: 10
interval: 5

Frame settings:

SettingDescription
titleMain title text
subtitleSubtitle text
fade-inFade-in time in ticks
stayStay time in ticks
fade-outFade-out time in ticks
intervalDelay before the next frame

Example with multiple frames:

- type: ANIMATED_TITLE
frames:
- title: "<gradient:#22d3ed:#ffffff>{event_display}</gradient>"
subtitle: "&7Starting now..."
fade-in: 5
stay: 30
fade-out: 5
interval: 5

- title: "<pulse:#22d3ed:#ffffff>Good luck!</pulse>"
subtitle: "&7Score as much as possible."
fade-in: 0
stay: 30
fade-out: 10
interval: 5
tip

Animated titles work best for event starts, event finishes, and milestone moments.


Actionbar action

Sends an actionbar message to the player involved in the trigger.

triggers:
player-score:
actions:
- type: ACTIONBAR
message: "&a+{score_change} points &8| &7Total: &f{new_score}"

Animated actionbar action

ANIMATED_ACTIONBAR lets you show short animated actionbar messages.

triggers:
player-score:
actions:
- type: ANIMATED_ACTIONBAR
frames:
- message: "<pulse:#22d3ed:#ffffff>+{score_change} points</pulse> &8| &7Total: &f{new_score}"
duration: 30
interval: 5

Frame settings:

SettingDescription
messageActionbar text
durationHow long this frame sequence should run
intervalHow often the frame updates

Example:

- type: ANIMATED_ACTIONBAR
frames:
- message: "<shimmer:#22d3ed:#ffffff>Keep going!</shimmer>"
duration: 60
interval: 5
tip

Animated actionbars are great for score feedback because they do not fill chat.


Sound action

Plays a sound.

triggers:
player-score:
actions:
- type: SOUND
sound: ENTITY_EXPERIENCE_ORB_PICKUP
volume: 1.0
pitch: 1.2

Useful settings:

SettingDescription
soundBukkit sound name
volumeSound volume
pitchSound pitch

Command action

Runs a command from console.

triggers:
event-start:
actions:
- type: COMMAND
command: "say {event_display} has started!"

Commands do not need a leading slash.

Good uses:

give items
run crate commands
run permission commands
send server announcements
run custom plugin commands

Example:

rewards:
participation:
enabled: true
minimum-score: 1
commands:
- "give {player} emerald 1"

Effect action

Applies a potion effect to the player involved in the trigger.

triggers:
player-score:
actions:
- type: EFFECT
effect: SPEED
duration: 5
amplifier: 1

Useful settings:

SettingDescription
effectPotion effect type
durationDuration in seconds
amplifierEffect amplifier

Particle action

Spawns particles.

triggers:
player-score:
actions:
- type: PARTICLE
particle: HAPPY_VILLAGER
count: 10
offset-x: 0.3
offset-y: 0.5
offset-z: 0.3
speed: 0.0

Useful settings:

SettingDescription
particleBukkit particle name
countParticle count
offset-xX offset
offset-yY offset
offset-zZ offset
speedParticle speed

Firework action

Spawns a firework effect.

triggers:
event-finish:
actions:
- type: FIREWORK
power: 1
colors:
- "#22d3ed"
- "#ffffff"

Useful settings:

SettingDescription
powerFirework power
colorsHex colour list

Webhook action

Sends a webhook message.

triggers:
event-start:
actions:
- type: WEBHOOK
url: "https://discord.com/api/webhooks/..."
username: "EventForge"
message: "**{event_display}** has started!"

Useful settings:

SettingDescription
urlWebhook URL
usernameWebhook username
avatar-urlOptional avatar URL
messageWebhook message
warning

Never share real webhook URLs publicly.


Actions in milestones

Milestones can run any normal EventForge action.

milestones:
enabled: true
thresholds:
25:
display-name: "&e25 Points"
once-per-player: true
actions:
- type: MESSAGE
message: "&aYou reached &f{milestone_display}&a!"
- type: SOUND
sound: ENTITY_PLAYER_LEVELUP
volume: 1.0
pitch: 1.2

You can also use animated actions:

milestones:
enabled: true
thresholds:
50:
display-name: "<gradient:#22d3ed:#ffffff>50 Points</gradient>"
once-per-player: true
actions:
- type: ANIMATED_TITLE
frames:
- title: "<stack:rainbow,wobble>{milestone_display}</stack>"
subtitle: "&7Milestone reached!"
fade-in: 5
stay: 40
fade-out: 10
interval: 5

Actions in objective sections

Some objectives have their own action sections.

Examples:

capture zone capture actions
capture zone contested actions
visit region actions
interact block success actions
interact block cooldown actions
milestone actions

These actions use the same action system as triggers.

This keeps objective-specific behaviour consistent with normal event triggers.


Custom addon actions

Addons can register custom action types through the EventForge API.

Example action type from an addon:

RELIC_LOG

Then the event config can use it like a normal action:

triggers:
event-start:
actions:
- type: RELIC_LOG
message: "{event_display} started."
info

Custom action types depend on the addon that registered them. If the addon is missing, the action will not be available.


Action timing tips

Use actions carefully.

Good uses:

event-start broadcast/title
player-score actionbar/sound
event-finish broadcast/firework
milestone message/sound/title
objective discovery messages
webhook event summaries

Avoid:

heavy command spam
long chat spam on every score update
too many animated titles at once
webhooks on every small score change

Simple event-start example

triggers:
event-start:
actions:
- type: BROADCAST
message: "<gradient:#22d3ed:#ffffff>{event_display}</gradient> &7has started!"

- type: ANIMATED_TITLE
frames:
- title: "<stack:rainbow,wobble>{event_display}</stack>"
subtitle: "&7Good luck!"
fade-in: 5
stay: 40
fade-out: 10
interval: 5

- type: SOUND
sound: ENTITY_PLAYER_LEVELUP
volume: 1.0
pitch: 1.0

Simple player-score example

triggers:
player-score:
actions:
- type: ANIMATED_ACTIONBAR
frames:
- message: "<pulse:#22d3ed:#ffffff>+{score_change} points</pulse> &8| &7Total: &f{new_score}"
duration: 30
interval: 5

- type: SOUND
sound: ENTITY_EXPERIENCE_ORB_PICKUP
volume: 0.8
pitch: 1.4

Summary

Actions are one of the easiest ways to make an EventForge event feel more alive.

Use them for:

messages
titles
actionbars
sounds
commands
effects
particles
fireworks
webhooks
milestones
objective-specific feedback
custom addon behaviour

For polished events, combine actions with variables, text effects, milestones, bossbars, and sidebars.