PlayerAuthenticationTask.java 文件源码

java
阅读 23 收藏 0 点赞 0 评论 0

项目:ProtocolSupport 作者:
private void fireLoginEvents() throws InterruptedException, ExecutionException  {
    if (!listener.networkManager.isConnected()) {
        return;
    }

    String playerName = listener.profile.getName();
    InetSocketAddress saddress = listener.networkManager.getAddress();

    InetAddress address = saddress.getAddress();

    PlayerPropertiesResolveEvent propResolve = new PlayerPropertiesResolveEvent(
        ConnectionImpl.getFromChannel(listener.networkManager.getChannel()),
        playerName, listener.profile.getProperties().values()
    );
    Bukkit.getPluginManager().callEvent(propResolve);
    listener.profile.clearProperties();
    for (ProfileProperty property : propResolve.getProperties().values()) {
        listener.profile.addProperty(property);
    }
    UUID uniqueId = listener.profile.getUUID();

    AsyncPlayerPreLoginEvent asyncEvent = new AsyncPlayerPreLoginEvent(playerName, address, uniqueId);
    Bukkit.getPluginManager().callEvent(asyncEvent);

    PlayerPreLoginEvent syncEvent = new PlayerPreLoginEvent(playerName, address, uniqueId);
    if (asyncEvent.getResult() != PlayerPreLoginEvent.Result.ALLOWED) {
        syncEvent.disallow(asyncEvent.getResult(), asyncEvent.getKickMessage());
    }

    if (PlayerPreLoginEvent.getHandlerList().getRegisteredListeners().length != 0) {
        if (ServerPlatform.get().getMiscUtils().callSyncTask(() -> {
            Bukkit.getPluginManager().callEvent(syncEvent);
            return syncEvent.getResult();
        }).get() != PlayerPreLoginEvent.Result.ALLOWED) {
            listener.disconnect(syncEvent.getKickMessage());
            return;
        }
    }

    if (syncEvent.getResult() != PlayerPreLoginEvent.Result.ALLOWED) {
        listener.disconnect(syncEvent.getKickMessage());
        return;
    }

    listener.setReadyToAccept();
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号