Skip to main content

Documentation Index

Fetch the complete documentation index at: https://new-docs.simplecloud.app/llms.txt

Use this file to discover all available pages before exploring further.

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 events fire for both group-based servers and persistent servers. When a persistent server triggers the event, persistentServerId is populated and groupName is empty. When a group server triggers the event, groupName is populated and persistentServerId is empty.

Server Started

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

    // Check whether this is a group or persistent server
    if (event.getPersistentServerId() != null && !event.getPersistentServerId().isEmpty()) {
        System.out.println("Persistent server: " + event.getPersistentServerId());
    } else {
        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, persistentServerId
ServerStoppedEventserverId, groupName, persistentServerId
ServerStateChangedEventserverId, oldState, newState
ServerUpdatedEventserverId
ServerDeletedEventserverId
ServerStartedEvent and ServerStoppedEvent fire for both group servers and persistent servers. For persistent servers, persistentServerId is set and groupName is empty. For group servers, groupName is set and persistentServerId is empty.

Group Events

EventProperties
GroupCreatedEventserverGroupId
GroupUpdatedEventserverGroupId
GroupDeletedEventserverGroupId

Persistent Server Events

EventProperties
PersistentServerCreatedEventserverId
PersistentServerStartedEventserverId
PersistentServerStoppedEventserverId
PersistentServerUpdatedEventserverId
PersistentServerDeletedEventserverId

Blueprint Events

EventProperties
BlueprintCreatedEventblueprintId
BlueprintUpdatedEventblueprintId
BlueprintDeletedEventblueprintId