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.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.*;
|
||||||
import java.util.WeakHashMap;
|
|
||||||
|
|
||||||
public class AfkTag extends Appliance implements DisplayName.DisplayNamed {
|
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 updateIntervalSeconds = 30;
|
||||||
private static final int afkWhenMillis = 5 * 60 * 1000;
|
private static final int afkWhenMillis = 3 * 60 * 1000;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
@ -33,21 +32,22 @@ public class AfkTag extends Appliance implements DisplayName.DisplayNamed {
|
|||||||
|
|
||||||
public void resetTiming(Player player) {
|
public void resetTiming(Player player) {
|
||||||
boolean wasAfk = isAfk(player);
|
boolean wasAfk = isAfk(player);
|
||||||
this.afkTimings.put(player, System.currentTimeMillis());
|
this.afkTimings.put(player.getUniqueId(), System.currentTimeMillis());
|
||||||
if (wasAfk) this.updateAfkPrefix(player);
|
if (wasAfk) this.updateAfkPrefix(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkAfkPlayers() {
|
private void checkAfkPlayers() {
|
||||||
this.afkTimings.keySet().forEach((player) -> {
|
this.afkTimings.keySet().stream()
|
||||||
if(!isAfk(player)) return;
|
.map(Bukkit::getPlayer)
|
||||||
this.updateAfkPrefix(player);
|
.filter(Objects::nonNull)
|
||||||
});
|
.filter(this::isAfk)
|
||||||
|
.forEach(this::updateAfkPrefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isAfk(Player player) {
|
private boolean isAfk(Player player) {
|
||||||
if(player.isSleeping()) return false;
|
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;
|
long timeSinceLastActive = System.currentTimeMillis() - lastTimeActive;
|
||||||
return timeSinceLastActive >= afkWhenMillis;
|
return timeSinceLastActive >= afkWhenMillis;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user