diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/afkTag/AfkTag.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/afkTag/AfkTag.java index 538efcd..e9b9668 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/afkTag/AfkTag.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/afkTag/AfkTag.java @@ -13,13 +13,12 @@ import org.bukkit.event.Listener; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.List; -import java.util.WeakHashMap; +import java.util.*; public class AfkTag extends Appliance implements DisplayName.DisplayNamed { - private final WeakHashMap<Player, Long> afkTimings = new WeakHashMap<>(); + private final HashMap<UUID, Long> afkTimings = new HashMap<>(); private static final int updateIntervalSeconds = 30; - private static final int afkWhenMillis = 5 * 60 * 1000; + private static final int afkWhenMillis = 3 * 60 * 1000; @Override public void onEnable() { @@ -33,21 +32,22 @@ public class AfkTag extends Appliance implements DisplayName.DisplayNamed { public void resetTiming(Player player) { boolean wasAfk = isAfk(player); - this.afkTimings.put(player, System.currentTimeMillis()); + this.afkTimings.put(player.getUniqueId(), System.currentTimeMillis()); if (wasAfk) this.updateAfkPrefix(player); } private void checkAfkPlayers() { - this.afkTimings.keySet().forEach((player) -> { - if(!isAfk(player)) return; - this.updateAfkPrefix(player); - }); + this.afkTimings.keySet().stream() + .map(Bukkit::getPlayer) + .filter(Objects::nonNull) + .filter(this::isAfk) + .forEach(this::updateAfkPrefix); } private boolean isAfk(Player player) { if(player.isSleeping()) return false; - long lastTimeActive = this.afkTimings.getOrDefault(player, 0L); + long lastTimeActive = this.afkTimings.getOrDefault(player.getUniqueId(), 0L); long timeSinceLastActive = System.currentTimeMillis() - lastTimeActive; return timeSinceLastActive >= afkWhenMillis; }