Events Schedule Engine
Automate your Hytale server events with precision cron scheduling.
Define once, run forever — from registration to completion.
Features | SME Integration | Pricing | Quick Start | FAQ
ESE works out of the box with a free tier — 1 event definition and up to 5 players per queue.
Upgrade to unlock unlimited definitions and unlimited queue sizes.
Running recurring events on a Hytale server is painful. You jump in at the right time, announce the event, wait for players, hope the timing works out — and then do it again tomorrow. Every. Single. Day.
Events Schedule Engine (ESE) replaces all of that with a single JSON definition. Set a cron expression, configure the registration window and duration, and ESE handles every lifecycle step automatically:
Event fires at the scheduled time
Players are notified and given a 4-char join code
Registration window runs for your configured duration
Event transitions to ACTIVE — custom commands execute automatically
Event ends cleanly after its configured duration
No babysitting. No manual triggers. No missed events.
Schedule events using standard CRON expressions (Quartz syntax). Daily, hourly, every Tuesday at 3PM — any cadence you need.
Code:
0 0 15 ? * TUE
Multiple worlds are supported — the same definition can fire across several worlds simultaneously, creating independent instances per world.
Every event goes through a clean, automatic lifecycle:
- REGISTRATION — Window opens, server announces the event code, players join the queue
- ACTIVE — Event starts, configured commands execute, players are locked in
- ENDED — Event closes automatically after the configured duration
Phase transitions are fully automatic. If the queue fills early, StartOnMaxQueue kicks the event off immediately without waiting for the registration window to expire.
Every event instance gets a unique 4-character alphanumeric code broadcast to all players. Joining is as simple as:
Code:
/ese register A3X7
No GUIDs, no long commands, no confusion.
Trigger commands when events go ACTIVE — globally or per-player:
- Global — runs once as console (e.g. broadcast a message, change weather)
- Per-player — runs for each queued player with {player} substituted (e.g. /give {player} ...)
Full in-game management — no config file editing required for day-to-day operations.
Admin page (/ese admin): Create, edit, and delete event definitions. Configure worlds, registration windows, queue limits, and commands.
General tab — define name, cron expression, registration window, duration, queue size, and worlds
Monitor live instances in real time — see phase, world, and manage each instance directly.
Active Instances tab — track running events with phase status and per-instance actions
Player page (/ese events): Browse available events for your world, see queue status and time remaining, join or leave with one click.
Player view — event details, registration countdown, queue progress, and join/cancel buttons
When paired with Server Monitor Engine (SME), ESE automatically gets its own dashboard tab with live charts: active events, queue sizes, phase transitions, and more. No extra configuration needed.
ESE dispatches lifecycle events internally so other plugins can react to them:
- EventRegistered — a new instance was created
- EventActivated — instance entered ACTIVE phase
- EventEnded — instance completed
- EventPlayerRegistered — a player joined the queue
- EventPlayerUnregistered — a player left the queue
ESE integrates directly with Server Monitor Engine to surface real-time metrics in the SME dashboard. No configuration required on either side — install both plugins and the tab appears automatically.
| KPI Card | Description |
|---|---|
| Active Events | Event instances currently in ACTIVE phase |
| Registrations Open | Events currently accepting player registrations |
| Players Queued | Total players currently in any event queue |
| Scheduled Definitions | Event definitions pending their next scheduled fire |
ESE ships with a fully functional free tier — no license required to get started. The free tier lets you test and evaluate the plugin with limited scale. Upgrade to the paid tier to unlock production-scale usage.
| Feature | Free | Paid |
|---|---|---|
| Event definitions | 1 | Unlimited |
| Max players per queue | 5 | Unlimited (config) |
| Three-phase lifecycle | Yes | Yes |
| Event codes & notifications | Yes | Yes |
| Admin & Player UI pages | Yes | Yes |
| Custom command execution | Yes | Yes |
| Multi-world scheduling | Yes | Yes |
| Cron-based scheduling | Yes | Yes |
| Prometheus metrics via SME | Yes | Yes |
| Plugin event hooks | Yes | Yes |
| Metric | Type | Labels | Description |
|---|---|---|---|
| hytale_ese_events_fired_total | Counter | definition, world | Total scheduled events fired |
| hytale_ese_phase_transitions_total | Counter | from, to | Total event phase transitions |
| hytale_ese_players_cancelled_total | Counter | — | Total players cancelled from queue |
| hytale_ese_events_active | Gauge | — | Currently active event instances |
| hytale_ese_registrations_active | Gauge | — | Events currently in REGISTRATION phase |
| hytale_ese_players_queued | Gauge | — | Players currently queued across all events |
| hytale_ese_queue_size | Gauge | event | Current queue size per event instance |
| hytale_ese_scheduled_definitions | Gauge | — | Definitions pending next scheduled fire |
All metrics use the prefix hytale_ese_ and are queryable in PromQL when paired with SME Pro.
Minimal impact. The scheduler checks for due events once per second with a lightweight lookup. Phase transitions use Java's ScheduledExecutorService — no polling between transitions. Event data is persisted to HyDB asynchronously.
Yes. Each definition can specify multiple Worlds and ESE creates a separate independent instance per world when the event fires. Each world instance has its own queue, code, and phase.
ESE persists all event instances to HyDB. On restart, active instances are recovered and the lifecycle resumes from where it left off — no events lost, no players dropped from queues.
No. ESE works fully without SME. SME is only required if you want Prometheus metrics and the ESE dashboard tab in the SME web UI.
Yes. ESE dispatches events on every lifecycle change. Your plugin can listen to EventRegistered, EventActivated, EventEnded, EventPlayerRegistered, and EventPlayerUnregistered to trigger custom logic.
When an event enters REGISTRATION phase, ESE generates a unique 4-character alphanumeric code (e.g. A3X7) and broadcasts it to all online players. Players join the queue by running:
The code is unique per instance, so two concurrent events in different worlds won't collide.
Code:
/ese register A3X7
When StartOnMaxQueue is true, ESE immediately transitions the event to ACTIVE as soon as the queue reaches MaxQueueSize — without waiting for the registration window to expire. Useful for competitive events where you want to fire as soon as you have a full lobby.
| Plugin | Purpose | Required |
|---|---|---|
| HyDB | Event instance persistence (database) | Yes |
| MultipleHud | In-game UI pages (Admin + Player) | Yes |
| Server Monitor Engine (SME) | Prometheus metrics + ESE dashboard tab | No (optional) |
Built by Miilhozinho's Mods
Professional plugins for Hytale server operators.
