From 4a1fc95a3679ba0aef96e561525665cf1df201d1 Mon Sep 17 00:00:00 2001 From: kento2 Date: Tue, 2 Jun 2026 03:14:41 +0200 Subject: [PATCH] handle no-instances-available --- .../de/kentoj/scrow/bukkit/server/PlayCommand.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/core-bukkit-impl/src/main/java/de/kentoj/scrow/bukkit/server/PlayCommand.java b/core-bukkit-impl/src/main/java/de/kentoj/scrow/bukkit/server/PlayCommand.java index db73b27..b28fda6 100644 --- a/core-bukkit-impl/src/main/java/de/kentoj/scrow/bukkit/server/PlayCommand.java +++ b/core-bukkit-impl/src/main/java/de/kentoj/scrow/bukkit/server/PlayCommand.java @@ -9,6 +9,7 @@ import de.kentoj.scrow.bukkit.ScrowAPI; import de.kentoj.scrowlib.servermanager.ServerInstance; import lombok.Getter; import org.bukkit.command.CommandSender; +import reactor.core.publisher.Mono; public class PlayCommand implements CommandExecutor { @@ -26,16 +27,17 @@ public class PlayCommand implements CommandExecutor inst.getTemplateName().equals(gamemode) && inst.getState().equals("UP") - ) - .single() + ScrowAPI.getServerManager().getRunningServers() + .filter(inst -> inst.getTemplateName().equals(gamemode)) + .filter(inst -> inst.getState().equals("UP")) + .next() + .switchIfEmpty(Mono.error(new IllegalStateException("No instance available"))) .map(ServerInstance::getHandle) .flatMap(handle -> ScrowAPI.getServerManager().sendPlayer(ctx.getPlayerSender().getUniqueId(), handle) ) .subscribe(null, ex -> { - ctx.getPlayerSender().sendMessage("failed sending you to " + gamemode + ": " + ex.getMessage()); + ctx.getPlayerSender().sendMessage("failed sending you to an instance of " + gamemode + ": " + ex.getMessage()); }); } }