About Custom Event Manager
Description:
Custom Event Manager is a lightweight Rust plugin that automatically manages and rotates through server events. Instead of manually starting events, this plugin will periodically trigger them for you, picking randomly from multiple event lists and ensuring they don't repeat until all events have been cycled through. Disable timer starts in your plugins, and use the start command in the config, to avoid having multiple events run at the same time.
This keeps gameplay fresh and dynamic for your players without requiring constant admin attention, and now includes Discord webhook integration to notify your community when events start!
Features
- Multiple event lists with independent rotation schedules
- Configurable delays between different event lists to prevent overlap
- Automatic event rotation at configurable intervals
- Smart rotation logic ensures no event repeats until all have been used
- Discord webhook integration with customizable notifications
- Admin commands to start, stop, and check the rotation status
- Simple JSON configuration for adding your own events
- Full permission system support
Configuration
The config file will be generated at:
oxide/config/CustomEventManager.json
Example:
{
"EnableOnServerStart": true,
"DiscordWebhookUrl": "https://discord.com/api/webhooks/YOUR_WEBHOOK_URL",
"DiscordSettings": {
"EnableNotifications": true,
"BotName": "Event Manager",
"BotAvatarUrl": "",
"EmbedColor": 3447003,
"NotifyOnEventStart": true,
"NotifyOnRotationStart": true,
"NotifyOnRotationStop": true,
"NotifyOnCycleComplete": true
},
"EventLists": [
{
"Name": "MainEvents",
"IntervalMinutes": 30,
"RandomizeOrder": true,
"DelayAfterMainEvent (minutes)": 0,
"Enabled": true,
"Events": [
{
"Name": "extraevents",
"Command": "extraevents start",
"Enabled": true
},
{
"Name": "guardedcrate",
"Command": "gcrate start",
"Enabled": true
},
{
"Name": "guessthenumber",
"Command": "gtn start",
"Enabled": true
}
]
},
{
"Name": "SecondaryEvents",
"IntervalMinutes": 45,
"RandomizeOrder": true,
"DelayAfterMainEvent (minutes)": 5,
"Enabled": true,
"Events": [
{
"Name": "roamtasks",
"Command": "RoamTask start",
"Enabled": true
},
{
"Name": "skilltreexpevents",
"Command": "startxpevent",
"Enabled": true
},
{
"Name": "convoy",
"Command": "convoystart",
"Enabled": true
}
]
}
]
}
Options
General Settings
- EnableOnServerStart → Automatically start event rotation when the server starts. Default: true
- DiscordWebhookUrl → Your Discord webhook URL for notifications. Leave empty to disable Discord integration.
Discord Settings
- EnableNotifications → Master switch for all Discord notifications. Default: true
- BotName → The name displayed for the webhook bot. Default: "Event Manager"
- BotAvatarUrl → URL to an avatar image for the bot (optional)
- EmbedColor → Decimal color code for Discord embeds. Default: 3447003 (blue)
- NotifyOnEventStart → Send notification when an event starts. Default: true
- NotifyOnRotationStart → Send notification when rotation starts. Default: true
- NotifyOnRotationStop → Send notification when rotation stops. Default: true
- NotifyOnCycleComplete → Send notification when all events in a list complete. Default: true
Event List Settings
Each event list supports:
- Name → Friendly name for the event list
- IntervalMinutes → Time (in minutes) between each event in this list. Default: 30
- RandomizeOrder → Whether to randomize event selection. Default: true
- DelayAfterMainEvent (minutes) → Additional delay before starting this list's events (useful for preventing overlap). Default: 0
- Enabled → Whether this event list is active. Default: true
- Events → Array of event definitions:
- Name → Friendly name for the event (used in status tracking and Discord notifications)
- Command → The console command to trigger the event
- Enabled → Whether this specific event is active. Default: true
Permissions
customeventmanager.admin
Required to use the admin commands.
Commands
- /cem start - Starts the event rotation
- /cem stop - Stops the event rotation
- /cem status - Shows current status, how many events have run, and when the next one is scheduled
- /cem reload - Reloads the configuration and restarts rotation
- /cem list - Lists all configured event lists and their events
Console Commands
All chat commands can also be used from the F1 console by replacing /cem with cem:
- cem start
- cem stop
- cem status
- cem reload
- cem list
How it works
- Multiple Event Lists: You can configure multiple independent event lists (e.g., "MainEvents" and "SecondaryEvents") that run on their own schedules
- Smart Scheduling: Each list tracks its interval and optional delay to prevent events from overlapping
- No Repeats: Events won't repeat until all events in that list have been triggered
- Discord Integration: Get real-time notifications in your Discord server when events start, cycles complete, or rotation status changes
Tips
- Disable built-in timers in your event plugins to prevent conflicts
- Use the DelayAfterMainEvent setting to stagger different event lists
- Set RandomizeOrder to false if you want events to run in a specific sequence
- Customize Discord notifications to match your server's style with the EmbedColor and BotAvatarUrl settings
