From 63ef97642f82dd1c190d47cc6b58a42fada64c2d Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Fri, 16 Apr 2021 06:29:28 +0100 Subject: [PATCH] ServerConnectRequest#sendFeedback diff --git a/api/src/main/java/net/md_5/bungee/api/ServerConnectRequest.java b/api/src/main/java/net/md_5/bungee/api/ServerConnectRequest.java index c81b0a4e..d21370be 100644 --- a/api/src/main/java/net/md_5/bungee/api/ServerConnectRequest.java +++ b/api/src/main/java/net/md_5/bungee/api/ServerConnectRequest.java @@ -68,6 +68,14 @@ public class ServerConnectRequest */ @Setter private boolean retry; + // Waterfall start + /** + * Should feedback from the request be sent to players, allows plugins + * to silently deal with the outcome on their own + */ + @Setter + private boolean sendFeedback; + // Waterfall end /** * Class that sets default properties/adds methods to the lombok builder @@ -77,5 +85,6 @@ public class ServerConnectRequest { private int connectTimeout = ProxyServer.getInstance().getConfig().getServerConnectTimeout(); + private boolean isSendFeedback = true; // Waterfall # God. f##king. lombok. } } diff --git a/proxy/src/main/java/net/md_5/bungee/UserConnection.java b/proxy/src/main/java/net/md_5/bungee/UserConnection.java index ee527938..2813c16f 100644 --- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java +++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java @@ -298,12 +298,16 @@ public final class UserConnection implements ProxiedPlayer connect(info, callback, retry, ServerConnectEvent.Reason.PLUGIN, timeout); } - public void connect(ServerInfo info, final Callback callback, final boolean retry, ServerConnectEvent.Reason reason, final int timeout) + public void connect(ServerInfo info, final Callback callback, final boolean retry, ServerConnectEvent.Reason reason, final int timeout) { + this.connect(info, callback, retry, reason, timeout, true); + } + + public void connect(ServerInfo info, final Callback callback, final boolean retry, ServerConnectEvent.Reason reason, final int timeout, boolean sendFeedback) { // Waterfall end Preconditions.checkNotNull( info, "info" ); - ServerConnectRequest.Builder builder = ServerConnectRequest.builder().retry( retry ).reason( reason ).target( info ); + ServerConnectRequest.Builder builder = ServerConnectRequest.builder().retry( retry ).reason( reason ).target( info ).sendFeedback(sendFeedback); // Waterfall - feedback param builder.connectTimeout(timeout); // Waterfall if ( callback != null ) { @@ -351,7 +355,7 @@ public final class UserConnection implements ProxiedPlayer callback.done( ServerConnectRequest.Result.ALREADY_CONNECTED, null ); } - sendMessage( bungee.getTranslation( "already_connected" ) ); + if (request.isSendFeedback()) sendMessage( bungee.getTranslation( "already_connected" ) ); // Waterfall return; } if ( pendingConnects.contains( target ) ) @@ -361,7 +365,7 @@ public final class UserConnection implements ProxiedPlayer callback.done( ServerConnectRequest.Result.ALREADY_CONNECTING, null ); } - sendMessage( bungee.getTranslation( "already_connecting" ) ); + if (request.isSendFeedback()) sendMessage( bungee.getTranslation( "already_connecting" ) ); // Waterfall return; } @@ -397,14 +401,14 @@ public final class UserConnection implements ProxiedPlayer ServerInfo def = updateAndGetNextServer( target ); if ( request.isRetry() && def != null && ( getServer() == null || def != getServer().getInfo() ) ) { - sendMessage( bungee.getTranslation( "fallback_lobby" ) ); - connect( def, null, true, ServerConnectEvent.Reason.LOBBY_FALLBACK, request.getConnectTimeout() ); // Waterfall + if (request.isSendFeedback()) sendMessage( bungee.getTranslation( "fallback_lobby" ) ); // Waterfall + connect( def, null, true, ServerConnectEvent.Reason.LOBBY_FALLBACK, request.getConnectTimeout(), request.isSendFeedback() ); // Waterfall } else if ( dimensionChange ) { disconnect( bungee.getTranslation( "fallback_kick", connectionFailMessage( future.cause() ) ) ); } else { - sendMessage( bungee.getTranslation( "fallback_kick", connectionFailMessage( future.cause() ) ) ); + if (request.isSendFeedback()) sendMessage( bungee.getTranslation( "fallback_kick", connectionFailMessage( future.cause() ) ) ); } } } -- 2.44.0