Convert PlayerChooseInitialServerEvent into a resulted event

This commit is contained in:
Shane Freeder
2026-05-07 11:56:26 +01:00
parent ad8de4361c
commit aa9e02d79c
2 changed files with 74 additions and 15 deletions

View File

@@ -262,14 +262,16 @@ public class AuthSessionHandler implements MinecraftSessionHandler {
new PlayerChooseInitialServerEvent(player, initialFromConfig.orElse(null));
return server.getEventManager().fire(event).thenRunAsync(() -> {
Optional<RegisteredServer> toTry = event.getInitialServer();
if (toTry.isEmpty()) {
player.disconnect0(
Component.translatable("velocity.error.no-available-servers", NamedTextColor.RED),
true);
final PlayerChooseInitialServerEvent.Result result = event.getResult();
if (event.getResult() instanceof PlayerChooseInitialServerEvent.Denied(Component reason)) {
player.disconnect0(Objects.requireNonNullElse(reason,
Component.translatable("velocity.error.no-available-servers", NamedTextColor.RED)),
true);
//noinspection UnnecessaryReturnStatement
return;
} else if (result instanceof PlayerChooseInitialServerEvent.Allowed(RegisteredServer initialServer)) {
player.createConnectionRequest(initialServer).fireAndForget();
}
player.createConnectionRequest(toTry.get()).fireAndForget();
}, mcConnection.eventLoop());
}