Skip to main content
The Maintenance plugin provides a simple event system that allows you to listen to various events such as maintenance mode changes and configuration reloads.

Event Manager

The EventManager is the core interface for working with events. You can access it through the main Maintenance API instance:
Maintenance api = MaintenanceProvider.get();
EventManager eventManager = api.getEventManager();

EventManager Methods

registerListener

Registers an event listener for a specific event type.
void registerListener(EventListener listener, Class<? extends MaintenanceEvent> eventClass)
Parameters:
  • listener - The listener instance to register
  • eventClass - The event class to listen for

callEvent

Fires a maintenance event (typically used internally by the plugin).
void callEvent(MaintenanceEvent event)
Parameters:
  • event - The event to fire

EventListener Interface

All event listeners must extend the EventListener<T> abstract class, where T is the event type you want to listen to.
public abstract class EventListener<T extends MaintenanceEvent> {
    public abstract void onEvent(final T event);
}

Registering Event Listeners

To listen to an event, create a class that extends EventListener and register it with the EventManager.

Example: Listening to Maintenance Changes

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();
        
        // Create and register the listener
        EventListener<MaintenanceChangedEvent> listener = new EventListener<>() {
            @Override
            public void onEvent(MaintenanceChangedEvent event) {
                if (event.isMaintenance()) {
                    getLogger().info("Maintenance mode has been enabled!");
                } else {
                    getLogger().info("Maintenance mode has been disabled!");
                }
            }
        };
        
        eventManager.registerListener(listener, MaintenanceChangedEvent.class);
    }
}

Example: Listening to Multiple Events

import eu.kennytv.maintenance.api.event.MaintenanceChangedEvent;
import eu.kennytv.maintenance.api.event.MaintenanceReloadedEvent;

public class MyPlugin extends JavaPlugin {
    
    @Override
    public void onEnable() {
        Maintenance api = MaintenanceProvider.get();
        EventManager eventManager = api.getEventManager();
        
        // Register listener for maintenance changes
        eventManager.registerListener(new EventListener<MaintenanceChangedEvent>() {
            @Override
            public void onEvent(MaintenanceChangedEvent event) {
                handleMaintenanceChange(event.isMaintenance());
            }
        }, MaintenanceChangedEvent.class);
        
        // Register listener for configuration reloads
        eventManager.registerListener(new EventListener<MaintenanceReloadedEvent>() {
            @Override
            public void onEvent(MaintenanceReloadedEvent event) {
                getLogger().info("Maintenance configuration reloaded!");
                reloadMyPluginConfig();
            }
        }, MaintenanceReloadedEvent.class);
    }
    
    private void handleMaintenanceChange(boolean isMaintenance) {
        // Your logic here
    }
    
    private void reloadMyPluginConfig() {
        // Your logic here
    }
}

Available Events

The Maintenance plugin provides the following events:

MaintenanceEvent Interface

All events implement the MaintenanceEvent interface, which serves as a marker interface for all maintenance-related events:
public interface MaintenanceEvent {
}

Build docs developers (and LLMs) love