Plugin Hooks & Events
Hooks allow plugins to react to events happening in StellarStack. When an event occurs (like a server starting), all registered hook handlers are executed in priority order.Hook System Overview
StellarStack uses a WordPress-inspired hook system with two types:- Action Hooks - Execute code when events occur (fire-and-forget)
- Filter Hooks - Transform data as it passes through the system
Registering Action Hooks
Registering Filter Hooks
Hook Priority
Control the order hooks execute with priority levels:"critical"- Execute first (priority 0)"high"- Execute early (priority 1)"normal"- Default priority (priority 2)"low"- Execute last (priority 3)
Hook Context
All hook handlers receive aHookContext object:
Available Hooks
Server Lifecycle Hooks
server:beforeStart
Triggered before a server starts.- Validate server configuration
- Create pre-start backups
- Check system resources
server:afterStart
Triggered after a server successfully starts.- Send welcome messages
- Load server plugins/mods
- Update external status pages
- Record analytics
server:beforeStop
Triggered before a server stops.- Warn online players
- Save world data
- Create backups
server:afterStop
Triggered after a server stops.- Clean up temporary files
- Upload logs/backups
- Update monitoring systems
server:beforeRestart
Triggered before a server restarts.server:afterRestart
Triggered after a server successfully restarts.Server Management Hooks
server:beforeInstall
Triggered before a new server is installed.- Download required files
- Prepare configurations
- Validate disk space
server:afterInstall
Triggered after a server installation completes.- Apply default configurations
- Install plugins/mods
- Set up initial files
server:statusChange
Triggered when server status changes (starting, running, stopping, stopped, crashed).- Update dashboards
- Send notifications
- Track uptime metrics
server:created
Triggered when a new server is created.server:deleted
Triggered when a server is deleted.Console Hooks
server:console
Triggered when console output is received from a server.line- Console output linetimestamp- When the line was outputstream- “stdout” or “stderr”
- Parse player events
- Detect errors/crashes
- Track chat messages
- Monitor performance warnings
File Operation Hooks
server:file:beforeWrite
Triggered before a file is written.server:file:afterWrite
Triggered after a file is written.server:file:beforeDelete
Triggered before a file is deleted.server:file:afterDelete
Triggered after a file is deleted.Backup Hooks
server:backup:beforeCreate
Triggered before a backup is created.server:backup:afterCreate
Triggered after a backup is created.server:backup:beforeRestore
Triggered before a backup is restored.server:backup:afterRestore
Triggered after a backup is restored.Schedule Hooks
server:schedule:beforeExecute
Triggered before a scheduled task executes.server:schedule:afterExecute
Triggered after a scheduled task executes.User Hooks
user:login
Triggered when a user logs in.user:created
Triggered when a new user account is created.Plugin Hooks
plugin:enabled
Triggered when a plugin is enabled.plugin:disabled
Triggered when a plugin is disabled.plugin:configUpdated
Triggered when plugin configuration is updated.Filter Hooks
Filters allow you to modify data before it’s used:Available Filters
server:startup:command- Modify server startup commandserver:config:validate- Validate server configurationbackup:filename- Modify backup file nameconsole:output- Filter console output before display
Error Handling
Errors in hook handlers are automatically caught and logged:Best Practices
1. Use Appropriate Priorities
2. Handle Async Operations
3. Avoid Blocking Operations
4. Clean Up Resources
Complete Example: Player Tracker
Next Steps
- Plugin UI Extensions - Create custom UI components
- Plugin API Reference - Complete API documentation