Skip to main content
The Server interface provides an abstraction for backend servers in a proxy network, allowing you to interact with servers regardless of the underlying proxy platform (BungeeCord, Velocity, etc.).

Interface

package eu.kennytv.maintenance.api.proxy;

public interface Server

Obtaining a Server Instance

You cannot directly instantiate a Server object. Instead, obtain instances through the MaintenanceProxy interface:
MaintenanceProxy api = MaintenanceProvider.get().getProxy();
Server server = api.getServer("lobby");

Methods

getName

Returns the name of the server.
String getName()
return
String
The name of the server as registered in the proxy configuration.
Example:
MaintenanceProxy api = MaintenanceProvider.get().getProxy();
Server server = api.getServer("lobby");

if (server != null) {
    String name = server.getName();
    System.out.println("Server name: " + name);
}

hasPlayers

Checks if there are currently any players connected to the server.
boolean hasPlayers()
return
boolean
true if one or more players are on the server, false otherwise.
Example:
MaintenanceProxy api = MaintenanceProvider.get().getProxy();
Server server = api.getServer("survival");

if (server != null && server.hasPlayers()) {
    System.out.println("The survival server has players online");
} else {
    System.out.println("The survival server is empty");
}

broadcast

Sends a message to all players currently connected to the server.
void broadcast(Component component)
component
Component
required
The Adventure Component message to broadcast to all players on the server.
Example:
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;

MaintenanceProxy api = MaintenanceProvider.get().getProxy();
Server server = api.getServer("lobby");

if (server != null) {
    Component message = Component.text(
        "Server restarting in 5 minutes!",
        NamedTextColor.RED
    );
    server.broadcast(message);
}

isRegisteredServer

Checks whether the server is currently registered under the proxy.
boolean isRegisteredServer()
return
boolean
true if the server is registered in the proxy, false if it’s a dummy server.
This method will only return false if maintenance was previously enabled on a server that has since been removed from the proxy configuration. This typically happens when using MaintenanceProxy.getServerOrDummy(String) with a non-existent server name. Example:
MaintenanceProxy api = MaintenanceProvider.get().getProxy();
Server server = api.getServerOrDummy("potentially-removed-server");

if (server.isRegisteredServer()) {
    System.out.println("Server is registered and active");
} else {
    System.out.println("Server is not registered (dummy server)");
}

DummyServer Implementation

When using MaintenanceProxy.getServerOrDummy(String) with a non-existent server, a DummyServer instance is returned. This implementation:
  • Returns false for hasPlayers()
  • Does nothing when broadcast() is called
  • Returns false for isRegisteredServer()
  • Returns the provided name from getName()
This allows you to write code without null checks while still being able to detect unregistered servers.

Complete Usage Example

import eu.kennytv.maintenance.api.proxy.MaintenanceProxy;
import eu.kennytv.maintenance.api.proxy.Server;
import eu.kennytv.maintenance.api.MaintenanceProvider;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;

public class ServerManagementExample {
    
    public void broadcastToAllServers(String message) {
        MaintenanceProxy api = MaintenanceProvider.get().getProxy();
        Component component = Component.text(message, NamedTextColor.YELLOW);
        
        for (String serverName : api.getServers()) {
            Server server = api.getServer(serverName);
            
            if (server != null && server.isRegisteredServer()) {
                server.broadcast(component);
                System.out.println("Broadcasted to " + server.getName());
            }
        }
    }
    
    public void checkServerStatus(String serverName) {
        MaintenanceProxy api = MaintenanceProvider.get().getProxy();
        Server server = api.getServerOrDummy(serverName);
        
        if (!server.isRegisteredServer()) {
            System.out.println("Server '" + serverName + "' is not registered");
            return;
        }
        
        System.out.println("Server: " + server.getName());
        System.out.println("Has players: " + server.hasPlayers());
        System.out.println("Under maintenance: " + api.isMaintenance(server));
    }
    
    public void notifyNonEmptyServers(Component message) {
        MaintenanceProxy api = MaintenanceProvider.get().getProxy();
        
        for (String serverName : api.getServers()) {
            Server server = api.getServer(serverName);
            
            if (server != null && server.hasPlayers()) {
                server.broadcast(message);
            }
        }
    }
}

See Also

Build docs developers (and LLMs) love