Fire ServerConnectedEvent and delay setting the server.

For ViaVersion
This commit is contained in:
Andrew Steinborn 2018-10-23 13:49:50 -04:00
parent fcef623847
commit 174cd4659b
2 changed files with 7 additions and 4 deletions

View File

@ -27,7 +27,6 @@ public class BackendPlaySessionHandler implements MinecraftSessionHandler {
@Override
public void activated() {
server.getEventManager().fireAndForget(new ServerConnectedEvent(serverConn.getPlayer(), serverConn.getServer()));
serverConn.getServer().addPlayer(serverConn.getPlayer());
}

View File

@ -1,5 +1,6 @@
package com.velocitypowered.proxy.connection.backend;
import com.velocitypowered.api.event.player.ServerConnectedEvent;
import com.velocitypowered.api.proxy.ConnectionRequestBuilder;
import com.velocitypowered.api.util.GameProfile;
import com.velocitypowered.proxy.VelocityServer;
@ -103,9 +104,12 @@ public class LoginSessionHandler implements MinecraftSessionHandler {
existingConnection.disconnect();
}
resultFuture.complete(ConnectionRequestResults.SUCCESSFUL);
serverConn.getConnection().setSessionHandler(new BackendPlaySessionHandler(server, serverConn));
serverConn.getPlayer().setConnectedServer(serverConn);
server.getEventManager().fire(new ServerConnectedEvent(serverConn.getPlayer(), serverConn.getServer()))
.whenCompleteAsync((x, error) -> {
resultFuture.complete(ConnectionRequestResults.SUCCESSFUL);
serverConn.getConnection().setSessionHandler(new BackendPlaySessionHandler(server, serverConn));
serverConn.getPlayer().setConnectedServer(serverConn);
}, serverConn.getConnection().eventLoop());
return true;
}