Requirements
- SpongeAPI 8.0.0 or higher
- Java 17 or higher
- Sponge server (SpongeVanilla or SpongeForge)
Installation
- Download the latest version from Hangar
- Place the JAR file in your server’s
mods/directory (notplugins/) - Restart your server
- Configure the plugin in
config/maintenance/config.yml
Unlike Bukkit-based servers, Sponge plugins are loaded from the
mods/ directory.Sponge-Specific Differences
Configuration Location
Sponge uses a different directory structure:- Config:
config/maintenance/config.yml - Languages:
config/maintenance/language/ - Icon:
config/maintenance/maintenance-icon.png
Plugin Loading
Sponge plugins use a different metadata format defined inMETA-INF/sponge_plugins.json:
Features
Custom Server List
Customize your server list appearance during maintenance:- Custom MOTD - Display maintenance messages
- Custom Icon - Show a different favicon (64x64 PNG)
- Player Count - Customize player count display
Maintenance Whitelist
Allow specific players to join during maintenance:Scheduled Maintenance
Schedule maintenance with timers:%TIMER% placeholder in your MOTD to show countdown.
Player Kick
When maintenance is enabled:- Players without bypass permission are kicked
- Whitelisted players can join
- Custom kick message is displayed
Plugin Integrations
ServerListPlus
Optional integration - Automatically detected. Maintenance integrates with ServerListPlus for enhanced server list customization.LuckPerms
Optional integration - Context support planned. LuckPerms integration is prepared but currently disabled in the codebase. Future versions may enable maintenance context support.Configuration
The configuration file is located atconfig/maintenance/config.yml:
Icon Setup
Place your maintenance icon atconfig/maintenance/maintenance-icon.png:
- Must be 64x64 pixels
- PNG format
- Automatically loaded on server start
Permissions
Sponge uses its built-in permissions system:| Permission | Description |
|---|---|
maintenance.command | Access to /maintenance command |
maintenance.bypass | Join server during maintenance |
maintenance.admin | Full administrative access |
maintenance.joinnotification | Receive join attempt notifications |
Commands
All commands use/maintenance or /mt:
Unsupported Features
The following features are only available on proxy platforms (BungeeCord/Velocity):- Redis integration - Multi-proxy synchronization
- Per-server maintenance - Sponge runs single servers
- Fallback servers - Proxy-only feature
- Waiting server - Proxy-only feature
- Player count message customization - Limited in single-server context
- Timer-specific player count - Proxy feature
- Single maintenance commands - Requires proxy
SpongeForge vs SpongeVanilla
SpongeForge
Maintenance works on SpongeForge servers (Sponge + Forge mods):- Place JAR in
mods/directory - Compatible with Forge mods
- Config in
config/maintenance/
SpongeVanilla
Maintenance works on SpongeVanilla servers (pure Sponge):- Place JAR in
mods/directory - No Forge required
- Config in
config/maintenance/
API Usage
For Sponge plugin developers:Event System
Maintenance fires events through Sponge’s event system:Troubleshooting
Plugin not loading
Check:- JAR is in
mods/directory (notplugins/) - SpongeAPI 8.0+ is installed
- Java 17+ is being used
- Check server logs for errors
Players can still join
Verify:- Maintenance is actually enabled:
/maintenance on - Players don’t have
maintenance.bypasspermission - Players aren’t on whitelist:
/maintenance remove <player> - Configuration is correct in
config/maintenance/config.yml
Custom icon not showing
Ensure:- Icon is 64x64 pixels PNG format
- Located at
config/maintenance/maintenance-icon.png custom-icon: truein config- Server was restarted after adding icon
Commands not working
Check:- You have
maintenance.commandpermission - Using correct syntax:
/maintenance <on|off> - No conflicting plugins with same command
- Check console for error messages
Performance
Maintenance is lightweight and optimized for Sponge:- Minimal CPU usage
- Efficient event handling
- No impact on TPS
- Async operations where possible
Limitations
Due to Sponge’s architecture:- No game reload support - Must restart server to reload (commented out in code)
- Limited plugin file access - Some operations throw
UnsupportedOperationException - No proxy features - Single server only
Migration from Bukkit/Spigot
If migrating from Bukkit to Sponge:- Export whitelist from old server
- Copy UUIDs from old
config.yml - Place in new config at
config/maintenance/config.yml - Update permissions in LuckPerms or your permission plugin
- Move icon to new location