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 templates = new ArrayList<>(List.of(
- Template.of("player", afkplayer.getPlayerName()),
- Template.of("afktime", (System.currentTimeMillis() - standingTime) / 1000 + "")
- ));
- Component userinfo = miniMessage.parse(Messages.AFK_LIST_ENTRY.getMessage(), templates);
+ TagResolver templates = TagResolver.resolver(
+ Placeholder.unparsed("player", afkplayer.getPlayerName()),
+ Placeholder.unparsed("afktime", (System.currentTimeMillis() - standingTime) / 1000 + ""));
+ Component userinfo = miniMessage.deserialize(Messages.AFK_LIST_ENTRY.getMessage(), templates);
message = message.append(userinfo);
}
}
- List templates = new ArrayList<>(List.of(
- Template.of("afkplayers", Integer.toString(afkplayers))
- ));
- Component component = miniMessage.parse(Messages.AFK_LIST.getMessage(), templates);
+ TagResolver templates = TagResolver.resolver(
+ Placeholder.unparsed("afkplayers", Integer.toString(afkplayers))
+ );
+ Component component = miniMessage.deserialize(Messages.AFK_LIST.getMessage(), templates);
sender.sendMessage(component.append(message));
return true;
}
diff --git a/src/main/java/com/alttd/afkdectector/command/ReloadCommand.java b/src/main/java/com/alttd/afkdectector/command/ReloadCommand.java
index 338cdcf..d9ca3ce 100755
--- a/src/main/java/com/alttd/afkdectector/command/ReloadCommand.java
+++ b/src/main/java/com/alttd/afkdectector/command/ReloadCommand.java
@@ -1,18 +1,11 @@
package com.alttd.afkdectector.command;
import com.alttd.afkdectector.AFKDetector;
-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.Template;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
-import java.util.ArrayList;
import java.util.List;
public class ReloadCommand implements CommandExecutor, TabCompleter {
diff --git a/src/main/java/com/alttd/afkdectector/config/Config.java b/src/main/java/com/alttd/afkdectector/config/Config.java
index 0602adb..3943ca9 100644
--- a/src/main/java/com/alttd/afkdectector/config/Config.java
+++ b/src/main/java/com/alttd/afkdectector/config/Config.java
@@ -33,6 +33,8 @@ public class Config extends AbstractConfig {
public static boolean SERVERFULL = false;
public static int PLAYERLIMIT = Math.round(Bukkit.getMaxPlayers() * 90 / 100);
public static int COMMANDCOOLDOWWN = 60;
+ public static boolean AFKTOGGLEMESSAGES = true;
+ public static boolean NOTIFYSTAFFONAFKKIC = true;
private static void playerSettings() {
SLEEPIGNORE = config.getBoolean("player.sleep", SLEEPIGNORE);
RADIUS = config.getInt("player.radius", RADIUS);
@@ -41,6 +43,8 @@ public class Config extends AbstractConfig {
MAXAFKTIME = config.getInt("player.maxafk-time", 5);
SERVERFULL = config.getBoolean("player.serverfull" ,false);
COMMANDCOOLDOWWN = config.getInt("player.commandcooldown", COMMANDCOOLDOWWN);
+ AFKTOGGLEMESSAGES = config.getBoolean("player.afk-toggle-messages", AFKTOGGLEMESSAGES);
+ NOTIFYSTAFFONAFKKIC = config.getBoolean("player.notify-staff-on-afk-kick", NOTIFYSTAFFONAFKKIC);
}
public static boolean COUNTDOWNENABLED = false;
diff --git a/src/main/java/com/alttd/afkdectector/config/Messages.java b/src/main/java/com/alttd/afkdectector/config/Messages.java
index 2f645be..9779ddd 100644
--- a/src/main/java/com/alttd/afkdectector/config/Messages.java
+++ b/src/main/java/com/alttd/afkdectector/config/Messages.java
@@ -18,7 +18,8 @@ public enum Messages {
AFKTOGGLEOFF("afk-toggle-off", " is no longer afk."),
AFKCHECKTITLE("afkcheck-title", "AFK CHECK"),
AFKCHECKSUBTITLE("afkcheck-subtitle", "Please respond to the dm from staff!"),
- AFKCHECKMESSAGE("afkcheck-message", "Hey, since you're near a farm and not moving. I'm making sure you aren't afk. Please respond to me if you're not AFK.");
+ AFKCHECKMESSAGE("afkcheck-message", "Hey, since you're near a farm and not moving. I'm making sure you aren't afk. Please respond to me if you're not AFK."),
+ AFKICKSTAFFMESSAGE("afkkick-staff-messsge", " got afk kicked after being marked as afk for minutes.");
public final String key;
public String message;