Zum Hauptinhalt springen

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.

Die Groups API ermöglicht das Erstellen, Abfragen, Aktualisieren und Löschen von Server-Gruppen. Zugriff über api.group().

Gruppen abrufen

// Alle Gruppen abrufen
api.group().getAllGroups()
    .thenAccept(groups -> groups.forEach(g -> System.out.println(g.getName())));

// Gruppe nach Namen
api.group().getGroupByName("lobby")
    .thenAccept(group -> System.out.println(group.getId()));

// Gruppe nach ID
api.group().getGroupById("group-uuid")
    .thenAccept(group -> System.out.println(group.getName()));

Gruppe erstellen

CreateGroupRequest request = CreateGroupRequest.builder()
    .name("bedwars")
    .type(GroupServerType.SERVER)
    .minMemory(512)
    .maxMemory(1024)
    .maxPlayers(16)
    .minOnlineCount(1)
    .maxOnlineCount(10)
    .build();

api.group().createGroup(request)
    .thenAccept(group -> System.out.println("Erstellt: " + group.getId()));

Gruppe aktualisieren

UpdateGroupRequest update = UpdateGroupRequest.builder()
    .maxPlayers(32)
    .maxOnlineCount(20)
    .build();

api.group().updateGroup("group-uuid", update)
    .thenAccept(group -> System.out.println("Aktualisiert: " + group.getName()));

Gruppe löschen

api.group().deleteGroup("group-uuid")
    .thenAccept(success -> System.out.println("Gelöscht: " + success));
Das Löschen einer Gruppe stoppt laufende Server nicht. Stoppe Server zuerst wenn nötig.

Gruppen-Properties

Gruppen unterstützen eigene Key-Value-Properties für Metadaten:
// Properties hinzufügen oder aktualisieren (merged mit bestehenden)
Map<String, String> props = Map.of(
    "gameMode", "ADVENTURE",
    "region", "eu-west"
);
api.group().updateGroupProperties("group-uuid", props);

// Bestimmte Properties entfernen
api.group().deleteGroupProperties("group-uuid", List.of("region"));
Properties sind in Servern als Umgebungsvariablen mit SIMPLECLOUD_ Präfix verfügbar.

Group Model

PropertyTypBeschreibung
idStringEindeutige Kennung
nameStringGruppenname
typeGroupServerTypeSERVER oder PROXY
minMemoryintMinimaler Speicher (MB)
maxMemoryintMaximaler Speicher (MB)
maxPlayersintSpielerlimit pro Server
minOnlineCountintMinimale laufende Server
maxOnlineCountintMaximale erlaubte Server
propertiesMap<String, String>Eigene Metadaten

Server-Start-Warteschlange

Gruppen mit dem Skalierungsmodus SERVERS unterstützen eine manuelle Start-Warteschlange. Anstatt einen Server sofort zu starten, kannst du eine Start-Anfrage in die Warteschlange einreihen, die der Reconciler beim nächsten Tick verarbeitet. Dies ist nützlich, wenn du genau kontrollieren möchtest, wann neue Server erstellt werden, während das max_servers-Limit der Gruppe eingehalten wird.
Die Start-Warteschlange ist nur für Gruppen mit dem Skalierungsmodus SERVERS verfügbar. Gruppen mit dem Modus SLOTS unterstützen keine Warteschlangen-Starts.

Server-Start einreihen

Du kannst einen Start über die Gruppen-ID oder den Gruppennamen (oder beides) einreihen:
// Start nach Gruppenname einreihen
api.group().queueServerStart("lobby")
    .thenAccept(response -> System.out.println(
        "Eingereiht: " + response.getQueuedStarts()));

// Start nach Gruppen-ID einreihen
api.group().queueServerStart("group-uuid")
    .thenAccept(response -> System.out.println(
        "Eingereiht: " + response.getQueuedStarts()));
Der Reconciler verarbeitet eingereihte Starts beim nächsten Reconciliation-Tick und versucht, einen Server zuzuweisen. Wenn die Gruppe ihr max_servers-Limit erreicht hat, wird der eingereihte Start als failed mit einem Grund markiert.

Eingereihte Starts auflisten

api.group().listQueuedStarts()
    .thenAccept(response -> {
        System.out.println("Wartend: " + response.getQueuedStarts());
        System.out.println("Fehlgeschlagen: " + response.getFailedStarts());
        response.getItems().forEach(entry ->
            System.out.println(entry.getServerGroupName() + ": " +
                entry.getQueuedStarts() + " wartend"));
    });

Eingereihte Starts löschen

Alle ausstehenden und fehlgeschlagenen Starts einer bestimmten Gruppe entfernen:
api.group().clearQueuedStarts("group-uuid")
    .thenAccept(response -> System.out.println(
        "Warteschlange geleert für: " + response.getServerGroupName()));

Start-Warteschlangen-Eintrag

PropertyTypBeschreibung
idStringEindeutige Kennung des eingereihten Starts
created_atStringZeitstempel der Einreihung (ISO 8601)
statusStringpending oder failed
failure_reasonString?Grund des Fehlschlags, falls zutreffend
Fehlgeschlagene Starts werden nach 1 Stunde automatisch bereinigt. Verwende den List-Endpunkt, um auf Fehler zu prüfen und bei Bedarf neu einzureihen.

GroupServerType

WertBeschreibung
SERVERGame-Server (Paper, Spigot, etc.)
PROXYProxy-Server (Velocity, BungeeCord)