Event Engine
Last updated Oct 9, 2026
Event Engine
The Event Engine is the owner-facing product inside SoapsCommon: server automation and multi-step events without a custom plugin.
Build with /soaps: pick When, Only if, Do, and Steps. Definitions save under plugins/SoapsCommon/.
You still need this jar for every other Soaps plugin. Library features (menus, text, chat input) work whether the engine is on or off.
Canonical shape
Every definition uses the same three segments (root and each step):
When → Only if → Do
id: example
description: "Short blurb shown in the event list lore."
name: "Example"
enabled: false
type: automation # Kind: automation | event (list filters use this)
# event meta (events always; automations only when non-default):
# cooldown: 1h
# max_running: 1
when:
type: player_join # staff-start uses type: manual (Start / Shift-left)
only_if:
- players_online: ">= 4" # also: "<= 10" or "4 <= x <= 10"
# - players: [Alice, Bob] # named players must be online
do:
# - participants: { mode: starter } # lock audience to starter (joiners via add_participant)
# - participants: { players: [Alice, Bob] }
- message: "<green>Hi!"
Kind (type:) vs staff-start (when.type: manual) are different. Filters Automations / Events follow Kind. Enable + Start is required when When is manual. See FAQ.
Default audience is open (anyone can progress goals; online players are seeded as participants). Use Only-if for start gates (counts / names). Use Do participants to lock the audience to starter or named players.
Header order is fixed: id → description → name → enabled → type → cooldown → max_running → when → only_if → do / steps. GUI saves use the same order. Description appears automatically in list and detail item lore.
Multi-step events add steps with per-step only_if, do, goal, and next.
Plain language
| Word | Meaning |
|---|---|
| When | What starts the rule or event |
| Only if | Requirements that must pass |
| Do | What happens |
| Step | One stage of a longer event |
| Goal | Progress target (kill, collect, reach…) |
| Next | When to leave a step |
| Event | Saved definition you edit |
| Running | Live instance on the server |
Quick automations stop at When → Only if → Do.
Full events add Steps, Goals, and Next.
Two creation modes
Quick event (default)
When → Only if → Do → Save / Test
Examples: welcome kit, undead bounty, weekend promo (see Examples).
Event with steps
When → Only if → Steps (only_if, lasts, do, goal, next) → Save / Test
Examples: undead siege, ore challenge, XP boost night, community mine.
Same engine. Different depth. GUI covers blank create, pickers, and run control; YAML covers rare fields.
How it fits the suite
SoapsCommon owns the engine runtime and staff GUIs.
Installed Soaps plugins add native When / Only if / Do types into the same pickers (Floor clears, Arena match end, Quest claim, portals, traits, stamina, Admin money / warp, and more). Soft plugins (MythicMobs, Vault, WorldGuard) do the same.
Full table: Integrations.
Do not use the engine to rewrite Quest, Arena, or Floor. Hook them with those native types (or console_command when you need a one-off).
Defaults that matter
- Players stay where they are unless a Do teleports them
- Resume after restart reloads the current definition YAML for that id (not a frozen snapshot file)
- Dangerous Dos (console, big spawns) go through the command sandbox and admin perms (no GUI confirm checkbox)
- World / location prompts accept
herefor the world or block you stand on; omit world filters for any world - Everything the engine spawns should be tagged and cleaned up
- Missing soft plugins (MythicMobs, Vault…) show clear “unavailable” on validate / start
Module toggle
Global settings include engine.enabled in engine.yml.
If disabled, Common behaves as the shared library only (menus, text, services).
See also
| Page | Content |
|---|---|
| Event GUI | In-game editors and list UX |
| Composition Cookbook | Item procs, cancel, audiences, call_event |
| When / Only if / Do | Catalogs |
| Examples | Seeded automations and events |
| FAQ | Enable vs Start vs Kind |