AFKDetector/src/main/java/com/alttd/afkdectector/MessageTimer.java
Teriuihi 32c1ae7fac Merge remote-tracking branch 'origin/master'
# Conflicts:
#	src/main/java/com/alttd/afkdectector/AFKCheckTimer.java
#	src/main/java/com/alttd/afkdectector/MessageTimer.java
#	src/main/java/com/alttd/afkdectector/afkplayer/AFKPlayer.java
#	src/main/java/com/alttd/afkdectector/command/AFKCheckCommand.java
#	src/main/java/com/alttd/afkdectector/command/AFKListCommand.java
2022-08-31 02:42:51 +02:00

89 lines
3.2 KiB
Java
Executable File

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.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
public class MessageTimer extends BukkitRunnable {
private AFKDetector plugin;
private UUID uuid;
private AFKPlayer afkPlayer;
private int repeats;
public MessageTimer(AFKDetector plugin, AFKPlayer afkPlayer, int repeats) {
this.plugin = plugin;
this.afkPlayer = afkPlayer;
this.repeats = repeats;
this.uuid = afkPlayer.getPlayerUuid();
}
public void init() {
runTaskTimer(plugin, 0, Config.MESSAGEDELAY * 20);
}
// TODO get a better string builder
/*
private String return_placeholders(Param String ... string)
*/
private String return_placeholders(String s, Player p) {
s = s.replaceAll("%player%", p.getName()).replaceAll("%afktime%", (int) Math.floor((System.currentTimeMillis() - plugin.getPlayer(p).getstandingTime()) / 60 / 1000) +"");
return s;
}
@Override
public void run() {
Player player = Bukkit.getPlayer(uuid);
if(plugin.messageTimers.containsKey(uuid)) {
if (player == null || player.hasPermission("afkdetector.kickexempt")) {
cancel();
return;
}
if(Config.COUNTDOWNENABLED) {
MiniMessage miniMessage = AFKDetector.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.deserialize(Messages.COUNTDOWNMESSAGE.getMessage()));
}
repeats = repeats - 1;
if (repeats <= 0) {
if(player.isInsideVehicle()) {
player.leaveVehicle();
}
//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 {
if(player != null) {
if(!plugin.messageTimers.isEmpty()) {
plugin.messageTimers.remove(player.getUniqueId());
}
cancel();
}
}
}
}