From 7f49e0f4fee5f2c09fdac5e0f41fb34e426a1116 Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Wed, 31 Aug 2022 02:36:47 +0200 Subject: [PATCH] Added an option to notify staff for afk kick Added an option to disable notifying staff for a player being marked as afk Updated minimessage --- pom.xml | 6 ++-- .../com/alttd/afkdectector/AFKCheckTimer.java | 11 +++---- .../com/alttd/afkdectector/MessageTimer.java | 29 ++++++++++++++----- .../afkdectector/afkplayer/AFKPlayer.java | 9 +++--- .../afkdectector/command/AFKCheckCommand.java | 6 ++-- .../afkdectector/command/AFKListCommand.java | 23 +++++++-------- .../afkdectector/command/ReloadCommand.java | 7 ----- .../com/alttd/afkdectector/config/Config.java | 4 +++ .../alttd/afkdectector/config/Messages.java | 3 +- 9 files changed, 55 insertions(+), 43 deletions(-) diff --git a/pom.xml b/pom.xml index 621faac..3bb2f44 100755 --- a/pom.xml +++ b/pom.xml @@ -17,8 +17,8 @@ maven-compiler-plugin 3.5.1 - 11 - 11 + 17 + 17 @@ -41,7 +41,7 @@ com.alttd Galaxy-API - 1.18.1-R0.1-SNAPSHOT + 1.18.2-R0.1-SNAPSHOT \ No newline at end of file diff --git a/src/main/java/com/alttd/afkdectector/AFKCheckTimer.java b/src/main/java/com/alttd/afkdectector/AFKCheckTimer.java index 778efdc..1e835ce 100755 --- a/src/main/java/com/alttd/afkdectector/AFKCheckTimer.java +++ b/src/main/java/com/alttd/afkdectector/AFKCheckTimer.java @@ -6,9 +6,9 @@ import com.alttd.afkdectector.afkplayer.AFKPlayer; import com.alttd.afkdectector.config.Config; import com.alttd.afkdectector.config.Messages; import net.kyori.adventure.text.minimessage.MiniMessage; -import net.kyori.adventure.text.minimessage.Template; +import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; +import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; @@ -60,14 +60,15 @@ public class AFKCheckTimer extends BukkitRunnable{ player.setSleepingIgnored(true); //player.setCanPickupItems(false); plugin.AFKPlayers.addEntry(player.getName()); - Bukkit.broadcast(MiniMessage.get().parse(Messages.AFKTOGGLEON.getMessage(), Template.of("player", player.getName())), "afkdetector.notify"); + if (Config.AFKTOGGLEMESSAGES) + Bukkit.broadcast(MiniMessage.miniMessage().deserialize(Messages.AFKTOGGLEON.getMessage(), TagResolver.resolver(Placeholder.unparsed("player", player.getName()))), "afkdetector.notify"); } if(System.currentTimeMillis() - standingTime > afkplayer.getafkTime() * 60 * 1000) { MessageTimer currentTimer = plugin.messageTimers.get(uuid); if(currentTimer == null) { - currentTimer = new MessageTimer(plugin, uuid, Config.MESSAGEREPEATS); + currentTimer = new MessageTimer(plugin, afkplayer, Config.MESSAGEREPEATS); plugin.messageTimers.put(uuid, currentTimer); - new MessageTimer(plugin, uuid, Config.MESSAGEREPEATS).init(); + currentTimer.init(); } } else { MessageTimer currentTimer = plugin.messageTimers.get(uuid); diff --git a/src/main/java/com/alttd/afkdectector/MessageTimer.java b/src/main/java/com/alttd/afkdectector/MessageTimer.java index f1acf6e..366c280 100755 --- a/src/main/java/com/alttd/afkdectector/MessageTimer.java +++ b/src/main/java/com/alttd/afkdectector/MessageTimer.java @@ -2,25 +2,30 @@ package com.alttd.afkdectector; import java.util.UUID; +import com.alttd.afkdectector.afkplayer.AFKPlayer; import com.alttd.afkdectector.config.Config; import com.alttd.afkdectector.config.Messages; +import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; +import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; +import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import net.kyori.adventure.title.Title; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; public class MessageTimer extends BukkitRunnable { private AFKDetector plugin; - private UUID uuid = null; + private UUID uuid; + private AFKPlayer afkPlayer; private int repeats; - public MessageTimer(AFKDetector plugin, UUID uuid, int repeats) { + public MessageTimer(AFKDetector plugin, AFKPlayer afkPlayer, int repeats) { this.plugin = plugin; - this.uuid = uuid; + this.afkPlayer = afkPlayer; this.repeats = repeats; + this.uuid = afkPlayer.getPlayerUuid(); } public void init() { @@ -45,12 +50,12 @@ public class MessageTimer extends BukkitRunnable { return; } if(Config.COUNTDOWNENABLED) { - MiniMessage miniMessage = MiniMessage.get(); - Title title = Title.title(miniMessage.parse(Messages.COUNTDOWNTITLE1.getMessage()), - miniMessage.parse(Messages.COUNTDOWNTITLE2.getMessage())); + MiniMessage miniMessage = MiniMessage.miniMessage(); + Title title = Title.title(miniMessage.deserialize(Messages.COUNTDOWNTITLE1.getMessage()), + miniMessage.deserialize(Messages.COUNTDOWNTITLE2.getMessage())); //Title.Times.of(Config.FADEIN, Config.STAY, Config.STAY); player.showTitle(title); - player.sendMessage(miniMessage.parse(Messages.COUNTDOWNMESSAGE.getMessage())); + player.sendMessage(miniMessage.deserialize(Messages.COUNTDOWNMESSAGE.getMessage())); } repeats = repeats - 1; @@ -61,6 +66,14 @@ public class MessageTimer extends BukkitRunnable { //Bukkit.dispatchCommand(Bukkit.getConsoleSender(), plugin.kickCommand.replace("%player%", player.getName())); plugin.messageTimers.remove(player.getUniqueId()); Bukkit.dispatchCommand(Bukkit.getConsoleSender(), return_placeholders(Config.KICKCOMMAND, player)); + TagResolver templates = TagResolver.resolver( + Placeholder.unparsed("player", player.getName()), + Placeholder.unparsed("afk_time", "" + afkPlayer.getafkTime()) + ); + Component message = MiniMessage.miniMessage().deserialize(Messages.AFKICKSTAFFMESSAGE.getMessage(), templates); + Bukkit.getOnlinePlayers().stream() + .filter(staff -> staff.hasPermission("afkdetector.notify")) + .forEach(staff -> staff.sendMessage(message)); cancel(); } } else { diff --git a/src/main/java/com/alttd/afkdectector/afkplayer/AFKPlayer.java b/src/main/java/com/alttd/afkdectector/afkplayer/AFKPlayer.java index f873883..d00e7a1 100755 --- a/src/main/java/com/alttd/afkdectector/afkplayer/AFKPlayer.java +++ b/src/main/java/com/alttd/afkdectector/afkplayer/AFKPlayer.java @@ -2,11 +2,12 @@ package com.alttd.afkdectector.afkplayer; import java.util.UUID; +import com.alttd.afkdectector.config.Config; import com.alttd.afkdectector.config.Messages; import net.kyori.adventure.text.minimessage.MiniMessage; -import net.kyori.adventure.text.minimessage.Template; +import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; +import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.entity.Player; @@ -68,8 +69,8 @@ public class AFKPlayer { } public void ResetAFK() { - if(isafk) { - Bukkit.broadcast(MiniMessage.get().parse(Messages.AFKTOGGLEOFF.getMessage(), Template.of("player", playerName)), "afkdetector.notify"); + if(isafk && Config.AFKTOGGLEMESSAGES) { + Bukkit.broadcast(MiniMessage.miniMessage().deserialize(Messages.AFKTOGGLEOFF.getMessage(), TagResolver.resolver(Placeholder.unparsed("player", playerName))), "afkdetector.notify"); } standingTime = System.currentTimeMillis(); playerToSphereCenter = Bukkit.getPlayer(getPlayerUuid()).getLocation(); diff --git a/src/main/java/com/alttd/afkdectector/command/AFKCheckCommand.java b/src/main/java/com/alttd/afkdectector/command/AFKCheckCommand.java index 186dfda..e7d1399 100755 --- a/src/main/java/com/alttd/afkdectector/command/AFKCheckCommand.java +++ b/src/main/java/com/alttd/afkdectector/command/AFKCheckCommand.java @@ -36,9 +36,9 @@ public class AFKCheckCommand implements CommandExecutor, TabCompleter { sender.sendMessage(Component.text(command.getUsage(), NamedTextColor.RED)); return true; } - MiniMessage miniMessage = MiniMessage.get(); - target.showTitle(Title.title(miniMessage.parse(Messages.AFKCHECKTITLE.getMessage()), - miniMessage.parse(Messages.AFKCHECKSUBTITLE.getMessage()))); + MiniMessage miniMessage = MiniMessage.miniMessage(); + target.showTitle(Title.title(miniMessage.deserialize(Messages.AFKCHECKTITLE.getMessage()), + miniMessage.deserialize(Messages.AFKCHECKSUBTITLE.getMessage()))); if(sender instanceof Player) { Player player = (Player) sender; String cmd = "msg " + args[0] + " " + Messages.AFKCHECKMESSAGE.getMessage(); diff --git a/src/main/java/com/alttd/afkdectector/command/AFKListCommand.java b/src/main/java/com/alttd/afkdectector/command/AFKListCommand.java index 5e510bb..a47e172 100755 --- a/src/main/java/com/alttd/afkdectector/command/AFKListCommand.java +++ b/src/main/java/com/alttd/afkdectector/command/AFKListCommand.java @@ -5,9 +5,9 @@ import com.alttd.afkdectector.afkplayer.AFKPlayer; import com.alttd.afkdectector.config.Config; import com.alttd.afkdectector.config.Messages; import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.minimessage.MiniMessage; -import net.kyori.adventure.text.minimessage.Template; +import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; +import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; @@ -28,24 +28,23 @@ public class AFKListCommand implements CommandExecutor, TabCompleter { public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { int afkplayers = 0; Component message = Component.empty(); - MiniMessage miniMessage = MiniMessage.get(); + MiniMessage miniMessage = MiniMessage.miniMessage(); for (AFKPlayer afkplayer : plugin.players.values()) { long standingTime = afkplayer.getstandingTime(); if(System.currentTimeMillis() - standingTime > Config.TOGGLETIME * 60 * 1000) { afkplayers += 1; message = message.append(Component.newline()); - List