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
This commit is contained in:
parent
b7dd650052
commit
7f49e0f4fe
6
pom.xml
6
pom.xml
|
|
@ -17,8 +17,8 @@
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
<version>3.5.1</version>
|
<version>3.5.1</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
<source>11</source>
|
<source>17</source>
|
||||||
<target>11</target>
|
<target>17</target>
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
|
|
@ -41,7 +41,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.alttd</groupId>
|
<groupId>com.alttd</groupId>
|
||||||
<artifactId>Galaxy-API</artifactId>
|
<artifactId>Galaxy-API</artifactId>
|
||||||
<version>1.18.1-R0.1-SNAPSHOT</version>
|
<version>1.18.2-R0.1-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
|
|
@ -6,9 +6,9 @@ import com.alttd.afkdectector.afkplayer.AFKPlayer;
|
||||||
import com.alttd.afkdectector.config.Config;
|
import com.alttd.afkdectector.config.Config;
|
||||||
import com.alttd.afkdectector.config.Messages;
|
import com.alttd.afkdectector.config.Messages;
|
||||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
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.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
@ -60,14 +60,15 @@ public class AFKCheckTimer extends BukkitRunnable{
|
||||||
player.setSleepingIgnored(true);
|
player.setSleepingIgnored(true);
|
||||||
//player.setCanPickupItems(false);
|
//player.setCanPickupItems(false);
|
||||||
plugin.AFKPlayers.addEntry(player.getName());
|
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) {
|
if(System.currentTimeMillis() - standingTime > afkplayer.getafkTime() * 60 * 1000) {
|
||||||
MessageTimer currentTimer = plugin.messageTimers.get(uuid);
|
MessageTimer currentTimer = plugin.messageTimers.get(uuid);
|
||||||
if(currentTimer == null) {
|
if(currentTimer == null) {
|
||||||
currentTimer = new MessageTimer(plugin, uuid, Config.MESSAGEREPEATS);
|
currentTimer = new MessageTimer(plugin, afkplayer, Config.MESSAGEREPEATS);
|
||||||
plugin.messageTimers.put(uuid, currentTimer);
|
plugin.messageTimers.put(uuid, currentTimer);
|
||||||
new MessageTimer(plugin, uuid, Config.MESSAGEREPEATS).init();
|
currentTimer.init();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
MessageTimer currentTimer = plugin.messageTimers.get(uuid);
|
MessageTimer currentTimer = plugin.messageTimers.get(uuid);
|
||||||
|
|
|
||||||
|
|
@ -2,25 +2,30 @@ package com.alttd.afkdectector;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import com.alttd.afkdectector.afkplayer.AFKPlayer;
|
||||||
import com.alttd.afkdectector.config.Config;
|
import com.alttd.afkdectector.config.Config;
|
||||||
import com.alttd.afkdectector.config.Messages;
|
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.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 net.kyori.adventure.title.Title;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
public class MessageTimer extends BukkitRunnable {
|
public class MessageTimer extends BukkitRunnable {
|
||||||
|
|
||||||
private AFKDetector plugin;
|
private AFKDetector plugin;
|
||||||
private UUID uuid = null;
|
private UUID uuid;
|
||||||
|
private AFKPlayer afkPlayer;
|
||||||
private int repeats;
|
private int repeats;
|
||||||
|
|
||||||
public MessageTimer(AFKDetector plugin, UUID uuid, int repeats) {
|
public MessageTimer(AFKDetector plugin, AFKPlayer afkPlayer, int repeats) {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
this.uuid = uuid;
|
this.afkPlayer = afkPlayer;
|
||||||
this.repeats = repeats;
|
this.repeats = repeats;
|
||||||
|
this.uuid = afkPlayer.getPlayerUuid();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void init() {
|
public void init() {
|
||||||
|
|
@ -45,12 +50,12 @@ public class MessageTimer extends BukkitRunnable {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(Config.COUNTDOWNENABLED) {
|
if(Config.COUNTDOWNENABLED) {
|
||||||
MiniMessage miniMessage = MiniMessage.get();
|
MiniMessage miniMessage = MiniMessage.miniMessage();
|
||||||
Title title = Title.title(miniMessage.parse(Messages.COUNTDOWNTITLE1.getMessage()),
|
Title title = Title.title(miniMessage.deserialize(Messages.COUNTDOWNTITLE1.getMessage()),
|
||||||
miniMessage.parse(Messages.COUNTDOWNTITLE2.getMessage()));
|
miniMessage.deserialize(Messages.COUNTDOWNTITLE2.getMessage()));
|
||||||
//Title.Times.of(Config.FADEIN, Config.STAY, Config.STAY);
|
//Title.Times.of(Config.FADEIN, Config.STAY, Config.STAY);
|
||||||
player.showTitle(title);
|
player.showTitle(title);
|
||||||
player.sendMessage(miniMessage.parse(Messages.COUNTDOWNMESSAGE.getMessage()));
|
player.sendMessage(miniMessage.deserialize(Messages.COUNTDOWNMESSAGE.getMessage()));
|
||||||
}
|
}
|
||||||
repeats = repeats - 1;
|
repeats = repeats - 1;
|
||||||
|
|
||||||
|
|
@ -61,6 +66,14 @@ public class MessageTimer extends BukkitRunnable {
|
||||||
//Bukkit.dispatchCommand(Bukkit.getConsoleSender(), plugin.kickCommand.replace("%player%", player.getName()));
|
//Bukkit.dispatchCommand(Bukkit.getConsoleSender(), plugin.kickCommand.replace("%player%", player.getName()));
|
||||||
plugin.messageTimers.remove(player.getUniqueId());
|
plugin.messageTimers.remove(player.getUniqueId());
|
||||||
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), return_placeholders(Config.KICKCOMMAND, player));
|
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();
|
cancel();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,12 @@ package com.alttd.afkdectector.afkplayer;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import com.alttd.afkdectector.config.Config;
|
||||||
import com.alttd.afkdectector.config.Messages;
|
import com.alttd.afkdectector.config.Messages;
|
||||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
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.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
|
@ -68,8 +69,8 @@ public class AFKPlayer {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ResetAFK() {
|
public void ResetAFK() {
|
||||||
if(isafk) {
|
if(isafk && Config.AFKTOGGLEMESSAGES) {
|
||||||
Bukkit.broadcast(MiniMessage.get().parse(Messages.AFKTOGGLEOFF.getMessage(), Template.of("player", playerName)), "afkdetector.notify");
|
Bukkit.broadcast(MiniMessage.miniMessage().deserialize(Messages.AFKTOGGLEOFF.getMessage(), TagResolver.resolver(Placeholder.unparsed("player", playerName))), "afkdetector.notify");
|
||||||
}
|
}
|
||||||
standingTime = System.currentTimeMillis();
|
standingTime = System.currentTimeMillis();
|
||||||
playerToSphereCenter = Bukkit.getPlayer(getPlayerUuid()).getLocation();
|
playerToSphereCenter = Bukkit.getPlayer(getPlayerUuid()).getLocation();
|
||||||
|
|
|
||||||
|
|
@ -36,9 +36,9 @@ public class AFKCheckCommand implements CommandExecutor, TabCompleter {
|
||||||
sender.sendMessage(Component.text(command.getUsage(), NamedTextColor.RED));
|
sender.sendMessage(Component.text(command.getUsage(), NamedTextColor.RED));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
MiniMessage miniMessage = MiniMessage.get();
|
MiniMessage miniMessage = MiniMessage.miniMessage();
|
||||||
target.showTitle(Title.title(miniMessage.parse(Messages.AFKCHECKTITLE.getMessage()),
|
target.showTitle(Title.title(miniMessage.deserialize(Messages.AFKCHECKTITLE.getMessage()),
|
||||||
miniMessage.parse(Messages.AFKCHECKSUBTITLE.getMessage())));
|
miniMessage.deserialize(Messages.AFKCHECKSUBTITLE.getMessage())));
|
||||||
if(sender instanceof Player) {
|
if(sender instanceof Player) {
|
||||||
Player player = (Player) sender;
|
Player player = (Player) sender;
|
||||||
String cmd = "msg " + args[0] + " " + Messages.AFKCHECKMESSAGE.getMessage();
|
String cmd = "msg " + args[0] + " " + Messages.AFKCHECKMESSAGE.getMessage();
|
||||||
|
|
|
||||||
|
|
@ -5,9 +5,9 @@ import com.alttd.afkdectector.afkplayer.AFKPlayer;
|
||||||
import com.alttd.afkdectector.config.Config;
|
import com.alttd.afkdectector.config.Config;
|
||||||
import com.alttd.afkdectector.config.Messages;
|
import com.alttd.afkdectector.config.Messages;
|
||||||
import net.kyori.adventure.text.Component;
|
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.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.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
import org.bukkit.command.CommandExecutor;
|
||||||
import org.bukkit.command.CommandSender;
|
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) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
int afkplayers = 0;
|
int afkplayers = 0;
|
||||||
Component message = Component.empty();
|
Component message = Component.empty();
|
||||||
MiniMessage miniMessage = MiniMessage.get();
|
MiniMessage miniMessage = MiniMessage.miniMessage();
|
||||||
for (AFKPlayer afkplayer : plugin.players.values()) {
|
for (AFKPlayer afkplayer : plugin.players.values()) {
|
||||||
long standingTime = afkplayer.getstandingTime();
|
long standingTime = afkplayer.getstandingTime();
|
||||||
if(System.currentTimeMillis() - standingTime > Config.TOGGLETIME * 60 * 1000) {
|
if(System.currentTimeMillis() - standingTime > Config.TOGGLETIME * 60 * 1000) {
|
||||||
afkplayers += 1;
|
afkplayers += 1;
|
||||||
message = message.append(Component.newline());
|
message = message.append(Component.newline());
|
||||||
List<Template> templates = new ArrayList<>(List.of(
|
TagResolver templates = TagResolver.resolver(
|
||||||
Template.of("player", afkplayer.getPlayerName()),
|
Placeholder.unparsed("player", afkplayer.getPlayerName()),
|
||||||
Template.of("afktime", (System.currentTimeMillis() - standingTime) / 1000 + "")
|
Placeholder.unparsed("afktime", (System.currentTimeMillis() - standingTime) / 1000 + ""));
|
||||||
));
|
Component userinfo = miniMessage.deserialize(Messages.AFK_LIST_ENTRY.getMessage(), templates);
|
||||||
Component userinfo = miniMessage.parse(Messages.AFK_LIST_ENTRY.getMessage(), templates);
|
|
||||||
message = message.append(userinfo);
|
message = message.append(userinfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
List<Template> templates = new ArrayList<>(List.of(
|
TagResolver templates = TagResolver.resolver(
|
||||||
Template.of("afkplayers", Integer.toString(afkplayers))
|
Placeholder.unparsed("afkplayers", Integer.toString(afkplayers))
|
||||||
));
|
);
|
||||||
Component component = miniMessage.parse(Messages.AFK_LIST.getMessage(), templates);
|
Component component = miniMessage.deserialize(Messages.AFK_LIST.getMessage(), templates);
|
||||||
sender.sendMessage(component.append(message));
|
sender.sendMessage(component.append(message));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,11 @@
|
||||||
package com.alttd.afkdectector.command;
|
package com.alttd.afkdectector.command;
|
||||||
|
|
||||||
import com.alttd.afkdectector.AFKDetector;
|
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.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
import org.bukkit.command.CommandExecutor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.command.TabCompleter;
|
import org.bukkit.command.TabCompleter;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class ReloadCommand implements CommandExecutor, TabCompleter {
|
public class ReloadCommand implements CommandExecutor, TabCompleter {
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,8 @@ public class Config extends AbstractConfig {
|
||||||
public static boolean SERVERFULL = false;
|
public static boolean SERVERFULL = false;
|
||||||
public static int PLAYERLIMIT = Math.round(Bukkit.getMaxPlayers() * 90 / 100);
|
public static int PLAYERLIMIT = Math.round(Bukkit.getMaxPlayers() * 90 / 100);
|
||||||
public static int COMMANDCOOLDOWWN = 60;
|
public static int COMMANDCOOLDOWWN = 60;
|
||||||
|
public static boolean AFKTOGGLEMESSAGES = true;
|
||||||
|
public static boolean NOTIFYSTAFFONAFKKIC = true;
|
||||||
private static void playerSettings() {
|
private static void playerSettings() {
|
||||||
SLEEPIGNORE = config.getBoolean("player.sleep", SLEEPIGNORE);
|
SLEEPIGNORE = config.getBoolean("player.sleep", SLEEPIGNORE);
|
||||||
RADIUS = config.getInt("player.radius", RADIUS);
|
RADIUS = config.getInt("player.radius", RADIUS);
|
||||||
|
|
@ -41,6 +43,8 @@ public class Config extends AbstractConfig {
|
||||||
MAXAFKTIME = config.getInt("player.maxafk-time", 5);
|
MAXAFKTIME = config.getInt("player.maxafk-time", 5);
|
||||||
SERVERFULL = config.getBoolean("player.serverfull" ,false);
|
SERVERFULL = config.getBoolean("player.serverfull" ,false);
|
||||||
COMMANDCOOLDOWWN = config.getInt("player.commandcooldown", COMMANDCOOLDOWWN);
|
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;
|
public static boolean COUNTDOWNENABLED = false;
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,8 @@ public enum Messages {
|
||||||
AFKTOGGLEOFF("afk-toggle-off", "<teal><player> is no longer afk."),
|
AFKTOGGLEOFF("afk-toggle-off", "<teal><player> is no longer afk."),
|
||||||
AFKCHECKTITLE("afkcheck-title", "AFK CHECK"),
|
AFKCHECKTITLE("afkcheck-title", "AFK CHECK"),
|
||||||
AFKCHECKSUBTITLE("afkcheck-subtitle", "Please respond to the dm from staff!"),
|
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", "<gold><player> got afk kicked after being marked as afk for <afk_time> minutes.");
|
||||||
|
|
||||||
public final String key;
|
public final String key;
|
||||||
public String message;
|
public String message;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user