#2376 Add ServerConnectEvent Reason API
This commit is contained in:
@@ -11,6 +11,7 @@ import lombok.RequiredArgsConstructor;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import net.md_5.bungee.api.ProxyServer;
|
||||
import net.md_5.bungee.api.config.ServerInfo;
|
||||
import net.md_5.bungee.api.event.ServerConnectEvent;
|
||||
import net.md_5.bungee.api.event.ServerConnectedEvent;
|
||||
import net.md_5.bungee.api.event.ServerKickEvent;
|
||||
import net.md_5.bungee.api.event.ServerSwitchEvent;
|
||||
@@ -100,7 +101,7 @@ public class ServerConnector extends PacketHandler
|
||||
copiedHandshake.setHost( newHost );
|
||||
} else if ( !user.getExtraDataInHandshake().isEmpty() )
|
||||
{
|
||||
// Only restore the extra data if IP forwarding is off.
|
||||
// Only restore the extra data if IP forwarding is off.
|
||||
// TODO: Add support for this data with IP forwarding.
|
||||
copiedHandshake.setHost( copiedHandshake.getHost() + user.getExtraDataInHandshake() );
|
||||
}
|
||||
@@ -291,7 +292,7 @@ public class ServerConnector extends PacketHandler
|
||||
if ( event.isCancelled() && event.getCancelServer() != null )
|
||||
{
|
||||
obsolete = true;
|
||||
user.connect( event.getCancelServer() );
|
||||
user.connect( event.getCancelServer(), ServerConnectEvent.Reason.KICK_REDIRECT );
|
||||
throw CancelSendSignal.INSTANCE;
|
||||
}
|
||||
|
||||
|
@@ -190,19 +190,37 @@ public final class UserConnection implements ProxiedPlayer
|
||||
@Override
|
||||
public void connect(ServerInfo target)
|
||||
{
|
||||
connect( target, null );
|
||||
connect( target, null, ServerConnectEvent.Reason.PLUGIN );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void connect(ServerInfo target, ServerConnectEvent.Reason reason)
|
||||
{
|
||||
connect( target, null, false, reason );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void connect(ServerInfo target, Callback<Boolean> callback)
|
||||
{
|
||||
connect( target, callback, false );
|
||||
connect( target, callback, false, ServerConnectEvent.Reason.PLUGIN );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void connect(ServerInfo target, Callback<Boolean> callback, ServerConnectEvent.Reason reason)
|
||||
{
|
||||
connect( target, callback, false, reason );
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void connectNow(ServerInfo target)
|
||||
{
|
||||
connectNow( target, ServerConnectEvent.Reason.UNKNOWN );
|
||||
}
|
||||
|
||||
public void connectNow(ServerInfo target, ServerConnectEvent.Reason reason)
|
||||
{
|
||||
dimensionChange = true;
|
||||
connect( target );
|
||||
connect( target, reason );
|
||||
}
|
||||
|
||||
public ServerInfo updateAndGetNextServer(ServerInfo currentTarget)
|
||||
@@ -227,10 +245,15 @@ public final class UserConnection implements ProxiedPlayer
|
||||
}
|
||||
|
||||
public void connect(ServerInfo info, final Callback<Boolean> callback, final boolean retry)
|
||||
{
|
||||
connect( info, callback, retry, ServerConnectEvent.Reason.PLUGIN );
|
||||
}
|
||||
|
||||
public void connect(ServerInfo info, final Callback<Boolean> callback, final boolean retry, ServerConnectEvent.Reason reason)
|
||||
{
|
||||
Preconditions.checkNotNull( info, "info" );
|
||||
|
||||
ServerConnectEvent event = new ServerConnectEvent( this, info );
|
||||
ServerConnectEvent event = new ServerConnectEvent( this, info, reason );
|
||||
if ( bungee.getPluginManager().callEvent( event ).isCancelled() )
|
||||
{
|
||||
if ( callback != null )
|
||||
@@ -301,7 +324,7 @@ public final class UserConnection implements ProxiedPlayer
|
||||
if ( retry && def != null && ( getServer() == null || def != getServer().getInfo() ) )
|
||||
{
|
||||
sendMessage( bungee.getTranslation( "fallback_lobby" ) );
|
||||
connect( def, null, true );
|
||||
connect( def, null, true, ServerConnectEvent.Reason.LOBBY_FALLBACK );
|
||||
} else if ( dimensionChange )
|
||||
{
|
||||
disconnect( bungee.getTranslation( "fallback_kick", future.cause().getClass().getName() ) );
|
||||
|
@@ -18,6 +18,7 @@ import net.md_5.bungee.api.ProxyServer;
|
||||
import net.md_5.bungee.api.config.ServerInfo;
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
import net.md_5.bungee.api.event.PluginMessageEvent;
|
||||
import net.md_5.bungee.api.event.ServerConnectEvent;
|
||||
import net.md_5.bungee.api.event.ServerKickEvent;
|
||||
import net.md_5.bungee.api.score.Objective;
|
||||
import net.md_5.bungee.api.score.Position;
|
||||
@@ -63,7 +64,7 @@ public class DownstreamBridge extends PacketHandler
|
||||
if ( def != null )
|
||||
{
|
||||
server.setObsolete( true );
|
||||
con.connectNow( def );
|
||||
con.connectNow( def, ServerConnectEvent.Reason.SERVER_DOWN_REDIRECT );
|
||||
con.sendMessage( bungee.getTranslation( "server_went_down" ) );
|
||||
} else
|
||||
{
|
||||
@@ -325,7 +326,7 @@ public class DownstreamBridge extends PacketHandler
|
||||
ServerInfo server = bungee.getServerInfo( in.readUTF() );
|
||||
if ( server != null )
|
||||
{
|
||||
con.connect( server );
|
||||
con.connect( server, ServerConnectEvent.Reason.PLUGIN_MESSAGE );
|
||||
}
|
||||
}
|
||||
if ( subChannel.equals( "ConnectOther" ) )
|
||||
@@ -457,7 +458,7 @@ public class DownstreamBridge extends PacketHandler
|
||||
ServerKickEvent event = bungee.getPluginManager().callEvent( new ServerKickEvent( con, server.getInfo(), ComponentSerializer.parse( kick.getMessage() ), def, ServerKickEvent.State.CONNECTED ) );
|
||||
if ( event.isCancelled() && event.getCancelServer() != null )
|
||||
{
|
||||
con.connectNow( event.getCancelServer() );
|
||||
con.connectNow( event.getCancelServer(), ServerConnectEvent.Reason.KICK_REDIRECT );
|
||||
} else
|
||||
{
|
||||
con.disconnect0( event.getKickReasonComponent() ); // TODO: Prefix our own stuff.
|
||||
|
@@ -37,6 +37,7 @@ import net.md_5.bungee.api.event.PlayerHandshakeEvent;
|
||||
import net.md_5.bungee.api.event.PostLoginEvent;
|
||||
import net.md_5.bungee.api.event.PreLoginEvent;
|
||||
import net.md_5.bungee.api.event.ProxyPingEvent;
|
||||
import net.md_5.bungee.api.event.ServerConnectEvent;
|
||||
import net.md_5.bungee.chat.ComponentSerializer;
|
||||
import net.md_5.bungee.http.HttpClient;
|
||||
import net.md_5.bungee.jni.cipher.BungeeCipher;
|
||||
@@ -518,7 +519,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection
|
||||
server = bungee.getServerInfo( listener.getDefaultServer() );
|
||||
}
|
||||
|
||||
userCon.connect( server, null, true );
|
||||
userCon.connect( server, null, true, ServerConnectEvent.Reason.JOIN_PROXY );
|
||||
|
||||
thisState = State.FINISHED;
|
||||
}
|
||||
|
Reference in New Issue
Block a user