private void initializePlayer(GameProfile profile, boolean onlineMode) {
profile = mcConnection.getType().addGameProfileTokensIfRequired(profile,
server.getConfiguration().getPlayerInfoForwardingMode());
GameProfileRequestEvent profileRequestEvent = new GameProfileRequestEvent(inbound, profile,
onlineMode);
server.getEventManager().fire(profileRequestEvent).thenCompose(profileEvent -> {
ConnectedPlayer player = new ConnectedPlayer(server, profileEvent.getGameProfile(),
mcConnection,
inbound.getVirtualHost().orElse(null));
this.connectedPlayer = player;
if (!server.canRegisterConnection(player)) {
player.disconnect(VelocityMessages.ALREADY_CONNECTED);
return CompletableFuture.completedFuture(null);
}
logger.info("{} has connected", player);
return server.getEventManager()
.fire(new PermissionsSetupEvent(player, ConnectedPlayer.DEFAULT_PERMISSIONS))
.thenAcceptAsync(event -> {
if (!mcConnection.isClosed()) {
player.setPermissionFunction(event.createFunction(player));
finishLogin(player);
}
}, mcConnection.eventLoop());
});
}