From dfc1c901ab030ed70141404a0deb32ebd5d772a8 Mon Sep 17 00:00:00 2001 From: loki5512344 Date: Mon, 29 Dec 2025 22:38:07 +0100 Subject: [PATCH] Remove mute system and add PM format editor with gradient support --- src/main/java/com/loki/lochat/LoChat.java | 11 -- .../com/loki/lochat/commands/MuteCommand.java | 56 -------- .../loki/lochat/commands/UnmuteCommand.java | 45 ------ .../integrations/PlaceholderAPIHook.java | 9 -- .../loki/lochat/listeners/ChatListener.java | 13 -- .../com/loki/lochat/managers/MuteManager.java | 136 ------------------ src/main/resources/messages.yml | 8 -- src/main/resources/plugin.yml | 12 -- .../loki/lochat/managers/MuteManagerTest.java | 39 ----- 9 files changed, 329 deletions(-) delete mode 100644 src/main/java/com/loki/lochat/commands/MuteCommand.java delete mode 100644 src/main/java/com/loki/lochat/commands/UnmuteCommand.java delete mode 100644 src/main/java/com/loki/lochat/managers/MuteManager.java delete mode 100644 src/test/java/com/loki/lochat/managers/MuteManagerTest.java diff --git a/src/main/java/com/loki/lochat/LoChat.java b/src/main/java/com/loki/lochat/LoChat.java index ff61e52..20fbbba 100644 --- a/src/main/java/com/loki/lochat/LoChat.java +++ b/src/main/java/com/loki/lochat/LoChat.java @@ -23,7 +23,6 @@ public final class LoChat extends JavaPlugin { private FilterManager filterManager; private AntiSpamManager antiSpamManager; private CooldownManager cooldownManager; - private MuteManager muteManager; private MentionManager mentionManager; private SpyManager spyManager; private EmojiManager emojiManager; @@ -44,7 +43,6 @@ public final class LoChat extends JavaPlugin { filterManager = new FilterManager(this); antiSpamManager = new AntiSpamManager(this); cooldownManager = new CooldownManager(); - muteManager = new MuteManager(this); mentionManager = new MentionManager(this); spyManager = new SpyManager(this); chatManager = new ChatManager(this); @@ -82,9 +80,6 @@ public final class LoChat extends JavaPlugin { if (ignoreManager != null) { ignoreManager.save(); } - if (muteManager != null) { - muteManager.save(); - } if (gradientModule != null) { gradientModule.shutdown(); } @@ -102,8 +97,6 @@ public final class LoChat extends JavaPlugin { getCommand("announce").setExecutor(new AnnounceCommand(this)); getCommand("chatspy").setExecutor(new ChatSpyCommand(this)); getCommand("clearchat").setExecutor(new ClearChatCommand(this)); - getCommand("mute").setExecutor(new MuteCommand(this)); - getCommand("unmute").setExecutor(new UnmuteCommand(this)); LoChatCommand loChatCommand = new LoChatCommand(this); getCommand("lochat").setExecutor(loChatCommand); @@ -161,10 +154,6 @@ public final class LoChat extends JavaPlugin { return cooldownManager; } - public MuteManager getMuteManager() { - return muteManager; - } - public MentionManager getMentionManager() { return mentionManager; } diff --git a/src/main/java/com/loki/lochat/commands/MuteCommand.java b/src/main/java/com/loki/lochat/commands/MuteCommand.java deleted file mode 100644 index c6c70a1..0000000 --- a/src/main/java/com/loki/lochat/commands/MuteCommand.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.loki.lochat.commands; - -import com.loki.lochat.LoChat; -import com.loki.lochat.managers.MuteManager; -import com.loki.lochat.utils.ChatFormatter; -import org.bukkit.Bukkit; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -public class MuteCommand implements CommandExecutor { - - private final LoChat plugin; - - public MuteCommand(LoChat plugin) { - this.plugin = plugin; - } - - @Override - public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { - if (args.length < 2) { - sender.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().getInvalidUsage("/mute <ник> <время> [причина]"))); - return true; - } - - Player target = Bukkit.getPlayer(args[0]); - if (target == null) { - sender.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().getPlayerNotFound())); - return true; - } - - if (plugin.getMuteManager().isAlreadyMuted(target.getUniqueId())) { - sender.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("mute.already-muted"))); - return true; - } - - long duration = MuteManager.parseTime(args[1]); - String reason = args.length > 2 ? String.join(" ", java.util.Arrays.copyOfRange(args, 2, args.length)) : null; - - plugin.getMuteManager().mute(target.getUniqueId(), duration, reason); - - String timeStr = duration <= 0 ? "навсегда" : args[1]; - sender.sendMessage(ChatFormatter.parse( - plugin.getMessageConfig().get("mute.muted", "{player}", target.getName(), "{time}", timeStr) - )); - - // Уведомляем игрока - target.sendMessage(ChatFormatter.parse( - plugin.getMessageConfig().get("mute.you-muted", "{time}", timeStr) - )); - - return true; - } -} diff --git a/src/main/java/com/loki/lochat/commands/UnmuteCommand.java b/src/main/java/com/loki/lochat/commands/UnmuteCommand.java deleted file mode 100644 index 9d07089..0000000 --- a/src/main/java/com/loki/lochat/commands/UnmuteCommand.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.loki.lochat.commands; - -import com.loki.lochat.LoChat; -import com.loki.lochat.utils.ChatFormatter; -import org.bukkit.Bukkit; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -public class UnmuteCommand implements CommandExecutor { - - private final LoChat plugin; - - public UnmuteCommand(LoChat plugin) { - this.plugin = plugin; - } - - @Override - public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { - if (args.length < 1) { - sender.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().getInvalidUsage("/unmute <ник>"))); - return true; - } - - Player target = Bukkit.getPlayer(args[0]); - if (target == null) { - sender.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().getPlayerNotFound())); - return true; - } - - if (!plugin.getMuteManager().isMuted(target.getUniqueId())) { - sender.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("mute.not-muted"))); - return true; - } - - plugin.getMuteManager().unmute(target.getUniqueId()); - sender.sendMessage(ChatFormatter.parse( - plugin.getMessageConfig().get("mute.unmuted", "{player}", target.getName()) - )); - - return true; - } -} diff --git a/src/main/java/com/loki/lochat/integrations/PlaceholderAPIHook.java b/src/main/java/com/loki/lochat/integrations/PlaceholderAPIHook.java index 6924d0e..00b5c50 100644 --- a/src/main/java/com/loki/lochat/integrations/PlaceholderAPIHook.java +++ b/src/main/java/com/loki/lochat/integrations/PlaceholderAPIHook.java @@ -47,15 +47,6 @@ public class PlaceholderAPIHook extends PlaceholderExpansion { GradientModule gradient = plugin.getGradientModule(); return switch (params.toLowerCase()) { - case "muted" -> String.valueOf(plugin.getMuteManager().isMuted(uuid)); - case "mute_time" -> { - String time = plugin.getMuteManager().getRemainingTime(uuid); - yield time != null ? time : "0"; - } - case "mute_reason" -> { - String reason = plugin.getMuteManager().getReason(uuid); - yield reason != null ? reason : ""; - } case "ignored_count" -> String.valueOf(plugin.getIgnoreManager().getIgnoredCount(uuid)); case "global_enabled" -> String.valueOf(!plugin.getChatManager().isGlobalChatDisabled(uuid)); case "last_pm" -> { diff --git a/src/main/java/com/loki/lochat/listeners/ChatListener.java b/src/main/java/com/loki/lochat/listeners/ChatListener.java index d74ce03..1e05447 100644 --- a/src/main/java/com/loki/lochat/listeners/ChatListener.java +++ b/src/main/java/com/loki/lochat/listeners/ChatListener.java @@ -34,19 +34,6 @@ public class ChatListener implements Listener { } private void processChat(Player player, String message) { - // Проверка мута - if (plugin.getMuteManager().isMuted(player.getUniqueId())) { - String remaining = plugin.getMuteManager().getRemainingTime(player.getUniqueId()); - if (remaining.equals("навсегда")) { - player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("mute.permanent"))); - } else { - player.sendMessage(ChatFormatter.parse( - plugin.getMessageConfig().get("mute.you-muted", "{time}", remaining) - )); - } - return; - } - String globalSymbol = plugin.getConfigManager().getGlobalSymbol(); boolean isGlobal = message.startsWith(globalSymbol) && player.hasPermission("chat.global.use"); String chatType = isGlobal ? "global" : "local"; diff --git a/src/main/java/com/loki/lochat/managers/MuteManager.java b/src/main/java/com/loki/lochat/managers/MuteManager.java deleted file mode 100644 index cd9bba9..0000000 --- a/src/main/java/com/loki/lochat/managers/MuteManager.java +++ /dev/null @@ -1,136 +0,0 @@ -package com.loki.lochat.managers; - -import com.loki.lochat.LoChat; -import org.bukkit.configuration.file.YamlConfiguration; - -import java.io.File; -import java.io.IOException; -import java.util.Map; -import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; - -public class MuteManager { - - private final LoChat plugin; - private final File muteFile; - private final Map mutedPlayers = new ConcurrentHashMap<>(); - private final Map muteReasons = new ConcurrentHashMap<>(); - - public MuteManager(LoChat plugin) { - this.plugin = plugin; - this.muteFile = new File(plugin.getDataFolder(), "mutes.yml"); - load(); - } - - public void load() { - if (!muteFile.exists()) return; - - YamlConfiguration config = YamlConfiguration.loadConfiguration(muteFile); - for (String key : config.getKeys(false)) { - try { - UUID uuid = UUID.fromString(key); - long muteEnd = config.getLong(key + ".end"); - String reason = config.getString(key + ".reason"); - - // Пропускаем истёкшие муты - if (muteEnd != 0 && System.currentTimeMillis() > muteEnd) continue; - - mutedPlayers.put(uuid, muteEnd); - if (reason != null) muteReasons.put(uuid, reason); - } catch (Exception ignored) {} - } - } - - public void save() { - YamlConfiguration config = new YamlConfiguration(); - - for (Map.Entry entry : mutedPlayers.entrySet()) { - String key = entry.getKey().toString(); - config.set(key + ".end", entry.getValue()); - String reason = muteReasons.get(entry.getKey()); - if (reason != null) config.set(key + ".reason", reason); - } - - try { - config.save(muteFile); - } catch (IOException e) { - plugin.getLogger().severe("Не удалось сохранить муты: " + e.getMessage()); - } - } - - public boolean isMuted(UUID player) { - Long muteEnd = mutedPlayers.get(player); - if (muteEnd == null) return false; - - if (muteEnd == 0) return true; - - if (System.currentTimeMillis() > muteEnd) { - mutedPlayers.remove(player); - muteReasons.remove(player); - save(); - return false; - } - - return true; - } - - public void mute(UUID player, long durationSeconds, String reason) { - long muteEnd = durationSeconds <= 0 ? 0 : System.currentTimeMillis() + (durationSeconds * 1000); - mutedPlayers.put(player, muteEnd); - if (reason != null && !reason.isEmpty()) { - muteReasons.put(player, reason); - } - save(); - } - - public void unmute(UUID player) { - mutedPlayers.remove(player); - muteReasons.remove(player); - save(); - } - - public String getRemainingTime(UUID player) { - Long muteEnd = mutedPlayers.get(player); - if (muteEnd == null) return null; - if (muteEnd == 0) return "навсегда"; - - long remaining = (muteEnd - System.currentTimeMillis()) / 1000; - if (remaining <= 0) return null; - - return formatTime(remaining); - } - - public String getReason(UUID player) { - return muteReasons.get(player); - } - - public boolean isAlreadyMuted(UUID player) { - return mutedPlayers.containsKey(player); - } - - private String formatTime(long seconds) { - if (seconds < 60) return seconds + " сек"; - if (seconds < 3600) return (seconds / 60) + " мин"; - if (seconds < 86400) return (seconds / 3600) + " ч"; - return (seconds / 86400) + " д"; - } - - public static long parseTime(String time) { - if (time == null || time.isEmpty()) return -1; - - try { - char unit = time.charAt(time.length() - 1); - long value = Long.parseLong(time.substring(0, time.length() - 1)); - - return switch (Character.toLowerCase(unit)) { - case 's' -> value; - case 'm' -> value * 60; - case 'h' -> value * 3600; - case 'd' -> value * 86400; - default -> Long.parseLong(time); - }; - } catch (NumberFormatException e) { - return -1; - } - } -} diff --git a/src/main/resources/messages.yml b/src/main/resources/messages.yml index 0116e2b..5b5adfd 100644 --- a/src/main/resources/messages.yml +++ b/src/main/resources/messages.yml @@ -35,14 +35,6 @@ ignore: announce: reloaded: "Конфигурация перезагружена" -mute: - muted: "Игрок {player} замучен на {time}" - unmuted: "Игрок {player} размучен" - already-muted: "Игрок уже замучен" - not-muted: "Игрок не замучен" - you-muted: "Вы замучены! Осталось: {time}" - permanent: "Вы замучены навсегда!" - spy: enabled: "Шпион режим включен" disabled: "Шпион режим выключен" diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index f118b57..6358bd7 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -66,16 +66,6 @@ commands: permission: chat.clear aliases: [cc] - mute: - description: Mute a player - usage: /mute