changed afk timings map and time limit
This commit is contained in:
parent
a5cdb93f1b
commit
28b9b84e07
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user