#3628: Convert PostLoginEvent to AsyncEvent and expose target server

This commit is contained in:
ignPurple
2024-04-13 17:08:15 +10:00
committed by md_5
parent d6c5197cb9
commit 17e23d5c3f
2 changed files with 36 additions and 15 deletions

View File

@@ -652,28 +652,37 @@ public class InitialHandler extends PacketHandler implements PendingConnection
}
ch.getHandle().pipeline().get( HandlerBoss.class ).setHandler( new UpstreamBridge( bungee, userCon ) );
bungee.getPluginManager().callEvent( new PostLoginEvent( userCon ) );
// #3612: Don't progress further if disconnected during event
if ( ch.isClosed() )
{
return;
}
ServerInfo server;
ServerInfo initialServer;
if ( bungee.getReconnectHandler() != null )
{
server = bungee.getReconnectHandler().getServer( userCon );
initialServer = bungee.getReconnectHandler().getServer( userCon );
} else
{
server = AbstractReconnectHandler.getForcedHost( InitialHandler.this );
initialServer = AbstractReconnectHandler.getForcedHost( InitialHandler.this );
}
if ( server == null )
if ( initialServer == null )
{
server = bungee.getServerInfo( listener.getDefaultServer() );
initialServer = bungee.getServerInfo( listener.getDefaultServer() );
}
userCon.connect( server, null, true, ServerConnectEvent.Reason.JOIN_PROXY );
Callback<PostLoginEvent> complete = new Callback<PostLoginEvent>()
{
@Override
public void done(PostLoginEvent result, Throwable error)
{
// #3612: Don't progress further if disconnected during event
if ( ch.isClosed() )
{
return;
}
userCon.connect( result.getTarget(), null, true, ServerConnectEvent.Reason.JOIN_PROXY );
}
};
// fire post-login event
bungee.getPluginManager().callEvent( new PostLoginEvent( userCon, initialServer, complete ) );
}
@Override