/** * Determines if a player can be set to ignored for the sleep check. * * @param player the player to check * @return true if the player can be set to ignored for the sleep check */ public boolean canIgnoreSleep(Player player) { AFKSession session = sessions.getSession(AFKSession.class, player); return (session.isRequested() && canIgnoreSleep(true)) || (isAfk(session.getLastUpdate()) && canIgnoreSleep(false)); }
/** * Determines if a player can be protected. * * @param player the player to check * @return true if the player can be protected */ public boolean canProtect(Player player) { AFKSession session = sessions.getSession(AFKSession.class, player); return (session.isRequested() && canProtect(true)) || (isAfk(session.getLastUpdate()) && canProtect(false)); }
@Override public void reload() { super.reload(); configure(config); }
boolean passedTime = isAfk(session.getLastUpdate()); if (session.isRequested() || passedTime) { if (shouldKick(session.getLastUpdate())) { if (canIgnoreSleep(session.isRequested()) || (passedTime && canIgnoreSleep(false))) { if (!target.isSleepingIgnored()) { target.setSleepingIgnored(true); if (godComp != null && (canProtect(session.isRequested()) || (passedTime && canProtect(false)))) { if (!godComp.hasGodMode(target)) { godComp.enableGodMode(target);
@EventHandler public void onPlayerChat(AsyncPlayerChatEvent event) { update(event.getPlayer()); }
@Override public void enable() { config = configure(new LocalConfiguration()); CommandBook.registerEvents(this); if (config.useMovementEvent) { CommandBook.registerEvents(new MovementListener()); } registerCommands(Commands.class); server.getScheduler().runTaskTimer(inst, this, 20, 20); }
/** * Determines if a player should be kicked for being AFK. * * @param player the player to check * @return true if the player should be kicked */ public boolean shouldKick(Player player) { return shouldKick(sessions.getSession(AFKSession.class, player).getLastUpdate()); }
@EventHandler public void onEntityTargetPlayer(EntityTargetEvent event) { if (event.getTarget() instanceof Player) { if (canProtect((Player) event.getTarget())) { event.setCancelled(true); } } }
@EventHandler public void onPlayerJoin(PlayerJoinEvent event) { update(event.getPlayer()); }
@EventHandler public void onCommand(PlayerCommandPreprocessEvent event) { update(event.getPlayer()); }
@EventHandler public void onPlayerInteract(PlayerInteractEvent event) { update(event.getPlayer()); }
@EventHandler public void onPlayerFish(PlayerFishEvent event) { update(event.getPlayer()); }
@EventHandler public void onInventoryClick(InventoryClickEvent event) { if (event.getWhoClicked() instanceof Player) update((Player) event.getWhoClicked()); }
@EventHandler public void onEntityDamageEntityEvent(EntityDamageByEntityEvent event) { if (event.getDamager() instanceof Player) update((Player) event.getDamager()); }
@EventHandler public void onInventoryOpen(InventoryOpenEvent event) { if (event.getPlayer() instanceof Player) update((Player) event.getPlayer()); }
@EventHandler public void onInventoryClose(InventoryCloseEvent event) { if (event.getPlayer() instanceof Player) update((Player) event.getPlayer()); }
@EventHandler public void onMoveChange(PlayerMoveEvent event) { Player player = event.getPlayer(); double distanceSQ = LocationUtil.distanceSquared2D(event.getFrom(), event.getTo()); if (distanceSQ > config.movementThreshold || (player.isSneaking() && distanceSQ > config.sneakMovementThreshold)) { update(player); } } }