Skip to main content
The MaintenanceChangedEvent is fired whenever the maintenance mode status changes, either from enabled to disabled or vice versa.

Event Details

Package: eu.kennytv.maintenance.api.event Type: Notification event (read-only) Fired when:
  • Maintenance mode is enabled via command, API, or scheduled timer
  • Maintenance mode is disabled via command, API, or scheduled timer

Class Definition

public record MaintenanceChangedEvent(boolean isMaintenance) implements MaintenanceEvent {
}
This event is implemented as a Java record, providing an immutable data structure with automatic getter methods.

Methods

isMaintenance()

Returns whether maintenance mode has been enabled or disabled.
boolean isMaintenance()
Returns: true if maintenance mode has been enabled, false if it has been disabled

Usage Example

Basic Example

import eu.kennytv.maintenance.api.Maintenance;
import eu.kennytv.maintenance.api.MaintenanceProvider;
import eu.kennytv.maintenance.api.event.MaintenanceChangedEvent;
import eu.kennytv.maintenance.api.event.manager.EventListener;
import eu.kennytv.maintenance.api.event.manager.EventManager;

public class MyPlugin extends JavaPlugin {
    
    @Override
    public void onEnable() {
        Maintenance api = MaintenanceProvider.get();
        EventManager eventManager = api.getEventManager();
        
        eventManager.registerListener(new EventListener<MaintenanceChangedEvent>() {
            @Override
            public void onEvent(MaintenanceChangedEvent event) {
                if (event.isMaintenance()) {
                    getLogger().info("Maintenance mode enabled!");
                } else {
                    getLogger().info("Maintenance mode disabled!");
                }
            }
        }, MaintenanceChangedEvent.class);
    }
}

Advanced Example: Integration with Discord

import eu.kennytv.maintenance.api.event.MaintenanceChangedEvent;
import eu.kennytv.maintenance.api.event.manager.EventListener;

public class DiscordIntegration {
    
    private final DiscordBot bot;
    
    public DiscordIntegration(DiscordBot bot) {
        this.bot = bot;
    }
    
    public void registerListeners(EventManager eventManager) {
        eventManager.registerListener(new EventListener<MaintenanceChangedEvent>() {
            @Override
            public void onEvent(MaintenanceChangedEvent event) {
                if (event.isMaintenance()) {
                    bot.sendMessage("🔧 Server is now in maintenance mode!");
                    bot.updateStatus("Under Maintenance");
                } else {
                    bot.sendMessage("✅ Server maintenance complete! Server is now online.");
                    bot.updateStatus("Online");
                }
            }
        }, MaintenanceChangedEvent.class);
    }
}

Example: Kicking Custom Players

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import eu.kennytv.maintenance.api.event.MaintenanceChangedEvent;
import eu.kennytv.maintenance.api.event.manager.EventListener;

public class CustomKickHandler {
    
    public void register(EventManager eventManager) {
        eventManager.registerListener(new EventListener<MaintenanceChangedEvent>() {
            @Override
            public void onEvent(MaintenanceChangedEvent event) {
                if (event.isMaintenance()) {
                    // Kick players without maintenance permission
                    for (Player player : Bukkit.getOnlinePlayers()) {
                        if (!player.hasPermission("maintenance.bypass")) {
                            player.kickPlayer("Server is entering maintenance mode!");
                        }
                    }
                }
            }
        }, MaintenanceChangedEvent.class);
    }
}

See Also

Build docs developers (and LLMs) love