Documentation Index
Fetch the complete documentation index at: https://mintlify.com/kennytv/Maintenance/llms.txt
Use this file to discover all available pages before exploring further.
This guide shows you how to add the Maintenance API to your plugin project and get started with basic usage.
Requirements
- Java 21 or higher
- Maintenance plugin installed on your server
- Maven or Gradle build system
Adding the Dependency
Add the Maintenance API dependency to your pom.xml:
<dependency>
<groupId>eu.kennytv.maintenance</groupId>
<artifactId>maintenance-api</artifactId>
<version>5.0.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
Gradle (Kotlin DSL)
Add the dependency to your build.gradle.kts:
dependencies {
compileOnly("eu.kennytv.maintenance:maintenance-api:5.0.0-SNAPSHOT")
}
Gradle (Groovy DSL)
Add the dependency to your build.gradle:
dependencies {
compileOnly 'eu.kennytv.maintenance:maintenance-api:5.0.0-SNAPSHOT'
}
Use compileOnly (or provided scope in Maven) since the Maintenance plugin provides the API at runtime.
Getting the API Instance
The API is accessed through the MaintenanceProvider class:
import eu.kennytv.maintenance.api.Maintenance;
import eu.kennytv.maintenance.api.MaintenanceProvider;
public class MyPlugin extends JavaPlugin {
@Override
public void onEnable() {
Maintenance api = MaintenanceProvider.get();
if (api == null) {
getLogger().warning("Maintenance plugin not found!");
return;
}
// API is ready to use
getLogger().info("Connected to Maintenance v" + api.getVersion());
}
}
Null Safety
The MaintenanceProvider.get() method returns @Nullable Maintenance, so always check for null:
Maintenance api = MaintenanceProvider.get();
if (api != null) {
// Safe to use API
boolean inMaintenance = api.isMaintenance();
} else {
// Maintenance plugin not loaded yet or not installed
}
Basic Usage Examples
Toggle Maintenance Mode
Maintenance api = MaintenanceProvider.get();
if (api != null) {
// Enable maintenance mode
api.setMaintenance(true);
// Disable maintenance mode
api.setMaintenance(false);
// Check current status
if (api.isMaintenance()) {
System.out.println("Server is in maintenance mode");
}
}
When you enable maintenance mode, all non-whitelisted players are immediately kicked from the server.
Access Settings
Maintenance api = MaintenanceProvider.get();
if (api != null) {
Settings settings = api.getSettings();
// Check if ping messages are enabled
boolean pingMessages = settings.isEnablePingMessages();
// Get all whitelisted players
Map<UUID, String> whitelisted = settings.getWhitelistedPlayers();
// Reload configuration
settings.reloadConfigs();
}
Listen to Events
import eu.kennytv.maintenance.api.event.MaintenanceChangedEvent;
import eu.kennytv.maintenance.api.event.MaintenanceReloadedEvent;
Maintenance api = MaintenanceProvider.get();
if (api != null) {
// Listen for maintenance mode changes
api.getEventManager().registerListener(
event -> {
MaintenanceChangedEvent e = (MaintenanceChangedEvent) event;
System.out.println("Maintenance mode: " + e.isMaintenance());
},
MaintenanceChangedEvent.class
);
// Listen for config reloads
api.getEventManager().registerListener(
event -> {
System.out.println("Configuration reloaded");
},
MaintenanceReloadedEvent.class
);
}
Plugin Dependency
Make sure to declare Maintenance as a dependency in your plugin descriptor:
Paper/Spigot (plugin.yml)
name: MyPlugin
version: 1.0.0
main: com.example.MyPlugin
depend: [Maintenance]
BungeeCord (bungee.yml)
name: MyPlugin
main: com.example.MyPlugin
depends: [Maintenance]
Use depend if your plugin requires Maintenance to function, or softdepend if itβs optional.
Verify Installation
To verify the API is working correctly:
@Override
public void onEnable() {
Maintenance api = MaintenanceProvider.get();
if (api == null) {
getLogger().severe("Maintenance API not available!");
getServer().getPluginManager().disablePlugin(this);
return;
}
getLogger().info("Successfully hooked into Maintenance v" + api.getVersion());
getLogger().info("Current maintenance status: " + api.isMaintenance());
}
Next Steps
- Events - Learn about the event system in detail
- Settings API - Working with settings and config
- Examples - More complete usage examples