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()); }); } }