Waterfall/BungeeCord-Patches/0060-ServerConnectRequest-sendFeedback.patch

95 lines
4.9 KiB
Diff
Raw Normal View History

From dbbaf10f0d11e08489bd0e29b3788ea76bf282ac Mon Sep 17 00:00:00 2001
2021-04-16 07:34:54 +02:00
From: Shane Freeder <theboyetronic@gmail.com>
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 5961392a..eb236957 100644
2021-04-16 07:34:54 +02:00
--- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java
+++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java
2022-06-07 19:12:20 +02:00
@@ -268,12 +268,16 @@ public final class UserConnection implements ProxiedPlayer
connect(info, callback, retry, ServerConnectEvent.Reason.PLUGIN, timeout);
}
- public void connect(ServerInfo info, final Callback<Boolean> callback, final boolean retry, ServerConnectEvent.Reason reason, final int timeout)
+ public void connect(ServerInfo info, final Callback<Boolean> 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<Boolean> 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 )
{
2022-06-07 19:12:20 +02:00
@@ -321,7 +325,7 @@ public final class UserConnection implements ProxiedPlayer
2021-04-16 07:34:54 +02:00
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 ) )
2022-06-07 19:12:20 +02:00
@@ -331,7 +335,7 @@ public final class UserConnection implements ProxiedPlayer
2021-04-16 07:34:54 +02:00
callback.done( ServerConnectRequest.Result.ALREADY_CONNECTING, null );
}
- sendMessage( bungee.getTranslation( "already_connecting" ) );
+ if (request.isSendFeedback()) sendMessage( bungee.getTranslation( "already_connecting" ) ); // Waterfall
return;
}
2022-06-07 19:12:20 +02:00
@@ -367,14 +371,14 @@ public final class UserConnection implements ProxiedPlayer
2021-04-16 07:34:54 +02:00
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
2021-04-16 07:34:54 +02:00
+ if (request.isSendFeedback()) sendMessage( bungee.getTranslation( "fallback_lobby" ) ); // Waterfall
+ connect( def, null, true, ServerConnectEvent.Reason.LOBBY_FALLBACK, request.getConnectTimeout(), request.isSendFeedback() ); // Waterfall
2021-04-16 07:34:54 +02:00
} 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.37.2
2021-04-16 07:34:54 +02:00