From 07284eae6a140d83aa1a0599d8e2c6b8aba755e3 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 16 Aug 2024 17:32:51 +0200 Subject: [PATCH] Change AFK Stopper to work based on real time Fixes #lag145-bug-203. --- .../features/world/AFKStopperListener.java | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/world/AFKStopperListener.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/world/AFKStopperListener.java index 81e2f4dd..479dd394 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/world/AFKStopperListener.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/world/AFKStopperListener.java @@ -35,20 +35,16 @@ import org.bukkit.event.player.PlayerQuitEvent; @Linked public class AFKStopperListener implements Listener { - private int afkTicks = 0; + private long lastMovementTime = System.currentTimeMillis(); public AFKStopperListener() { Bukkit.getScheduler().runTaskTimer(BauSystem.getInstance(), () -> { - switch (afkTicks) { - case 15: - for (Player p : Bukkit.getOnlinePlayers()) { - p.kickPlayer(BauSystem.MESSAGE.parse("AFK_KICK_MESSAGE", p)); - } - case 14: - BauSystem.MESSAGE.broadcast("AFK_WARNING_MESSAGE"); - default: - afkTicks++; - } + long currentTime = System.currentTimeMillis(); + if(currentTime - lastMovementTime > 10*60000) { // 10 Minutes + for (Player p : Bukkit.getOnlinePlayers()) + p.kickPlayer(BauSystem.MESSAGE.parse("AFK_KICK_MESSAGE", p)); + } else if(currentTime - lastMovementTime > 9*60000) + BauSystem.MESSAGE.broadcast("AFK_WARNING_MESSAGE"); }, 1200, 1200); //every minute } @@ -60,7 +56,7 @@ public class AFKStopperListener implements Listener { Location from = event.getFrom(); if (from.getPitch() != to.getPitch() || from.getYaw() != to.getYaw()) - afkTicks = 0; + lastMovementTime = System.currentTimeMillis(); } @EventHandler(priority = EventPriority.LOWEST) //Potential fix for potential race condition with WE axe spontaneously not working