if (event.getLoginResult() != Result.ALLOWED) { session.disconnect(event.getKickMessage(), true); return;
/** * Handles pre-hooks for a player login. * * @param name the name of the player who is logging in * @param address the address of the player who is logging in * @param uuid the UUID of the player who is logging in, provided by Mojang * @return an AsyncPlayerPreLoginEvent */ @SuppressWarnings("deprecation") public AsyncPlayerPreLoginEvent onPlayerPreLogin(String name, InetSocketAddress address, UUID uuid) { // call async event AsyncPlayerPreLoginEvent event = new AsyncPlayerPreLoginEvent(name, address .getAddress(), uuid); callEvent(event); // call sync event only if needed if (PlayerPreLoginEvent.getHandlerList().getRegisteredListeners().length > 0) { // initialize event to match current state from async event PlayerPreLoginEvent syncEvent = new PlayerPreLoginEvent(name, address .getAddress(), uuid); if (event.getLoginResult() != AsyncPlayerPreLoginEvent.Result.ALLOWED) { syncEvent.disallow(event.getResult(), event.getKickMessage()); } // call event synchronously and copy data back to original event callEvent(syncEvent); event.disallow(syncEvent.getResult(), syncEvent.getKickMessage()); } return event; }
if (event.getLoginResult() != Result.ALLOWED) { session.disconnect(event.getKickMessage(), true); return;
@EventHandler(priority = EventPriority.MONITOR) @RegisterMethodWithOrder(tag = "system.nocheatplus.datamanager", beforeTag = ".*") @Override public void onEvent(final AsyncPlayerPreLoginEvent event) { // TODO: Maintain a flag for precondition (e.g. ProtocolLib present). if (event.getLoginResult() == AsyncPlayerPreLoginEvent.Result.ALLOWED) { onAsyncPlayerPreLogin(event); } } },
@EventHandler(priority = EventPriority.HIGHEST) public void playerPreLogin(AsyncPlayerPreLoginEvent event) { // if player was kicked, don't load the data if (event.getLoginResult() != Result.ALLOWED) { return; } String playerID = event.getUniqueId().toString(); BetonQuest plugin = BetonQuest.getInstance(); plugin.putPlayerData(playerID, new PlayerData(playerID)); }
@EventHandler(priority = EventPriority.HIGHEST) public void onPreLogin(AsyncPlayerPreLoginEvent preLoginEvent) { if (preLoginEvent.getLoginResult() != Result.ALLOWED) { //in this event isCancelled option in the annotation doesn't work return; } UUID playerUuid = preLoginEvent.getUniqueId(); String playerName = preLoginEvent.getName(); UserPreference preferences = core.getStorage().getPreferences(playerUuid); if (preferences == null) { return; } plugin.startSession(playerUuid, preferences); Optional<SkinModel> optSkin = preferences.getTargetSkin(); if (optSkin.isPresent()) { SkinModel targetSkin = optSkin.get(); if (!preferences.isKeepSkin()) { targetSkin = core.checkAutoUpdate(targetSkin); } preferences.setTargetSkin(targetSkin); save(preferences); } else if (core.getConfig().getBoolean("restoreSkins")) { refetchSkin(playerName, preferences); } if (!preferences.getTargetSkin().isPresent()) { getRandomSkin().ifPresent(preferences::setTargetSkin); } }
@Override public void onEnable() { instance = this; Universal.get().setup(new BukkitMethods()); ConnectionListener connListener = new ConnectionListener(); this.getServer().getPluginManager().registerEvents(connListener, this); this.getServer().getPluginManager().registerEvents(new ChatListener(), this); this.getServer().getPluginManager().registerEvents(new CommandListener(), this); this.getServer().getPluginManager().registerEvents(new InternalListener(), this); for (Player op : Bukkit.getOnlinePlayers()) { AsyncPlayerPreLoginEvent apple = new AsyncPlayerPreLoginEvent(op.getName(), op.getAddress().getAddress(), op.getUniqueId()); connListener.onConnect(apple); if (apple.getLoginResult() == AsyncPlayerPreLoginEvent.Result.KICK_BANNED) { op.kickPlayer(apple.getKickMessage()); } } }