Changed afk now bar to be afk kick soon

This commit is contained in:
Teriuihi 2023-06-21 23:14:55 +02:00
parent baad49a608
commit e9ed408489
3 changed files with 14 additions and 8 deletions

View File

@ -55,6 +55,9 @@ public class AFKCheckTimer extends BukkitRunnable {
if (!afkPlayer.isAFK() && System.currentTimeMillis() - standingTime > TimeUnit.MINUTES.toMillis(Config.TOGGLE_TIME)) { if (!afkPlayer.isAFK() && System.currentTimeMillis() - standingTime > TimeUnit.MINUTES.toMillis(Config.TOGGLE_TIME)) {
setPlayerAFK(afkPlayer, player); setPlayerAFK(afkPlayer, player);
} }
if (afkPlayer.isAFK()) {
afkPlayer.updateBossBarProgress((int) TimeUnit.MINUTES.toSeconds(afkPlayer.getAfkTimeMinutes()));
}
runMessageTimerCheck(afkPlayer, uuid, standingTime); runMessageTimerCheck(afkPlayer, uuid, standingTime);
} }
} }
@ -109,7 +112,7 @@ public class AFKCheckTimer extends BukkitRunnable {
} }
private void runMessageTimerCheck(AFKPlayer afkPlayer, UUID uuid, long standingTime) { private void runMessageTimerCheck(AFKPlayer afkPlayer, UUID uuid, long standingTime) {
if (System.currentTimeMillis() - standingTime > TimeUnit.MINUTES.toMillis(afkPlayer.getAfkTime())) { if (System.currentTimeMillis() - standingTime > TimeUnit.MINUTES.toMillis(afkPlayer.getAfkTimeMinutes())) {
MessageTimer currentTimer = plugin.messageTimers.get(uuid); MessageTimer currentTimer = plugin.messageTimers.get(uuid);
if (currentTimer == null) { if (currentTimer == null) {
currentTimer = new MessageTimer(plugin, afkPlayer, Config.MESSAGE_REPEATS); currentTimer = new MessageTimer(plugin, afkPlayer, Config.MESSAGE_REPEATS);

View File

@ -29,7 +29,7 @@ public class AFKPlayer {
private boolean isWarned; private boolean isWarned;
private final BossBar bossBar; private final BossBar bossBar;
private final String afkSoon; private final String afkSoon;
private final String afkNow; private final String afkKickSoon;
public AFKPlayer(Player player, AFKDetector plugin) { public AFKPlayer(Player player, AFKDetector plugin) {
this.playerName = player.getName(); this.playerName = player.getName();
@ -41,7 +41,7 @@ public class AFKPlayer {
this.bossBar = Bukkit.createBossBar("Time until AFK", BarColor.PURPLE, BarStyle.SOLID); this.bossBar = Bukkit.createBossBar("Time until AFK", BarColor.PURPLE, BarStyle.SOLID);
MiniMessage miniMessage = MiniMessage.miniMessage(); MiniMessage miniMessage = MiniMessage.miniMessage();
this.afkSoon = LegacyComponentSerializer.builder().build().serialize(miniMessage.deserialize(Messages.AFK_SOON_BOSS_BAR.getMessage())); this.afkSoon = LegacyComponentSerializer.builder().build().serialize(miniMessage.deserialize(Messages.AFK_SOON_BOSS_BAR.getMessage()));
this.afkNow = LegacyComponentSerializer.builder().build().serialize(miniMessage.deserialize(Messages.AFK_NOW_BOSS_BAR.getMessage())); this.afkKickSoon = LegacyComponentSerializer.builder().build().serialize(miniMessage.deserialize(Messages.AFK_KICK_SOON_BOSS_BAR.getMessage()));
} }
public String getPlayerName() { public String getPlayerName() {
@ -68,7 +68,7 @@ public class AFKPlayer {
standingTime = Time; standingTime = Time;
} }
public int getAfkTime() { public int getAfkTimeMinutes() {
if (isInSpawn()) if (isInSpawn())
return this.afkTime + Config.EXTRA_MIN_IN_SPAWN; return this.afkTime + Config.EXTRA_MIN_IN_SPAWN;
return this.afkTime; return this.afkTime;
@ -96,7 +96,8 @@ public class AFKPlayer {
} }
public void setAFK(Player player) { public void setAFK(Player player) {
bossBar.setTitle(afkNow); bossBar.setTitle(afkKickSoon);
bossBar.setColor(BarColor.RED);
player.setAfk(true); player.setAfk(true);
isAFK = true; isAFK = true;
} }
@ -113,17 +114,18 @@ public class AFKPlayer {
} }
public void warnPlayer(Player player) { public void warnPlayer(Player player) {
updateBossBarProgress(); updateBossBarProgress(Config.TOGGLE_TIME);
if (isWarned) if (isWarned)
return; return;
bossBar.setColor(BarColor.PURPLE);
bossBar.setTitle(afkSoon); bossBar.setTitle(afkSoon);
bossBar.addPlayer(player); bossBar.addPlayer(player);
isWarned = true; isWarned = true;
} }
public void updateBossBarProgress() { public void updateBossBarProgress(int totalAllowedSeconds) {
double afkSeconds = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis() - getStandingTime()); double afkSeconds = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis() - getStandingTime());
double toggleSeconds = TimeUnit.MINUTES.toSeconds(Config.TOGGLE_TIME); double toggleSeconds = TimeUnit.MINUTES.toSeconds(totalAllowedSeconds);
bossBar.setProgress(Math.min(afkSeconds / toggleSeconds, 1)); bossBar.setProgress(Math.min(afkSeconds / toggleSeconds, 1));
} }
} }

View File

@ -22,6 +22,7 @@ public enum Messages {
AFK_KICK_STAFF_MESSAGE("afkkick-staff-messsge", "<gold><player> got afk kicked after being afk for <afk_time> minutes."), AFK_KICK_STAFF_MESSAGE("afkkick-staff-messsge", "<gold><player> got afk kicked after being afk for <afk_time> minutes."),
SUSPICIOUS_KICK_COUNT("afkkick-suspicious-message", "<gold><player> has had <count> suspicious AFK kicks since last reboot."), SUSPICIOUS_KICK_COUNT("afkkick-suspicious-message", "<gold><player> has had <count> suspicious AFK kicks since last reboot."),
AFK_SOON_BOSS_BAR("afk-soon-boss-bar", "<dark_aqua>Time until AFK.</dark_aqua>"), AFK_SOON_BOSS_BAR("afk-soon-boss-bar", "<dark_aqua>Time until AFK.</dark_aqua>"),
AFK_KICK_SOON_BOSS_BAR("afk-kick-soon-boss-bar", "<dark_aqua>Time until <red>AFK kick</red>.</dark_aqua>"),
AFK_NOW_BOSS_BAR("afk-now-boss-bar", "<red>AFK</red>"); AFK_NOW_BOSS_BAR("afk-now-boss-bar", "<red>AFK</red>");
private final String key; private final String key;