2019-04-04 22:29:37 +02:00
|
|
|
package com.songoda.ultimatemoderation.tasks;
|
|
|
|
|
2019-10-19 19:29:46 +02:00
|
|
|
import com.songoda.core.compatibility.ServerVersion;
|
2019-04-04 22:29:37 +02:00
|
|
|
import com.songoda.ultimatemoderation.UltimateModeration;
|
|
|
|
import com.songoda.ultimatemoderation.listeners.ChatListener;
|
2019-10-19 19:29:46 +02:00
|
|
|
import com.songoda.ultimatemoderation.settings.Settings;
|
2019-04-04 22:29:37 +02:00
|
|
|
import com.songoda.ultimatemoderation.utils.Methods;
|
|
|
|
import net.md_5.bungee.api.ChatMessageType;
|
|
|
|
import net.md_5.bungee.api.chat.TextComponent;
|
|
|
|
import org.bukkit.Bukkit;
|
|
|
|
import org.bukkit.scheduler.BukkitRunnable;
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
public class SlowModeTask extends BukkitRunnable {
|
|
|
|
|
|
|
|
private static SlowModeTask instance;
|
|
|
|
private static UltimateModeration plugin;
|
|
|
|
|
|
|
|
private SlowModeTask(UltimateModeration plug) {
|
|
|
|
plugin = plug;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static SlowModeTask startTask(UltimateModeration plug) {
|
|
|
|
plugin = plug;
|
|
|
|
if (instance == null) {
|
|
|
|
instance = new SlowModeTask(plugin);
|
|
|
|
instance.runTaskTimer(plugin, 0, 1);
|
|
|
|
}
|
|
|
|
|
|
|
|
return instance;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void run() {
|
2019-10-19 19:29:46 +02:00
|
|
|
long slowmode = ChatListener.getSlowModeOverride() == 0 ? Methods.parseTime(Settings.SLOW_MODE.getString()) : ChatListener.getSlowModeOverride();
|
2019-04-04 22:29:37 +02:00
|
|
|
|
|
|
|
if (slowmode == 0) return;
|
|
|
|
|
|
|
|
List<ChatListener.Log> logs = ChatListener.getLogs();
|
|
|
|
|
|
|
|
Bukkit.getOnlinePlayers().forEach(player -> {
|
|
|
|
if (player.hasPermission("um.slowmode.bypass")) return;
|
|
|
|
|
|
|
|
List<ChatListener.Log> chats = logs.stream().filter(log -> log.getPlayer() == player.getUniqueId()).collect(Collectors.toList());
|
|
|
|
if (chats.size() == 0) return;
|
|
|
|
ChatListener.Log last = chats.get(chats.size() - 1);
|
|
|
|
|
|
|
|
if ((System.currentTimeMillis() - last.getSent()) < (slowmode + 1000)) {
|
2019-10-19 19:29:46 +02:00
|
|
|
int remaining = (int) ((slowmode / 1000) - (System.currentTimeMillis() - last.getSent()) / 1000);
|
|
|
|
if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_9))
|
|
|
|
player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(remaining == 0
|
|
|
|
? plugin.getLocale().getMessage("event.slowmode.done").getMessage()
|
|
|
|
: plugin.getLocale().getMessage("event.slowmode.wait").processPlaceholder("delay", remaining).getMessage()));
|
2019-04-04 22:29:37 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|