@Override public void run() { long time = System.currentTimeMillis(); Iterator<Map.Entry<UUID, List<DateObj<Integer>>>> iterator = playerHistory.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<UUID, List<DateObj<Integer>>> entry = iterator.next(); UUID uuid = entry.getKey(); List<DateObj<Integer>> history = entry.getValue(); Player player = Bukkit.getPlayer(uuid); if (player != null) { int ping = getPing(player); if (ping < -1 || ping > TimeUnit.SECONDS.toMillis(8L)) { // Don't accept bad values continue; } history.add(new DateObj<>(time, ping)); if (history.size() >= 30) { processing.submit(processors.player().pingInsertProcessor(uuid, new ArrayList<>(history))); history.clear(); } } else { iterator.remove(); } } }
@Override public void run() { long time = System.currentTimeMillis(); Iterator<Map.Entry<UUID, List<DateObj<Integer>>>> iterator = playerHistory.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<UUID, List<DateObj<Integer>>> entry = iterator.next(); UUID uuid = entry.getKey(); List<DateObj<Integer>> history = entry.getValue(); Optional<Player> player = Sponge.getServer().getPlayer(uuid); if (player.isPresent()) { int ping = getPing(player.get()); if (ping < -1 || ping > TimeUnit.SECONDS.toMillis(8L)) { // Don't accept bad values continue; } history.add(new DateObj<>(time, ping)); if (history.size() >= 30) { processing.submit(processors.player().pingInsertProcessor(uuid, new ArrayList<>(history))); history.clear(); } } else { iterator.remove(); } } }
@Override public void run() { long time = System.currentTimeMillis(); Iterator<Map.Entry<UUID, List<DateObj<Integer>>>> iterator = playerHistory.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<UUID, List<DateObj<Integer>>> entry = iterator.next(); UUID uuid = entry.getKey(); List<DateObj<Integer>> history = entry.getValue(); Player player = plugin.getProxy().getPlayer(uuid).orElse(null); if (player != null) { int ping = getPing(player); if (ping < -1 || ping > TimeUnit.SECONDS.toMillis(8L)) { // Don't accept bad values continue; } history.add(new DateObj<>(time, ping)); if (history.size() >= 30) { processing.submit(processors.player().pingInsertProcessor(uuid, new ArrayList<>(history))); history.clear(); } } else { iterator.remove(); } } }
@Override public void run() { long time = System.currentTimeMillis(); Iterator<Map.Entry<UUID, List<DateObj<Integer>>>> iterator = playerHistory.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<UUID, List<DateObj<Integer>>> entry = iterator.next(); UUID uuid = entry.getKey(); List<DateObj<Integer>> history = entry.getValue(); ProxiedPlayer player = ProxyServer.getInstance().getPlayer(uuid); if (player != null) { int ping = getPing(player); if (ping < -1 || ping > TimeUnit.SECONDS.toMillis(8L)) { // Don't accept bad values continue; } history.add(new DateObj<>(time, ping)); if (history.size() >= 30) { processing.submit(processors.player().pingInsertProcessor(uuid, new ArrayList<>(history))); history.clear(); } } else { iterator.remove(); } } }
private void actOnQuitEvent(PlayerQuitEvent event) { long time = System.currentTimeMillis(); Player player = event.getPlayer(); UUID uuid = player.getUniqueId(); AFKListener.AFK_TRACKER.loggedOut(uuid, time); processing.submit(processors.player().banAndOpProcessor(uuid, player::isBanned, player.isOp())); processing.submit(processors.player().endSessionProcessor(uuid, time)); processing.submit(processors.info().playerPageUpdateProcessor(uuid)); } }
private void actOnQuitEvent(ClientConnectionEvent.Disconnect event) { long time = System.currentTimeMillis(); Player player = event.getTargetEntity(); UUID uuid = player.getUniqueId(); SpongeAFKListener.AFK_TRACKER.loggedOut(uuid, time); boolean banned = isBanned(player.getProfile()); processing.submit(processors.player().banAndOpProcessor(uuid, () -> banned, false)); processing.submit(processors.player().endSessionProcessor(uuid, time)); processing.submit(processors.info().playerPageUpdateProcessor(uuid)); } }
private void actOnLoginEvent(ClientConnectionEvent.Login event) { GameProfile profile = event.getProfile(); UUID uuid = profile.getUniqueId(); boolean banned = isBanned(profile); processing.submit(processors.player().banAndOpProcessor(uuid, () -> banned, false)); }
@Listener(order = Order.POST) public void onKick(KickPlayerEvent event) { try { UUID uuid = event.getTargetEntity().getUniqueId(); if (!status.areKicksCounted() || SpongeAFKListener.AFK_TRACKER.isAfk(uuid)) { return; } processing.submit(processors.player().kickProcessor(uuid)); } catch (Exception e) { errorHandler.log(L.ERROR, this.getClass(), e); } }
@EventHandler(priority = EventPriority.MONITOR) public void onPlayerLogin(PlayerLoginEvent event) { try { PlayerLoginEvent.Result result = event.getResult(); UUID uuid = event.getPlayer().getUniqueId(); boolean op = event.getPlayer().isOp(); boolean banned = result == PlayerLoginEvent.Result.KICK_BANNED; processing.submit(processors.player().banAndOpProcessor(uuid, () -> banned, op)); } catch (Exception e) { errorHandler.log(L.ERROR, this.getClass(), e); } }
private void actOnJoinEvent(ClientConnectionEvent.Join event) { Player player = event.getTargetEntity(); UUID uuid = player.getUniqueId(); long time = System.currentTimeMillis(); SpongeAFKListener.AFK_TRACKER.performedAction(uuid, time); String world = player.getWorld().getName(); Optional<GameMode> gameMode = player.getGameModeData().get(Keys.GAME_MODE); String gm = gameMode.map(mode -> mode.getName().toUpperCase()).orElse("ADVENTURE"); InetAddress address = player.getConnection().getAddress().getAddress(); String playerName = player.getName(); String displayName = player.getDisplayNameData().displayName().get().toPlain(); boolean gatheringGeolocations = config.isTrue(DataGatheringSettings.GEOLOCATIONS); processing.submitCritical(() -> sessionCache.cacheSession(uuid, new Session(uuid, serverInfo.getServerUUID(), time, world, gm))); runnableFactory.create("Player Register: " + uuid, processors.player().registerProcessor(uuid, () -> time, playerName, gatheringGeolocations ? processors.player().ipUpdateProcessor(uuid, address, time) : null, processors.player().nameProcessor(uuid, playerName, displayName), processors.info().playerPageUpdateProcessor(uuid) ) ).runTaskAsynchronously(); }
private void actOnJoinEvent(PlayerJoinEvent event) { Player player = event.getPlayer(); // TODO Move update notification to the website. UUID uuid = player.getUniqueId(); long time = System.currentTimeMillis(); AFKListener.AFK_TRACKER.performedAction(uuid, time); String world = player.getWorld().getName(); String gm = player.getGameMode().name(); InetAddress address = player.getAddress().getAddress(); String playerName = player.getName(); String displayName = player.getDisplayName(); boolean gatheringGeolocations = config.isTrue(DataGatheringSettings.GEOLOCATIONS); processing.submitCritical(() -> sessionCache.cacheSession(uuid, new Session(uuid, serverInfo.getServerUUID(), time, world, gm))); runnableFactory.create("Player Register: " + uuid, processors.player().registerProcessor(uuid, player::getFirstPlayed, playerName, gatheringGeolocations ? processors.player().ipUpdateProcessor(uuid, address, time) : null, processors.player().nameProcessor(uuid, playerName, displayName), processors.info().playerPageUpdateProcessor(uuid) ) ).runTaskAsynchronously(); }
@EventHandler public void onPostLogin(PostLoginEvent event) { try { ProxiedPlayer player = event.getPlayer(); UUID uuid = player.getUniqueId(); String name = player.getName(); InetAddress address = player.getAddress().getAddress(); long time = System.currentTimeMillis(); sessionCache.cacheSession(uuid, new Session(uuid, serverInfo.getServerUUID(), time, null, null)); boolean gatheringGeolocations = config.isTrue(DataGatheringSettings.GEOLOCATIONS); processing.submit(processors.player().proxyRegisterProcessor(uuid, name, time, gatheringGeolocations ? processors.player().ipUpdateProcessor(uuid, address, time) : null )); processing.submit(processors.info().playerPageUpdateProcessor(uuid)); ResponseCache.clearResponse(PageId.SERVER.of(serverInfo.getServerUUID())); } catch (Exception e) { errorHandler.log(L.WARN, this.getClass(), e); } }
@Subscribe public void onPostLogin(PostLoginEvent event) { try { Player player = event.getPlayer(); UUID uuid = player.getUniqueId(); String name = player.getUsername(); InetAddress address = player.getRemoteAddress().getAddress(); long time = System.currentTimeMillis(); sessionCache.cacheSession(uuid, new Session(uuid, serverInfo.getServerUUID(), time, null, null)); boolean gatheringGeolocations = config.isTrue(DataGatheringSettings.GEOLOCATIONS); processing.submit(processors.player().proxyRegisterProcessor(uuid, name, time, gatheringGeolocations ? processors.player().ipUpdateProcessor(uuid, address, time) : null )); processing.submit(processors.info().playerPageUpdateProcessor(uuid)); ResponseCache.clearResponse(PageId.SERVER.of(serverInfo.getServerUUID())); } catch (Exception e) { errorHandler.log(L.WARN, this.getClass(), e); } }
/** * PlayerKickEvent Listener. * <p> * Adds processing information to the ProcessingQueue. * After KickEvent, the QuitEvent is automatically called. * * @param event Fired event */ @EventHandler(priority = EventPriority.MONITOR) public void onPlayerKick(PlayerKickEvent event) { try { if (!status.areKicksCounted() || event.isCancelled()) { return; } UUID uuid = event.getPlayer().getUniqueId(); if (AFKListener.AFK_TRACKER.isAfk(uuid)) { return; } processing.submit(processors.player().kickProcessor(uuid)); } catch (Exception e) { errorHandler.log(L.ERROR, this.getClass(), e); } }