changed afk timings map and time limit

This commit is contained in:
Lars Neuhaus 2024-12-01 21:40:52 +01:00
parent a5cdb93f1b
commit 28b9b84e07

View File

@ -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;
}