Zum Hauptinhalt springen

Dependencies hinzufügen

Füge die Cloud API zu deiner Build-Konfiguration hinzu. Die Version wird automatisch aus unserem Maven-Repository abgerufen.

Plugin-Setup

Füge das SimpleCloud API Plugin als Dependency in deinem Plugin-Deskriptor hinzu:
name: mein-plugin
version: 1.0.0
main: com.example.MeinPlugin
depend: [simplecloud-api]
Shade die Cloud API nicht in dein Plugin. Hänge stattdessen vom simplecloud-api Plugin ab.

API initialisieren

Standard-Konfiguration

Wenn du innerhalb eines SimpleCloud-Servers läufst, konfiguriert sich die API automatisch aus Umgebungsvariablen:
import app.simplecloud.api.CloudApi;

public class MeinPlugin extends JavaPlugin {
    private CloudApi api;

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

Eigene Konfiguration

Für Standalone-Anwendungen oder eigene Setups, gib Konfigurationsoptionen an:
CloudApi api = CloudApi.create(CloudApiOptions.builder()
    .networkId("deine-netzwerk-id")
    .networkSecret("dein-secret")
    .controllerUrl("https://controller.platform.simplecloud.app")
    .natsUrl("nats://platform.simplecloud.app:4222")
    .build());

Umgebungsvariablen

Die API liest standardmäßig diese Umgebungsvariablen:
VariableStandardBeschreibung
SIMPLECLOUD_NETWORK_ID"default"Deine Netzwerk-Kennung
SIMPLECLOUD_NETWORK_SECRET""Authentifizierungs-Secret
SIMPLECLOUD_CONTROLLER_URL"https://controller.platform.simplecloud.app"Controller API-Endpunkt
SIMPLECLOUD_NATS_URL"nats://platform.simplecloud.app:4222"NATS-Server für Events
Innerhalb von SimpleCloud-Servern werden diese Variablen automatisch gesetzt. Du musst sie nur für Standalone-Anwendungen oder externe Services konfigurieren.

Best Practices

Erstelle eine CloudApi-Instanz und verwende sie wieder. Nutze Dependency Injection wenn dein Framework es unterstützt.
// Gut - einzelne Instanz
private final CloudApi api = CloudApi.create();

// Vermeiden - mehrere Instanzen
public void doSomething() {
    CloudApi api = CloudApi.create(); // Das nicht tun
}
Alle API-Methoden geben CompletableFuture zurück. Blockiere nicht auf dem Haupt-Thread.
// Gut - async Behandlung
api.server().getAllServers().thenAccept(servers -> {
    // Server verarbeiten
});

// Vermeiden - blockieren
List<Server> servers = api.server().getAllServers().join(); // Nicht blockieren!
Subscriptions implementieren AutoCloseable. Schließe sie wenn du fertig bist.
Subscription sub = api.event().server().onStarted(event -> { ... });

// Beim Herunterfahren
sub.close();