Skip to main content
The Events API lets you react to changes in your network in real-time. Access it via api.event().

Event Categories

MethodEvents
api.event().group()Group created, updated, deleted
api.event().server()Server started, stopped, state changed
api.event().persistentServer()Persistent server events
api.event().blueprint()Blueprint created, updated, deleted

Server Events

Server Started

Subscription sub = api.event().server().onStarted(event -> {
    System.out.println("Server started: " + event.getServerId());
    System.out.println("Group: " + event.getGroupName());
});

Server Stopped

api.event().server().onStopped(event -> {
    System.out.println("Server stopped: " + event.getServerId());
});

Server State Changed

api.event().server().onStateChanged(event -> {
    System.out.println(event.getServerId() + ": " +
        event.getOldState() + " → " + event.getNewState());
});

Server Updated

api.event().server().onUpdated(event -> {
    System.out.println("Server updated: " + event.getServerId());
});

Server Deleted

api.event().server().onDeleted(event -> {
    System.out.println("Server deleted: " + event.getServerId());
});

Group Events

Group Created

api.event().group().onCreated(event -> {
    System.out.println("Group created: " + event.getServerGroupId());
});

Group Updated

api.event().group().onUpdated(event -> {
    System.out.println("Group updated: " + event.getServerGroupId());
});

Group Deleted

api.event().group().onDeleted(event -> {
    System.out.println("Group deleted: " + event.getServerGroupId());
});

Persistent Server Events

// Created
api.event().persistentServer().onCreated(event -> { ... });

// Started
api.event().persistentServer().onStarted(event -> { ... });

// Stopped
api.event().persistentServer().onStopped(event -> { ... });

// Updated
api.event().persistentServer().onUpdated(event -> { ... });

// Deleted
api.event().persistentServer().onDeleted(event -> { ... });

Blueprint Events

// Created
api.event().blueprint().onCreated(event -> { ... });

// Updated
api.event().blueprint().onUpdated(event -> { ... });

// Deleted
api.event().blueprint().onDeleted(event -> { ... });

Managing Subscriptions

Subscriptions implement AutoCloseable. Always clean them up when done:

Manual Cleanup

Subscription sub = api.event().server().onStarted(event -> { ... });

// Later, when shutting down
sub.close();

Try-with-Resources

try (Subscription sub = api.event().server().onStarted(event -> { ... })) {
    // Subscription active within this block
    Thread.sleep(60000);
} // Automatically closed

Plugin Lifecycle

public class MyPlugin extends JavaPlugin {
    private final List<Subscription> subscriptions = new ArrayList<>();
    private CloudApi api;

    @Override
    public void onEnable() {
        api = CloudApi.create();

        subscriptions.add(api.event().server().onStarted(this::handleServerStart));
        subscriptions.add(api.event().server().onStopped(this::handleServerStop));
    }

    @Override
    public void onDisable() {
        subscriptions.forEach(Subscription::close);
    }

    private void handleServerStart(ServerStartedEvent event) {
        getLogger().info("Server started: " + event.getServerId());
    }

    private void handleServerStop(ServerStoppedEvent event) {
        getLogger().info("Server stopped: " + event.getServerId());
    }
}

Event Reference

Server Events

EventProperties
ServerStartedEventserverId, groupName
ServerStoppedEventserverId, groupName
ServerStateChangedEventserverId, oldState, newState
ServerUpdatedEventserverId
ServerDeletedEventserverId

Group Events

EventProperties
GroupCreatedEventserverGroupId
GroupUpdatedEventserverGroupId
GroupDeletedEventserverGroupId

Persistent Server Events

EventProperties
PersistentServerCreatedEventserverId
PersistentServerStartedEventserverId
PersistentServerStoppedEventserverId
PersistentServerUpdatedEventserverId
PersistentServerDeletedEventserverId

Blueprint Events

EventProperties
BlueprintCreatedEventblueprintId
BlueprintUpdatedEventblueprintId
BlueprintDeletedEventblueprintId