/** * 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 public void onPlayerPreLogin(final AsyncPlayerPreLoginEvent event) { getUserSubjects().get(event.getUniqueId().toString()).exceptionally(e -> { logger.warn(t("Error while loading data for user %s/%s during prelogin: %s", event.getName(), event.getUniqueId().toString(), e.getMessage()), e); return null; }); }
@EventHandler(priority = EventPriority.HIGHEST) public void handle0(AsyncPlayerPreLoginEvent e) { for (Player all : Bukkit.getOnlinePlayers()) if (all.getUniqueId().equals(e.getUniqueId())) { e.disallow(AsyncPlayerPreLoginEvent.Result.KICK_BANNED, ChatColor.translateAlternateColorCodes('&', CloudAPI.getInstance().getCloudNetwork().getMessages().getString("server-kick-proxy-disallow"))); return; } CloudServer.getInstance().getPlayerAndCache(e.getUniqueId()); }
@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); } }
@EventHandler(priority = EventPriority.NORMAL) public void onPlayerPreLogin(AsyncPlayerPreLoginEvent event) { final String ip = event.getAddress().getHostAddress().trim(); final boolean isAdmin = plugin.al.getEntryByIp(ip) != null; // Check if the player is already online for (Player onlinePlayer : server.getOnlinePlayers()) { if (!onlinePlayer.getName().equalsIgnoreCase(event.getName())) { continue; } if (isAdmin) { event.allow(); FSync.playerKick(onlinePlayer, "An admin just logged in with the username you are using."); return; } event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, "Your username is already logged into this server."); return; } }
@EventHandler(priority = EventPriority.HIGHEST) public void onConnect(AsyncPlayerPreLoginEvent event) { String result = Universal.get().callConnection(event.getName(), event.getAddress().getHostAddress()); if (result != null) { event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_BANNED, result); } }
@EventHandler(priority = EventPriority.HIGH) public void onLogin(AsyncPlayerPreLoginEvent e) { if (!cm.isAntiDoubleLogin) { return; } String username = e.getName(); if (username == null) { return; } if (this.checkOnline(username)) { e.disallow(Result.KICK_OTHER, i18n.tr("antiDoubleLoginMessage")); } }
@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)); }
@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()); } } }
AsyncPlayerPreLoginEvent asyncEvent = new AsyncPlayerPreLoginEvent(profile.getName(), address, profile.getUUID()); Bukkit.getPluginManager().callEvent(asyncEvent); if (asyncEvent.getResult() != PlayerPreLoginEvent.Result.ALLOWED) { syncEvent.disallow(asyncEvent.getResult(), asyncEvent.getKickMessage());
@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); } } },
/** * Ensure a PlayerData instance exists for later use. * * @param event */ private void onAsyncPlayerPreLogin(final AsyncPlayerPreLoginEvent event) { final UUID playerId = event.getUniqueId(); // Treat carefully :). if (playerData.containsKey(playerId)) { // Skip if a PlayerData instance already exists. return; } else { // Create with default world data. getPlayerData(playerId, event.getName(), true, worldDataManager.getDefaultWorldData()).addTag(PlayerData.TAG_OPTIMISTIC_CREATE); } }
.filter(e -> this.ensureJoinedViaQueue) .handler(e -> { Response response = this.expectedPlayers.remove(e.getUniqueId()); if (response == null || !response.isAllowed()) { e.disallow(AsyncPlayerPreLoginEvent.Result.KICK_WHITELIST, Text.colorize("&cSorry! The server is unable to process your login at this time. (queue error)"));
if (event.getLoginResult() != Result.ALLOWED) { session.disconnect(event.getKickMessage(), true); return;