Skip to main content
The MaintenanceProxy interface extends the base Maintenance interface with proxy-specific functionality for managing maintenance mode on individual backend servers in a proxy network.

Interface

package eu.kennytv.maintenance.api.proxy;

public interface MaintenanceProxy extends Maintenance

Methods

Server Maintenance Management

setMaintenanceToServer

Enables or disables maintenance mode on a specific proxied server.
boolean setMaintenanceToServer(Server server, boolean maintenance)
server
Server
required
The server to apply the maintenance status to. Obtain using getServer(String).
maintenance
boolean
required
true to enable maintenance mode, false to disable it.
return
boolean
true if the maintenance mode was changed, false otherwise.
When maintenance is enabled on a server, all non-permitted players will be kicked from that server. If Redis is enabled, the maintenance status will also be written to the database. Example:
MaintenanceProxy api = MaintenanceProvider.get().getProxy();
Server lobbyServer = api.getServer("lobby");

if (lobbyServer != null) {
    // Enable maintenance on the lobby server
    boolean changed = api.setMaintenanceToServer(lobbyServer, true);
    if (changed) {
        System.out.println("Maintenance enabled on lobby server");
    }
}

isMaintenance

Checks if maintenance mode is currently enabled on a specific proxied server.
boolean isMaintenance(Server server)
server
Server
required
The server to check. Obtain using getServer(String).
return
boolean
true if maintenance is currently enabled on the server, false otherwise.
Example:
MaintenanceProxy api = MaintenanceProvider.get().getProxy();
Server survivalServer = api.getServer("survival");

if (survivalServer != null && api.isMaintenance(survivalServer)) {
    System.out.println("Survival server is under maintenance");
}

isServerTaskRunning

Checks if a start or end timer task is currently running for a specific proxied server.
boolean isServerTaskRunning(Server server)
server
Server
required
The server to check. Obtain using getServer(String).
return
boolean
true if a timer task is currently running for the server, false otherwise.
Example:
MaintenanceProxy api = MaintenanceProvider.get().getProxy();
Server creativeServer = api.getServer("creative");

if (creativeServer != null && api.isServerTaskRunning(creativeServer)) {
    System.out.println("A maintenance timer is running for the creative server");
}

Server Retrieval

getServer

Retrieves a wrapped Server object for a proxied server by name.
@Nullable
Server getServer(String server)
server
String
required
The name of the proxied server.
return
Server
The wrapped server object if the server exists, or null if not found.
Example:
MaintenanceProxy api = MaintenanceProvider.get().getProxy();
Server server = api.getServer("lobby");

if (server != null) {
    System.out.println("Found server: " + server.getName());
} else {
    System.out.println("Server not found");
}

getServerOrDummy

Retrieves a wrapped Server object for a proxied server, or returns a dummy server if not registered.
default Server getServerOrDummy(String serverName)
serverName
String
required
The name of the proxied server.
return
Server
The wrapped server object if registered, or a DummyServer instance if not.
This method never returns null. Use Server.isRegisteredServer() to check if the returned server is a real registered server or a dummy. Example:
MaintenanceProxy api = MaintenanceProvider.get().getProxy();
Server server = api.getServerOrDummy("unknown-server");

if (server.isRegisteredServer()) {
    System.out.println("Server is registered");
} else {
    System.out.println("Server not found, using dummy");
}

getServers

Retrieves all currently registered proxied servers.
Set<String> getServers()
return
Set<String>
A set containing the names of all registered proxied servers.
Example:
MaintenanceProxy api = MaintenanceProvider.get().getProxy();
Set<String> servers = api.getServers();

System.out.println("Registered servers:");
for (String serverName : servers) {
    System.out.println("- " + serverName);
}

getMaintenanceServers

Retrieves all proxied servers that are currently under maintenance.
Set<String> getMaintenanceServers()
return
Set<String>
An immutable set containing the names of all servers currently under maintenance.
Example:
MaintenanceProxy api = MaintenanceProvider.get().getProxy();
Set<String> maintenanceServers = api.getMaintenanceServers();

if (maintenanceServers.isEmpty()) {
    System.out.println("No servers under maintenance");
} else {
    System.out.println("Servers under maintenance:");
    for (String serverName : maintenanceServers) {
        System.out.println("- " + serverName);
    }
}

Complete Usage Example

import eu.kennytv.maintenance.api.proxy.MaintenanceProxy;
import eu.kennytv.maintenance.api.proxy.Server;
import eu.kennytv.maintenance.api.MaintenanceProvider;
import java.util.Set;

public class ProxyMaintenanceExample {
    
    public void manageServerMaintenance() {
        MaintenanceProxy api = MaintenanceProvider.get().getProxy();
        
        // List all servers
        Set<String> allServers = api.getServers();
        System.out.println("Total servers: " + allServers.size());
        
        // Enable maintenance on a specific server
        Server lobbyServer = api.getServer("lobby");
        if (lobbyServer != null) {
            boolean changed = api.setMaintenanceToServer(lobbyServer, true);
            if (changed) {
                System.out.println("Enabled maintenance on lobby");
            }
        }
        
        // Check which servers are under maintenance
        Set<String> maintenanceServers = api.getMaintenanceServers();
        System.out.println("Servers under maintenance: " + maintenanceServers);
        
        // Check each server's status
        for (String serverName : allServers) {
            Server server = api.getServer(serverName);
            if (server != null) {
                boolean underMaintenance = api.isMaintenance(server);
                boolean timerRunning = api.isServerTaskRunning(server);
                
                System.out.printf(
                    "Server %s: maintenance=%b, timer=%b%n",
                    serverName, underMaintenance, timerRunning
                );
            }
        }
    }
}

See Also

Build docs developers (and LLMs) love