Zum Hauptinhalt springen
Die Players API ermöglicht das Abfragen von Spielern, Transferieren zwischen Servern und Senden von Rich-Text-Nachrichten mit Adventure. Zugriff über api.player().

Spieler abrufen

// Spieler nach UUID
api.player().get(uuid)
    .thenAccept(player -> {
        if (player != null) {
            System.out.println(player.getName() + " auf " + player.getConnectedServerName());
        }
    });

// Spieler nach Username
api.player().get("Steve")
    .thenAccept(player -> { ... });

// Alle Online-Spieler
api.player().getOnlinePlayers()
    .thenAccept(players -> players.forEach(p ->
        System.out.println(p.getName())));

// Online-Spielerzahl
api.player().getOnlinePlayerCount()
    .thenAccept(count -> System.out.println("Online: " + count));

Spieler-Aktionen

Spieler transferieren

api.player().get(uuid).thenAccept(player -> {
    if (player != null) {
        player.connect("lobby-1").thenAccept(result -> {
            switch (result) {
                case SUCCESS -> System.out.println("Transfer erfolgreich");
                case SERVER_NOT_FOUND -> System.out.println("Server existiert nicht");
                case ALREADY_CONNECTED -> System.out.println("Bereits auf diesem Server");
                case CONNECTION_FAILED -> System.out.println("Transfer fehlgeschlagen");
            }
        });
    }
});

Spieler kicken

player.kick(Component.text("Server wird neugestartet")
    .color(NamedTextColor.RED));

Adventure-Integration

CloudPlayer implementiert Adventure’s Audience Interface:

Nachrichten senden

// Farbiger Text
player.sendMessage(Component.text("Erfolg!")
    .color(NamedTextColor.GREEN));

// Klickbarer Text
player.sendMessage(Component.text("Hier klicken")
    .clickEvent(ClickEvent.runCommand("/help"))
    .hoverEvent(HoverEvent.showText(Component.text("/help ausführen"))));

Titles senden

player.showTitle(Title.title(
    Component.text("Willkommen!").color(NamedTextColor.GOLD),
    Component.text("auf dem Server").color(NamedTextColor.GRAY),
    Title.Times.times(
        Duration.ofMillis(500),
        Duration.ofSeconds(3),
        Duration.ofMillis(500)
    )
));

Action Bar senden

player.sendActionBar(Component.text("⚔ Kampfmodus aktiviert")
    .color(NamedTextColor.RED));

CloudPlayer Model

PropertyTypBeschreibung
uniqueIdUUIDSpieler-UUID
nameStringSpieler-Username
connectedServerNameStringAktueller Server-Name
connectedProxyNameStringVerbundener Proxy-Name

ConnectResult

WertBeschreibung
SUCCESSTransfer erfolgreich
SERVER_NOT_FOUNDZielserver existiert nicht
ALREADY_CONNECTEDSpieler bereits auf diesem Server
PLAYER_NOT_FOUNDSpieler ging offline
CONNECTION_FAILEDTransfer fehlgeschlagen