diff --git a/multichat/dependency-reduced-pom.xml b/multichat/dependency-reduced-pom.xml index ccbb27af..b7444e32 100644 --- a/multichat/dependency-reduced-pom.xml +++ b/multichat/dependency-reduced-pom.xml @@ -299,5 +299,9 @@ + + 1.8 + UTF-8 + diff --git a/multichat/pom.xml b/multichat/pom.xml index b559bdf0..3ae1d0bb 100644 --- a/multichat/pom.xml +++ b/multichat/pom.xml @@ -7,6 +7,11 @@ multichat 1.10 + + 1.8 + UTF-8 + + diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/Announcements.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/Announcements.java index e329c13b..f09e9074 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/Announcements.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/Announcements.java @@ -1,16 +1,18 @@ package xyz.olivermartin.multichat.bungee; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.TimeUnit; - import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.scheduler.ScheduledTask; import xyz.olivermartin.multichat.bungee.events.PostBroadcastEvent; +import xyz.olivermartin.multichat.common.MessageType; import xyz.olivermartin.multichat.common.MultiChatUtil; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; import xyz.olivermartin.multichat.proxy.common.ProxyJsonUtils; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; + +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.TimeUnit; /** * Announcements Management @@ -36,12 +38,12 @@ public static boolean startAnnouncement(final String name, Integer minutes) { public void run() { String message = announcements.get(name.toLowerCase()); - message = ChatControl.applyChatRules(message, "announcements", "").get(); + message = ChatControl.applyChatRules(null, message, MessageType.ANNOUNCEMENTS).get(); message = MultiChatUtil.translateColorCodes(message); for (ProxiedPlayer onlineplayer : ProxyServer.getInstance().getPlayers()) { - if (MultiChat.legacyServers.contains(onlineplayer.getServer().getInfo().getName())) { + if (ProxyConfigs.CONFIG.isLegacyServer(onlineplayer.getServer().getInfo().getName())) { onlineplayer.sendMessage(ProxyJsonUtils.parseMessage(MultiChatUtil.approximateRGBColorCodes(message))); } else { onlineplayer.sendMessage(ProxyJsonUtils.parseMessage(message)); @@ -136,12 +138,12 @@ public static void playAnnouncement(String name) { String message = announcements.get(name.toLowerCase()); - message = ChatControl.applyChatRules(message, "announcements", "").get(); + message = ChatControl.applyChatRules(null, message, MessageType.ANNOUNCEMENTS).get(); message = MultiChatUtil.translateColorCodes(message); for (ProxiedPlayer onlineplayer : ProxyServer.getInstance().getPlayers()) { - if (MultiChat.legacyServers.contains(onlineplayer.getServer().getInfo().getName())) { + if (ProxyConfigs.CONFIG.isLegacyServer(onlineplayer.getServer().getInfo().getName())) { onlineplayer.sendMessage(ProxyJsonUtils.parseMessage(MultiChatUtil.approximateRGBColorCodes(message))); } else { onlineplayer.sendMessage(ProxyJsonUtils.parseMessage(message)); diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/Bulletins.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/Bulletins.java index e641e715..4daf3ee4 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/Bulletins.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/Bulletins.java @@ -1,16 +1,18 @@ package xyz.olivermartin.multichat.bungee; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.concurrent.TimeUnit; - import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.scheduler.ScheduledTask; import xyz.olivermartin.multichat.bungee.events.PostBroadcastEvent; +import xyz.olivermartin.multichat.common.MessageType; import xyz.olivermartin.multichat.common.MultiChatUtil; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; import xyz.olivermartin.multichat.proxy.common.ProxyJsonUtils; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.concurrent.TimeUnit; /** * Bulletins Management @@ -109,12 +111,12 @@ public void run() { message = bulletin.get(nextBulletin); - message = ChatControl.applyChatRules(message, "bulletins", "").get(); + message = ChatControl.applyChatRules(null, message, MessageType.BULLETINS).get(); message = MultiChatUtil.translateColorCodes(message); for (ProxiedPlayer onlineplayer : ProxyServer.getInstance().getPlayers()) { - if (MultiChat.legacyServers.contains(onlineplayer.getServer().getInfo().getName())) { + if (ProxyConfigs.CONFIG.isLegacyServer(onlineplayer.getServer().getInfo().getName())) { onlineplayer.sendMessage(ProxyJsonUtils.parseMessage(MultiChatUtil.approximateRGBColorCodes(message))); } else { onlineplayer.sendMessage(ProxyJsonUtils.parseMessage(message)); diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/CastControl.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/CastControl.java index ba6c6be4..deb97507 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/CastControl.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/CastControl.java @@ -4,6 +4,7 @@ import java.util.Map; import net.md_5.bungee.api.CommandSender; +import xyz.olivermartin.multichat.common.MessageType; import xyz.olivermartin.multichat.proxy.common.channels.local.LocalChannel; import xyz.olivermartin.multichat.proxy.common.channels.proxy.ProxyChannel; @@ -19,12 +20,12 @@ public class CastControl { public static Map castList = new HashMap(); public static void sendCast(String castName, String castMessage, ProxyChannel channel, CommandSender sender) { - castMessage = ChatControl.applyChatRules(castMessage, "casts", "").get(); + castMessage = ChatControl.applyChatRules(sender, castMessage, MessageType.CASTS).get(); channel.broadcastRawMessage(sender, castList.get(castName.toLowerCase()) + " " + castMessage); } public static void sendCast(String castName, String castMessage, LocalChannel channel, String server, CommandSender sender) { - castMessage = ChatControl.applyChatRules(castMessage, "casts", "").get(); + castMessage = ChatControl.applyChatRules(sender, castMessage, MessageType.CASTS).get(); channel.broadcastRawMessage(sender, server, castList.get(castName.toLowerCase()) + " " + castMessage); } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/ChatControl.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/ChatControl.java index 8b6e78fd..cf8ae1d6 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/ChatControl.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/ChatControl.java @@ -2,7 +2,6 @@ import java.util.HashMap; import java.util.HashSet; -import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; @@ -12,26 +11,24 @@ import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.config.ServerInfo; import net.md_5.bungee.api.connection.ProxiedPlayer; -import net.md_5.bungee.config.Configuration; +import xyz.olivermartin.multichat.common.MessageType; import xyz.olivermartin.multichat.proxy.common.ProxyLocalCommunicationManager; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; +import xyz.olivermartin.multichat.proxy.common.config.ProxyChatControl; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; +// TODO: Refactor ChatControl some more at some point public class ChatControl { static { - mutedPlayers = new HashSet(); - ignoreMap = new HashMap>(); - spamMap = new HashMap(); + mutedPlayers = new HashSet<>(); + ignoreMap = new HashMap<>(); + spamMap = new HashMap<>(); } private static Set mutedPlayers; private static Map> ignoreMap; private static Map spamMap; - public static boolean controlLinks = false; - public static String linkRegex = "((https|http):\\/\\/)?(www\\.)?([-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.)+[a-zA-Z]{2,4}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)"; - public static String linkMessage = "[LINK REMOVED]"; - public static Set getMutedPlayers() { return mutedPlayers; } @@ -49,125 +46,26 @@ public static void setIgnoreMap(Map> ignoreMap) { } /** - * + * @param commandSender the sender that rules should be applied for or null * @param input The input message - * @param chatType The type of chat the message was sent in + * @param messageType the type of message to be checked against * @return The message to send with rules applied, or empty if the chat message should be cancelled */ - @SuppressWarnings("rawtypes") - public static OptionalapplyChatRules(String input, String chatType, String playerName) { - - Configuration config = ConfigManager.getInstance().getHandler(ConfigFile.CHAT_CONTROL).getConfig(); - boolean cancel = false; - - ProxiedPlayer pp = ProxyServer.getInstance().getPlayer(playerName); - - if (config.contains("apply_rules_to." + chatType)) { - if (config.getBoolean("apply_rules_to." + chatType)) { - - List rules = config.getList("regex_rules"); - - if (rules != null) { - for (Object rule : rules) { - Map dictionary = (Map) rule; - - if (pp != null) { - if (dictionary.containsKey("permission")) { - String permission = String.valueOf(dictionary.get("permission")); - if (permission.startsWith("!")) { - permission = permission.substring(1); - if (pp.hasPermission(permission)) continue; - } else { - if (!pp.hasPermission(permission)) continue; - } - } - } - - input = input.replaceAll(String.valueOf( dictionary.get("look_for")), String.valueOf(dictionary.get("replace_with") )); - } - } - - } - } - - if (config.contains("apply_actions_to." + chatType)) { - if (config.getBoolean("apply_actions_to." + chatType)) { - - List actions = config.getList("regex_actions"); - - if (actions != null) { - for (Object action : actions) { - Map dictionary = (Map) action; - - if (input.matches(String.valueOf(dictionary.get("look_for")))) { - - if (pp != null) { - if (dictionary.containsKey("permission")) { - String permission = String.valueOf(dictionary.get("permission")); - if (permission.startsWith("!")) { - permission = permission.substring(1); - if (pp.hasPermission(permission)) continue; - } else { - if (!pp.hasPermission(permission)) continue; - } - } - } - - if ((Boolean) dictionary.get("cancel")) { - cancel = true; - } - - if ((Boolean) dictionary.get("spigot")) { - - ServerInfo server = ProxyServer.getInstance().getPlayer(playerName).getServer().getInfo(); - ProxyLocalCommunicationManager.sendCommandMessage(String.valueOf(dictionary.get("command")).replaceAll("%PLAYER%", playerName), server); - - } else { - ProxyServer.getInstance().getPluginManager().dispatchCommand(ProxyServer.getInstance().getConsole(), String.valueOf(dictionary.get("command")).replaceAll("%PLAYER%", playerName)); - } - - } - - } - } - - } - } - - if (cancel) { + public static Optional applyChatRules(CommandSender commandSender, String input, MessageType messageType) { + input = ProxyConfigs.CHAT_CONTROL.applyRegexRules(commandSender, input, messageType); + if (commandSender != null && ProxyConfigs.CHAT_CONTROL.regexActionsCancel(commandSender, input, messageType)) return Optional.empty(); - } else { - return Optional.of(input); - } - + return Optional.of(input); } - public static boolean isMuted(UUID uuid, String chatType) { - - Configuration config = ConfigManager.getInstance().getHandler(ConfigFile.CHAT_CONTROL).getConfig(); - - if (!config.getBoolean("mute")) return false; - - if (!mutedPlayers.contains(uuid)) return false; - - if (!config.contains("apply_mute_to." + chatType)) return false; - - if (!config.getBoolean("apply_mute_to." + chatType)) return false; - - return true; - + public static boolean isMuted(UUID uuid, MessageType messageType) { + return ProxyConfigs.CHAT_CONTROL.isMute() + && mutedPlayers.contains(uuid) + && ProxyConfigs.CHAT_CONTROL.applyMuteTo(messageType); } public static boolean isMutedAnywhere(UUID uuid) { - - Configuration config = ConfigManager.getInstance().getHandler(ConfigFile.CHAT_CONTROL).getConfig(); - - if (!config.getBoolean("mute")) return false; - - if (!mutedPlayers.contains(uuid)) return false; - - return true; - + return ProxyConfigs.CHAT_CONTROL.isMute() && mutedPlayers.contains(uuid); } public static void mute(UUID uuid) { @@ -188,25 +86,8 @@ public static void unmute(UUID uuid) { * @param target The player who will see the message * @return TRUE if the target ignores the sender and the message should not be sent, FALSE otherwise */ - public static boolean ignores(UUID sender, UUID target, String chatType) { - - Configuration config = ConfigManager.getInstance().getHandler(ConfigFile.CHAT_CONTROL).getConfig(); - - if (!ignoreMap.containsKey(target)) return false; - - Set ignoredPlayers = ignoreMap.get(target); - - if (ignoredPlayers == null) return false; - - if (!ignoredPlayers.contains(sender)) return false; - - if (!config.contains("apply_ignore_to." + chatType)) return false; - - if (!config.getBoolean("apply_ignore_to." + chatType)) return false; - - - return true; - + public static boolean ignores(UUID sender, UUID target, MessageType messageType) { + return ignoresAnywhere(sender, target) && ProxyConfigs.CHAT_CONTROL.applyIgnoreTo(messageType); } /** @@ -216,17 +97,8 @@ public static boolean ignores(UUID sender, UUID target, String chatType) { * @return TRUE if the target ignores the sender and the message should not be sent, FALSE otherwise */ public static boolean ignoresAnywhere(UUID sender, UUID target) { - - if (!ignoreMap.containsKey(target)) return false; - Set ignoredPlayers = ignoreMap.get(target); - - if (ignoredPlayers == null) return false; - - if (!ignoredPlayers.contains(sender)) return false; - - return true; - + return ignoredPlayers != null && ignoredPlayers.contains(sender); } public static void ignore(UUID ignorer, UUID ignoree) { @@ -239,7 +111,7 @@ public static void ignore(UUID ignorer, UUID ignoree) { } else { - ignoredPlayers = new HashSet(); + ignoredPlayers = new HashSet<>(); } @@ -279,16 +151,13 @@ public static void unignoreAll(UUID ignorer) { } public static void sendIgnoreNotifications(CommandSender ignorer, CommandSender ignoree, String chatType) { - - Configuration config = ConfigManager.getInstance().getHandler(ConfigFile.CHAT_CONTROL).getConfig(); - - if (config.getBoolean("notify_ignore")) { - MessageManager.sendSpecialMessage(ignorer, "ignore_target", ignoree.getName()); + if (ProxyConfigs.CHAT_CONTROL.isNotifyIgnore()) { + ProxyConfigs.MESSAGES.sendMessage(ignorer, "ignore_target", ignoree.getName()); } if (!chatType.equals("private_messages")) return; - MessageManager.sendMessage(ignoree, "ignore_sender"); + ProxyConfigs.MESSAGES.sendMessage(ignoree, "ignore_sender"); } @@ -296,27 +165,10 @@ public static void sendIgnoreNotifications(CommandSender ignorer, CommandSender * If sessional ignore is enabled, removes any offline players from the ignore map */ public static void reload() { + if (!ProxyConfigs.CHAT_CONTROL.isSessionIgnore()) + return; - Configuration config = ConfigManager.getInstance().getHandler(ConfigFile.CHAT_CONTROL).getConfig(); - - if (config.getBoolean("session_ignore")) { - - for (UUID uuid : ignoreMap.keySet()) { - - ProxiedPlayer player = ProxyServer.getInstance().getPlayer(uuid); - - if (player == null) ignoreMap.remove(uuid); - - } - - } - - } - - public static String replaceLinks(String message) { - if (!controlLinks) return message; - return message.replaceAll(linkRegex, linkMessage); - //return message.replaceAll("((https|http):\\/\\/)?(www\\.)?([-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.)+[a-zA-Z]{2,4}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)", linkMessage); + ignoreMap.keySet().removeIf(uuid -> ProxyServer.getInstance().getPlayer(uuid) == null); } public static void spamPardonPlayer(UUID uuid) { @@ -327,25 +179,23 @@ public static void spamPardonPlayer(UUID uuid) { * * @return true if the player is spamming and the message should be blocked */ - public static boolean handleSpam(ProxiedPlayer player, String message, String chatType) { + public static boolean handleSpam(ProxiedPlayer player, String message, MessageType messageType) { DebugManager.log(player.getName() + " - checking for spam..."); - Configuration config = ConfigManager.getInstance().getHandler(ConfigFile.CHAT_CONTROL).getConfig(); + ProxyChatControl config = ProxyConfigs.CHAT_CONTROL; if (player.hasPermission("multichat.spam.bypass")) return false; DebugManager.log(player.getName() + " - does not have bypass perm..."); - if (!config.getBoolean("anti_spam")) return false; + if (!config.isAntiSpam()) return false; DebugManager.log(player.getName() + " - anti spam IS enabled..."); - if (!config.contains("apply_anti_spam_to." + chatType)) return false; - - if (!config.getBoolean("apply_anti_spam_to." + chatType)) return false; + if (!config.applyAntiSpamTo(messageType)) return false; - DebugManager.log(player.getName() + " - anti spam IS enabled for " + chatType + "..."); + DebugManager.log(player.getName() + " - anti spam IS enabled for " + messageType.toString() + "..."); if (!spamMap.containsKey(player.getUniqueId())) spamMap.put(player.getUniqueId(), new PlayerSpamInfo()); @@ -357,25 +207,25 @@ public static boolean handleSpam(ProxiedPlayer player, String message, String ch DebugManager.log(player.getName() + " - PLAYER IS SPAMMING!"); - MessageManager.sendSpecialMessage(player, "anti_spam_cooldown", String.valueOf(spamInfo.getCooldownSeconds())); + ProxyConfigs.MESSAGES.sendMessage(player, "anti_spam_cooldown", String.valueOf(spamInfo.getCooldownSeconds())); DebugManager.log(player.getName() + " - sent cooldown message to player..."); - if (spamInfo.getSpamTriggerCount() >= config.getInt("anti_spam_trigger")) { + if (spamInfo.getSpamTriggerCount() >= config.getAntiSpamTrigger()) { DebugManager.log(player.getName() + " - they have set off the trigger..."); spamInfo.resetSpamTriggerCount(); - if (config.getBoolean("anti_spam_action")) { + if (config.isAntiSpamAction()) { DebugManager.log(player.getName() + " - trigger IS enabled..."); - if (config.getBoolean("anti_spam_spigot")) { + if (config.isAntiSpamSpigot()) { ServerInfo server = player.getServer().getInfo(); - ProxyLocalCommunicationManager.sendCommandMessage(config.getString("anti_spam_command").replaceAll("%PLAYER%", player.getName()), server); + ProxyLocalCommunicationManager.sendCommandMessage(config.getAntiSpamCommand().replaceAll("%PLAYER%", player.getName()), server); } else { - ProxyServer.getInstance().getPluginManager().dispatchCommand(ProxyServer.getInstance().getConsole(), config.getString("anti_spam_command").replaceAll("%PLAYER%", player.getName())); + ProxyServer.getInstance().getPluginManager().dispatchCommand(ProxyServer.getInstance().getConsole(), config.getAntiSpamCommand().replaceAll("%PLAYER%", player.getName())); } } @@ -394,7 +244,7 @@ public static class PlayerSpamInfo { int spamTriggerCount = 0; long lastSpamTime = 0L; - long messageTimeBuffer[] = {0L, 0L, 0L}; + long[] messageTimeBuffer = {0L, 0L, 0L}; int sameMessageCounter = 0; String lastMessage = ""; @@ -406,10 +256,10 @@ public boolean checkSpam(String message) { boolean spam = false; long currentTime = System.currentTimeMillis(); - Configuration config = ConfigManager.getInstance().getHandler(ConfigFile.CHAT_CONTROL).getConfig(); + int antiSpamTime = ProxyConfigs.CHAT_CONTROL.getAntiSpamTime(); // If the user triggered anti-spam, check if they are still on cooldown - if (currentTime - lastSpamTime < (1000 * config.getInt("anti_spam_cooldown"))) return true; + if (currentTime - lastSpamTime < (1000 * ProxyConfigs.CHAT_CONTROL.getAntiSpamCoolDown())) return true; long deltaTime = currentTime - messageTimeBuffer[2]; @@ -417,7 +267,7 @@ public boolean checkSpam(String message) { // This is a hard coded test. If the same message is sent 4 times in a row, it is spam... // However; this extra bit states that if it has been longer than 10 times the usual spam time // then this should not be considered spam. And hence the counter is reset. - if ((currentTime - messageTimeBuffer[0]) < (1000 * config.getInt("anti_spam_time")*10)) { + if ((currentTime - messageTimeBuffer[0]) < (1000 * antiSpamTime*10)) { sameMessageCounter++; } else { sameMessageCounter = 0; @@ -430,8 +280,8 @@ public boolean checkSpam(String message) { rotateMessages(currentTime); // Max messages in time limit or same message in row check - if (deltaTime < (1000 * config.getInt("anti_spam_time")) - || !(sameMessageCounter + 1 < config.getInt("spam_same_message"))) { + if (deltaTime < (1000 * antiSpamTime) + || !(sameMessageCounter + 1 < ProxyConfigs.CHAT_CONTROL.getSpamSameMessage())) { spam = true; lastSpamTime = currentTime; spamTriggerCount++; @@ -455,8 +305,7 @@ public void resetSpamTriggerCount() { } public long getCooldownSeconds() { - Configuration config = ConfigManager.getInstance().getHandler(ConfigFile.CHAT_CONTROL).getConfig(); - return config.getInt("anti_spam_cooldown") - ((System.currentTimeMillis() - lastSpamTime)/1000); + return ProxyConfigs.CHAT_CONTROL.getAntiSpamCoolDown() - ((System.currentTimeMillis() - lastSpamTime)/1000); } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/ChatModeManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/ChatModeManager.java index 7284ddab..c9b584e0 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/ChatModeManager.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/ChatModeManager.java @@ -9,6 +9,7 @@ import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; import xyz.olivermartin.multichat.proxy.common.ProxyLocalCommunicationManager; import xyz.olivermartin.multichat.proxy.common.channels.ChannelManager; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; public class ChatModeManager { @@ -52,7 +53,7 @@ public void setLocal(UUID uuid) { if (channelManager.isHidden(uuid, "local")) { channelManager.show(uuid, "local"); - MessageManager.sendSpecialMessage(player, "command_channel_show", "LOCAL"); + ProxyConfigs.MESSAGES.sendMessage(player, "command_channel_show", "LOCAL"); } // TODO @@ -83,7 +84,7 @@ public void setGlobal(UUID uuid) { if (channelManager.isHidden(uuid, "global")) { channelManager.show(uuid, "global"); - MessageManager.sendSpecialMessage(player, "command_channel_show", "GLOBAL"); + ProxyConfigs.MESSAGES.sendMessage(player, "command_channel_show", "GLOBAL"); } ProxyLocalCommunicationManager.sendPlayerDataMessage(player.getName(), "global", channelManager.getGlobalChannel().getInfo().getFormat(), player.getServer().getInfo(), (player.hasPermission("multichat.chat.colour")||player.hasPermission("multichat.chat.color")||player.hasPermission("multichat.chat.colour.simple")||player.hasPermission("multichat.chat.color.simple")), (player.hasPermission("multichat.chat.colour")||player.hasPermission("multichat.chat.color")||player.hasPermission("multichat.chat.colour.rgb")||player.hasPermission("multichat.chat.color.rgb"))); diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/CommandManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/CommandManager.java index 89eb1c89..0bc159e8 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/CommandManager.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/CommandManager.java @@ -30,6 +30,7 @@ import xyz.olivermartin.multichat.bungee.commands.StaffListCommand; import xyz.olivermartin.multichat.bungee.commands.UseCastCommand; +// TODO: [2.0] Definitely needs refactor public class CommandManager { static { diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/ConfigHandler.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/ConfigHandler.java deleted file mode 100644 index 913ec557..00000000 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/ConfigHandler.java +++ /dev/null @@ -1,105 +0,0 @@ -package xyz.olivermartin.multichat.bungee; - - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.nio.file.CopyOption; -import java.nio.file.Files; - -import net.md_5.bungee.api.ProxyServer; -import net.md_5.bungee.config.Configuration; -import net.md_5.bungee.config.ConfigurationProvider; -import net.md_5.bungee.config.YamlConfiguration; - -/** - * Configuration Handler Class - *

Manages loading / creation of an individual configuration file

- * - * @author Oliver Martin (Revilo410) - * - */ -public class ConfigHandler { - - // The config file - private Configuration config; - // Path of config file - private File configPath; - // Name of config file - private String fileName; - - public ConfigHandler(File configPath, String fileName) { - - this.configPath = configPath; - this.config = null; - this.fileName = fileName; - this.startupConfig(); - - } - - public Configuration getConfig() { - if (config == null) startupConfig(); - return config; - } - - public void startupConfig() { - - try { - - File file = new File(configPath, fileName); - - if (!file.exists()) { - - ProxyServer.getInstance().getLogger().info("Config file " + fileName + " not found... Creating new one."); - saveDefaultConfig(); - - loadConfig(); - - } else { - - ProxyServer.getInstance().getLogger().info("Loading " + fileName + "..."); - loadConfig(); - - } - - } catch (Exception e) { - ProxyServer.getInstance().getLogger().info("[ERROR] Could not load " + fileName); - e.printStackTrace(); - } - } - - private void saveDefaultConfig() { - - // Load default file into input stream - InputStream inputStream = getClass().getClassLoader().getResourceAsStream(fileName); - - // Copy to desired location - try { - Files.copy(inputStream, new File(configPath, fileName).toPath(), new CopyOption[0]); - } catch (IOException e) { - ProxyServer.getInstance().getLogger().info("[ERROR] Could not create new " + fileName + " file..."); - e.printStackTrace(); - } finally { - try { - inputStream.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - } - - private void loadConfig() { - - try { - - this.config = ConfigurationProvider.getProvider(YamlConfiguration.class).load(new File(configPath, fileName)); - - } catch (IOException e) { - - ProxyServer.getInstance().getLogger().info("[ERROR] Could not load " + fileName + " file..."); - e.printStackTrace(); - - } - } -} diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/ConfigManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/ConfigManager.java deleted file mode 100644 index 08ffff97..00000000 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/ConfigManager.java +++ /dev/null @@ -1,95 +0,0 @@ -package xyz.olivermartin.multichat.bungee; - - -import java.io.File; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; - -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; - -/** - * Configuration Manager Class - *

Manages all access and creation of the config.yml file

- * - * @author Oliver Martin (Revilo410) - * - */ -public class ConfigManager { - - private static ConfigManager instance; - - static { - - instance = new ConfigManager(); - - } - - public static ConfigManager getInstance() { - return instance; - } - - // END OF STATIC - - private Map handlerMap; - - private ConfigManager() { - - handlerMap = new HashMap(); - - } - - /** - * Create a new configHandler for a given filename and path - * @param configFile the config file i.e. config.yml - * @param configPath THE PATH WITHOUT THE FILE NAME - */ - public void registerHandler(ConfigFile configFile, File configPath) { - - handlerMap.put(configFile.getFileName(), new ConfigHandler(configPath, configFile.getFileName())); - - } - - /** - * Create a new configHandler for a given RAW filename and path - * (Not recommended, should use registerHandler() instead) - * @param fileName filename i.e. config.yml - * @param configPath THE PATH WITHOUT THE FILE NAME - */ - public void registerRawHandler(String fileName, File configPath) { - - handlerMap.put(fileName, new ConfigHandler(configPath, fileName)); - - } - - public Optional getSafeHandler(ConfigFile configFile) { - - if (handlerMap.containsKey(configFile.getFileName())) { - return Optional.of(handlerMap.get(configFile.getFileName())); - } - - return Optional.empty(); - - } - - public ConfigHandler getHandler(ConfigFile configFile) { - - if (handlerMap.containsKey(configFile.getFileName())) { - return handlerMap.get(configFile.getFileName()); - } - - return null; - - } - - public ConfigHandler getRawHandler(String fileName) { - - if (handlerMap.containsKey(fileName)) { - return handlerMap.get(fileName); - } - - return null; - - } - -} diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/ConsoleManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/ConsoleManager.java index 7c2e77e8..bdc080a3 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/ConsoleManager.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/ConsoleManager.java @@ -1,12 +1,13 @@ package xyz.olivermartin.multichat.bungee; -import java.util.Arrays; -import java.util.stream.Stream; - import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.api.chat.TextComponent; import xyz.olivermartin.multichat.common.MultiChatUtil; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; + +import java.util.Arrays; +import java.util.stream.Stream; public class ConsoleManager { @@ -15,65 +16,65 @@ public static void log(String message) { } public static void logDisplayMessage(String message) { - logToConsole(MessageManager.getMessage("console_display_prefix") + message); + logToConsole(ProxyConfigs.MESSAGES.getMessage("console_display_prefix") + message); } public static void logChat(String message) { - logToConsole(MessageManager.getMessage("console_chat_prefix") + message); + logToConsole(ProxyConfigs.MESSAGES.getMessage("console_chat_prefix") + message); } public static void logModChat(String message) { - if (!MultiChat.logStaffChat) { + if (!ProxyConfigs.CONFIG.isLogStaffChat()) { return; } - logToConsole(MessageManager.getMessage("console_modchat_prefix") + message); + logToConsole(ProxyConfigs.MESSAGES.getMessage("console_modchat_prefix") + message); } public static void logGroupChat(String message) { - if (!MultiChat.logGroupChat) { + if (!ProxyConfigs.CONFIG.isLogGroupChat()) { return; } - logToConsole(MessageManager.getMessage("console_groupchat_prefix") + message); + logToConsole(ProxyConfigs.MESSAGES.getMessage("console_groupchat_prefix") + message); } public static void logAdminChat(String message) { - if (!MultiChat.logStaffChat) { + if (!ProxyConfigs.CONFIG.isLogStaffChat()) { return; } - logToConsole(MessageManager.getMessage("console_adminchat_prefix") + message); + logToConsole(ProxyConfigs.MESSAGES.getMessage("console_adminchat_prefix") + message); } public static void logHelpMe(String message) { - logToConsole(MessageManager.getMessage("console_helpme_prefix") + message); + logToConsole(ProxyConfigs.MESSAGES.getMessage("console_helpme_prefix") + message); } public static void logBasicChat(String prefix, String message) { - logToConsole(MessageManager.getMessage("console_chat_prefix") + prefix, message); + logToConsole(ProxyConfigs.MESSAGES.getMessage("console_chat_prefix") + prefix, message); } public static void logSocialSpy(String p1, String p2, String message) { - if (!MultiChat.logPMs) { + if (!ProxyConfigs.CONFIG.isLogPms()) { return; } - logToConsole(MessageManager.getMessage("console_socialspy_prefix") + "(" + p1 + " -> " + p2 + ") " + message); + logToConsole(ProxyConfigs.MESSAGES.getMessage("console_socialspy_prefix") + "(" + p1 + " -> " + p2 + ") " + message); } @@ -81,7 +82,7 @@ private static void logToConsole(String message, String unformattedMessage) { BaseComponent[] first = TextComponent.fromLegacyText( MultiChatUtil.approximateRGBColorCodes( MultiChatUtil.translateColorCodes( - MessageManager.getMessage("console_main_prefix") + message))); + ProxyConfigs.MESSAGES.getMessage("console_main_prefix") + message))); BaseComponent[] second = TextComponent.fromLegacyText(unformattedMessage); diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/Events.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/Events.java index b327fb14..3ff2f3ae 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/Events.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/Events.java @@ -15,6 +15,7 @@ import net.md_5.bungee.api.plugin.Listener; import net.md_5.bungee.event.EventHandler; import xyz.olivermartin.multichat.bungee.commands.GCCommand; +import xyz.olivermartin.multichat.common.MessageType; import xyz.olivermartin.multichat.common.MultiChatUtil; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; import xyz.olivermartin.multichat.proxy.common.ProxyChatManager; @@ -22,8 +23,7 @@ import xyz.olivermartin.multichat.proxy.common.channels.ChannelManager; import xyz.olivermartin.multichat.proxy.common.channels.ChannelMode; import xyz.olivermartin.multichat.proxy.common.channels.proxy.ProxyChannel; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; -import xyz.olivermartin.multichat.proxy.common.config.ConfigValues; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import xyz.olivermartin.multichat.proxy.common.storage.ProxyDataStore; /** @@ -155,7 +155,7 @@ public void onChat(ChatEvent event) { } /// - if (ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getBoolean(ConfigValues.Config.FETCH_SPIGOT_DISPLAY_NAMES) == true) { + if (ProxyConfigs.CONFIG.isFetchSpigotDisplayNames()) { if (player.getServer() != null) { ProxyLocalCommunicationManager.sendUpdatePlayerMetaRequestMessage(player.getName(), player.getServer().getInfo()); } @@ -219,13 +219,13 @@ public void onChat(ChatEvent event) { GCCommand.sendMessage(message, playerName, chatInfo); } else { - MessageManager.sendMessage(player, "groups_toggled_but_no_longer_exists_1"); - MessageManager.sendMessage(player, "groups_toggled_but_no_longer_exists_2"); + ProxyConfigs.MESSAGES.sendMessage(player, "groups_toggled_but_no_longer_exists_1"); + ProxyConfigs.MESSAGES.sendMessage(player, "groups_toggled_but_no_longer_exists_2"); } } else { - MessageManager.sendMessage(player, "groups_toggled_but_no_longer_exists_1"); - MessageManager.sendMessage(player, "groups_toggled_but_no_longer_exists_2"); + ProxyConfigs.MESSAGES.sendMessage(player, "groups_toggled_but_no_longer_exists_1"); + ProxyConfigs.MESSAGES.sendMessage(player, "groups_toggled_but_no_longer_exists_2"); } } } @@ -240,16 +240,16 @@ public void onChat(ChatEvent event) { event.setCancelled(true); - if (ChatControl.isMuted(player.getUniqueId(), "private_messages")) { - MessageManager.sendMessage(player, "mute_cannot_send_message"); + if (ChatControl.isMuted(player.getUniqueId(), MessageType.PRIVATE_MESSAGES)) { + ProxyConfigs.MESSAGES.sendMessage(player, "mute_cannot_send_message"); return; } - if (ChatControl.handleSpam(player, message, "private_messages")) { + if (ChatControl.handleSpam(player, message, MessageType.PRIVATE_MESSAGES)) { return; } - crm = ChatControl.applyChatRules(message, "private_messages", player.getName()); + crm = ChatControl.applyChatRules(player, message, MessageType.PRIVATE_MESSAGES); if (crm.isPresent()) { message = crm.get(); @@ -264,11 +264,11 @@ public void onChat(ChatEvent event) { ProxyLocalCommunicationManager.sendUpdatePlayerMetaRequestMessage(player.getName(), player.getServer().getInfo()); ProxyLocalCommunicationManager.sendUpdatePlayerMetaRequestMessage(target.getName(), target.getServer().getInfo()); - if (!ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getStringList(ConfigValues.Config.NO_PM).contains(player.getServer().getInfo().getName())) { + if (!ProxyConfigs.CONFIG.isNoPmServer(player.getServer().getInfo().getName())) { - if (!ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getStringList(ConfigValues.Config.NO_PM).contains(target.getServer().getInfo().getName())) { + if (!ProxyConfigs.CONFIG.isNoPmServer(target.getServer().getInfo().getName())) { - if (ChatControl.ignores(player.getUniqueId(), target.getUniqueId(), "private_messages")) { + if (ChatControl.ignores(player.getUniqueId(), target.getUniqueId(), MessageType.PRIVATE_MESSAGES)) { ChatControl.sendIgnoreNotifications(target, player, "private_messages"); return; } @@ -276,15 +276,15 @@ public void onChat(ChatEvent event) { PrivateMessageManager.getInstance().sendMessage(message, player, target); } else { - MessageManager.sendMessage(player, "command_msg_disabled_target"); + ProxyConfigs.MESSAGES.sendMessage(player, "command_msg_disabled_target"); } } else { - MessageManager.sendMessage(player, "command_msg_disabled_sender"); + ProxyConfigs.MESSAGES.sendMessage(player, "command_msg_disabled_sender"); } } else { - MessageManager.sendMessage(player, "command_msg_not_online"); + ProxyConfigs.MESSAGES.sendMessage(player, "command_msg_not_online"); } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/GroupManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/GroupManager.java index 039a1ab1..0b2c7312 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/GroupManager.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/GroupManager.java @@ -8,8 +8,7 @@ import net.md_5.bungee.api.connection.ProxiedPlayer; import xyz.olivermartin.multichat.bungee.commands.GCCommand; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; -import xyz.olivermartin.multichat.proxy.common.config.ConfigValues; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import xyz.olivermartin.multichat.proxy.common.storage.ProxyDataStore; /** @@ -34,8 +33,8 @@ public void createGroup(String groupname, UUID owneruuid, boolean secret, String newgroup.addViewer(owneruuid); newgroup.addAdmin(owneruuid); newgroup.setName(groupname.toLowerCase()); - newgroup.setChatColor(ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getString(ConfigValues.Config.GroupChat.CC_DEFAULT).toCharArray()[0]); - newgroup.setNameColor(ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getString(ConfigValues.Config.GroupChat.NC_DEFAULT).toCharArray()[0]); + newgroup.setChatColor(ProxyConfigs.CONFIG.getGroupChatColor()); + newgroup.setNameColor(ProxyConfigs.CONFIG.getGroupNameColor()); newgroup.setSecret(secret); newgroup.setPassword(password); newgroup.setFormal(false); @@ -68,7 +67,7 @@ public boolean joinGroup(String groupname, ProxiedPlayer player, String password if (player.hasPermission("multichat.staff.spy")) { - MessageManager.sendSpecialMessage(player, "command_group_spy_off", groupname.toUpperCase()); + ProxyConfigs.MESSAGES.sendMessage(player, "command_group_spy_off", groupname.toUpperCase()); groupchat.delViewer(player.getUniqueId()); } else { @@ -91,7 +90,7 @@ public boolean joinGroup(String groupname, ProxiedPlayer player, String password if (password.equals("")) { - MessageManager.sendSpecialMessage(player, "groups_password_protected", groupname.toUpperCase()); + ProxyConfigs.MESSAGES.sendMessage(player, "groups_password_protected", groupname.toUpperCase()); } else { @@ -101,7 +100,7 @@ public boolean joinGroup(String groupname, ProxiedPlayer player, String password if (player.hasPermission("multichat.staff.spy")) { - MessageManager.sendSpecialMessage(player, "command_group_spy_off", groupname.toUpperCase()); + ProxyConfigs.MESSAGES.sendMessage(player, "command_group_spy_off", groupname.toUpperCase()); groupchat.delViewer(player.getUniqueId()); } else { @@ -120,7 +119,7 @@ public boolean joinGroup(String groupname, ProxiedPlayer player, String password } else { - MessageManager.sendSpecialMessage(player, "groups_password_incorrect", groupname.toUpperCase()); + ProxyConfigs.MESSAGES.sendMessage(player, "groups_password_incorrect", groupname.toUpperCase()); } @@ -128,11 +127,11 @@ public boolean joinGroup(String groupname, ProxiedPlayer player, String password } } else { - MessageManager.sendSpecialMessage(player, "groups_already_joined", groupname.toUpperCase()); + ProxyConfigs.MESSAGES.sendMessage(player, "groups_already_joined", groupname.toUpperCase()); } } else { - MessageManager.sendSpecialMessage(player, "groups_banned", groupname.toUpperCase()); + ProxyConfigs.MESSAGES.sendMessage(player, "groups_banned", groupname.toUpperCase()); } groupchat = null; @@ -161,7 +160,7 @@ public void announceJoinGroup(String playername, String groupname) { ProxyDataStore ds = MultiChatProxy.getInstance().getDataStore(); - GCCommand.sendMessage(playername + MessageManager.getMessage("groups_info_joined"), "&lINFO", ds.getGroupChats().get(groupname.toLowerCase())); + GCCommand.sendMessage(playername + ProxyConfigs.MESSAGES.getMessage("groups_info_joined"), "&lINFO", ds.getGroupChats().get(groupname.toLowerCase())); } @@ -172,7 +171,7 @@ public void announceQuitGroup(String playername, String groupname) { ProxyDataStore ds = MultiChatProxy.getInstance().getDataStore(); - GCCommand.sendMessage(playername + MessageManager.getMessage("groups_info_quit"), "&lINFO", ds.getGroupChats().get(groupname.toLowerCase())); + GCCommand.sendMessage(playername + ProxyConfigs.MESSAGES.getMessage("groups_info_quit"), "&lINFO", ds.getGroupChats().get(groupname.toLowerCase())); } @@ -205,23 +204,23 @@ public void quitGroup(String groupname, UUID player, ProxiedPlayer pinstance) { ds.getGroupChats().remove(groupname.toLowerCase()); ds.getGroupChats().put(groupname.toLowerCase(), groupchatinfo); - MessageManager.sendSpecialMessage(pinstance, "groups_quit", groupname.toUpperCase()); + ProxyConfigs.MESSAGES.sendMessage(pinstance, "groups_quit", groupname.toUpperCase()); announceQuitGroup(pinstance.getName(), groupname); } else if (!groupchatinfo.getFormal()) { - MessageManager.sendSpecialMessage(pinstance, "groups_cannot_quit_owner_1", groupname.toUpperCase()); - MessageManager.sendSpecialMessage(pinstance, "groups_cannot_quit_owner_2", groupname.toUpperCase()); + ProxyConfigs.MESSAGES.sendMessage(pinstance, "groups_cannot_quit_owner_1", groupname.toUpperCase()); + ProxyConfigs.MESSAGES.sendMessage(pinstance, "groups_cannot_quit_owner_2", groupname.toUpperCase()); } else { - MessageManager.sendSpecialMessage(pinstance, "groups_cannot_quit_admin_1", groupname.toUpperCase()); - MessageManager.sendSpecialMessage(pinstance, "groups_cannot_quit_admin_2", groupname.toUpperCase()); + ProxyConfigs.MESSAGES.sendMessage(pinstance, "groups_cannot_quit_admin_1", groupname.toUpperCase()); + ProxyConfigs.MESSAGES.sendMessage(pinstance, "groups_cannot_quit_admin_2", groupname.toUpperCase()); } } else { - MessageManager.sendSpecialMessage(pinstance, "command_group_not_a_member", groupname.toUpperCase()); + ProxyConfigs.MESSAGES.sendMessage(pinstance, "command_group_not_a_member", groupname.toUpperCase()); } @@ -233,11 +232,11 @@ public void displayHelp(int page, CommandSender sender) { if (page == 1) { - MessageManager.sendMessage(sender, "groups_help_1"); + ProxyConfigs.MESSAGES.sendMessage(sender, "groups_help_1"); } else { - MessageManager.sendMessage(sender, "groups_help_2"); + ProxyConfigs.MESSAGES.sendMessage(sender, "groups_help_2"); } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MessageManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MessageManager.java deleted file mode 100644 index 5124302e..00000000 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MessageManager.java +++ /dev/null @@ -1,481 +0,0 @@ -package xyz.olivermartin.multichat.bungee; - -import java.util.HashMap; -import java.util.Map; - -import net.md_5.bungee.api.CommandSender; -import net.md_5.bungee.api.connection.ProxiedPlayer; -import net.md_5.bungee.config.Configuration; -import xyz.olivermartin.multichat.common.MultiChatUtil; -import xyz.olivermartin.multichat.proxy.common.ProxyJsonUtils; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; - -/** - * Message Manager - *

Used to display all plugin messages to players

- * - * @author Oliver Martin (Revilo410) - */ -public class MessageManager { - - private static Map defaultMessages; - - static { - - defaultMessages = new HashMap(); - - // *** CONSOLE LOGS *** // - - defaultMessages.put("console_main_prefix", "&8[&2M&aC&8]&f "); - defaultMessages.put("console_chat_prefix", "&fCHAT &f> "); - defaultMessages.put("console_modchat_prefix", "&3STAFFCHAT &f> &3"); - defaultMessages.put("console_adminchat_prefix", "&5STAFFCHAT &f> &5"); - defaultMessages.put("console_groupchat_prefix", "&2GROUPCHAT &f> &2"); - defaultMessages.put("console_display_prefix", "&fDISPLAY &f> "); - defaultMessages.put("console_socialspy_prefix", "&cSOCIALSPY &f> &c"); - defaultMessages.put("console_helpme_prefix", "&4HELPME &f> &4"); - - - // *** PREFIX *** // - - defaultMessages.put("prefix", "&8&l[&2&lM&a&lC&8&l]&f "); - - // *** COMMANDS *** // - - defaultMessages.put("command_acc_usage", "&aUsage: /acc "); - defaultMessages.put("command_acc_only_players", "&cOnly players can change chat colours!"); - defaultMessages.put("command_acc_updated", "&aAdmin-Chat colours updated!"); - defaultMessages.put("command_acc_invalid", "&cInvalid color codes specified: Must be letters a-f or numbers 0-9"); - defaultMessages.put("command_acc_invalid_usage", "&cUsage: /acc "); - - defaultMessages.put("command_ac_toggle_on", "&dAdmin chat toggled on!"); - defaultMessages.put("command_ac_toggle_off", "&cAdmin chat toggled off!"); - defaultMessages.put("command_ac_only_players", "&cOnly players can toggle the chat!"); - - defaultMessages.put("command_announcement_list", "&aList of avaliable announcements:"); - defaultMessages.put("command_announcement_list_item", "&b -> %SPECIAL%"); - defaultMessages.put("command_announcement_does_not_exist", "&cSorry, no such announcement found: %SPECIAL%"); - defaultMessages.put("command_announcement_removed", "&aRemoved announcement: %SPECIAL%"); - defaultMessages.put("command_announcement_stopped", "&aStopped announcement: %SPECIAL%"); - defaultMessages.put("command_announcement_stopped_error", "&cSorry, unable to stop announcement: %SPECIAL%"); - defaultMessages.put("command_announcement_started", "&aStarted announcement: %SPECIAL%"); - defaultMessages.put("command_announcement_started_error", "&cSorry, unable to start announcement: %SPECIAL%"); - defaultMessages.put("command_announcement_added", "&aAdded announcement: %SPECIAL%"); - defaultMessages.put("command_announcement_added_error", "&cSorry, announcement already exists: %SPECIAL%"); - defaultMessages.put("command_announcement_usage", "&aUsage:"); - - defaultMessages.put("command_bulletin_stopped", "&bBulletins stopped"); - defaultMessages.put("command_bulletin_list", "&aList of bulletin messages with index:"); - defaultMessages.put("command_bulletin_list_item", "&b -> %SPECIAL%"); - defaultMessages.put("command_bulletin_removed", "&bRemoved bulletin"); - defaultMessages.put("command_bulletin_started", "&bStarted bulletin"); - defaultMessages.put("command_bulletin_added", "&bAdded to bulletin"); - defaultMessages.put("command_bulletin_invalid_usage", "&cInvalid command usage!"); - defaultMessages.put("command_bulletin_usage", "&aUsage:"); - - defaultMessages.put("command_cast_usage", "&aUsage:"); - defaultMessages.put("command_cast_list", "&aList of avaliable casts:"); - defaultMessages.put("command_cast_list_item", "&b -> %SPECIAL%"); - defaultMessages.put("command_cast_removed", "&aRemoved cast: %SPECIAL%"); - defaultMessages.put("command_cast_does_not_exist", "&cSorry, no such cast found: %SPECIAL%"); - defaultMessages.put("command_cast_added", "&aAdded cast: %SPECIAL%"); - defaultMessages.put("command_cast_added_error", "&cSorry, cast already exists: %SPECIAL%"); - - defaultMessages.put("command_channel_help", - "&3&lChannel Command Help\n" - + "&bSwitch channel\n" - + "&f&o/channel switch \n" - + "&bShow/Hide channel\n" - + "&f&o/channel show/hide "); - defaultMessages.put("command_channel_switch", "&bSwitched to channel: &f&o%SPECIAL%"); - defaultMessages.put("command_channel_hide", "&bYou have hidden channel: &f&o%SPECIAL%"); - defaultMessages.put("command_channel_show", "&bYou have un-hidden channel: &f&o%SPECIAL%"); - defaultMessages.put("command_channel_already_hide", "&bYou have already hidden channel: &f&o%SPECIAL%"); - defaultMessages.put("command_channel_already_show", "&bYou have already un-hidden channel: &f&o%SPECIAL%"); - defaultMessages.put("command_channel_does_not_exist", "&cSorry, that channel does not exist"); - defaultMessages.put("command_channel_only_players", "&cSorry, only players can use chat channel commands"); - defaultMessages.put("command_channel_switch_no_permission", "&cYou are unable to switch channels"); - defaultMessages.put("command_channel_hide_no_permission", "&cYou are unable to hide channels"); - defaultMessages.put("command_channel_show_no_permission", "&cYou are unable to show channels"); - defaultMessages.put("command_channel_cannot_hide", "&cYou cannot hide your currently selected channel"); - - defaultMessages.put("command_clearchat_self", "&bYour chat has been cleared"); - defaultMessages.put("command_clearchat_server", "&bServer chat has been cleared"); - defaultMessages.put("command_clearchat_global", "&bGlobal chat has been cleared"); - defaultMessages.put("command_clearchat_all", "&bAll chat has been cleared"); - defaultMessages.put("command_clearchat_no_permission", "&cYou do not have permission to clear %SPECIAL% chat"); - defaultMessages.put("command_clearchat_usage", "&cUsage: /clearchat [self/server/global/all]"); - - defaultMessages.put("command_display_desc", "&3Display a message to the entire network"); - defaultMessages.put("command_display_usage", "&bUsage /display "); - - defaultMessages.put("command_freezechat_thawed", "&b&lChat was &3&lTHAWED &b&lby &a&l%SPECIAL%"); - defaultMessages.put("command_freezechat_frozen", "&b&lChat was &3&lFROZEN &b&lby &a&l%SPECIAL%"); - - defaultMessages.put("command_gc_toggle_on", "&aGroup chat toggled on!"); - defaultMessages.put("command_gc_toggle_off", "&cGroup chat toggled off!"); - defaultMessages.put("command_gc_only_players_toggle", "&cOnly players can toggle the chat!"); - defaultMessages.put("command_gc_no_longer_exists", "&cSorry your selected chat no longer exists, please select a chat with /group "); - defaultMessages.put("command_gc_no_chat_selected", "&cPlease select the chat you wish to message using /group "); - defaultMessages.put("command_gc_only_players_speak", "&cOnly players can speak in group chats"); - - defaultMessages.put("command_global_enabled_1", "&3GLOBAL CHAT ENABLED"); - defaultMessages.put("command_global_enabled_2", "&bYour messages will go to all servers!"); - defaultMessages.put("command_global_only_players", "&cOnly players can change their chat state"); - - defaultMessages.put("command_group_selected", "&aYour /gc messages will now go to group: %SPECIAL%"); - defaultMessages.put("command_group_not_a_member", "&cSorry you aren't a member of group: %SPECIAL%"); - defaultMessages.put("command_group_does_not_exist", "&cSorry the following group chat does not exist: %SPECIAL%"); - defaultMessages.put("command_group_only_players_select", "&cOnly players can select a group chat"); - defaultMessages.put("command_group_incorrect_usage", "&cIncorrect command usage, use /group to see a list of commands!"); - defaultMessages.put("command_group_member_list", "&a&lShowing members of group: %SPECIAL%"); - defaultMessages.put("command_group_member_list_item", "&b- %SPECIAL%"); - defaultMessages.put("command_group_member_list_item_admin", "&b- &b&o%SPECIAL%"); - defaultMessages.put("command_group_spy_all_disabled_1", "&cGlobal group spy disabled"); - defaultMessages.put("command_group_spy_all_disabled_2", "&cAny groups you previously activated spy for will still be spied on!"); - defaultMessages.put("command_group_spy_all_disabled_3", "&cDisable spy for individual groups with /group spy "); - defaultMessages.put("command_group_spy_all_enabled", "&aGlobal group spy enabled for all group chats!"); - defaultMessages.put("command_group_spy_no_permission", "&cSorry this command does not exist, use /group"); - defaultMessages.put("command_group_spy_off", "&cYou are no longer spying on: %SPECIAL%"); - defaultMessages.put("command_group_spy_on", "&aYou are now spying on: %SPECIAL%"); - defaultMessages.put("command_group_spy_already_a_member", "&cYou are already a member of this chat so can't spy on it!"); - defaultMessages.put("command_group_spy_does_not_exist", "&cSorry this group chat does not exist!"); - defaultMessages.put("command_group_created", "&aYou successfully created, joined, and selected the group: %SPECIAL%"); - defaultMessages.put("command_group_already_exists", "&cSorry the following group chat already exists: %SPECIAL%"); - defaultMessages.put("command_group_max_length", "&cSorry group name cannot exceed 20 characters!"); - defaultMessages.put("command_group_create_no_permission", "&cSorry you do not have permission to create new group chats"); - defaultMessages.put("command_group_joined", "&aYou successfully joined and selected the group: %SPECIAL%"); - defaultMessages.put("command_group_formal_not_owner", "&cSorry this command can only be used by the group chat owner"); - defaultMessages.put("command_group_formal_already_formal", "&cSorry this chat is already a formal group chat: %SPECIAL%"); - defaultMessages.put("command_group_formal_not_admin", "&cSorry this command can only be used by group admins/owners"); - defaultMessages.put("command_group_max_length_password", "&cSorry neither group name or password must exceed 20 characters"); - defaultMessages.put("command_group_transfer_not_member", "&cThis player is not already a member of the group!"); - defaultMessages.put("command_group_transfer_not_owner", "&cSorry you are not the owner of this chat!"); - defaultMessages.put("command_group_transfer_not_informal", "&cThis command can only be used on informal chats!"); - defaultMessages.put("command_group_player_not_online", "&cThis player is not online!"); - defaultMessages.put("command_group_formal_only_admin", "&cYou can't step down as a group admin because you are the only one!"); - defaultMessages.put("command_group_formal_cannot_demote", "&cYou can't demote another group admin!"); - defaultMessages.put("command_group_not_formal", "&cThis command can only be used on formal chats!"); - defaultMessages.put("command_group_banned", "&cYou were banned from group: %SPECIAL%"); - defaultMessages.put("command_group_unbanned", "&aYou were unbanned from group: %SPECIAL%"); - defaultMessages.put("command_group_cannot_ban_admin", "&cYou can't ban a group admin!"); - defaultMessages.put("command_group_color_invalid", "&cInvalid color codes specified: Must be letters a-f or numbers 0-9"); - defaultMessages.put("command_group_color_usage", "&cUsage: /group color/colour "); - defaultMessages.put("command_group_only_players", "&cOnly players can use group chats"); - - defaultMessages.put("command_grouplist_list", "&a&lGroup List:"); - defaultMessages.put("command_grouplist_list_item", "&b- %SPECIAL%"); - - defaultMessages.put("command_helpme_desc", "&4Request help from a staff member!"); - defaultMessages.put("command_helpme_usage", "&cUsage: /HelpMe "); - defaultMessages.put("command_helpme_sent", "&cYour request for help has been sent to all online staff :)"); - defaultMessages.put("command_helpme_only_players", "&4Only players can request help!"); - defaultMessages.put("command_helpme_format", "&c&l<< &4HELPME &c&l>> &f&o%SPECIAL%"); - - defaultMessages.put("command_local_enabled_1", "&3LOCAL CHAT ENABLED"); - defaultMessages.put("command_local_enabled_2", "&bYour messages will only go to this server!"); - defaultMessages.put("command_local_only_players", "&cOnly players can change their chat state"); - - defaultMessages.put("command_localspy_disabled", "&cLocal Spy Disabled"); - defaultMessages.put("command_localspy_enabled", "&bLocal Spy Enabled"); - defaultMessages.put("command_localspy_usage", "&bUsage: /localspy"); - defaultMessages.put("command_localspy_desc", "&bToggles if the user has local spy enabled or disabled"); - defaultMessages.put("command_localspy_only_players", "&cOnly players can toggle localspy"); - - defaultMessages.put("command_mcc_usage", "&aUsage: /mcc "); - defaultMessages.put("command_mcc_only_players", "&cOnly players can change chat colours!"); - defaultMessages.put("command_mcc_updated", "&aMod-Chat colours updated!"); - defaultMessages.put("command_mcc_invalid", "&cInvalid color codes specified: Must be letters a-f or numbers 0-9"); - defaultMessages.put("command_mcc_invalid_usage", "&cUsage: /mcc "); - - defaultMessages.put("command_mc_toggle_on", "&bMod chat toggled on!"); - defaultMessages.put("command_mc_toggle_off", "&cMod chat toggled off!"); - defaultMessages.put("command_mc_only_players", "&cOnly players can toggle the chat!"); - - defaultMessages.put("command_msg_usage", "&bUsage: /msg [message]"); - defaultMessages.put("command_msg_usage_toggle", "&bUsing /msg with no message will toggle chat to go to that player"); - defaultMessages.put("command_msg_toggle_on", "&ePrivate chat toggled on! [You -> %SPECIAL%] (Type the same command to disable the toggle)"); - defaultMessages.put("command_msg_toggle_off", "&cPrivate chat toggled off!"); - defaultMessages.put("command_msg_only_players", "&cOnly players can toggle the chat!"); - defaultMessages.put("command_msg_not_online", "&cSorry this person is not online!"); - defaultMessages.put("command_msg_disabled_target", "&cSorry private messages are disabled on the target player's server!"); - defaultMessages.put("command_msg_disabled_sender", "&cSorry private messages are disabled on this server!"); - defaultMessages.put("command_msg_no_toggle", "&cSorry, message toggles are not allowed on this server!"); - - // TODO Somehow combine all these into one message but provide a special method like "displayMessagePage()" in this - // message manager which automatically decides how many lines to show for the page specified to the message manager. - defaultMessages.put("command_multichat_help_1", - "&2&lMulti&a&lChat &b&lHelp\n" - + "&3Display plugin version info\n" - + "&b/multichat\n" - + "&3Reload the plugin config\n" - + "&b/multichat reload\n" - + "&3Save ALL plugin data\n" - + "&b/multichat save\n" - + "&3Display a message to all players\n" - + "&b/display \n" - + "&3View group chat help\n" - + "&b/group\n" - + "&3Send mod chat message &o(Send admin chat message)\n" - + "&b/mc &o(/ac )\n" - + "&3Change mod/&oadmin &3chat colours\n" - + "&b/mcc \n" - + "&b&o/acc \n" - + "&3Toggle mod chat &o(Toggle admin chat)\n" - + "&b/mc &o(/ac)\n" - + "&3&lType &b&l/multichat help &3<o view more commands"); - - defaultMessages.put("command_multichat_help_2", - "&2&lMulti&a&lChat &b&lHelp [Page 2]\n" - + "&3View all global chat (Enabled by default)\n" - + "&b/global\n" - + "&3Only view chat from your current server\n" - + "&b/local\n" - + "&3See a list of online staff members\n" - + "&b/staff\n" - + "&3See a list of all group chats\n" - + "&b/groups\n" - + "&3Send a player a private message\n" - + "&b/msg [message]\n" - + "&3Reply to your last message\n" - + "&b/r \n" - + "&3Toggle socialspy to view private messages\n" - + "&b/socialspy\n" - + "&3Freeze the chat to stop messages being sent\n" - + "&b/freezechat\n" - + "&3Clear the chat stream for yourself or a group of people\n" - + "&b/clearchat [self,server,global,all]"); - - defaultMessages.put("command_multichat_help_3", - "&2&lMulti&a&lChat &b&lHelp [Page 3]\n" - + "&3View announcement commands\n" - + "&b/announcement\n" - + "&3View bulletin commands\n" - + "&b/bulletin\n" - + "&3View cast commands\n" - + "&b/cast\n" - + "&3Use a specified cast from the console\n" - + "&b/usecast \n" - + "&3Alert staff members of a problem\n" - + "&b/helpme \n" - + "&3Nickname a player (Only works if MultiChat installed on Spigot / Sponge)\n" - + "&b/nick [player] \n" - + "&3Get players real name from their nickname (Only works on Spigot)\n" - + "&b/realname \n" - + "&3Mute players to prevent them sending messages\n" - + "&b/mute \n" - + "&3Ignore players to stop seeing their messages\n" - + "&b/ignore "); - - defaultMessages.put("command_multichat_save_prepare", "&3Preparing to save multichat files!"); - defaultMessages.put("command_multichat_save_completed", "&bSave completed!"); - defaultMessages.put("command_multichat_reload_prepare", "&3Preparing to reload multichat files!"); - defaultMessages.put("command_multichat_reload_completed", "&bReload completed!"); - - defaultMessages.put("command_multichatbypass_usage", "&4Usage: /mcb\n" - + "&c&oThis command causes your chat messages to bypass MultiChat and be handled directly by spigot."); - defaultMessages.put("command_multichatbypass_enabled", "&aMultiChat BYPASS Enabled"); - defaultMessages.put("command_multichatbypass_disabled", "&bMultiChat BYPASS Disabled"); - - defaultMessages.put("command_execute_usage", "&2Usage: /mce [-s ] [-p ] \n" - + "&a&oThis command allows you to execute a command over all your spigot servers (&lwhich have at least 1 player online!&a&o)\n" - + "By default the command will be executed by console, you can instead make players execute the command using the -p flag\n" - + "By default the command will be executed on all servers, you can limit which servers using the -s flag."); - defaultMessages.put("command_execute_sent", "&2The command has been sent"); - defaultMessages.put("command_execute_regex", "&cThe regex specified was invalid"); - - defaultMessages.put("command_reply_usage", "&bUsage: /r "); - defaultMessages.put("command_reply_desc", "&bReply to the person who you private messaged most recently"); - defaultMessages.put("command_reply_no_one_to_reply_to", "&cYou have no one to reply to!"); - defaultMessages.put("command_reply_only_players", "&cOnly players can reply to private messages"); - - defaultMessages.put("command_socialspy_disabled", "&cSocial Spy Disabled"); - defaultMessages.put("command_socialspy_enabled", "&bSocial Spy Enabled"); - defaultMessages.put("command_socialspy_usage", "&bUsage: /socialspy"); - defaultMessages.put("command_socialspy_desc", "&bToggles if the user has social spy enabled or disabled"); - defaultMessages.put("command_socialspy_only_players", "&cOnly players can toggle socialspy"); - - defaultMessages.put("command_stafflist_list", "&a&lOnline Staff"); - defaultMessages.put("command_stafflist_list_item", "&b- %SPECIAL%"); - defaultMessages.put("command_stafflist_list_server", "&a%SPECIAL%"); - defaultMessages.put("command_stafflist_no_staff", "&b&oThere are currently no staff online"); - - defaultMessages.put("command_usecast_usage", "&aUsage:"); - defaultMessages.put("command_usecast_does_not_exist", "&cSorry, no such cast found: %SPECIAL%"); - - // *** GROUPS *** // - - defaultMessages.put("groups_toggled_but_no_longer_exists_1", "&cYou have toggled group chat but selected group doesn't exist!"); - defaultMessages.put("groups_toggled_but_no_longer_exists_2", "&cPlease select the chat you wish to message using /group or disable the toggle with /gc"); - defaultMessages.put("groups_password_protected", "&cSorry this group chat is password protected: %SPECIAL%"); - defaultMessages.put("groups_password_incorrect", "&cSorry incorrect password for: %SPECIAL%"); - defaultMessages.put("groups_already_joined", "&cSorry you are already a member of the group: %SPECIAL%"); - defaultMessages.put("groups_banned", "&cSorry you are banned from the group: %SPECIAL%"); - defaultMessages.put("groups_quit", "&aYou successfully left the group: %SPECIAL%"); - defaultMessages.put("groups_cannot_quit_owner_1", "&cSorry you cannot leave as you created the group!: %SPECIAL%"); - defaultMessages.put("groups_cannot_quit_owner_2", "&cPlease transfer group ownership first! Use /group transfer %SPECIAL% "); - defaultMessages.put("groups_cannot_quit_admin_1", "&cSorry you cannot leave as you are the only group admin!: %SPECIAL%"); - defaultMessages.put("groups_cannot_quit_admin_2", "&cPlease appoint a new admin using /group admin %SPECIAL% "); - - defaultMessages.put("groups_info_joined", " has joined the group chat!"); - defaultMessages.put("groups_info_quit", " has left the group chat!"); - defaultMessages.put("groups_info_formal", " has converted this group to a FORMAL group chat!"); - defaultMessages.put("groups_info_deleted", " has deleted this group chat!"); - defaultMessages.put("groups_info_goodbye", "Goodbye! If you want to see group chat commands do /group"); - defaultMessages.put("groups_info_transfer", " has transferred ownership to "); - defaultMessages.put("groups_info_promoted", " has promoted the following member to group admin: "); - defaultMessages.put("groups_info_step_down", " has stepped down as a group admin"); - defaultMessages.put("groups_info_kick", " kicked the following player from the group chat: "); - defaultMessages.put("groups_info_ban", " has banned the following player from the group chat: "); - defaultMessages.put("groups_info_unban", " has unbanned the following player from the group chat: "); - defaultMessages.put("groups_info_colors", "Group chat colours changed by "); - - defaultMessages.put("groups_help_1", - "&cGroup Chat Command Usage [Page 1] - INFORMAL GROUPS\n" - + "&2MAKE A NEW GROUP CHAT\n" - + "&a/group create/make [password]\n" - + "&2JOIN AN EXISTING GROUP CHAT\n" - + "&a/group join [password]\n" - + "&2LEAVE A GROUP CHAT\n" - + "&a/group leave/quit \n" - + "&2SELECT THE GROUP CHAT YOU WISH FOR YOUR MESSAGES TO GO TO\n" - + "&a/group \n" - + "&2SET THE COLOURS OF YOUR GROUP CHAT\n" - + "&a/group color/colour \n" - + "&2TRANSFER OWNERSHIP OF YOUR INFORMAL GROUP CHAT\n" - + "&a/group transfer \n" - + "&2DELETE A GROUP CHAT\n" - + "&a/group delete \n" - + "&2LIST GROUP CHAT MEMBERS\n" - + "&a/group list/members \n" - + "&2SEND A MESSAGE TO THE SELECTED GROUP CHAT\n" - + "&a/gc \n" - + "&cTo see FORMAL group chat commands do /group help 2"); - - defaultMessages.put("groups_help_2", - "&cGroup Chat Command Usage [Page 2] - FORMAL GROUPS\n" - + "&3All group chats default to informal group chats\n" - + "&3If you are a group owner you can convert your group to a formal group chat\n" - + "&3Formal group chats restrict changing colours to appointed group admins only\n" - + "&3Appointed group admins will also be able to ban people from the chat\n" - + "&3CONVERSION TO A FORMAL GROUP CHAT IS IRREVERSIBLE\n" - + "&2CONVERT YOUR GROUP CHAT TO A FORMAL GROUP CHAT (IRREVERSIBLE)\n" - + "&a/group formal \n" - + "&2ADD OR REMOVE AN ADMIN FROM A FORMAL GROUP CHAT\n" - + "&a/group admin \n" - + "&2BAN/UNBAN A PLAYER FROM YOUR FORMAL GROUP CHAT\n" - + "&a/group ban \n" - + "&cTo see INFORMAL group chat commands do /group help 1"); - - // *** FREEZECHAT *** // - - defaultMessages.put("freezechat_frozen", "&bSorry chat has been &3&lFROZEN"); - - // *** MUTE ***// - - defaultMessages.put("mute_muted", "&cYou have been muted by staff! You can no longer send chat messages."); - defaultMessages.put("mute_unmuted", "&aYou have been unmuted by staff, you can now send messages."); - defaultMessages.put("mute_muted_staff", "&cPlayer has been muted!"); - defaultMessages.put("mute_unmuted_staff", "&aPlayer has been unmuted!"); - defaultMessages.put("mute_cannot_send_message", "&cYou are currently muted so cannot send messages!"); - defaultMessages.put("mute_usage", "&cUsage: /mute (Also used to unmute players)"); - defaultMessages.put("mute_player_not_found", "&cPlayer cannot be muted as they are not online"); - defaultMessages.put("mute_bypass", "&cYou cannot mute this player"); - - // *** IGNORE *** // - - defaultMessages.put("ignore_sender", "&cYou cannot message this person"); - defaultMessages.put("ignore_target", "&c[%SPECIAL% sent a message, but you ignore them]"); - defaultMessages.put("ignore_ignored", "&bYou will no longer see chat messages from %SPECIAL%"); - defaultMessages.put("ignore_unignored", "&bYou have un-ignored %SPECIAL%"); - defaultMessages.put("ignore_player_not_found", "&cPlayer cannot be ignored as they are not online"); - defaultMessages.put("ignore_usage", "&cUsage: /ignore (Also used to un-ignore players)"); - defaultMessages.put("ignore_bypass", "&cYou cannot ignore this player"); - defaultMessages.put("ignore_only_players", "&cOnly players can use this command"); - defaultMessages.put("ignore_cannot_ignore_yourself", "&cYou cannot ignore yourself!"); - - // *** ANTI-SPAM *** // - - defaultMessages.put("anti_spam_cooldown", "&cANTI-SPAM: Your messages have been blocked. You cannot chat for another %SPECIAL% seconds."); - - } - - public static String getPrefix() { - - String prefix; - Configuration config = ConfigManager.getInstance().getHandler(ConfigFile.MESSAGES).getConfig(); - - if (config.contains("prefix")) { - prefix = config.getString("prefix"); - } else { - prefix = defaultMessages.get("prefix"); - } - - return prefix; - - } - - public static String getMessage(String id) { - - Configuration config = ConfigManager.getInstance().getHandler(ConfigFile.MESSAGES).getConfig(); - - if (config.contains(id)) return config.getString(id); - if (!defaultMessages.containsKey(id)) return "&cERROR - Please report to plugin developer - No message defined for: " + id; - return defaultMessages.get(id.toLowerCase()); - - } - - public static void sendMessage(CommandSender sender, String id) { - handleSend(sender, id, getPrefix() + "+++", null, false); - } - - public static void sendSpecialMessage(CommandSender sender, String id, String special) { - handleSend(sender, id, getPrefix() + "+++", special, false); - } - - public static void sendSpecialMessage(CommandSender sender, String id, String special, boolean specialJson) { - handleSend(sender, id, getPrefix() + "+++", special, specialJson); - } - - public static void sendSpecialMessageWithoutPrefix(CommandSender sender, String id, String special) { - handleSend(sender, id, "", special, false); - } - - private static void handleSend(CommandSender sender, String id, String prefix, String special, boolean specialJson) { - - boolean isSpecial = special != null; - - // Translate format codes - String message = prefix + getMessage(id); - message = MultiChatUtil.translateColorCodes(message); - if (isSpecial) special = MultiChatUtil.translateColorCodes(special); - - // Handle legacy servers - if (sender instanceof ProxiedPlayer) { - ProxiedPlayer player = (ProxiedPlayer) sender; - if (MultiChat.legacyServers.contains(player.getServer().getInfo().getName())) { - message = MultiChatUtil.approximateRGBColorCodes(message); - if (isSpecial) special = MultiChatUtil.approximateRGBColorCodes(special); - } - } else { - // Handle console - message = MultiChatUtil.approximateRGBColorCodes(message); - if (isSpecial) special = MultiChatUtil.approximateRGBColorCodes(special); - } - - // If we want to treat the "Special" part as Json, then we will parse it here and treat it as a non special message - if (specialJson) { - message = message.replace("%SPECIAL%", special); - isSpecial = false; - } - - // Parse & send message - if (isSpecial) { - sender.sendMessage(ProxyJsonUtils.parseMessage(message, "%SPECIAL%", special)); - } else { - sender.sendMessage(ProxyJsonUtils.parseMessage(message)); - } - - } - -} diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java index 19375b6e..48409291 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/MultiChat.java @@ -1,29 +1,17 @@ package xyz.olivermartin.multichat.bungee; -import java.io.File; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.concurrent.TimeUnit; - import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Plugin; -import net.md_5.bungee.config.Configuration; import xyz.olivermartin.multichat.common.communication.CommChannels; -import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; -import xyz.olivermartin.multichat.proxy.common.MultiChatProxyPlatform; -import xyz.olivermartin.multichat.proxy.common.ProxyBackupManager; -import xyz.olivermartin.multichat.proxy.common.ProxyChatManager; -import xyz.olivermartin.multichat.proxy.common.ProxyLocalCommunicationManager; +import xyz.olivermartin.multichat.proxy.common.*; import xyz.olivermartin.multichat.proxy.common.channels.ChannelManager; import xyz.olivermartin.multichat.proxy.common.channels.TagManager; import xyz.olivermartin.multichat.proxy.common.channels.local.LocalChannel; import xyz.olivermartin.multichat.proxy.common.channels.proxy.GlobalStaticProxyChannel; import xyz.olivermartin.multichat.proxy.common.channels.proxy.ProxyChannelInfo; import xyz.olivermartin.multichat.proxy.common.channels.proxy.StaticProxyChannel; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; -import xyz.olivermartin.multichat.proxy.common.config.ConfigValues; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import xyz.olivermartin.multichat.proxy.common.contexts.ContextManager; import xyz.olivermartin.multichat.proxy.common.contexts.GlobalContext; import xyz.olivermartin.multichat.proxy.common.listeners.ProxyLoginListener; @@ -36,380 +24,305 @@ import xyz.olivermartin.multichat.proxy.common.listeners.communication.ProxyServerActionListener; import xyz.olivermartin.multichat.proxy.common.storage.ProxyDataStore; import xyz.olivermartin.multichat.proxy.common.storage.ProxyFileStoreManager; -import xyz.olivermartin.multichat.proxy.common.storage.files.ProxyAdminChatFileStore; -import xyz.olivermartin.multichat.proxy.common.storage.files.ProxyAnnouncementsFileStore; -import xyz.olivermartin.multichat.proxy.common.storage.files.ProxyBulletinsFileStore; -import xyz.olivermartin.multichat.proxy.common.storage.files.ProxyCastsFileStore; -import xyz.olivermartin.multichat.proxy.common.storage.files.ProxyGlobalChatFileStore; -import xyz.olivermartin.multichat.proxy.common.storage.files.ProxyGroupChatFileStore; -import xyz.olivermartin.multichat.proxy.common.storage.files.ProxyGroupSpyFileStore; -import xyz.olivermartin.multichat.proxy.common.storage.files.ProxyIgnoreFileStore; -import xyz.olivermartin.multichat.proxy.common.storage.files.ProxyLocalSpyFileStore; -import xyz.olivermartin.multichat.proxy.common.storage.files.ProxyMuteFileStore; -import xyz.olivermartin.multichat.proxy.common.storage.files.ProxySocialSpyFileStore; -import xyz.olivermartin.multichat.proxy.common.storage.files.ProxyStaffChatFileStore; -import xyz.olivermartin.multichat.proxy.common.storage.files.ProxyUUIDNameFileStore; +import xyz.olivermartin.multichat.proxy.common.storage.files.*; + +import java.io.File; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; +import java.util.concurrent.TimeUnit; /** * The MAIN MultiChat Class *

This class is the main plugin. All plugin enable and disable control happens here.

- * - * @author Oliver Martin (Revilo410) * + * @author Oliver Martin (Revilo410) */ public class MultiChat extends Plugin { - public static final String LATEST_VERSION = "1.10"; - - public static final String[] ALLOWED_VERSIONS = new String[] { - - LATEST_VERSION, - "1.9.5", - "1.9.4", - "1.9.3", - "1.9.2", - "1.9.1", - "1.9", - "1.8.2", - "1.8.1", - "1.8", - "1.7.5", - "1.7.4", - "1.7.3", - "1.7.2", - "1.7.1", - "1.7", - "1.6.2", - "1.6.1", - "1.6", - "1.5.2", - "1.5.1", - "1.5", - "1.4.2", - "1.4.1", - "1.4", - "1.3.4", - "1.3.3", - "1.3.2", - "1.3.1", - "1.3" - - }; - - public static String configversion; - - // Config values - - public static boolean logPMs = true; - public static boolean logStaffChat = true; - public static boolean logGroupChat = true; - - public static boolean premiumVanish = false; - public static boolean hideVanishedStaffInMsg = true; - public static boolean hideVanishedStaffInStaffList = true; - public static boolean hideVanishedStaffInJoin = true; - - public static List legacyServers = new ArrayList(); - - public void fetchDisplayNames() { - - getProxy().getScheduler().schedule(this, new Runnable() { - - public void run() { - - if (ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getBoolean(ConfigValues.Config.FETCH_SPIGOT_DISPLAY_NAMES) == true) { - - for (ProxiedPlayer player : ProxyServer.getInstance().getPlayers()) { - if (player.getServer() != null) { - ProxyLocalCommunicationManager.sendUpdatePlayerMetaRequestMessage(player.getName(), player.getServer().getInfo()); - } - } - - } - - } - - }, 1L, 5L, TimeUnit.MINUTES); - - } - - public void onEnable() { - - MultiChatProxy.getInstance().registerPlugin(this); - - @SuppressWarnings("unused") - Metrics metrics = new Metrics(this); - - MultiChatProxyPlatform platform = MultiChatProxyPlatform.BUNGEE; - MultiChatProxy.getInstance().registerPlatform(platform); - - ProxyDataStore dataStore = new ProxyDataStore(); - MultiChatProxy.getInstance().registerDataStore(dataStore); - - File configDirectory = getDataFolder(); - if (!getDataFolder().exists()) { - System.out.println("[MultiChat] Creating plugin directory!"); - getDataFolder().mkdirs(); - } - MultiChatProxy.getInstance().registerConfigDirectory(configDirectory); - - String translationsDir = configDirectory.toString() + File.separator + "translations"; - if (!new File(translationsDir).exists()) { - System.out.println("[MultiChat] Creating translations directory!"); - new File(translationsDir).mkdirs(); - } - - ConfigManager.getInstance().registerHandler(ConfigFile.CONFIG, configDirectory); - ConfigManager.getInstance().registerHandler(ConfigFile.JOIN_MESSAGES, configDirectory); - ConfigManager.getInstance().registerHandler(ConfigFile.MESSAGES, configDirectory); - ConfigManager.getInstance().registerHandler(ConfigFile.CHAT_CONTROL, configDirectory); - ConfigManager.getInstance().registerHandler(ConfigFile.ALIASES, configDirectory); - - ConfigManager.getInstance().registerRawHandler("messages_fr.yml", new File(translationsDir)); - ConfigManager.getInstance().registerRawHandler("joinmessages_fr.yml", new File(translationsDir)); - ConfigManager.getInstance().registerRawHandler("config_fr.yml", new File(translationsDir)); - ConfigManager.getInstance().registerRawHandler("chatcontrol_fr.yml", new File(translationsDir)); - ConfigManager.getInstance().registerRawHandler("aliases_fr.yml", new File(translationsDir)); - - Configuration configYML = ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig(); - Configuration chatcontrolYML = ConfigManager.getInstance().getHandler(ConfigFile.CHAT_CONTROL).getConfig(); - - configversion = configYML.getString("version"); - - if (Arrays.asList(ALLOWED_VERSIONS).contains(configversion)) { - - if (!configversion.equals(LATEST_VERSION)) { - getLogger().warning("YOUR CONFIG FILES ARE NOT THE LATEST VERSION"); - getLogger().warning("SOME FEATURES OF MULTICHAT ARE ONLY PRESENT IN THE LATEST VERSION OF THE CONFIG"); - } - - // Register listeners - getProxy().getPluginManager().registerListener(this, new Events()); - - // New listeners (1.10+) - getProxy().getPluginManager().registerListener(this, new ProxyLoginListener()); - getProxy().getPluginManager().registerListener(this, new ProxyServerConnectedListener()); - getProxy().getPluginManager().registerListener(this, new ProxyLogoutListener()); - getProxy().getPluginManager().registerListener(this, new ProxyServerSwitchListener()); - - // Communication Channels - getProxy().registerChannel(CommChannels.PLAYER_META); // pmeta - getProxy().registerChannel(CommChannels.PLAYER_CHAT); // pchat - getProxy().registerChannel(CommChannels.SERVER_CHAT); // schat - getProxy().registerChannel(CommChannels.PLAYER_ACTION); // pact - getProxy().registerChannel(CommChannels.SERVER_ACTION); // sact - getProxy().registerChannel(CommChannels.PLAYER_DATA); // pdata - getProxy().registerChannel(CommChannels.SERVER_DATA); // sdata - getProxy().getPluginManager().registerListener(this, new ProxyPlayerMetaListener()); // list - pmeta - getProxy().getPluginManager().registerListener(this, new ProxyPlayerChatListener()); // list - pchat - getProxy().getPluginManager().registerListener(this, new ProxyPlayerActionListener()); // list - pact - getProxy().getPluginManager().registerListener(this, new ProxyServerActionListener()); // list - sact - - // Register commands - registerCommands(configYML, chatcontrolYML); - - System.out.println("[MultiChat] Config Version: " + configversion); - - // Run start-up routines - ProxyFileStoreManager fileStoreManager = new ProxyFileStoreManager(); - - fileStoreManager.registerFileStore("announcements.dat", - new ProxyAnnouncementsFileStore("Announcements.dat", configDirectory)); - - fileStoreManager.registerFileStore("bulletins.dat", - new ProxyBulletinsFileStore("Bulletins.dat", configDirectory)); - - fileStoreManager.registerFileStore("staffchatinfo.dat", - new ProxyStaffChatFileStore("StaffChatInfo.dat", configDirectory)); - - fileStoreManager.registerFileStore("adminchatinfo.dat", - new ProxyAdminChatFileStore("AdminChatInfo.dat", configDirectory)); - - fileStoreManager.registerFileStore("groupchatinfo.dat", - new ProxyGroupChatFileStore("GroupChatInfo.dat", configDirectory)); - - fileStoreManager.registerFileStore("groupspyinfo.dat", - new ProxyGroupSpyFileStore("GroupSpyInfo.dat", configDirectory)); - - fileStoreManager.registerFileStore("casts.dat", - new ProxyCastsFileStore("Casts.dat", configDirectory)); - - fileStoreManager.registerFileStore("socialspyinfo.dat", - new ProxySocialSpyFileStore("SocialSpyInfo.dat", configDirectory)); - - fileStoreManager.registerFileStore("globalchatinfo.dat", - new ProxyGlobalChatFileStore("GlobalChatInfo.dat", configDirectory)); - - fileStoreManager.registerFileStore("mute.dat", - new ProxyMuteFileStore("Mute.dat", configDirectory)); + public static final String LATEST_VERSION = "1.10"; + + public static final Set ALLOWED_VERSIONS = new HashSet<>(Arrays.asList( + LATEST_VERSION, + "1.9.5", + "1.9.4", + "1.9.3", + "1.9.2", + "1.9.1", + "1.9", + "1.8.2", + "1.8.1", + "1.8", + "1.7.5", + "1.7.4", + "1.7.3", + "1.7.2", + "1.7.1", + "1.7", + "1.6.2", + "1.6.1", + "1.6", + "1.5.2", + "1.5.1", + "1.5", + "1.4.2", + "1.4.1", + "1.4", + "1.3.4", + "1.3.3", + "1.3.2", + "1.3.1", + "1.3" + )); + + // Config values + public static boolean premiumVanish = false; + + public void fetchDisplayNames() { + + getProxy().getScheduler().schedule(this, () -> { + + if (ProxyConfigs.CONFIG.isFetchSpigotDisplayNames()) { + + for (ProxiedPlayer player : ProxyServer.getInstance().getPlayers()) { + if (player.getServer() != null) { + ProxyLocalCommunicationManager.sendUpdatePlayerMetaRequestMessage(player.getName(), player.getServer().getInfo()); + } + } + + } + + }, 1L, 5L, TimeUnit.MINUTES); + + } + + public void onEnable() { + + MultiChatProxy.getInstance().registerPlugin(this); + + @SuppressWarnings("unused") + Metrics metrics = new Metrics(this); + + MultiChatProxyPlatform platform = MultiChatProxyPlatform.BUNGEE; + MultiChatProxy.getInstance().registerPlatform(platform); + + ProxyDataStore dataStore = new ProxyDataStore(); + MultiChatProxy.getInstance().registerDataStore(dataStore); + + File configDirectory = getDataFolder(); + if (!getDataFolder().exists()) { + getLogger().info("Creating plugin directory"); + if (!getDataFolder().mkdirs()) { + getLogger().severe("Could not create plugin directory. Check write access to the plugins folder!"); + return; + } + } + MultiChatProxy.getInstance().registerConfigDirectory(configDirectory); + + File translationsDir = new File(configDirectory.toString() + File.separator + "translations"); + if (!translationsDir.exists()) { + getLogger().info("Creating translations directory"); + if (!translationsDir.mkdirs()) { + getLogger().severe("Could not create translations directory. Check write access to the plugins folder!"); + return; + } + } + + ProxyConfigs.ALL.forEach(proxyConfig -> { + proxyConfig.setPlugin(this); + proxyConfig.reloadConfig(); + ProxyConfigs.loadRawConfig(this, proxyConfig.getFileName().replace(".yml", "_fr.yml"), translationsDir); + }); + + + if (!ALLOWED_VERSIONS.contains(ProxyConfigs.CONFIG.getVersion())) { + getLogger().info("Config incorrect version! Please repair or delete it!"); + return; + } + + if (!ProxyConfigs.CONFIG.getVersion().equals(LATEST_VERSION)) { + getLogger().warning("YOUR CONFIG FILES ARE NOT THE LATEST VERSION"); + getLogger().warning("SOME FEATURES OF MULTICHAT ARE ONLY PRESENT IN THE LATEST VERSION OF THE CONFIG"); + } + + // Register listeners + getProxy().getPluginManager().registerListener(this, new Events()); + + // New listeners (1.10+) + getProxy().getPluginManager().registerListener(this, new ProxyLoginListener()); + getProxy().getPluginManager().registerListener(this, new ProxyServerConnectedListener()); + getProxy().getPluginManager().registerListener(this, new ProxyLogoutListener()); + getProxy().getPluginManager().registerListener(this, new ProxyServerSwitchListener()); + + // Communication Channels + getProxy().registerChannel(CommChannels.PLAYER_META); // pmeta + getProxy().registerChannel(CommChannels.PLAYER_CHAT); // pchat + getProxy().registerChannel(CommChannels.SERVER_CHAT); // schat + getProxy().registerChannel(CommChannels.PLAYER_ACTION); // pact + getProxy().registerChannel(CommChannels.SERVER_ACTION); // sact + getProxy().registerChannel(CommChannels.PLAYER_DATA); // pdata + getProxy().registerChannel(CommChannels.SERVER_DATA); // sdata + getProxy().getPluginManager().registerListener(this, new ProxyPlayerMetaListener()); // list - pmeta + getProxy().getPluginManager().registerListener(this, new ProxyPlayerChatListener()); // list - pchat + getProxy().getPluginManager().registerListener(this, new ProxyPlayerActionListener()); // list - pact + getProxy().getPluginManager().registerListener(this, new ProxyServerActionListener()); // list - sact - fileStoreManager.registerFileStore("ignore.dat", - new ProxyIgnoreFileStore("Ignore.dat", configDirectory)); + // Register commands + registerCommands(); - fileStoreManager.registerFileStore("multichatuuidname.dat", - new ProxyUUIDNameFileStore("MultiChatUUIDName.dat", configDirectory)); + getLogger().info("Config Version: " + ProxyConfigs.CONFIG.getVersion()); - fileStoreManager.registerFileStore("localspyinfo.dat", - new ProxyLocalSpyFileStore("LocalSpyInfo.dat", configDirectory)); + // Run start-up routines + ProxyFileStoreManager fileStoreManager = new ProxyFileStoreManager(); - MultiChatProxy.getInstance().registerFileStoreManager(fileStoreManager); + fileStoreManager.registerFileStore("announcements.dat", + new ProxyAnnouncementsFileStore("Announcements.dat", configDirectory)); - // Set up chat control stuff - if (chatcontrolYML.contains("link_control")) { - ChatControl.controlLinks = chatcontrolYML.getBoolean("link_control"); - ChatControl.linkMessage = chatcontrolYML.getString("link_removal_message"); - if (chatcontrolYML.contains("link_regex")) { - ChatControl.linkRegex = chatcontrolYML.getString("link_regex"); - } - } + fileStoreManager.registerFileStore("bulletins.dat", + new ProxyBulletinsFileStore("Bulletins.dat", configDirectory)); - if (configYML.contains("privacy_settings")) { - logPMs = configYML.getSection("privacy_settings").getBoolean("log_pms"); - logStaffChat = configYML.getSection("privacy_settings").getBoolean("log_staffchat"); - logGroupChat = configYML.getSection("privacy_settings").getBoolean("log_groupchat"); - } + fileStoreManager.registerFileStore("staffchatinfo.dat", + new ProxyStaffChatFileStore("StaffChatInfo.dat", configDirectory)); - // Legacy servers for RGB approximation - if (configYML.contains("legacy_servers")) { - legacyServers = configYML.getStringList("legacy_servers"); - } + fileStoreManager.registerFileStore("adminchatinfo.dat", + new ProxyAdminChatFileStore("AdminChatInfo.dat", configDirectory)); - // Set default channel - String defaultChannel = configYML.getString("default_channel"); - boolean forceChannelOnJoin = configYML.getBoolean("force_channel_on_join"); + fileStoreManager.registerFileStore("groupchatinfo.dat", + new ProxyGroupChatFileStore("GroupChatInfo.dat", configDirectory)); - // Set up global chat - //GlobalChannel channel = LegacyChannel.getGlobalChannel(); - //channel.setFormat(configYML.getString("globalformat")); - - List noGlobalServers = new ArrayList(); - - // Add all appropriate servers to this hardcoded global chat stream - for (String server : configYML.getStringList("no_global")) { - //channel.addServer(server); - noGlobalServers.add(server); - } - - /// - - // New context manager and channels - GlobalContext globalContext = new GlobalContext(defaultChannel, forceChannelOnJoin, true, noGlobalServers); - ContextManager contextManager = new ContextManager(globalContext); - MultiChatProxy.getInstance().registerContextManager(contextManager); - - ChannelManager channelManager = new ChannelManager(); - channelManager.setGlobalChannel(new GlobalStaticProxyChannel("Global Channel", configYML.getString("globalformat"), ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("global"), channelManager)); - channelManager.setLocalChannel(new LocalChannel("Local Channel", configYML.getString("globalformat"), ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("local"), channelManager)); - MultiChatProxy.getInstance().registerChannelManager(channelManager); - - // TODO This is just a test channel - channelManager.registerProxyChannel(new StaticProxyChannel("test", new ProxyChannelInfo("A test channel", "&8[&7TEST&8] &f%DISPLAYNAME%&f: ", false, globalContext, new ArrayList(), "multichat.chat.channel.test", "multichat.chat.channel.test.view"), channelManager)); + fileStoreManager.registerFileStore("groupspyinfo.dat", + new ProxyGroupSpyFileStore("GroupSpyInfo.dat", configDirectory)); + + fileStoreManager.registerFileStore("casts.dat", + new ProxyCastsFileStore("Casts.dat", configDirectory)); + + fileStoreManager.registerFileStore("socialspyinfo.dat", + new ProxySocialSpyFileStore("SocialSpyInfo.dat", configDirectory)); + + fileStoreManager.registerFileStore("globalchatinfo.dat", + new ProxyGlobalChatFileStore("GlobalChatInfo.dat", configDirectory)); + + fileStoreManager.registerFileStore("mute.dat", + new ProxyMuteFileStore("Mute.dat", configDirectory)); + + fileStoreManager.registerFileStore("ignore.dat", + new ProxyIgnoreFileStore("Ignore.dat", configDirectory)); + + fileStoreManager.registerFileStore("multichatuuidname.dat", + new ProxyUUIDNameFileStore("MultiChatUUIDName.dat", configDirectory)); + + fileStoreManager.registerFileStore("localspyinfo.dat", + new ProxyLocalSpyFileStore("LocalSpyInfo.dat", configDirectory)); + + MultiChatProxy.getInstance().registerFileStoreManager(fileStoreManager); + + // Set default channel + String defaultChannel = ProxyConfigs.CONFIG.getDefaultChannel(); + boolean forceChannelOnJoin = ProxyConfigs.CONFIG.isForceChannelOnJoin(); + + // New context manager and channels + GlobalContext globalContext = new GlobalContext(defaultChannel, forceChannelOnJoin, true); + ContextManager contextManager = new ContextManager(globalContext); + MultiChatProxy.getInstance().registerContextManager(contextManager); + + ChannelManager channelManager = new ChannelManager(); + channelManager.setGlobalChannel(new GlobalStaticProxyChannel("Global Channel", + ProxyConfigs.CONFIG.getGlobalFormat(), + channelManager) + ); + channelManager.setLocalChannel(new LocalChannel("Local Channel", + ProxyConfigs.CONFIG.getGlobalFormat(), + channelManager) + ); + MultiChatProxy.getInstance().registerChannelManager(channelManager); + + // TODO This is just a test channel + channelManager.registerProxyChannel(new StaticProxyChannel("test", new ProxyChannelInfo("A test channel", "&8[&7TEST&8] &f%DISPLAYNAME%&f: ", false, globalContext, "multichat.chat.channel.test", "multichat.chat.channel.test.view"), channelManager)); + + ProxyChatManager chatManager = new ProxyChatManager(); + MultiChatProxy.getInstance().registerChatManager(chatManager); + + MultiChatProxy.getInstance().registerTagManager(new TagManager()); + + /// + + // Initiate backup routine + ProxyBackupManager backupManager = new ProxyBackupManager(); + MultiChatProxy.getInstance().registerBackupManager(backupManager); + backupManager.registerBackupTask(() -> MultiChatProxy.getInstance().getFileStoreManager().save()); + backupManager.startBackup(1L, 60L, TimeUnit.MINUTES); + + // Fetch display names of all players + fetchDisplayNames(); + + // Manage premiumVanish dependency + if (ProxyServer.getInstance().getPluginManager().getPlugin("PremiumVanish") != null) { + premiumVanish = true; + getLogger().info("Hooked with PremiumVanish!"); + } + } + + public void onDisable() { + + getLogger().info("Thank you for using MultiChat. Disabling..."); - ProxyChatManager chatManager = new ProxyChatManager(); - MultiChatProxy.getInstance().registerChatManager(chatManager); + MultiChatProxy.getInstance().getFileStoreManager().save(); + + } - MultiChatProxy.getInstance().registerTagManager(new TagManager()); - - /// - - // Initiate backup routine - ProxyBackupManager backupManager = new ProxyBackupManager(); - MultiChatProxy.getInstance().registerBackupManager(backupManager); - backupManager.registerBackupTask(new Runnable() { - - public void run() { - MultiChatProxy.getInstance().getFileStoreManager().save(); - } - - }); - backupManager.startBackup(1L, 60L, TimeUnit.MINUTES); - - // Fetch display names of all players - fetchDisplayNames(); - - // Manage premiumVanish dependency - if (ProxyServer.getInstance().getPluginManager().getPlugin("PremiumVanish") != null) { - premiumVanish = true; - System.out.println("[MultiChat] Hooked with PremiumVanish!"); - - if (configYML.contains("premium_vanish")) { - hideVanishedStaffInMsg = configYML.getBoolean("premium_vanish.prevent_message"); - hideVanishedStaffInStaffList = configYML.getBoolean("premium_vanish.prevent_staff_list"); - hideVanishedStaffInJoin = configYML.getBoolean("premium_vanish.silence_join"); - } - - } - - } else { - getLogger().info("Config incorrect version! Please repair or delete it!"); - } - } - - public void onDisable() { - - getLogger().info("Thankyou for using MultiChat. Disabling..."); - - MultiChatProxy.getInstance().getFileStoreManager().save(); - - } - - public void registerCommands(Configuration configYML, Configuration chatcontrolYML) { - - // Register main commands - getProxy().getPluginManager().registerCommand(this, CommandManager.getAcc()); - getProxy().getPluginManager().registerCommand(this, CommandManager.getAc()); - getProxy().getPluginManager().registerCommand(this, CommandManager.getMcc()); - getProxy().getPluginManager().registerCommand(this, CommandManager.getMc()); - getProxy().getPluginManager().registerCommand(this, CommandManager.getGc()); - getProxy().getPluginManager().registerCommand(this, CommandManager.getGroup()); - getProxy().getPluginManager().registerCommand(this, CommandManager.getGrouplist()); - getProxy().getPluginManager().registerCommand(this, CommandManager.getMultichat()); - getProxy().getPluginManager().registerCommand(this, CommandManager.getMultichatBypass()); - getProxy().getPluginManager().registerCommand(this, CommandManager.getMultiChatExecute()); - getProxy().getPluginManager().registerCommand(this, CommandManager.getDisplay()); - getProxy().getPluginManager().registerCommand(this, CommandManager.getFreezechat()); - getProxy().getPluginManager().registerCommand(this, CommandManager.getHelpme()); - getProxy().getPluginManager().registerCommand(this, CommandManager.getClearchat()); - getProxy().getPluginManager().registerCommand(this, CommandManager.getAnnouncement()); - getProxy().getPluginManager().registerCommand(this, CommandManager.getBulletin()); - getProxy().getPluginManager().registerCommand(this, CommandManager.getCast()); - getProxy().getPluginManager().registerCommand(this, CommandManager.getUsecast()); - getProxy().getPluginManager().registerCommand(this, CommandManager.getIgnore()); - - // Register PM commands - if (configYML.getBoolean("pm")) { - getProxy().getPluginManager().registerCommand(this, CommandManager.getMsg()); - getProxy().getPluginManager().registerCommand(this, CommandManager.getReply()); - getProxy().getPluginManager().registerCommand(this, CommandManager.getSocialspy()); - } - - // Register global chat commands - if (configYML.getBoolean("global")) { - getProxy().getPluginManager().registerCommand(this, CommandManager.getLocal()); - getProxy().getPluginManager().registerCommand(this, CommandManager.getGlobal()); - getProxy().getPluginManager().registerCommand(this, CommandManager.getChannel()); - getProxy().getPluginManager().registerCommand(this, CommandManager.getLocalspy()); - } - - // Register staff list command /staff - if (configYML.contains("staff_list")) { - if (configYML.getBoolean("staff_list")) { - getProxy().getPluginManager().registerCommand(this, CommandManager.getStafflist()); - } - } else { - getProxy().getPluginManager().registerCommand(this, CommandManager.getStafflist()); - } - - // Register mute command - if (chatcontrolYML.getBoolean("mute")) { - getProxy().getPluginManager().registerCommand(this, CommandManager.getMute()); - } - - } - - public void unregisterCommands() { - getProxy().getPluginManager().unregisterCommands(this); - } + public void registerCommands() { + + // Register main commands + getProxy().getPluginManager().registerCommand(this, CommandManager.getAcc()); + getProxy().getPluginManager().registerCommand(this, CommandManager.getAc()); + getProxy().getPluginManager().registerCommand(this, CommandManager.getMcc()); + getProxy().getPluginManager().registerCommand(this, CommandManager.getMc()); + getProxy().getPluginManager().registerCommand(this, CommandManager.getGc()); + getProxy().getPluginManager().registerCommand(this, CommandManager.getGroup()); + getProxy().getPluginManager().registerCommand(this, CommandManager.getGrouplist()); + getProxy().getPluginManager().registerCommand(this, CommandManager.getMultichat()); + getProxy().getPluginManager().registerCommand(this, CommandManager.getMultichatBypass()); + getProxy().getPluginManager().registerCommand(this, CommandManager.getMultiChatExecute()); + getProxy().getPluginManager().registerCommand(this, CommandManager.getDisplay()); + getProxy().getPluginManager().registerCommand(this, CommandManager.getFreezechat()); + getProxy().getPluginManager().registerCommand(this, CommandManager.getHelpme()); + getProxy().getPluginManager().registerCommand(this, CommandManager.getClearchat()); + getProxy().getPluginManager().registerCommand(this, CommandManager.getAnnouncement()); + getProxy().getPluginManager().registerCommand(this, CommandManager.getBulletin()); + getProxy().getPluginManager().registerCommand(this, CommandManager.getCast()); + getProxy().getPluginManager().registerCommand(this, CommandManager.getUsecast()); + getProxy().getPluginManager().registerCommand(this, CommandManager.getIgnore()); + + // Register PM commands + if (ProxyConfigs.CONFIG.isPm()) { + getProxy().getPluginManager().registerCommand(this, CommandManager.getMsg()); + getProxy().getPluginManager().registerCommand(this, CommandManager.getReply()); + getProxy().getPluginManager().registerCommand(this, CommandManager.getSocialspy()); + } + + // Register global chat commands + if (ProxyConfigs.CONFIG.isGlobal()) { + getProxy().getPluginManager().registerCommand(this, CommandManager.getLocal()); + getProxy().getPluginManager().registerCommand(this, CommandManager.getGlobal()); + getProxy().getPluginManager().registerCommand(this, CommandManager.getChannel()); + getProxy().getPluginManager().registerCommand(this, CommandManager.getLocalspy()); + } + + // Register staff list command /staff + if (ProxyConfigs.CONFIG.isStaffList()) { + getProxy().getPluginManager().registerCommand(this, CommandManager.getStafflist()); + } + + // Register mute command + if (ProxyConfigs.CHAT_CONTROL.isMute()) { + getProxy().getPluginManager().registerCommand(this, CommandManager.getMute()); + } + + } + + public void unregisterCommands() { + getProxy().getPluginManager().unregisterCommands(this); + } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PlayerMeta.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PlayerMeta.java index b1b5c636..7e01c695 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PlayerMeta.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PlayerMeta.java @@ -36,7 +36,7 @@ public String getSpigotDisplayname() { displayName = displayName.replaceAll("%NICK%", nick); displayName = displayName.replaceAll("%UUID%", uuid.toString()); - displayName = displayName.replaceAll("&(?=[a-f,0-9,k-o,r])", "§"); + displayName = displayName.replaceAll("&(?=[a-f,0-9,k-o,r])", "§"); return displayName; diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PlayerMetaManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PlayerMetaManager.java index 062bdb65..cf022dc9 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PlayerMetaManager.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PlayerMetaManager.java @@ -7,107 +7,58 @@ import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.connection.ProxiedPlayer; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; -import xyz.olivermartin.multichat.proxy.common.config.ConfigValues; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; public class PlayerMetaManager { - static { - instance = new PlayerMetaManager(); - } + static { + instance = new PlayerMetaManager(); + } - private static PlayerMetaManager instance; + private static PlayerMetaManager instance; - public static PlayerMetaManager getInstance() { - return instance; - } + public static PlayerMetaManager getInstance() { + return instance; + } - // END OF STATIC + // END OF STATIC - private Map metaMap; + private Map metaMap; - public PlayerMetaManager() { - this.metaMap = new HashMap(); - } + public PlayerMetaManager() { + this.metaMap = new HashMap<>(); + } - public void registerPlayer(UUID uuid, String name) { - this.metaMap.put(uuid, new PlayerMeta(uuid, name)); - } + public void registerPlayer(UUID uuid, String name) { + this.metaMap.put(uuid, new PlayerMeta(uuid, name)); + } - public void unregisterPlayer(UUID uuid) { - metaMap.remove(uuid); - } + public void unregisterPlayer(UUID uuid) { + metaMap.remove(uuid); + } - public Optional getPlayer(UUID uuid) { - if (!metaMap.containsKey(uuid)) return Optional.empty(); - return Optional.of(metaMap.get(uuid)); - } + public Optional getPlayer(UUID uuid) { + if (!metaMap.containsKey(uuid)) return Optional.empty(); + return Optional.of(metaMap.get(uuid)); + } - public void updateDisplayName(UUID uuid) { + public void updateDisplayName(UUID uuid) { - DebugManager.log("[PlayerMetaManager] Updating display name..."); + DebugManager.log("[PlayerMetaManager] Updating display name..."); - Optional opm = getPlayer(uuid); + Optional opm = getPlayer(uuid); - if (!opm.isPresent()) return; + if (!opm.isPresent()) return; - DebugManager.log("[PlayerMetaManager] Player is present!"); + DebugManager.log("[PlayerMetaManager] Player is present!"); - ProxiedPlayer player = ProxyServer.getInstance().getPlayer(uuid); - - if (ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getBoolean(ConfigValues.Config.FETCH_SPIGOT_DISPLAY_NAMES) == true && player != null) { - - DebugManager.log("[PlayerMetaManager] Fetch Spigot Display Names is true"); - - if (ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().contains(ConfigValues.Config.SET_DISPLAY_NAME)) { - - if (ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getBoolean(ConfigValues.Config.SET_DISPLAY_NAME)) { - - DebugManager.log("[PlayerMetaManager] MultiChat is in charge of display names"); - - if (ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().contains(ConfigValues.Config.DISPLAY_NAME_FORMAT)) { - //player.setDisplayName(opm.get().getDisplayName(ConfigManager.getInstance().getHandler("config.yml").getConfig().getString("display_name_format"))); - - DebugManager.log("[PlayerMetaManager] Set as: " + opm.get().getSpigotDisplayname()); - - player.setDisplayName(opm.get().getSpigotDisplayname()); - } else { - //player.setDisplayName(opm.get().getDisplayName("%PREFIX%%NICK%%SUFFIX%")); - - DebugManager.log("[PlayerMetaManager] Set as: " + opm.get().getSpigotDisplayname()); - - player.setDisplayName(opm.get().getSpigotDisplayname()); - } - } else { - - DebugManager.log("[PlayerMetaManager] MultiChat is NOT in charge of display names!"); - - DebugManager.log("[PlayerMetaManager] Set as: " + opm.get().getSpigotDisplayname()); - - player.setDisplayName(opm.get().getSpigotDisplayname()); - - } - - } else { - - if (ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().contains(ConfigValues.Config.DISPLAY_NAME_FORMAT)) { - //player.setDisplayName(opm.get().getDisplayName(ConfigManager.getInstance().getHandler("config.yml").getConfig().getString("display_name_format"))); - // TODO Maybe new option for "fetch_spigot_displayname"? - - DebugManager.log("[PlayerMetaManager] Set as: " + opm.get().getSpigotDisplayname()); - - player.setDisplayName(opm.get().getSpigotDisplayname()); - } else { - //player.setDisplayName(opm.get().getDisplayName("%PREFIX%%NICK%%SUFFIX%")); - - DebugManager.log("[PlayerMetaManager] Set as: " + opm.get().getSpigotDisplayname()); - - player.setDisplayName(opm.get().getSpigotDisplayname()); - } - } - - } - - } + ProxiedPlayer player = ProxyServer.getInstance().getPlayer(uuid); + // TODO: [ConfigRefactor] Decide whatever the hell this was supposed to be + if (ProxyConfigs.CONFIG.isFetchSpigotDisplayNames() && player != null) { + DebugManager.log("[PlayerMetaManager] Fetch Spigot Display Names is true"); + DebugManager.log("[PlayerMetaManager] Set as: " + opm.get().getSpigotDisplayname()); + player.setDisplayName(opm.get().getSpigotDisplayname()); + } + } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PrivateMessageManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PrivateMessageManager.java index 98eb1ace..73417cc2 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PrivateMessageManager.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/PrivateMessageManager.java @@ -1,18 +1,17 @@ package xyz.olivermartin.multichat.bungee; -import java.util.Collection; -import java.util.Optional; -import java.util.UUID; - import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.connection.ProxiedPlayer; import xyz.olivermartin.multichat.common.MultiChatUtil; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; import xyz.olivermartin.multichat.proxy.common.ProxyJsonUtils; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; -import xyz.olivermartin.multichat.proxy.common.config.ConfigValues; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import xyz.olivermartin.multichat.proxy.common.storage.ProxyDataStore; +import java.util.Collection; +import java.util.Optional; +import java.util.UUID; + public class PrivateMessageManager { private static PrivateMessageManager instance; @@ -33,24 +32,12 @@ private PrivateMessageManager() { chatfix = new ChatManipulation(); } - private String getOutFormat() { - return ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getString(ConfigValues.Config.PM_OUT_FORMAT); - } - - private String getInFormat() { - return ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getString(ConfigValues.Config.PM_IN_FORMAT); - } - - private String getSpyFormat() { - return ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getString(ConfigValues.Config.PM_SPY_FORMAT); - } - private void displayMessage(ProxiedPlayer player, String rawMessage, String replacement) { rawMessage = MultiChatUtil.translateColorCodes(rawMessage); replacement = MultiChatUtil.translateColorCodes(replacement); - if (MultiChat.legacyServers.contains(player.getServer().getInfo().getName())) { + if (ProxyConfigs.CONFIG.isLegacyServer(player.getServer().getInfo().getName())) { rawMessage = MultiChatUtil.approximateRGBColorCodes(rawMessage); replacement = MultiChatUtil.approximateRGBColorCodes(replacement); } @@ -80,17 +67,17 @@ public void sendMessage(String message, ProxiedPlayer sender, ProxiedPlayer targ ProxyDataStore ds = MultiChatProxy.getInstance().getDataStore(); // Replace placeholders (SENDER) - String finalmessage = chatfix.replaceMsgVars(getOutFormat(), message, sender, target); + String finalmessage = chatfix.replaceMsgVars(ProxyConfigs.CONFIG.getPmOutFormat(), message, sender, target); displayMessage(sender, finalmessage, message); // Replace placeholders (TARGET) - finalmessage = chatfix.replaceMsgVars(getInFormat(), message, sender, target); + finalmessage = chatfix.replaceMsgVars(ProxyConfigs.CONFIG.getPmInFormat(), message, sender, target); displayMessage(target, finalmessage, message); // Replace placeholders (SPY) - finalmessage = chatfix.replaceMsgVars(getSpyFormat(), message, sender, target); + finalmessage = chatfix.replaceMsgVars(ProxyConfigs.CONFIG.getPmSpyFormat(), message, sender, target); for (ProxiedPlayer onlineplayer : ProxyServer.getInstance().getPlayers()) { @@ -119,23 +106,23 @@ public void sendMessageConsoleTarget(String message, ProxiedPlayer sender) { ProxyDataStore ds = MultiChatProxy.getInstance().getDataStore(); // Replace placeholders (SENDER) - String finalmessage = chatfix.replaceMsgConsoleTargetVars(getOutFormat(), message, (ProxiedPlayer)sender); + String finalmessage = chatfix.replaceMsgConsoleTargetVars(ProxyConfigs.CONFIG.getPmOutFormat(), message, sender); displayMessage(sender, finalmessage, message); // Replace placeholders (TARGET) (CONSOLE) - finalmessage = chatfix.replaceMsgConsoleTargetVars(getInFormat(), message, (ProxiedPlayer)sender); + finalmessage = chatfix.replaceMsgConsoleTargetVars(ProxyConfigs.CONFIG.getPmInFormat(), message, sender); displayConsoleMessage(finalmessage, message); // Replace placeholders (SPY) - finalmessage = chatfix.replaceMsgConsoleTargetVars(getSpyFormat(), message, (ProxiedPlayer)sender); + finalmessage = chatfix.replaceMsgConsoleTargetVars(ProxyConfigs.CONFIG.getPmSpyFormat(), message, sender); for (ProxiedPlayer onlineplayer : ProxyServer.getInstance().getPlayers()) { if ((onlineplayer.hasPermission("multichat.staff.spy")) && (ds.getSocialSpy().contains(onlineplayer.getUniqueId())) - && (onlineplayer.getUniqueId() != ((ProxiedPlayer)sender).getUniqueId()) + && (onlineplayer.getUniqueId() != sender.getUniqueId()) && (!(sender.hasPermission("multichat.staff.spy.bypass")))) { displayMessage(onlineplayer, finalmessage, message); @@ -153,17 +140,17 @@ public void sendMessageConsoleSender(String message, ProxiedPlayer target) { ProxyDataStore ds = MultiChatProxy.getInstance().getDataStore(); // Replace placeholders (SENDER) (CONSOLE) - String finalmessage = chatfix.replaceMsgConsoleSenderVars(getOutFormat(), message, target); + String finalmessage = chatfix.replaceMsgConsoleSenderVars(ProxyConfigs.CONFIG.getPmOutFormat(), message, target); displayConsoleMessage(finalmessage, message); // Replace placeholders (TARGET) - finalmessage = chatfix.replaceMsgConsoleSenderVars(getInFormat(), message, target); + finalmessage = chatfix.replaceMsgConsoleSenderVars(ProxyConfigs.CONFIG.getPmInFormat(), message, target); displayMessage(target, finalmessage, message); // Replace placeholders (SPY) - finalmessage = chatfix.replaceMsgConsoleSenderVars(getSpyFormat(), message, target); + finalmessage = chatfix.replaceMsgConsoleSenderVars(ProxyConfigs.CONFIG.getPmSpyFormat(), message, target); for (ProxiedPlayer onlineplayer : ProxyServer.getInstance().getPlayers()) { diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/StaffChatManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/StaffChatManager.java index 448be651..14e8d0f8 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/StaffChatManager.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/StaffChatManager.java @@ -1,19 +1,18 @@ package xyz.olivermartin.multichat.bungee; -import java.util.Optional; - import com.olivermartin410.plugins.TChatInfo; - import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.connection.ProxiedPlayer; import xyz.olivermartin.multichat.bungee.events.PostStaffChatEvent; +import xyz.olivermartin.multichat.common.MessageType; import xyz.olivermartin.multichat.common.MultiChatUtil; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; import xyz.olivermartin.multichat.proxy.common.ProxyJsonUtils; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; -import xyz.olivermartin.multichat.proxy.common.config.ConfigValues; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import xyz.olivermartin.multichat.proxy.common.storage.ProxyDataStore; +import java.util.Optional; + /** * Staff Chat Manager *

Manages chat input to the staff chats, both mod and admin

@@ -35,17 +34,15 @@ private void sendStaffChatMessage(String id, String username, String displayname ProxyDataStore ds = MultiChatProxy.getInstance().getDataStore(); ChatManipulation chatfix = new ChatManipulation(); - String messageFormat; - if (id.equals("mod")) { - messageFormat = ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getString(ConfigValues.Config.ModChat.FORMAT); - } else { - messageFormat = ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getString(ConfigValues.Config.AdminChat.FORMAT); - } + String messageFormat = id.equals("mod") + ? ProxyConfigs.CONFIG.getModChatFormat() + : ProxyConfigs.CONFIG.getAdminChatFormat(); String original = message; Optional crm; - crm = ChatControl.applyChatRules(original, "staff_chats", username); + ProxiedPlayer proxiedPlayer = username.equals("console") ? null : ProxyServer.getInstance().getPlayer(username); + crm = ChatControl.applyChatRules(proxiedPlayer, original, MessageType.STAFF_CHATS); if (crm.isPresent()) { original = crm.get(); @@ -60,16 +57,16 @@ private void sendStaffChatMessage(String id, String username, String displayname if (id.equals("mod") && !ds.getModChatPreferences().containsKey(onlineplayer.getUniqueId())) { TChatInfo chatinfo = new TChatInfo(); - chatinfo.setChatColor(ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getString(ConfigValues.Config.ModChat.CC_DEFAULT).toCharArray()[0]); - chatinfo.setNameColor(ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getString(ConfigValues.Config.ModChat.NC_DEFAULT).toCharArray()[0]); + chatinfo.setChatColor(ProxyConfigs.CONFIG.getModChatColor()); + chatinfo.setNameColor(ProxyConfigs.CONFIG.getModNameColor()); ds.getModChatPreferences().put(onlineplayer.getUniqueId(), chatinfo); } else if (id.equals("admin") && !ds.getAdminChatPreferences().containsKey(onlineplayer.getUniqueId())) { TChatInfo chatinfo = new TChatInfo(); - chatinfo.setChatColor(ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getString(ConfigValues.Config.AdminChat.CC_DEFAULT).toCharArray()[0]); - chatinfo.setNameColor(ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getString(ConfigValues.Config.AdminChat.NC_DEFAULT).toCharArray()[0]); + chatinfo.setChatColor(ProxyConfigs.CONFIG.getAdminChatColor()); + chatinfo.setNameColor(ProxyConfigs.CONFIG.getAdminNameColor()); ds.getAdminChatPreferences().put(onlineplayer.getUniqueId(), chatinfo); @@ -84,7 +81,7 @@ private void sendStaffChatMessage(String id, String username, String displayname message = MultiChatUtil.translateColorCodes(message); String originalTranslated = MultiChatUtil.translateColorCodes(original); - if (MultiChat.legacyServers.contains(onlineplayer.getServer().getInfo().getName())) { + if (ProxyConfigs.CONFIG.isLegacyServer(onlineplayer.getServer().getInfo().getName())) { message = MultiChatUtil.approximateRGBColorCodes(message); originalTranslated = MultiChatUtil.approximateRGBColorCodes(originalTranslated); } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/ACCCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/ACCCommand.java index 6cdea059..be48e935 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/ACCCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/ACCCommand.java @@ -5,12 +5,10 @@ import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Command; -import xyz.olivermartin.multichat.bungee.ConfigManager; import xyz.olivermartin.multichat.bungee.DebugManager; -import xyz.olivermartin.multichat.bungee.MessageManager; import xyz.olivermartin.multichat.common.RegexUtil; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import xyz.olivermartin.multichat.proxy.common.storage.ProxyDataStore; /** @@ -23,26 +21,26 @@ public class ACCCommand extends Command { public ACCCommand() { - super("mcacc", "multichat.staff.admin", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("acc").toArray(new String[0])); + super("mcacc", "multichat.staff.admin", ProxyConfigs.ALIASES.getAliases("mcacc")); } public void execute(CommandSender sender, String[] args) { if (!(sender instanceof ProxiedPlayer)) { - MessageManager.sendMessage(sender, "command_acc_only_players"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_acc_only_players"); return; } DebugManager.log("[ACCCommand] Command sender is a player"); if (args.length != 2) { - MessageManager.sendMessage(sender, "command_acc_usage"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_acc_usage"); return; } args[0] = args[0].toLowerCase(); args[1] = args[1].toLowerCase(); - if (!RegexUtil.COLOR_LEGACY.matcher(args[0]).matches() || !RegexUtil.COLOR_LEGACY.matcher(args[1]).matches()) { - MessageManager.sendMessage(sender, "command_acc_invalid"); - MessageManager.sendMessage(sender, "command_acc_invalid_usage"); + if (!RegexUtil.LEGACY_COLOR.matches(args[0]) || !RegexUtil.LEGACY_COLOR.matches(args[1])) { + ProxyConfigs.MESSAGES.sendMessage(sender, "command_acc_invalid"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_acc_invalid_usage"); return; } @@ -60,6 +58,6 @@ public void execute(CommandSender sender, String[] args) { DebugManager.log("[ACCCommand] Preferences updated"); - MessageManager.sendMessage(sender, "command_acc_updated"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_acc_updated"); } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/ACCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/ACCommand.java index cba3ee8f..92065902 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/ACCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/ACCommand.java @@ -3,11 +3,9 @@ import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Command; -import xyz.olivermartin.multichat.bungee.ConfigManager; import xyz.olivermartin.multichat.bungee.Events; -import xyz.olivermartin.multichat.bungee.MessageManager; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; import xyz.olivermartin.multichat.bungee.StaffChatManager; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import java.util.UUID; @@ -20,19 +18,19 @@ public class ACCommand extends Command { public ACCommand() { - super("mcac", "multichat.staff.admin", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("ac").toArray(new String[0])); + super("mcac", "multichat.staff.admin", ProxyConfigs.ALIASES.getAliases("mcac")); } public void execute(CommandSender sender, String[] args) { if (args.length == 0) { if (!(sender instanceof ProxiedPlayer)) { - MessageManager.sendMessage(sender, "command_ac_only_players"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_ac_only_players"); return; } UUID playerUID = ((ProxiedPlayer) sender).getUniqueId(); boolean toggleResult = Events.toggleAC(playerUID); - MessageManager.sendMessage(sender, "command_ac_toggle_" + (toggleResult ? "on" : "off")); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_ac_toggle_" + (toggleResult ? "on" : "off")); return; } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/AnnouncementCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/AnnouncementCommand.java index 2063de48..db017df0 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/AnnouncementCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/AnnouncementCommand.java @@ -7,9 +7,7 @@ import net.md_5.bungee.api.chat.ComponentBuilder; import net.md_5.bungee.api.plugin.Command; import xyz.olivermartin.multichat.bungee.Announcements; -import xyz.olivermartin.multichat.bungee.ConfigManager; -import xyz.olivermartin.multichat.bungee.MessageManager; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; /** * Announcement Command @@ -20,7 +18,7 @@ public class AnnouncementCommand extends Command { public AnnouncementCommand() { - super("mcannouncement", "multichat.announce", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("announcement").toArray(new String[0])); + super("mcannouncement", "multichat.announce", ProxyConfigs.ALIASES.getAliases("mcannouncement")); } public void execute(CommandSender sender, String[] args) { @@ -32,9 +30,9 @@ public void execute(CommandSender sender, String[] args) { String arg = args[0].toLowerCase(); switch (arg) { case "list": { - MessageManager.sendMessage(sender, "command_announcement_list"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_announcement_list"); Announcements.getAnnouncementList().forEach((key, value) -> - MessageManager.sendSpecialMessage(sender, + ProxyConfigs.MESSAGES.sendMessage(sender, "command_announcement_list_item", key + ": +++" + value, true @@ -49,9 +47,9 @@ public void execute(CommandSender sender, String[] args) { String announcementKey = args[1].toLowerCase(); String message = String.join(" ", Arrays.copyOfRange(args, 2, args.length)); if (Announcements.addAnnouncement(announcementKey, message)) { - MessageManager.sendSpecialMessage(sender, "command_announcement_added", announcementKey); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_announcement_added", announcementKey); } else { - MessageManager.sendSpecialMessage(sender, "command_announcement_added_error", announcementKey); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_announcement_added_error", announcementKey); } return; } @@ -61,9 +59,9 @@ public void execute(CommandSender sender, String[] args) { String announcementKey = args[1].toLowerCase(); if (Announcements.removeAnnouncement(announcementKey)) { - MessageManager.sendSpecialMessage(sender, "command_announcement_removed", announcementKey); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_announcement_removed", announcementKey); } else { - MessageManager.sendSpecialMessage(sender, "command_announcement_does_not_exist", announcementKey); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_announcement_does_not_exist", announcementKey); } return; } @@ -74,9 +72,9 @@ public void execute(CommandSender sender, String[] args) { String announcementKey = args[1].toLowerCase(); if (Announcements.startAnnouncement(announcementKey, timer)) { - MessageManager.sendSpecialMessage(sender, "command_announcement_started", announcementKey); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_announcement_started", announcementKey); } else { - MessageManager.sendSpecialMessage(sender, "command_announcement_started_error", announcementKey); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_announcement_started_error", announcementKey); } return; } @@ -86,9 +84,9 @@ public void execute(CommandSender sender, String[] args) { String announcementKey = args[1].toLowerCase(); if (Announcements.stopAnnouncement(announcementKey)) { - MessageManager.sendSpecialMessage(sender, "command_announcement_stopped", announcementKey); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_announcement_stopped", announcementKey); } else { - MessageManager.sendSpecialMessage(sender, "command_announcement_stopped_error", announcementKey); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_announcement_stopped_error", announcementKey); } return; } @@ -96,7 +94,7 @@ public void execute(CommandSender sender, String[] args) { if (Announcements.existsAnnouncemnt(arg)) { Announcements.playAnnouncement(arg); } else { - MessageManager.sendSpecialMessage(sender, "command_announcement_does_not_exist", arg); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_announcement_does_not_exist", arg); } return; } @@ -114,7 +112,7 @@ private int parseInt(String str) { } private void showCommandUsage(CommandSender sender) { - MessageManager.sendMessage(sender, "command_announcement_usage"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_announcement_usage"); sender.sendMessage(new ComponentBuilder("/announcement add ").color(ChatColor.AQUA).create()); sender.sendMessage(new ComponentBuilder("/announcement remove ").color(ChatColor.AQUA).create()); sender.sendMessage(new ComponentBuilder("/announcement start ").color(ChatColor.AQUA).create()); diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/BulletinCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/BulletinCommand.java index 42c922ea..75d124f5 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/BulletinCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/BulletinCommand.java @@ -8,9 +8,7 @@ import net.md_5.bungee.api.chat.ComponentBuilder; import net.md_5.bungee.api.plugin.Command; import xyz.olivermartin.multichat.bungee.Bulletins; -import xyz.olivermartin.multichat.bungee.ConfigManager; -import xyz.olivermartin.multichat.bungee.MessageManager; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; /** * Bulletin Command @@ -21,7 +19,7 @@ public class BulletinCommand extends Command { public BulletinCommand() { - super("mcbulletin", "multichat.bulletin", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("bulletin").toArray(new String[0])); + super("mcbulletin", "multichat.bulletin", ProxyConfigs.ALIASES.getAliases("mcbulletin")); } @Override @@ -38,10 +36,10 @@ public void execute(CommandSender sender, String[] args) { int counter = 0; Iterator it = Bulletins.getIterator(); - MessageManager.sendMessage(sender, "command_bulletin_list"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_bulletin_list"); while (it.hasNext()) { counter++; - MessageManager.sendSpecialMessage(sender, "command_bulletin_list_item", counter + ": +++" + it.next(), true); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_bulletin_list_item", counter + ": +++" + it.next(), true); } return; } @@ -50,7 +48,7 @@ public void execute(CommandSender sender, String[] args) { break; Bulletins.addBulletin(String.join(" ", Arrays.copyOfRange(args, 1, args.length))); - MessageManager.sendMessage(sender, "command_bulletin_added"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_bulletin_added"); return; } case "remove": { @@ -61,12 +59,12 @@ public void execute(CommandSender sender, String[] args) { try { id = Integer.parseInt(args[1]); } catch (NumberFormatException ignored) { - MessageManager.sendMessage(sender, "command_bulletin_invalid_usage"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_bulletin_invalid_usage"); break; } Bulletins.removeBulletin(id - 1); - MessageManager.sendMessage(sender, "command_bulletin_removed"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_bulletin_removed"); return; } case "start": { @@ -77,17 +75,17 @@ public void execute(CommandSender sender, String[] args) { try { bulletinDelay = Integer.parseInt(args[1]); } catch (NumberFormatException ignored) { - MessageManager.sendMessage(sender, "command_bulletin_invalid_usage"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_bulletin_invalid_usage"); break; } Bulletins.startBulletins(bulletinDelay); - MessageManager.sendMessage(sender, "command_bulletin_started"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_bulletin_started"); return; } case "stop": { Bulletins.stopBulletins(); - MessageManager.sendMessage(sender, "command_bulletin_stopped"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_bulletin_stopped"); return; } } @@ -96,7 +94,7 @@ public void execute(CommandSender sender, String[] args) { } private void showCommandUsage(CommandSender sender) { - MessageManager.sendMessage(sender, "command_bulletin_usage"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_bulletin_usage"); sender.sendMessage(new ComponentBuilder("/bulletin add ").color(ChatColor.AQUA).create()); sender.sendMessage(new ComponentBuilder("/bulletin remove ").color(ChatColor.AQUA).create()); sender.sendMessage(new ComponentBuilder("/bulletin start ").color(ChatColor.AQUA).create()); diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/CastCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/CastCommand.java index 428826b5..ad2f2e46 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/CastCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/CastCommand.java @@ -5,9 +5,7 @@ import net.md_5.bungee.api.chat.ComponentBuilder; import net.md_5.bungee.api.plugin.Command; import xyz.olivermartin.multichat.bungee.CastControl; -import xyz.olivermartin.multichat.bungee.ConfigManager; -import xyz.olivermartin.multichat.bungee.MessageManager; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import java.util.Arrays; @@ -20,7 +18,7 @@ public class CastCommand extends Command { public CastCommand() { - super("mccast", "multichat.cast.admin", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("cast").toArray(new String[0])); + super("mccast", "multichat.cast.admin", ProxyConfigs.ALIASES.getAliases("mccast")); } @Override @@ -33,9 +31,9 @@ public void execute(CommandSender sender, String[] args) { String arg = args[0].toLowerCase(); switch (arg) { case "list": { - MessageManager.sendMessage(sender, "command_cast_list"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_cast_list"); CastControl.castList.forEach((key, value) -> - MessageManager.sendSpecialMessage(sender, "command_cast_list_item", key + ": " + value) + ProxyConfigs.MESSAGES.sendMessage(sender, "command_cast_list_item", key + ": " + value) ); return; } @@ -45,12 +43,12 @@ public void execute(CommandSender sender, String[] args) { String castName = args[1]; if (CastControl.existsCast(castName) || castName.equalsIgnoreCase("cast")) { - MessageManager.sendSpecialMessage(sender, "command_cast_added_error", castName); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_cast_added_error", castName); return; } CastControl.addCast(castName, String.join(" ", Arrays.copyOfRange(args, 2, args.length))); - MessageManager.sendSpecialMessage(sender, "command_cast_added", castName); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_cast_added", castName); return; } case "remove": { @@ -59,12 +57,12 @@ public void execute(CommandSender sender, String[] args) { String castName = args[1]; if (!CastControl.existsCast(castName)) { - MessageManager.sendSpecialMessage(sender, "command_cast_does_not_exist", castName); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_cast_does_not_exist", castName); return; } CastControl.removeCast(castName); - MessageManager.sendSpecialMessage(sender, "command_cast_removed", castName); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_cast_removed", castName); return; } } @@ -73,7 +71,7 @@ public void execute(CommandSender sender, String[] args) { } public void showCommandUsage(CommandSender sender) { - MessageManager.sendMessage(sender, "command_cast_usage"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_cast_usage"); sender.sendMessage(new ComponentBuilder("/cast add ").color(ChatColor.AQUA).create()); sender.sendMessage(new ComponentBuilder("/cast remove ").color(ChatColor.AQUA).create()); sender.sendMessage(new ComponentBuilder("/cast list").color(ChatColor.AQUA).create()); diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/ChannelCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/ChannelCommand.java index 0f38195a..9a99d7ba 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/ChannelCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/ChannelCommand.java @@ -5,13 +5,11 @@ import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Command; import xyz.olivermartin.multichat.bungee.ChatModeManager; -import xyz.olivermartin.multichat.bungee.ConfigManager; -import xyz.olivermartin.multichat.bungee.MessageManager; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; import xyz.olivermartin.multichat.proxy.common.ProxyLocalCommunicationManager; import xyz.olivermartin.multichat.proxy.common.channels.ChannelManager; import xyz.olivermartin.multichat.proxy.common.channels.proxy.ProxyChannel; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import java.util.Optional; import java.util.UUID; @@ -25,13 +23,13 @@ public class ChannelCommand extends Command { public ChannelCommand() { - super("mcchannel", "multichat.chat.channel", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("channel").toArray(new String[0])); + super("mcchannel", "multichat.chat.channel", ProxyConfigs.ALIASES.getAliases("mcchannel")); } @Override public void execute(CommandSender sender, String[] args) { if (!(sender instanceof ProxiedPlayer)) { - MessageManager.sendMessage(sender, "command_channel_only_players"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_channel_only_players"); return; } @@ -47,7 +45,7 @@ public void execute(CommandSender sender, String[] args) { // Future implementation of channelManager.exists? // Or implement a Channel interface that both Proxy and Local extend if (!channelManager.existsProxyChannel(operand) && !operand.equals("local")) { - MessageManager.sendMessage(sender, "command_channel_does_not_exist"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_channel_does_not_exist"); return; } @@ -60,7 +58,7 @@ public void execute(CommandSender sender, String[] args) { switch (subCommand) { case "switch": { if (!sender.hasPermission("multichat.chat.channel.switch")) { - MessageManager.sendMessage(sender, "command_channel_switch_no_permission"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_channel_switch_no_permission"); return; } @@ -68,49 +66,49 @@ public void execute(CommandSender sender, String[] args) { ProxyChannel proxyChannel = optionalProxyChannel.get(); if (!proxyChannel.getInfo().hasSpeakPermission(sender)) { - MessageManager.sendMessage(sender, "command_channel_switch_no_permission"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_channel_switch_no_permission"); return; } } ChatModeManager.getInstance().setGlobal(proxiedPlayerUID); channelManager.select(proxiedPlayerUID, operand); - MessageManager.sendSpecialMessage(sender, "command_channel_switch", operand.toUpperCase()); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_channel_switch", operand.toUpperCase()); break; } case "hide": { if (!sender.hasPermission("multichat.chat.channel.hide")) { - MessageManager.sendMessage(sender, "command_channel_hide_no_permission"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_channel_hide_no_permission"); return; } if (channelManager.getChannel(proxiedPlayer).equalsIgnoreCase(operand)) { - MessageManager.sendMessage(sender, "command_channel_cannot_hide"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_channel_cannot_hide"); return; } if (channelManager.isHidden(proxiedPlayerUID, operand)) { - MessageManager.sendSpecialMessage(sender, "command_channel_already_hide", operand.toUpperCase()); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_channel_already_hide", operand.toUpperCase()); return; } channelManager.hide(proxiedPlayerUID, operand); - MessageManager.sendSpecialMessage(sender, "command_channel_hide", operand.toUpperCase()); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_channel_hide", operand.toUpperCase()); break; } case "show": { if (!sender.hasPermission("multichat.chat.channel.show")) { - MessageManager.sendMessage(sender, "command_channel_show_no_permission"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_channel_show_no_permission"); return; } if (!channelManager.isHidden(proxiedPlayerUID, operand)) { - MessageManager.sendSpecialMessage(sender, "command_channel_already_show", operand.toUpperCase()); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_channel_already_show", operand.toUpperCase()); return; } channelManager.show(proxiedPlayerUID, operand); - MessageManager.sendSpecialMessage(sender, "command_channel_show", operand.toUpperCase()); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_channel_show", operand.toUpperCase()); break; } default: { @@ -138,6 +136,6 @@ public void execute(CommandSender sender, String[] args) { } private void showCommandUsage(CommandSender sender) { - MessageManager.sendMessage(sender, "command_channel_help"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_channel_help"); } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/ClearChatCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/ClearChatCommand.java index 3eb54edc..5f17b2d1 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/ClearChatCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/ClearChatCommand.java @@ -5,12 +5,8 @@ import net.md_5.bungee.api.chat.TextComponent; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Command; -import xyz.olivermartin.multichat.bungee.ConfigManager; -import xyz.olivermartin.multichat.bungee.MessageManager; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; -import xyz.olivermartin.multichat.proxy.common.config.ConfigValues; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; -import java.util.List; import java.util.function.Predicate; import java.util.stream.Stream; @@ -25,7 +21,7 @@ public class ClearChatCommand extends Command { private final TextComponent EMPTY_LINES; public ClearChatCommand() { - super("mcclearchat", "multichat.chat.clear", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("clearchat").toArray(new String[0])); + super("mcclearchat", "multichat.chat.clear", ProxyConfigs.ALIASES.getAliases("mcclearchat")); // Join space and linebreak character 200 times (= 100 empty lines) char space = ' '; @@ -48,7 +44,7 @@ public void execute(CommandSender sender, String[] args) { } case "all": { if (!sender.hasPermission("multichat.chat.clear.all")) { - MessageManager.sendSpecialMessage(sender, "command_clearchat_no_permission", "ALL"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_clearchat_no_permission", "ALL"); return; } @@ -62,7 +58,7 @@ public void execute(CommandSender sender, String[] args) { } if (!sender.hasPermission("multichat.chat.clear.server")) { - MessageManager.sendSpecialMessage(sender, "command_clearchat_no_permission", "SERVER"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_clearchat_no_permission", "SERVER"); return; } @@ -74,20 +70,18 @@ public void execute(CommandSender sender, String[] args) { } case "global": { if (!sender.hasPermission("multichat.chat.clear.global")) { - MessageManager.sendSpecialMessage(sender, "command_clearchat_no_permission", "GLOBAL"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_clearchat_no_permission", "GLOBAL"); return; } - List noGlobalServers = ConfigManager.getInstance().getHandler(ConfigFile.CONFIG) - .getConfig().getStringList(ConfigValues.Config.NO_GLOBAL); clearChatForEveryone("command_clearchat_global", target -> target.getServer() != null - && !noGlobalServers.contains(target.getServer().getInfo().getName()) + && ProxyConfigs.CONFIG.isGlobalServer(target.getServer().getInfo().getName()) ); break; } default: { - MessageManager.sendMessage(sender, "command_clearchat_usage"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_clearchat_usage"); break; } } @@ -95,7 +89,7 @@ public void execute(CommandSender sender, String[] args) { private void clearChatSelf(CommandSender sender) { sender.sendMessage(EMPTY_LINES); - MessageManager.sendMessage(sender, "command_clearchat_self"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_clearchat_self"); } private void clearChatForEveryone(String configPath, Predicate predicate) { @@ -104,7 +98,7 @@ private void clearChatForEveryone(String configPath, Predicate pr playerStream.forEach(target -> { target.sendMessage(EMPTY_LINES); if (configPath != null && !configPath.isEmpty()) - MessageManager.sendMessage(target, configPath); + ProxyConfigs.MESSAGES.sendMessage(target, configPath); }); playerStream.close(); } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/DisplayCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/DisplayCommand.java index 94edc865..ae5f67cc 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/DisplayCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/DisplayCommand.java @@ -4,17 +4,13 @@ import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.plugin.Command; import xyz.olivermartin.multichat.bungee.ChatControl; -import xyz.olivermartin.multichat.bungee.ConfigManager; import xyz.olivermartin.multichat.bungee.ConsoleManager; -import xyz.olivermartin.multichat.bungee.MessageManager; -import xyz.olivermartin.multichat.bungee.MultiChat; import xyz.olivermartin.multichat.bungee.events.PostBroadcastEvent; +import xyz.olivermartin.multichat.common.MessageType; import xyz.olivermartin.multichat.common.MultiChatUtil; import xyz.olivermartin.multichat.proxy.common.ProxyJsonUtils; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; -import xyz.olivermartin.multichat.proxy.common.config.ConfigValues; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; -import java.util.List; import java.util.Optional; /** @@ -26,34 +22,28 @@ public class DisplayCommand extends Command { public DisplayCommand() { - super("mcdisplay", "multichat.staff.display", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("display").toArray(new String[0])); + super("mcdisplay", "multichat.staff.display", ProxyConfigs.ALIASES.getAliases("mcdisplay")); } public void execute(CommandSender sender, String[] args) { if (args.length < 1) { - MessageManager.sendMessage(sender, "command_display_desc"); - MessageManager.sendMessage(sender, "command_display_usage"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_display_desc"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_display_usage"); return; } - displayMessage(String.join(" ", args)); - } - - private void displayMessage(String message) { - Optional optionalMessage = ChatControl.applyChatRules(message, "display_command", ""); + String message = String.join(" ", args); + Optional optionalMessage = ChatControl.applyChatRules(sender, message, MessageType.DISPLAY_COMMAND); if (!optionalMessage.isPresent()) return; - List noGlobalServers = ConfigManager.getInstance().getHandler(ConfigFile.CONFIG) - .getConfig().getStringList(ConfigValues.Config.NO_GLOBAL); - String finalMessage = MultiChatUtil.translateColorCodes(optionalMessage.get()); ProxyServer.getInstance().getPlayers().stream() .filter(target -> target.getServer() != null - && !noGlobalServers.contains(target.getServer().getInfo().getName()) + && ProxyConfigs.CONFIG.isGlobalServer(target.getServer().getInfo().getName()) ) .forEach(target -> - target.sendMessage(MultiChat.legacyServers.contains(target.getServer().getInfo().getName()) + target.sendMessage(ProxyConfigs.CONFIG.isLegacyServer(target.getServer().getInfo().getName()) ? ProxyJsonUtils.parseMessage(MultiChatUtil.approximateRGBColorCodes(finalMessage)) : ProxyJsonUtils.parseMessage(finalMessage) ) diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/FreezeChatCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/FreezeChatCommand.java index 4cfa3a37..6709afb2 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/FreezeChatCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/FreezeChatCommand.java @@ -3,10 +3,8 @@ import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.plugin.Command; -import xyz.olivermartin.multichat.bungee.ConfigManager; -import xyz.olivermartin.multichat.bungee.MessageManager; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import xyz.olivermartin.multichat.proxy.common.storage.ProxyDataStore; /** @@ -18,7 +16,7 @@ public class FreezeChatCommand extends Command { public FreezeChatCommand() { - super("mcfreezechat", "multichat.chat.freeze", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("freezechat").toArray(new String[0])); + super("mcfreezechat", "multichat.chat.freeze", ProxyConfigs.ALIASES.getAliases("mcfreezechat")); } public void execute(CommandSender sender, String[] args) { @@ -26,7 +24,7 @@ public void execute(CommandSender sender, String[] args) { boolean frozen = !proxyDataStore.isChatFrozen(); proxyDataStore.setChatFrozen(frozen); ProxyServer.getInstance().getPlayers().forEach(proxiedPlayer -> - MessageManager.sendSpecialMessage(proxiedPlayer, + ProxyConfigs.MESSAGES.sendMessage(proxiedPlayer, "command_freezechat_" + (frozen ? "frozen" : "thawed"), proxiedPlayer.getName() ) diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/GCCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/GCCommand.java index 540a4926..b9870986 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/GCCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/GCCommand.java @@ -1,28 +1,21 @@ package xyz.olivermartin.multichat.bungee.commands; -import java.util.Optional; - import com.olivermartin410.plugins.TGroupChatInfo; - import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Command; -import xyz.olivermartin.multichat.bungee.ChatControl; -import xyz.olivermartin.multichat.bungee.ChatManipulation; -import xyz.olivermartin.multichat.bungee.ConfigManager; -import xyz.olivermartin.multichat.bungee.ConsoleManager; -import xyz.olivermartin.multichat.bungee.Events; -import xyz.olivermartin.multichat.bungee.MessageManager; -import xyz.olivermartin.multichat.bungee.MultiChat; +import xyz.olivermartin.multichat.bungee.*; +import xyz.olivermartin.multichat.common.MessageType; import xyz.olivermartin.multichat.common.MultiChatUtil; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; import xyz.olivermartin.multichat.proxy.common.ProxyJsonUtils; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; -import xyz.olivermartin.multichat.proxy.common.config.ConfigValues; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import xyz.olivermartin.multichat.proxy.common.storage.ProxyDataStore; +import java.util.Optional; + /** * Group Chat Messaging Command *

Allows players to send a message direct to a group chat or toggle group chats

@@ -32,12 +25,12 @@ public class GCCommand extends Command { public GCCommand() { - super("mcgc", "multichat.group", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("gc").toArray(new String[0])); + super("mcgc", "multichat.group", ProxyConfigs.ALIASES.getAliases("mcgc")); } public void execute(CommandSender sender, String[] args) { if (!(sender instanceof ProxiedPlayer)) { - MessageManager.sendMessage(sender, args.length == 0 + ProxyConfigs.MESSAGES.sendMessage(sender, args.length == 0 ? "command_gc_only_players_toggle" : "command_gc_only_players_speak" ); @@ -47,20 +40,20 @@ public void execute(CommandSender sender, String[] args) { ProxiedPlayer proxiedPlayer = (ProxiedPlayer) sender; if (args.length == 0) { boolean toggleResult = Events.toggleGC(proxiedPlayer.getUniqueId()); - MessageManager.sendMessage(sender, "command_gc_toggle_" + (toggleResult ? "on" : "off")); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_gc_toggle_" + (toggleResult ? "on" : "off")); return; } ProxyDataStore proxyDataStore = MultiChatProxy.getInstance().getDataStore(); String viewedChat = proxyDataStore.getViewedChats().get(proxiedPlayer.getUniqueId()); if (viewedChat == null) { - MessageManager.sendMessage(sender, "command_gc_no_chat_selected"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_gc_no_chat_selected"); return; } TGroupChatInfo groupChatInfo = proxyDataStore.getGroupChats().get(viewedChat); if (groupChatInfo == null) { - MessageManager.sendMessage(sender, "command_gc_no_longer_exists"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_gc_no_longer_exists"); return; } @@ -79,24 +72,24 @@ public static void sendMessage(String originalMessage, String playerName, TGroup ProxiedPlayer proxiedPlayer = ProxyServer.getInstance().getPlayer(playerName); if (proxiedPlayer != null) { - if (ChatControl.isMuted(proxiedPlayer.getUniqueId(), "group_chats")) { - MessageManager.sendMessage(proxiedPlayer, "mute_cannot_send_message"); + if (ChatControl.isMuted(proxiedPlayer.getUniqueId(), MessageType.GROUP_CHATS)) { + ProxyConfigs.MESSAGES.sendMessage(proxiedPlayer, "mute_cannot_send_message"); return; } - if (ChatControl.handleSpam(proxiedPlayer, originalMessage, "group_chats")) + if (ChatControl.handleSpam(proxiedPlayer, originalMessage, MessageType.GROUP_CHATS)) return; } Optional optionalChatRules; - optionalChatRules = ChatControl.applyChatRules(originalMessage, "group_chats", playerName); + optionalChatRules = ChatControl.applyChatRules(proxiedPlayer, originalMessage, MessageType.GROUP_CHATS); if (!optionalChatRules.isPresent()) return; originalMessage = optionalChatRules.get(); - String messageFormat = ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getString(ConfigValues.Config.GroupChat.FORMAT); + String messageFormat = ProxyConfigs.CONFIG.getGroupChatFormat(); String translatedMessage = MultiChatUtil.translateColorCodes( manipulation.replaceGroupChatVars(messageFormat, playerName, originalMessage, groupInfo.getName()) ); @@ -120,13 +113,13 @@ public static void sendMessage(String originalMessage, String playerName, TGroup ) .forEach(target -> { if (proxiedPlayer != null - && ChatControl.ignores(proxiedPlayer.getUniqueId(), target.getUniqueId(), "group_chats")) { + && ChatControl.ignores(proxiedPlayer.getUniqueId(), target.getUniqueId(), MessageType.GROUP_CHATS)) { ChatControl.sendIgnoreNotifications(target, proxiedPlayer, "group_chats"); return; } // TODO: Move legacy check inside parsing at some point - if (MultiChat.legacyServers.contains(target.getServer().getInfo().getName())) { + if (ProxyConfigs.CONFIG.isLegacyServer(target.getServer().getInfo().getName())) { target.sendMessage(legacyMessage); return; } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/GlobalCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/GlobalCommand.java index b7ffcf69..1e8942a0 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/GlobalCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/GlobalCommand.java @@ -3,17 +3,15 @@ import java.util.Optional; import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.config.ServerInfo; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Command; import xyz.olivermartin.multichat.bungee.ChatModeManager; -import xyz.olivermartin.multichat.bungee.ConfigManager; -import xyz.olivermartin.multichat.bungee.MessageManager; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; import xyz.olivermartin.multichat.proxy.common.ProxyChatManager; import xyz.olivermartin.multichat.proxy.common.ProxyLocalCommunicationManager; import xyz.olivermartin.multichat.proxy.common.channels.ChannelManager; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; -import xyz.olivermartin.multichat.proxy.common.config.ConfigValues; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; /** * Global Command @@ -24,12 +22,12 @@ public class GlobalCommand extends Command { public GlobalCommand() { - super("mcglobal", "multichat.chat.mode", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("global").toArray(new String[0])); + super("mcglobal", "multichat.chat.mode", ProxyConfigs.ALIASES.getAliases("mcglobal")); } public void execute(CommandSender sender, String[] args) { if (!(sender instanceof ProxiedPlayer)) { - MessageManager.sendMessage(sender, "command_global_only_players"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_global_only_players"); return; } ProxiedPlayer proxiedPlayer = (ProxiedPlayer) sender; @@ -37,30 +35,25 @@ public void execute(CommandSender sender, String[] args) { if (args.length == 0) { ChatModeManager.getInstance().setGlobal(proxiedPlayer.getUniqueId()); - MessageManager.sendMessage(sender, "command_global_enabled_1"); - MessageManager.sendMessage(sender, "command_global_enabled_2"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_global_enabled_1"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_global_enabled_2"); return; } - if (!ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getBoolean(ConfigValues.Config.GLOBAL)) { + if (!ProxyConfigs.CONFIG.isGlobal()) { // TODO: Maybe add a message here? // Don't think anyone will disable global chat and expect /global to work but you never know... return; } - if (proxiedPlayer.getServer() != null - && ConfigManager.getInstance().getHandler(ConfigFile.CONFIG) - .getConfig().getStringList(ConfigValues.Config.NO_GLOBAL).contains(proxiedPlayer.getServer().getInfo().getName())) { + ServerInfo serverInfo = proxiedPlayer.getServer().getInfo(); + if (!ProxyConfigs.CONFIG.isGlobalServer(serverInfo.getName())) { // TODO: Same as above return; } - if (ConfigManager.getInstance().getHandler(ConfigFile.CONFIG) - .getConfig().getBoolean(ConfigValues.Config.FETCH_SPIGOT_DISPLAY_NAMES)) { - ProxyLocalCommunicationManager.sendUpdatePlayerMetaRequestMessage(proxiedPlayer.getName(), - proxiedPlayer.getServer().getInfo() - ); - } + if (ProxyConfigs.CONFIG.isFetchSpigotDisplayNames()) + ProxyLocalCommunicationManager.sendUpdatePlayerMetaRequestMessage(proxiedPlayer.getName(), serverInfo); ProxyChatManager chatManager = MultiChatProxy.getInstance().getChatManager(); Optional optionalMessage = chatManager.handleChatMessage(proxiedPlayer, String.join(" ", args)); @@ -73,7 +66,7 @@ public void execute(CommandSender sender, String[] args) { // If they had this channel hidden, then unhide it... if (channelManager.isHidden(proxiedPlayer.getUniqueId(), "global")) { channelManager.show(proxiedPlayer.getUniqueId(), "global"); - MessageManager.sendSpecialMessage(proxiedPlayer, "command_channel_show", "GLOBAL"); + ProxyConfigs.MESSAGES.sendMessage(proxiedPlayer, "command_channel_show", "GLOBAL"); } // Let server know players channel preference @@ -86,7 +79,7 @@ public void execute(CommandSender sender, String[] args) { ProxyLocalCommunicationManager.sendPlayerDataMessage(proxiedPlayer.getName(), currentChannel, channelFormat, - proxiedPlayer.getServer().getInfo(), + serverInfo, // TODO: Move this permissions check somewhere else or make it simpler (proxiedPlayer.hasPermission("multichat.chat.color") || proxiedPlayer.hasPermission("multichat.chat.colour.simple") || proxiedPlayer.hasPermission("multichat.chat.color.simple")), (proxiedPlayer.hasPermission("multichat.chat.color") || proxiedPlayer.hasPermission("multichat.chat.colour.rgb") || proxiedPlayer.hasPermission("multichat.chat.color.rgb")) @@ -96,7 +89,7 @@ public void execute(CommandSender sender, String[] args) { ProxyLocalCommunicationManager.sendPlayerDirectChatMessage("global", proxiedPlayer.getName(), message, - proxiedPlayer.getServer().getInfo() + serverInfo ); // TODO: Move this to actual message distribution diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/GroupCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/GroupCommand.java index ac627af1..86608883 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/GroupCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/GroupCommand.java @@ -9,13 +9,11 @@ import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Command; import net.md_5.bungee.api.plugin.TabExecutor; -import xyz.olivermartin.multichat.bungee.ConfigManager; import xyz.olivermartin.multichat.bungee.GroupManager; -import xyz.olivermartin.multichat.bungee.MessageManager; import xyz.olivermartin.multichat.bungee.UUIDNameManager; import xyz.olivermartin.multichat.common.RegexUtil; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import xyz.olivermartin.multichat.proxy.common.storage.ProxyDataStore; /** @@ -32,12 +30,12 @@ public class GroupCommand extends Command implements TabExecutor { ); public GroupCommand() { - super("mcgroup", "multichat.group", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("group").toArray(new String[0])); + super("mcgroup", "multichat.group", ProxyConfigs.ALIASES.getAliases("mcgroup")); } public void execute(CommandSender sender, String[] args) { if (!(sender instanceof ProxiedPlayer)) { - MessageManager.sendMessage(sender, "command_group_only_players"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_only_players"); return; } ProxiedPlayer proxiedPlayer = (ProxiedPlayer) sender; @@ -67,9 +65,9 @@ public void execute(CommandSender sender, String[] args) { TGroupChatInfo groupChatInfo = getGroupChatFromName(proxyDataStore, proxiedPlayer, subArgument, false); if (groupChatInfo == null) break; - MessageManager.sendSpecialMessage(sender, "command_group_member_list", subArgument); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_member_list", subArgument); groupChatInfo.getMembers().forEach(member -> - MessageManager.sendSpecialMessage(sender, + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_member_list_item" + (groupChatInfo.existsAdmin(member) ? "_admin" : ""), UUIDNameManager.getName(member) ) @@ -78,21 +76,21 @@ public void execute(CommandSender sender, String[] args) { } case "spy": { if (!proxiedPlayer.hasPermission("multichat.staff.spy")) { - MessageManager.sendMessage(sender, "command_group_spy_no_permission"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_spy_no_permission"); return; } if (subArgument.equals("all")) { if (!proxyDataStore.getAllSpy().contains(playerUID)) { proxyDataStore.getAllSpy().add(playerUID); - MessageManager.sendMessage(sender, "command_group_spy_all_enabled"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_spy_all_enabled"); return; } proxyDataStore.getAllSpy().remove(playerUID); - MessageManager.sendMessage(sender, "command_group_spy_all_disabled_1"); - MessageManager.sendMessage(sender, "command_group_spy_all_disabled_2"); - MessageManager.sendMessage(sender, "command_group_spy_all_disabled_3"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_spy_all_disabled_1"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_spy_all_disabled_2"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_spy_all_disabled_3"); return; } @@ -100,43 +98,43 @@ public void execute(CommandSender sender, String[] args) { if (groupChatInfo == null) break; if (groupChatInfo.existsMember(playerUID)) { - MessageManager.sendMessage(sender, "command_group_spy_already_a_member"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_spy_already_a_member"); return; } if (groupChatInfo.existsViewer(playerUID)) { groupChatInfo.delViewer(playerUID); proxyDataStore.getGroupChats().put(subArgument, groupChatInfo); - MessageManager.sendSpecialMessage(sender, "command_group_spy_off", subArgument); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_spy_off", subArgument); return; } groupChatInfo.addViewer(playerUID); proxyDataStore.getGroupChats().put(subArgument, groupChatInfo); - MessageManager.sendSpecialMessage(sender, "command_group_spy_on", subArgument); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_spy_on", subArgument); return; } case "create": case "make": { if (!proxiedPlayer.hasPermission("multichat.group.create")) { - MessageManager.sendMessage(sender, "command_group_create_no_permission"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_create_no_permission"); return; } // TODO: Should probably make this configurable if (subArgument.length() > 20) { - MessageManager.sendMessage(sender, "command_group_max_length"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_max_length"); return; } String password = args.length > 2 ? args[2] : ""; if (password.length() > 20) { - MessageManager.sendMessage(sender, "command_group_max_length_password"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_max_length_password"); return; } if (proxyDataStore.getGroupChats().containsKey(subArgument)) { - MessageManager.sendSpecialMessage(sender, "command_group_already_exists", subArgument); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_already_exists", subArgument); return; } @@ -144,7 +142,7 @@ public void execute(CommandSender sender, String[] args) { groupManager.createGroup(subArgument, playerUID, false, ""); // TODO: Should probably move this inside the createGroup (joinGroup for join below) groupManager.setViewedChat(playerUID, subArgument); - MessageManager.sendSpecialMessage(sender, "command_group_created", subArgument); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_created", subArgument); groupManager.announceJoinGroup(sender.getName(), subArgument); return; @@ -157,7 +155,7 @@ public void execute(CommandSender sender, String[] args) { return; groupManager.setViewedChat(playerUID, subArgument); - MessageManager.sendSpecialMessage(sender, "command_group_joined", subArgument); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_joined", subArgument); groupManager.announceJoinGroup(sender.getName(), subArgument); return; } @@ -174,12 +172,12 @@ public void execute(CommandSender sender, String[] args) { if (groupChatInfo == null) break; if (groupChatInfo.getFormal()) { - MessageManager.sendSpecialMessage(sender, "command_group_formal_already_formal", subArgument); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_formal_already_formal", subArgument); return; } if (!groupChatInfo.getAdmins().contains(playerUID)) { - MessageManager.sendMessage(sender, "command_group_formal_not_owner"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_formal_not_owner"); return; } @@ -187,7 +185,7 @@ public void execute(CommandSender sender, String[] args) { proxyDataStore.getGroupChats().put(subArgument, groupChatInfo); // TODO: Excuse me what even is this // We need to generalize sending messages at some point (and how placeholders are handled) - GCCommand.sendMessage(sender.getName() + MessageManager.getMessage("groups_info_formal"), "&lINFO", groupChatInfo); + GCCommand.sendMessage(sender.getName() + ProxyConfigs.MESSAGES.getMessage("groups_info_formal"), "&lINFO", groupChatInfo); return; } case "delete": { @@ -195,7 +193,7 @@ public void execute(CommandSender sender, String[] args) { if (groupChatInfo == null) break; if (!groupChatInfo.getAdmins().contains(playerUID)) { - MessageManager.sendMessage(sender, "command_group_formal_not_admin"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_formal_not_admin"); return; } @@ -204,11 +202,11 @@ public void execute(CommandSender sender, String[] args) { entry.setValue(null); }); - GCCommand.sendMessage(sender.getName() + MessageManager.getMessage("groups_info_deleted"), + GCCommand.sendMessage(sender.getName() + ProxyConfigs.MESSAGES.getMessage("groups_info_deleted"), "&lINFO", groupChatInfo ); - GCCommand.sendMessage(MessageManager.getMessage("groups_info_goodbye"), "&lINFO", groupChatInfo); + GCCommand.sendMessage(ProxyConfigs.MESSAGES.getMessage("groups_info_goodbye"), "&lINFO", groupChatInfo); proxyDataStore.getGroupChats().remove(subArgument); return; } @@ -220,12 +218,12 @@ public void execute(CommandSender sender, String[] args) { if (groupChatInfo == null) break; if (groupChatInfo.getFormal()) { - MessageManager.sendMessage(sender, "command_group_transfer_not_informal"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_transfer_not_informal"); return; } if (!groupChatInfo.existsAdmin(playerUID)) { - MessageManager.sendMessage(sender, "command_group_transfer_not_owner"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_transfer_not_owner"); return; } @@ -236,7 +234,7 @@ public void execute(CommandSender sender, String[] args) { groupChatInfo.addAdmin(targetUID); groupChatInfo.delAdmin(playerUID); - GCCommand.sendMessage(sender.getName() + MessageManager.getMessage("groups_info_transfer") + target.getName(), "&lINFO", groupChatInfo); + GCCommand.sendMessage(sender.getName() + ProxyConfigs.MESSAGES.getMessage("groups_info_transfer") + target.getName(), "&lINFO", groupChatInfo); proxyDataStore.getGroupChats().put(subArgument, groupChatInfo); return; @@ -251,12 +249,12 @@ public void execute(CommandSender sender, String[] args) { if (groupChatInfo == null) break; if (!groupChatInfo.getFormal()) { - MessageManager.sendMessage(sender, "command_group_not_formal"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_not_formal"); return; } if (!groupChatInfo.existsAdmin(playerUID)) { - MessageManager.sendMessage(sender, "command_group_formal_not_admin"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_formal_not_admin"); return; } @@ -266,18 +264,18 @@ public void execute(CommandSender sender, String[] args) { UUID targetUID = target.getUniqueId(); if (playerUID.equals(targetUID)) { - MessageManager.sendMessage(sender, "command_group_formal_cannot_demote"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_formal_cannot_demote"); return; } if (groupChatInfo.existsAdmin(targetUID)) { groupChatInfo.delAdmin(targetUID); - GCCommand.sendMessage(target.getName() + MessageManager.getMessage("groups_info_step_down"), "&lINFO", groupChatInfo); + GCCommand.sendMessage(target.getName() + ProxyConfigs.MESSAGES.getMessage("groups_info_step_down"), "&lINFO", groupChatInfo); return; } groupChatInfo.addAdmin(targetUID); - GCCommand.sendMessage(sender.getName() + MessageManager.getMessage("groups_info_promoted") + target.getName(), "&lINFO", groupChatInfo); + GCCommand.sendMessage(sender.getName() + ProxyConfigs.MESSAGES.getMessage("groups_info_promoted") + target.getName(), "&lINFO", groupChatInfo); return; } case "ban": { @@ -288,12 +286,12 @@ public void execute(CommandSender sender, String[] args) { if (groupChatInfo == null) break; if (!groupChatInfo.getFormal()) { - MessageManager.sendMessage(sender, "command_group_not_formal"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_not_formal"); return; } if (!groupChatInfo.existsAdmin(playerUID)) { - MessageManager.sendMessage(sender, "command_group_ban_not_admin"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_ban_not_admin"); return; } @@ -303,15 +301,15 @@ public void execute(CommandSender sender, String[] args) { UUID targetUID = target.getUniqueId(); if (groupChatInfo.existsAdmin(targetUID)) { - MessageManager.sendMessage(sender, "command_group_cannot_ban_admin"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_cannot_ban_admin"); return; } if (groupChatInfo.existsBanned(targetUID)) { groupChatInfo.delBanned(targetUID); proxyDataStore.getGroupChats().put(subArgument, groupChatInfo); - GCCommand.sendMessage(sender.getName() + MessageManager.getMessage("groups_info_unban") + target.getName(), "&lINFO", groupChatInfo); - MessageManager.sendSpecialMessage(target, "command_group_unbanned", subArgument); + GCCommand.sendMessage(sender.getName() + ProxyConfigs.MESSAGES.getMessage("groups_info_unban") + target.getName(), "&lINFO", groupChatInfo); + ProxyConfigs.MESSAGES.sendMessage(target, "command_group_unbanned", subArgument); return; } @@ -322,12 +320,12 @@ public void execute(CommandSender sender, String[] args) { proxyDataStore.getViewedChats().put(targetUID, null); // TODO: I don't think we need to notify the user of being kicked AND banned further down below - GCCommand.sendMessage(sender.getName() + MessageManager.getMessage("groups_info_kick") + target.getName(), "&lINFO", groupChatInfo); + GCCommand.sendMessage(sender.getName() + ProxyConfigs.MESSAGES.getMessage("groups_info_kick") + target.getName(), "&lINFO", groupChatInfo); } proxyDataStore.getGroupChats().put(subArgument, groupChatInfo); - GCCommand.sendMessage(sender.getName() + MessageManager.getMessage("groups_info_ban") + target.getName(), "&lINFO", groupChatInfo); - MessageManager.sendSpecialMessage(target, "command_group_banned", subArgument); + GCCommand.sendMessage(sender.getName() + ProxyConfigs.MESSAGES.getMessage("groups_info_ban") + target.getName(), "&lINFO", groupChatInfo); + ProxyConfigs.MESSAGES.sendMessage(target, "command_group_banned", subArgument); return; } // Saving Private Byte @@ -340,17 +338,16 @@ public void execute(CommandSender sender, String[] args) { if (!groupChatInfo.existsMember(playerUID) || (groupChatInfo.getFormal() && !groupChatInfo.existsAdmin(playerUID))) { - MessageManager.sendMessage(sender, "command_group_formal_not_admin"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_formal_not_admin"); return; } String chatColor = args[2].toLowerCase(); String nameColor = args[3].toLowerCase(); - if (!RegexUtil.COLOR_LEGACY.matcher(chatColor).matches() - || !RegexUtil.COLOR_LEGACY.matcher(nameColor).matches()) { - MessageManager.sendMessage(sender, "command_group_color_invalid"); - MessageManager.sendMessage(sender, "command_group_color_usage"); + if (!RegexUtil.LEGACY_COLOR.matches(chatColor) || !RegexUtil.LEGACY_COLOR.matches(nameColor)) { + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_color_invalid"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_color_usage"); return; } @@ -358,7 +355,7 @@ public void execute(CommandSender sender, String[] args) { groupChatInfo.setNameColor(nameColor.charAt(0)); proxyDataStore.getGroupChats().put(subArgument, groupChatInfo); - GCCommand.sendMessage(MessageManager.getMessage("groups_info_colors") + sender.getName(), "&lINFO", groupChatInfo); + GCCommand.sendMessage(ProxyConfigs.MESSAGES.getMessage("groups_info_colors") + sender.getName(), "&lINFO", groupChatInfo); return; } default: { @@ -366,23 +363,23 @@ public void execute(CommandSender sender, String[] args) { if (groupChatInfo == null) break; proxyDataStore.getViewedChats().put(playerUID, subArgument); - MessageManager.sendSpecialMessage(sender, "command_group_selected", subArgument); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_selected", subArgument); return; } } - MessageManager.sendMessage(sender, "command_group_incorrect_usage"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_group_incorrect_usage"); } private TGroupChatInfo getGroupChatFromName(ProxyDataStore proxyDataStore, ProxiedPlayer proxiedPlayer, String groupName, boolean checkMember) { TGroupChatInfo groupChatInfo = proxyDataStore.getGroupChats().get(groupName); if (groupChatInfo == null) { - MessageManager.sendSpecialMessage(proxiedPlayer, "command_group_does_not_exist", groupName); + ProxyConfigs.MESSAGES.sendMessage(proxiedPlayer, "command_group_does_not_exist", groupName); return null; } if (checkMember && !groupChatInfo.existsMember(proxiedPlayer.getUniqueId())) { - MessageManager.sendSpecialMessage(proxiedPlayer, "command_group_not_a_member", groupName); + ProxyConfigs.MESSAGES.sendMessage(proxiedPlayer, "command_group_not_a_member", groupName); return null; } @@ -392,13 +389,13 @@ private TGroupChatInfo getGroupChatFromName(ProxyDataStore proxyDataStore, Proxi private ProxiedPlayer getProxiedTargetFromName(TGroupChatInfo groupChatInfo, ProxiedPlayer proxiedPlayer, String name, boolean checkMember) { ProxiedPlayer target = ProxyServer.getInstance().getPlayer(name); if (target == null) { - MessageManager.sendMessage(proxiedPlayer, "command_group_player_not_online"); + ProxyConfigs.MESSAGES.sendMessage(proxiedPlayer, "command_group_player_not_online"); return null; } UUID targetUID = target.getUniqueId(); if (checkMember && !groupChatInfo.existsMember(targetUID)) { - MessageManager.sendMessage(proxiedPlayer, "command_group_transfer_not_member"); + ProxyConfigs.MESSAGES.sendMessage(proxiedPlayer, "command_group_transfer_not_member"); return null; } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/GroupListCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/GroupListCommand.java index 797eb323..50ef87d4 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/GroupListCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/GroupListCommand.java @@ -2,10 +2,8 @@ import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.plugin.Command; -import xyz.olivermartin.multichat.bungee.ConfigManager; -import xyz.olivermartin.multichat.bungee.MessageManager; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import xyz.olivermartin.multichat.proxy.common.storage.ProxyDataStore; /** @@ -17,15 +15,15 @@ public class GroupListCommand extends Command { public GroupListCommand() { - super("mcgroups", "multichat.staff.listgroups", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("groups").toArray(new String[0])); + super("mcgroups", "multichat.staff.listgroups", ProxyConfigs.ALIASES.getAliases("mcgroups")); } public void execute(CommandSender sender, String[] args) { ProxyDataStore proxyDataStore = MultiChatProxy.getInstance().getDataStore(); - MessageManager.sendMessage(sender, "command_grouplist_list"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_grouplist_list"); for (String groupName : proxyDataStore.getGroupChats().keySet()) - MessageManager.sendSpecialMessage(sender, "command_grouplist_list_item", groupName); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_grouplist_list_item", groupName); } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/HelpMeCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/HelpMeCommand.java index 4a998d19..35946b04 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/HelpMeCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/HelpMeCommand.java @@ -7,10 +7,9 @@ import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Command; import xyz.olivermartin.multichat.bungee.ChatControl; -import xyz.olivermartin.multichat.bungee.ConfigManager; import xyz.olivermartin.multichat.bungee.ConsoleManager; -import xyz.olivermartin.multichat.bungee.MessageManager; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; +import xyz.olivermartin.multichat.common.MessageType; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; /** * 'Help Me' Command @@ -21,36 +20,36 @@ public class HelpMeCommand extends Command { public HelpMeCommand() { - super("mchelpme", "multichat.chat.helpme", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("helpme").toArray(new String[0])); + super("mchelpme", "multichat.chat.helpme", ProxyConfigs.ALIASES.getAliases("mchelpme")); } public void execute(CommandSender sender, String[] args) { if (!(sender instanceof ProxiedPlayer)) { - MessageManager.sendMessage(sender, "command_helpme_only_players"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_helpme_only_players"); return; } if (args.length < 1) { - MessageManager.sendMessage(sender, "command_helpme_desc"); - MessageManager.sendMessage(sender, "command_helpme_usage"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_helpme_desc"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_helpme_usage"); return; } ProxiedPlayer proxiedPlayer = (ProxiedPlayer) sender; - if (ChatControl.isMuted(proxiedPlayer.getUniqueId(), "helpme")) { - MessageManager.sendMessage(proxiedPlayer, "mute_cannot_send_message"); + if (ChatControl.isMuted(proxiedPlayer.getUniqueId(), MessageType.HELPME)) { + ProxyConfigs.MESSAGES.sendMessage(proxiedPlayer, "mute_cannot_send_message"); return; } // TODO: Probably should do this differently String message = proxiedPlayer.getName() + ": " + String.join(" ", args); - if (ChatControl.handleSpam(proxiedPlayer, message, "helpme")) { + if (ChatControl.handleSpam(proxiedPlayer, message, MessageType.HELPME)) { return; } - Optional crm = ChatControl.applyChatRules(message, "helpme", proxiedPlayer.getName()); + Optional crm = ChatControl.applyChatRules(proxiedPlayer, message, MessageType.HELPME); if (!crm.isPresent()) return; @@ -58,9 +57,9 @@ public void execute(CommandSender sender, String[] args) { ProxyServer.getInstance().getPlayers().stream() .filter(target -> target.hasPermission("multichat.staff")) - .forEach(target -> MessageManager.sendSpecialMessage(target, "command_helpme_format", finalMessage)); + .forEach(target -> ProxyConfigs.MESSAGES.sendMessage(target, "command_helpme_format", finalMessage)); ConsoleManager.logHelpMe(message); - MessageManager.sendMessage(sender, "command_helpme_sent"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_helpme_sent"); } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/IgnoreCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/IgnoreCommand.java index 6e9cc6ae..78506127 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/IgnoreCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/IgnoreCommand.java @@ -5,45 +5,43 @@ import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Command; import xyz.olivermartin.multichat.bungee.ChatControl; -import xyz.olivermartin.multichat.bungee.ConfigManager; -import xyz.olivermartin.multichat.bungee.MessageManager; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import java.util.UUID; public class IgnoreCommand extends Command { public IgnoreCommand() { - super("mcignore", "multichat.ignore", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("ignore").toArray(new String[0])); + super("mcignore", "multichat.ignore", ProxyConfigs.ALIASES.getAliases("mcignore")); } @Override public void execute(CommandSender sender, String[] args) { if (!(sender instanceof ProxiedPlayer)) { - MessageManager.sendMessage(sender, "ignore_only_players"); + ProxyConfigs.MESSAGES.sendMessage(sender, "ignore_only_players"); return; } if (args.length == 0) { - MessageManager.sendMessage(sender, "ignore_usage"); + ProxyConfigs.MESSAGES.sendMessage(sender, "ignore_usage"); return; } ProxiedPlayer target = ProxyServer.getInstance().getPlayer(args[0]); if (target == null) { - MessageManager.sendMessage(sender, "ignore_player_not_found"); + ProxyConfigs.MESSAGES.sendMessage(sender, "ignore_player_not_found"); return; } ProxiedPlayer proxiedPlayer = (ProxiedPlayer) sender; if (proxiedPlayer.equals(target)) { - MessageManager.sendMessage(sender, "ignore_cannot_ignore_yourself"); + ProxyConfigs.MESSAGES.sendMessage(sender, "ignore_cannot_ignore_yourself"); return; } if (target.hasPermission("multichat.ignore.bypass")) { - MessageManager.sendMessage(sender, "ignore_bypass"); + ProxyConfigs.MESSAGES.sendMessage(sender, "ignore_bypass"); return; } @@ -53,10 +51,10 @@ public void execute(CommandSender sender, String[] args) { // TODO: ChatControl.toggleIgnore if (!ChatControl.ignoresAnywhere(targetUID, playerUID)) { ChatControl.ignore(playerUID, targetUID); - MessageManager.sendSpecialMessage(sender, "ignore_ignored", target.getName()); + ProxyConfigs.MESSAGES.sendMessage(sender, "ignore_ignored", target.getName()); } else { ChatControl.unignore(playerUID, targetUID); - MessageManager.sendSpecialMessage(sender, "ignore_unignored", target.getName()); + ProxyConfigs.MESSAGES.sendMessage(sender, "ignore_unignored", target.getName()); } } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/LocalCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/LocalCommand.java index 9964e27c..bcf0fd52 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/LocalCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/LocalCommand.java @@ -8,14 +8,11 @@ import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Command; import xyz.olivermartin.multichat.bungee.ChatModeManager; -import xyz.olivermartin.multichat.bungee.ConfigManager; -import xyz.olivermartin.multichat.bungee.MessageManager; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; import xyz.olivermartin.multichat.proxy.common.ProxyChatManager; import xyz.olivermartin.multichat.proxy.common.ProxyLocalCommunicationManager; import xyz.olivermartin.multichat.proxy.common.channels.ChannelManager; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; -import xyz.olivermartin.multichat.proxy.common.config.ConfigValues; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; /** * Local Chat Command @@ -26,12 +23,12 @@ public class LocalCommand extends Command { public LocalCommand() { - super("mclocal", "multichat.chat.mode", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("local").toArray(new String[0])); + super("mclocal", "multichat.chat.mode", ProxyConfigs.ALIASES.getAliases("mclocal")); } public void execute(CommandSender sender, String[] args) { if (!(sender instanceof ProxiedPlayer)) { - MessageManager.sendMessage(sender, "command_local_only_players"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_local_only_players"); return; } ProxiedPlayer proxiedPlayer = (ProxiedPlayer) sender; @@ -40,16 +37,14 @@ public void execute(CommandSender sender, String[] args) { if (args.length == 0) { ChatModeManager.getInstance().setLocal(playerUID); - MessageManager.sendMessage(sender, "command_local_enabled_1"); - MessageManager.sendMessage(sender, "command_local_enabled_2"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_local_enabled_1"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_local_enabled_2"); return; } - if (ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getBoolean(ConfigValues.Config.FETCH_SPIGOT_DISPLAY_NAMES)) { - ProxyLocalCommunicationManager.sendUpdatePlayerMetaRequestMessage(proxiedPlayer.getName(), - proxiedPlayer.getServer().getInfo() - ); - } + ServerInfo serverInfo = proxiedPlayer.getServer().getInfo(); + if (ProxyConfigs.CONFIG.isFetchSpigotDisplayNames()) + ProxyLocalCommunicationManager.sendUpdatePlayerMetaRequestMessage(proxiedPlayer.getName(), serverInfo); ProxyChatManager chatManager = MultiChatProxy.getInstance().getChatManager(); @@ -67,7 +62,7 @@ public void execute(CommandSender sender, String[] args) { // If they had this channel hidden, then unhide it... if (channelManager.isHidden(playerUID, "local")) { channelManager.show(playerUID, "local"); - MessageManager.sendSpecialMessage(proxiedPlayer, "command_channel_show", "LOCAL"); + ProxyConfigs.MESSAGES.sendMessage(proxiedPlayer, "command_channel_show", "LOCAL"); } // Let server know players channel preference @@ -78,7 +73,6 @@ public void execute(CommandSender sender, String[] args) { : channelManager.getProxyChannel(currentChannel).orElse(channelManager.getGlobalChannel()).getInfo() .getFormat(); - ServerInfo serverInfo = proxiedPlayer.getServer().getInfo(); ProxyLocalCommunicationManager.sendPlayerDataMessage(proxiedPlayer.getName(), currentChannel, channelFormat, diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/LocalSpyCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/LocalSpyCommand.java index 5e3ef2c1..86069c33 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/LocalSpyCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/LocalSpyCommand.java @@ -3,10 +3,8 @@ import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Command; -import xyz.olivermartin.multichat.bungee.ConfigManager; -import xyz.olivermartin.multichat.bungee.MessageManager; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import xyz.olivermartin.multichat.proxy.common.storage.ProxyDataStore; import java.util.UUID; @@ -20,19 +18,19 @@ public class LocalSpyCommand extends Command { public LocalSpyCommand() { - super("mclocalspy", "multichat.staff.spy", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("localspy").toArray(new String[0])); + super("mclocalspy", "multichat.staff.spy", ProxyConfigs.ALIASES.getAliases("mclocalspy")); } public void execute(CommandSender sender, String[] args) { if (!(sender instanceof ProxiedPlayer)) { - MessageManager.sendMessage(sender, "command_localspy_only_players"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_localspy_only_players"); return; } // TODO: Do we really need this? I don't think so... just toggle it, no matter how many arguments if (args.length != 0) { - MessageManager.sendMessage(sender, "command_localspy_usage"); - MessageManager.sendMessage(sender, "command_localspy_desc"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_localspy_usage"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_localspy_desc"); return; } @@ -43,11 +41,11 @@ public void execute(CommandSender sender, String[] args) { // TODO: Potentially proxyDataStore.toggleSpy(playerUID) if (proxyDataStore.getLocalSpy().contains(playerUID)) { proxyDataStore.getLocalSpy().remove(playerUID); - MessageManager.sendMessage(sender, "command_localspy_disabled"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_localspy_disabled"); return; } proxyDataStore.getLocalSpy().add(playerUID); - MessageManager.sendMessage(sender, "command_localspy_enabled"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_localspy_enabled"); } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MCCCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MCCCommand.java index b6f5045b..17524257 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MCCCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MCCCommand.java @@ -5,11 +5,9 @@ import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Command; -import xyz.olivermartin.multichat.bungee.ConfigManager; -import xyz.olivermartin.multichat.bungee.MessageManager; import xyz.olivermartin.multichat.common.RegexUtil; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import xyz.olivermartin.multichat.proxy.common.storage.ProxyDataStore; import java.util.UUID; @@ -23,27 +21,26 @@ public class MCCCommand extends Command { public MCCCommand() { - super("mcmcc", "multichat.staff.mod", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("mcc").toArray(new String[0])); + super("mcmcc", "multichat.staff.mod", ProxyConfigs.ALIASES.getAliases("mcmcc")); } public void execute(CommandSender sender, String[] args) { if (!(sender instanceof ProxiedPlayer)) { - MessageManager.sendMessage(sender, "command_mcc_only_players"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_mcc_only_players"); return; } if (args.length < 2) { - MessageManager.sendMessage(sender, "command_mcc_usage"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_mcc_usage"); return; } String chatColor = args[0].toLowerCase(); String nameColor = args[1].toLowerCase(); - if (!RegexUtil.COLOR_LEGACY.matcher(chatColor).matches() - || !RegexUtil.COLOR_LEGACY.matcher(nameColor).matches()) { - MessageManager.sendMessage(sender, "command_mcc_invalid"); - MessageManager.sendMessage(sender, "command_mcc_invalid_usage"); + if (!RegexUtil.LEGACY_COLOR.matches(chatColor) || !RegexUtil.LEGACY_COLOR.matches(nameColor)) { + ProxyConfigs.MESSAGES.sendMessage(sender, "command_mcc_invalid"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_mcc_invalid_usage"); return; } @@ -55,6 +52,6 @@ public void execute(CommandSender sender, String[] args) { chatInfo.setNameColor(nameColor.charAt(0)); proxyDataStore.getModChatPreferences().put(playerUID, chatInfo); - MessageManager.sendMessage(sender, "command_mcc_updated"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_mcc_updated"); } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MCCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MCCommand.java index 0f4490ac..c6b90324 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MCCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MCCommand.java @@ -3,11 +3,9 @@ import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Command; -import xyz.olivermartin.multichat.bungee.ConfigManager; import xyz.olivermartin.multichat.bungee.Events; -import xyz.olivermartin.multichat.bungee.MessageManager; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; import xyz.olivermartin.multichat.bungee.StaffChatManager; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import java.util.UUID; @@ -20,19 +18,19 @@ public class MCCommand extends Command { public MCCommand() { - super("mcmc", "multichat.staff.mod", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("mc").toArray(new String[0])); + super("mcmc", "multichat.staff.mod", ProxyConfigs.ALIASES.getAliases("mcmc")); } public void execute(CommandSender sender, String[] args) { if (args.length == 0) { if (!(sender instanceof ProxiedPlayer)) { - MessageManager.sendMessage(sender, "command_mc_only_players"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_mc_only_players"); return; } UUID playerUID = ((ProxiedPlayer) sender).getUniqueId(); boolean toggleResult = Events.toggleMC(playerUID); - MessageManager.sendMessage(sender, "command_mc_toggle_" + (toggleResult ? "on" : "off")); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_mc_toggle_" + (toggleResult ? "on" : "off")); return; } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MsgCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MsgCommand.java index b36168d1..06e0cdb8 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MsgCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MsgCommand.java @@ -1,12 +1,5 @@ package xyz.olivermartin.multichat.bungee.commands; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Optional; -import java.util.Set; -import java.util.UUID; - import de.myzelyam.api.vanish.BungeeVanishAPI; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.ProxyServer; @@ -14,17 +7,13 @@ import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Command; import net.md_5.bungee.api.plugin.TabExecutor; -import net.md_5.bungee.config.Configuration; -import xyz.olivermartin.multichat.bungee.ChatControl; -import xyz.olivermartin.multichat.bungee.ConfigManager; -import xyz.olivermartin.multichat.bungee.Events; -import xyz.olivermartin.multichat.bungee.MessageManager; -import xyz.olivermartin.multichat.bungee.MultiChat; -import xyz.olivermartin.multichat.bungee.PrivateMessageManager; +import xyz.olivermartin.multichat.bungee.*; +import xyz.olivermartin.multichat.common.MessageType; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; import xyz.olivermartin.multichat.proxy.common.ProxyLocalCommunicationManager; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; -import xyz.olivermartin.multichat.proxy.common.config.ConfigValues; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; + +import java.util.*; /** * Message Command @@ -35,13 +24,13 @@ public class MsgCommand extends Command implements TabExecutor { public MsgCommand() { - super("mcmsg", "multichat.chat.msg", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("msg").toArray(new String[0])); + super("mcmsg", "multichat.chat.msg", ProxyConfigs.ALIASES.getAliases("mcmsg")); } public void execute(CommandSender sender, String[] args) { if (args.length == 0) { - MessageManager.sendMessage(sender, "command_msg_usage"); - MessageManager.sendMessage(sender, "command_msg_usage_toggle"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_msg_usage"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_msg_usage_toggle"); return; } @@ -51,14 +40,13 @@ public void execute(CommandSender sender, String[] args) { if (args.length == 1) { // Console can not toggle PMs if (!(sender instanceof ProxiedPlayer)) { - MessageManager.sendMessage(sender, "command_msg_only_players"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_msg_only_players"); return; } // Check if PMs are allowed to be toggled - Configuration config = ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig(); - if (!config.getBoolean(ConfigValues.Config.TOGGLE_PM, true)) { - MessageManager.sendMessage(sender, "command_msg_no_toggle"); + if (!ProxyConfigs.CONFIG.isTogglePm()) { + ProxyConfigs.MESSAGES.sendMessage(sender, "command_msg_no_toggle"); return; } @@ -69,9 +57,9 @@ public void execute(CommandSender sender, String[] args) { if (!optionalTarget.isPresent()) { if (Events.PMToggle.containsKey(playerUID)) { Events.PMToggle.remove(playerUID); - MessageManager.sendMessage(sender, "command_msg_toggle_off"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_msg_toggle_off"); } else { - MessageManager.sendMessage(sender, "command_msg_not_online"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_msg_not_online"); } return; } @@ -80,16 +68,16 @@ public void execute(CommandSender sender, String[] args) { // TODO: Make this into a proper hook at some point so we can just call Somewhere.getVanishHook().applies(); or something if (MultiChat.premiumVanish - && MultiChat.hideVanishedStaffInMsg + && ProxyConfigs.CONFIG.isPvPreventMessage() && BungeeVanishAPI.isInvisible(target) && !sender.hasPermission("multichat.chat.msg.vanished")) { - MessageManager.sendMessage(sender, "command_msg_not_online"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_msg_not_online"); return; } // Toggle PM and send message boolean toggleResult = Events.togglePM(playerUID, target.getUniqueId()); - MessageManager.sendSpecialMessage(sender, + ProxyConfigs.MESSAGES.sendMessage(sender, "command_msg_toggle_" + (toggleResult ? "on" : "off"), target.getName() ); @@ -100,14 +88,12 @@ public void execute(CommandSender sender, String[] args) { String message = String.join(" ", Arrays.copyOfRange(args, 1, args.length)); // Cache config values - Configuration config = ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig(); - boolean fetchSpigotDisplayNames = config.getBoolean(ConfigValues.Config.FETCH_SPIGOT_DISPLAY_NAMES); - List noPmServers = config.getStringList(ConfigValues.Config.NO_PM); + boolean fetchSpigotDisplayNames = ProxyConfigs.CONFIG.isFetchSpigotDisplayNames(); // Target not online if (!optionalTarget.isPresent()) { if (!(sender instanceof ProxiedPlayer) || !args[0].equalsIgnoreCase("console")) { - MessageManager.sendMessage(sender, "command_msg_not_online"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_msg_not_online"); return; } @@ -116,8 +102,8 @@ public void execute(CommandSender sender, String[] args) { ServerInfo serverInfo = proxiedPlayer.getServer().getInfo(); // Handle disabled servers for player - if (noPmServers.contains(serverInfo.getName())) { - MessageManager.sendMessage(sender, "command_msg_disabled_sender"); + if (ProxyConfigs.CONFIG.isNoPmServer(serverInfo.getName())) { + ProxyConfigs.MESSAGES.sendMessage(sender, "command_msg_disabled_sender"); return; } @@ -134,8 +120,8 @@ public void execute(CommandSender sender, String[] args) { ServerInfo targetServerInfo = target.getServer().getInfo(); // Handle disabled servers for target - if (noPmServers.contains(targetServerInfo.getName())) { - MessageManager.sendMessage(sender, "command_msg_disabled_target"); + if (ProxyConfigs.CONFIG.isNoPmServer(targetServerInfo.getName())) { + ProxyConfigs.MESSAGES.sendMessage(sender, "command_msg_disabled_target"); return; } @@ -154,39 +140,39 @@ public void execute(CommandSender sender, String[] args) { ServerInfo serverInfo = proxiedPlayer.getServer().getInfo(); // Handle disabled servers for player - if (noPmServers.contains(serverInfo.getName())) { - MessageManager.sendMessage(sender, "command_msg_disabled_sender"); + if (ProxyConfigs.CONFIG.isNoPmServer(serverInfo.getName())) { + ProxyConfigs.MESSAGES.sendMessage(sender, "command_msg_disabled_sender"); return; } // Check if player has been muted through MultiChat - if (ChatControl.isMuted(playerUID, "private_messages")) { - MessageManager.sendMessage(sender, "mute_cannot_send_message"); + if (ChatControl.isMuted(playerUID, MessageType.PRIVATE_MESSAGES)) { + ProxyConfigs.MESSAGES.sendMessage(sender, "mute_cannot_send_message"); return; } // Check if the target ignores the player - if (ChatControl.ignores(playerUID, target.getUniqueId(), "private_messages")) { + if (ChatControl.ignores(playerUID, target.getUniqueId(), MessageType.PRIVATE_MESSAGES)) { ChatControl.sendIgnoreNotifications(target, sender, "private_messages"); return; } // Check player for potential spam - if (ChatControl.handleSpam(proxiedPlayer, message, "private_messages")) + if (ChatControl.handleSpam(proxiedPlayer, message, MessageType.PRIVATE_MESSAGES)) return; // Apply chat rules, if any of them cancel the message, return - Optional optionalChatControl = ChatControl.applyChatRules(message, "private_messages", sender.getName()); + Optional optionalChatControl = ChatControl.applyChatRules(sender, message, MessageType.PRIVATE_MESSAGES); if (!optionalChatControl.isPresent()) return; message = optionalChatControl.get(); if (MultiChat.premiumVanish - && MultiChat.hideVanishedStaffInMsg + && ProxyConfigs.CONFIG.isPvPreventMessage() && BungeeVanishAPI.isInvisible(target) && !sender.hasPermission("multichat.chat.msg.vanished")) { - MessageManager.sendMessage(sender, "command_msg_not_online"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_msg_not_online"); return; } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MultiChatBypassCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MultiChatBypassCommand.java index 5e8cfa22..4eeb7ea3 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MultiChatBypassCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MultiChatBypassCommand.java @@ -3,17 +3,15 @@ import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Command; -import xyz.olivermartin.multichat.bungee.ConfigManager; import xyz.olivermartin.multichat.bungee.Events; -import xyz.olivermartin.multichat.bungee.MessageManager; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import java.util.UUID; public class MultiChatBypassCommand extends Command { public MultiChatBypassCommand() { - super("mcbypass", "multichat.bypass", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("bypass").toArray(new String[0])); + super("mcbypass", "multichat.bypass", ProxyConfigs.ALIASES.getAliases("mcbypass")); } @Override @@ -24,7 +22,7 @@ public void execute(CommandSender sender, String[] args) { } if (args.length != 0) { - MessageManager.sendMessage(sender, "command_multichatbypass_usage"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_multichatbypass_usage"); return; } @@ -33,10 +31,10 @@ public void execute(CommandSender sender, String[] args) { // TODO: This should definitely be changed later if (Events.mcbPlayers.contains(playerUID)) { Events.mcbPlayers.remove(playerUID); - MessageManager.sendMessage(sender, "command_multichatbypass_disabled"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_multichatbypass_disabled"); } else { Events.mcbPlayers.add(playerUID); - MessageManager.sendMessage(sender, "command_multichatbypass_enabled"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_multichatbypass_enabled"); } } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MultiChatCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MultiChatCommand.java index e228b1e4..79bd665c 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MultiChatCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MultiChatCommand.java @@ -1,19 +1,16 @@ package xyz.olivermartin.multichat.bungee.commands; -import java.util.ArrayList; -import java.util.List; - import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.chat.ComponentBuilder; import net.md_5.bungee.api.plugin.Command; -import net.md_5.bungee.config.Configuration; import xyz.olivermartin.multichat.bungee.*; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; import xyz.olivermartin.multichat.proxy.common.channels.ChannelManager; import xyz.olivermartin.multichat.proxy.common.channels.local.LocalChannel; import xyz.olivermartin.multichat.proxy.common.channels.proxy.GlobalStaticProxyChannel; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; +import xyz.olivermartin.multichat.proxy.common.config.AbstractProxyConfig; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import xyz.olivermartin.multichat.proxy.common.contexts.GlobalContext; /** @@ -25,7 +22,7 @@ public class MultiChatCommand extends Command { public MultiChatCommand() { - super("multichat", "multichat.admin", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("multichat").toArray(new String[0])); + super("multichat", "multichat.admin", ProxyConfigs.ALIASES.getAliases("multichat")); } public void execute(CommandSender sender, String[] args) { @@ -48,7 +45,7 @@ public void execute(CommandSender sender, String[] args) { } catch (NumberFormatException ignored) { } - MessageManager.sendMessage(sender, "command_multichat_help_" + Math.max(1, Math.min(page, 3))); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_multichat_help_" + Math.max(1, Math.min(page, 3))); break; } case "debug": { @@ -57,99 +54,53 @@ public void execute(CommandSender sender, String[] args) { break; } case "save": { - MessageManager.sendMessage(sender, "command_multichat_save_prepare"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_multichat_save_prepare"); MultiChatProxy.getInstance().getFileStoreManager().save(); - MessageManager.sendMessage(sender, "command_multichat_save_completed"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_multichat_save_completed"); break; } case "reload": { - MessageManager.sendMessage(sender, "command_multichat_reload_prepare"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_multichat_reload_prepare"); - // TODO: This REALLY needs to change + // TODO: [2.0] This REALLY needs to change MultiChat multiChat = (MultiChat) MultiChatProxy.getInstance().getPlugin(); multiChat.unregisterCommands(); - ConfigManager configManager = ConfigManager.getInstance(); - for (ConfigFile configFile : ConfigFile.values()) - configManager.getHandler(configFile).startupConfig(); - - Configuration config = ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig(); - MultiChat.configversion = config.getString("version"); - - Configuration chatControl = ConfigManager.getInstance().getHandler(ConfigFile.CHAT_CONTROL).getConfig(); - - // TODO: Should change this when we update config handling too - ConfigManager.getInstance().getRawHandler("messages_fr.yml").startupConfig(); - ConfigManager.getInstance().getRawHandler("joinmessages_fr.yml").startupConfig(); - ConfigManager.getInstance().getRawHandler("config_fr.yml").startupConfig(); - ConfigManager.getInstance().getRawHandler("chatcontrol_fr.yml").startupConfig(); - ConfigManager.getInstance().getRawHandler("aliases_fr.yml").startupConfig(); + ProxyConfigs.ALL.forEach(AbstractProxyConfig::reloadConfig); + ProxyConfigs.RAW_CONFIGS.forEach(AbstractProxyConfig::reloadConfig); // Reload, and re-register commands CommandManager.reload(); - multiChat.registerCommands(config, chatControl); + multiChat.registerCommands(); ChatControl.reload(); - // TODO: Change to appropriate logger - System.out.println("VERSION LOADED: " + MultiChat.configversion); - - // Set up chat control stuff - ChatControl.controlLinks = chatControl.getBoolean("link_control", false); - ChatControl.linkMessage = chatControl.getString("link_removal_message", "[LINK REMOVED]"); - String linkRegex = chatControl.getString("link_regex"); - if (linkRegex != null && !linkRegex.isEmpty()) - ChatControl.linkRegex = linkRegex; - - Configuration privacySettings = config.getSection("privacy_settings"); - if (privacySettings != null) { - MultiChat.logPMs = privacySettings.getBoolean("log_pms"); - MultiChat.logStaffChat = privacySettings.getBoolean("log_staffchat"); - MultiChat.logGroupChat = privacySettings.getBoolean("log_groupchat"); - } - - // Legacy servers for RGB approximation - MultiChat.legacyServers = config.getStringList("legacy_servers"); + multiChat.getLogger().info("VERSION LOADED: " + ProxyConfigs.CONFIG.getVersion()); // Set default channel - String defaultChannel = config.getString("default_channel"); - boolean forceChannelOnJoin = config.getBoolean("force_channel_on_join"); - List noGlobalServers = new ArrayList<>(config.getStringList("no_global")); + String defaultChannel = ProxyConfigs.CONFIG.getDefaultChannel(); + boolean forceChannelOnJoin = ProxyConfigs.CONFIG.isForceChannelOnJoin(); // New context manager and channels - GlobalContext globalContext = new GlobalContext(defaultChannel, forceChannelOnJoin, true, noGlobalServers); + GlobalContext globalContext = new GlobalContext(defaultChannel, forceChannelOnJoin, true); MultiChatProxy.getInstance().getContextManager().setGlobalContext(globalContext); - Configuration aliases = configManager.getHandler(ConfigFile.ALIASES).getConfig(); - ChannelManager channelManager = MultiChatProxy.getInstance().getChannelManager(); channelManager.setGlobalChannel( new GlobalStaticProxyChannel("Global Channel", - config.getString("globalformat"), - aliases.getStringList("global"), + ProxyConfigs.CONFIG.getGlobalFormat(), channelManager ) ); channelManager.setLocalChannel( new LocalChannel("Local Channel", - config.getString("globalformat"), - aliases.getStringList("local"), + ProxyConfigs.CONFIG.getGlobalFormat(), channelManager ) ); - // No need to check if the plugin exists again, you can't live load vanish anyways - if (MultiChat.premiumVanish) { - Configuration premiumVanish = config.getSection("premium_vanish"); - if (premiumVanish != null) { - MultiChat.hideVanishedStaffInMsg = premiumVanish.getBoolean("prevent_message"); - MultiChat.hideVanishedStaffInStaffList = premiumVanish.getBoolean("prevent_staff_list"); - MultiChat.hideVanishedStaffInJoin = premiumVanish.getBoolean("silence_join"); - } - } - - MessageManager.sendMessage(sender, "command_multichat_reload_completed"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_multichat_reload_completed"); break; } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MultiChatExecuteCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MultiChatExecuteCommand.java index dc134bef..97a6d908 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MultiChatExecuteCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MultiChatExecuteCommand.java @@ -9,10 +9,8 @@ import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.plugin.Command; -import xyz.olivermartin.multichat.bungee.ConfigManager; -import xyz.olivermartin.multichat.bungee.MessageManager; import xyz.olivermartin.multichat.proxy.common.ProxyLocalCommunicationManager; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; /** * Execute Command @@ -23,12 +21,12 @@ public class MultiChatExecuteCommand extends Command { public MultiChatExecuteCommand() { - super("mcexecute", "multichat.execute", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("execute").toArray(new String[0])); + super("mcexecute", "multichat.execute", ProxyConfigs.ALIASES.getAliases("mcexecute")); } public void execute(CommandSender sender, String[] args) { if (args.length == 0) { - MessageManager.sendMessage(sender, "command_execute_usage"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_execute_usage"); return; } @@ -60,7 +58,7 @@ public void execute(CommandSender sender, String[] args) { serverPattern = Pattern.compile(server); playerPattern = Pattern.compile(player); } catch (PatternSyntaxException ex) { - MessageManager.sendMessage(sender, "command_execute_regex"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_execute_regex"); return; } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MuteCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MuteCommand.java index 0a5ef939..f1e0329e 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MuteCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/MuteCommand.java @@ -5,43 +5,41 @@ import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Command; import xyz.olivermartin.multichat.bungee.ChatControl; -import xyz.olivermartin.multichat.bungee.ConfigManager; -import xyz.olivermartin.multichat.bungee.MessageManager; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; public class MuteCommand extends Command { public MuteCommand() { - super("mcmute", "multichat.mute", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("mute").toArray(new String[0])); + super("mcmute", "multichat.mute", ProxyConfigs.ALIASES.getAliases("mcmute")); } @Override public void execute(CommandSender sender, String[] args) { if (args.length < 1) { - MessageManager.sendMessage(sender, "mute_usage"); + ProxyConfigs.MESSAGES.sendMessage(sender, "mute_usage"); return; } ProxiedPlayer target = ProxyServer.getInstance().getPlayer(args[0]); if (target == null) { - MessageManager.sendMessage(sender, "mute_player_not_found"); + ProxyConfigs.MESSAGES.sendMessage(sender, "mute_player_not_found"); return; } if (target.hasPermission("multichat.mute.bypass")) { - MessageManager.sendMessage(sender, "mute_bypass"); + ProxyConfigs.MESSAGES.sendMessage(sender, "mute_bypass"); return; } if (!ChatControl.isMutedAnywhere(target.getUniqueId())) { ChatControl.mute(target.getUniqueId()); - MessageManager.sendMessage(sender, "mute_muted_staff"); - MessageManager.sendMessage(target, "mute_muted"); + ProxyConfigs.MESSAGES.sendMessage(sender, "mute_muted_staff"); + ProxyConfigs.MESSAGES.sendMessage(target, "mute_muted"); } else { ChatControl.unmute(target.getUniqueId()); - MessageManager.sendMessage(sender, "mute_unmuted_staff"); - MessageManager.sendMessage(target, "mute_unmuted"); + ProxyConfigs.MESSAGES.sendMessage(sender, "mute_unmuted_staff"); + ProxyConfigs.MESSAGES.sendMessage(target, "mute_unmuted"); } } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/ReplyCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/ReplyCommand.java index cc9719ae..042d461c 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/ReplyCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/ReplyCommand.java @@ -1,6 +1,5 @@ package xyz.olivermartin.multichat.bungee.commands; -import java.util.List; import java.util.Optional; import java.util.UUID; @@ -9,12 +8,10 @@ import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Command; import xyz.olivermartin.multichat.bungee.ChatControl; -import xyz.olivermartin.multichat.bungee.ConfigManager; -import xyz.olivermartin.multichat.bungee.MessageManager; import xyz.olivermartin.multichat.bungee.PrivateMessageManager; +import xyz.olivermartin.multichat.common.MessageType; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; -import xyz.olivermartin.multichat.proxy.common.config.ConfigValues; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import xyz.olivermartin.multichat.proxy.common.storage.ProxyDataStore; /** @@ -26,13 +23,13 @@ public class ReplyCommand extends Command { public ReplyCommand() { - super("mcr", "multichat.chat.msg", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("r").toArray(new String[0])); + super("mcr", "multichat.chat.msg", ProxyConfigs.ALIASES.getAliases("mcr")); } public void execute(CommandSender sender, String[] args) { if (args.length == 0) { - MessageManager.sendMessage(sender, "command_reply_usage"); - MessageManager.sendMessage(sender, "command_reply_desc"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_reply_usage"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_reply_desc"); return; } @@ -41,7 +38,7 @@ public void execute(CommandSender sender, String[] args) { ProxyDataStore proxyDataStore = MultiChatProxy.getInstance().getDataStore(); if (!proxyDataStore.getLastMsg().containsKey(senderUID)) { - MessageManager.sendMessage(sender, "command_reply_no_one_to_reply_to"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_reply_no_one_to_reply_to"); return; } @@ -55,15 +52,12 @@ public void execute(CommandSender sender, String[] args) { ProxiedPlayer target = ProxyServer.getInstance().getPlayer(targetUID); if (target == null) { - MessageManager.sendMessage(sender, "command_reply_no_one_to_reply_to"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_reply_no_one_to_reply_to"); return; } - List noPmServers = ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig() - .getStringList(ConfigValues.Config.NO_PM); - - if (noPmServers.contains(target.getServer().getInfo().getName())) { - MessageManager.sendMessage(sender, "command_msg_disabled_target"); + if (ProxyConfigs.CONFIG.isNoPmServer(target.getServer().getInfo().getName())) { + ProxyConfigs.MESSAGES.sendMessage(sender, "command_msg_disabled_target"); return; } @@ -73,25 +67,25 @@ public void execute(CommandSender sender, String[] args) { } ProxiedPlayer proxiedPlayer = (ProxiedPlayer) sender; - if (noPmServers.contains(proxiedPlayer.getServer().getInfo().getName())) { - MessageManager.sendMessage(sender, "command_msg_disabled_sender"); + if (ProxyConfigs.CONFIG.isNoPmServer(proxiedPlayer.getServer().getInfo().getName())) { + ProxyConfigs.MESSAGES.sendMessage(sender, "command_msg_disabled_sender"); return; } - if (ChatControl.isMuted(proxiedPlayer.getUniqueId(), "private_messages")) { - MessageManager.sendMessage(sender, "mute_cannot_send_message"); + if (ChatControl.isMuted(proxiedPlayer.getUniqueId(), MessageType.PRIVATE_MESSAGES)) { + ProxyConfigs.MESSAGES.sendMessage(sender, "mute_cannot_send_message"); return; } - if (ChatControl.ignores(proxiedPlayer.getUniqueId(), target.getUniqueId(), "private_messages")) { + if (ChatControl.ignores(proxiedPlayer.getUniqueId(), target.getUniqueId(), MessageType.PRIVATE_MESSAGES)) { ChatControl.sendIgnoreNotifications(target, sender, "private_messages"); return; } - if (ChatControl.handleSpam(proxiedPlayer, message, "private_messages")) + if (ChatControl.handleSpam(proxiedPlayer, message, MessageType.PRIVATE_MESSAGES)) return; - Optional crm = ChatControl.applyChatRules(message, "private_messages", sender.getName()); + Optional crm = ChatControl.applyChatRules(proxiedPlayer, message, MessageType.PRIVATE_MESSAGES); if (!crm.isPresent()) return; diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/SocialSpyCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/SocialSpyCommand.java index e5c101c6..fc5a6290 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/SocialSpyCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/SocialSpyCommand.java @@ -3,10 +3,8 @@ import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Command; -import xyz.olivermartin.multichat.bungee.ConfigManager; -import xyz.olivermartin.multichat.bungee.MessageManager; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import xyz.olivermartin.multichat.proxy.common.storage.ProxyDataStore; import java.util.UUID; @@ -20,19 +18,19 @@ public class SocialSpyCommand extends Command { public SocialSpyCommand() { - super("mcsocialspy", "multichat.staff.spy", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("socialspy").toArray(new String[0])); + super("mcsocialspy", "multichat.staff.spy", ProxyConfigs.ALIASES.getAliases("mcsocialspy")); } public void execute(CommandSender sender, String[] args) { if (!(sender instanceof ProxiedPlayer)) { - MessageManager.sendMessage(sender, "command_socialspy_only_players"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_socialspy_only_players"); return; } // TODO: We don't really need this check if (args.length != 0) { - MessageManager.sendMessage(sender, "command_socialspy_usage"); - MessageManager.sendMessage(sender, "command_socialspy_desc"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_socialspy_usage"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_socialspy_desc"); return; } @@ -41,10 +39,10 @@ public void execute(CommandSender sender, String[] args) { if (proxyDataStore.getSocialSpy().contains(playerUID)) { proxyDataStore.getSocialSpy().remove(playerUID); - MessageManager.sendMessage(sender, "command_socialspy_disabled"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_socialspy_disabled"); } else { proxyDataStore.getSocialSpy().add(playerUID); - MessageManager.sendMessage(sender, "command_socialspy_enabled"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_socialspy_enabled"); } } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/StaffListCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/StaffListCommand.java index c7baf9bf..38b8eb3f 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/StaffListCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/StaffListCommand.java @@ -1,17 +1,14 @@ package xyz.olivermartin.multichat.bungee.commands; -import java.util.concurrent.atomic.AtomicBoolean; - import de.myzelyam.api.vanish.BungeeVanishAPI; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.plugin.Command; -import xyz.olivermartin.multichat.bungee.ConfigManager; -import xyz.olivermartin.multichat.bungee.MessageManager; import xyz.olivermartin.multichat.bungee.MultiChat; import xyz.olivermartin.multichat.proxy.common.ProxyLocalCommunicationManager; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; -import xyz.olivermartin.multichat.proxy.common.config.ConfigValues; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; + +import java.util.concurrent.atomic.AtomicBoolean; /** * Staff List Command @@ -22,25 +19,23 @@ public class StaffListCommand extends Command { public StaffListCommand() { - super("mcstaff", "multichat.staff.list", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("staff").toArray(new String[0])); + super("mcstaff", "multichat.staff.list", ProxyConfigs.ALIASES.getAliases("mcstaff")); } public void execute(CommandSender sender, String[] args) { - MessageManager.sendMessage(sender, "command_stafflist_list"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_stafflist_list"); AtomicBoolean anyStaff = new AtomicBoolean(false); - boolean fetchSpigotDisplayNames = ConfigManager.getInstance().getHandler(ConfigFile.CONFIG) - .getConfig().getBoolean(ConfigValues.Config.FETCH_SPIGOT_DISPLAY_NAMES); ProxyServer.getInstance().getServers().values().stream() .filter(serverInfo -> serverInfo.getPlayers().size() > 0) .forEach(serverInfo -> { - MessageManager.sendSpecialMessage(sender, "command_stafflist_list_server", serverInfo.getName()); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_stafflist_list_server", serverInfo.getName()); serverInfo.getPlayers().stream() .filter(target -> target.hasPermission("multichat.staff") && !(MultiChat.premiumVanish - && MultiChat.hideVanishedStaffInStaffList + && ProxyConfigs.CONFIG.isPvPreventStaffList() && BungeeVanishAPI.isInvisible(target) && !sender.hasPermission("multichat.staff.list.vanished")) ) @@ -48,16 +43,16 @@ public void execute(CommandSender sender, String[] args) { if (!anyStaff.get()) anyStaff.set(true); - if (fetchSpigotDisplayNames) + if (ProxyConfigs.CONFIG.isFetchSpigotDisplayNames()) ProxyLocalCommunicationManager.sendUpdatePlayerMetaRequestMessage(target.getName(), serverInfo); - MessageManager.sendSpecialMessage(sender, "command_stafflist_list_item", target.getDisplayName()); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_stafflist_list_item", target.getDisplayName()); }); // TODO: We should decide when or how "no staff is online" is shown // If we want to keep it like this, we should replace the stream with a normal for if (!anyStaff.get()) - MessageManager.sendMessage(sender, "command_stafflist_no_staff"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_stafflist_no_staff"); else anyStaff.set(false); }); diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/UseCastCommand.java b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/UseCastCommand.java index 858bf266..f0b2096b 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/UseCastCommand.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/bungee/commands/UseCastCommand.java @@ -5,10 +5,8 @@ import net.md_5.bungee.api.chat.ComponentBuilder; import net.md_5.bungee.api.plugin.Command; import xyz.olivermartin.multichat.bungee.CastControl; -import xyz.olivermartin.multichat.bungee.ConfigManager; -import xyz.olivermartin.multichat.bungee.MessageManager; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import java.util.Arrays; @@ -21,13 +19,13 @@ public class UseCastCommand extends Command { public UseCastCommand() { - super("mcusecast", "multichat.cast.admin", ConfigManager.getInstance().getHandler(ConfigFile.ALIASES).getConfig().getStringList("usecast").toArray(new String[0])); + super("mcusecast", "multichat.cast.admin", ProxyConfigs.ALIASES.getAliases("mcusecast")); } @Override public void execute(CommandSender sender, String[] args) { if (args.length < 2) { - MessageManager.sendMessage(sender, "command_usecast_usage"); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_usecast_usage"); // TODO: This should probably be in the configurable usecast message sender.sendMessage(new ComponentBuilder("/usecast ").color(ChatColor.AQUA).create()); return; @@ -35,7 +33,7 @@ public void execute(CommandSender sender, String[] args) { String castName = args[0]; if (!CastControl.existsCast(castName)) { - MessageManager.sendSpecialMessage(sender, "command_usecast_does_not_exist", castName); + ProxyConfigs.MESSAGES.sendMessage(sender, "command_usecast_does_not_exist", castName); return; } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/common/MessageType.java b/multichat/src/main/java/xyz/olivermartin/multichat/common/MessageType.java new file mode 100644 index 00000000..8d62a8be --- /dev/null +++ b/multichat/src/main/java/xyz/olivermartin/multichat/common/MessageType.java @@ -0,0 +1,19 @@ +package xyz.olivermartin.multichat.common; + +public enum MessageType { + LOCAL_CHAT, + GLOBAL_CHAT, + PRIVATE_MESSAGES, + GROUP_CHATS, + STAFF_CHATS, + DISPLAY_COMMAND, + ANNOUNCEMENTS, + BULLETINS, + CASTS, + HELPME; + + @Override + public String toString() { + return name().toLowerCase(); + } +} \ No newline at end of file diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/common/MultiChatUtil.java b/multichat/src/main/java/xyz/olivermartin/multichat/common/MultiChatUtil.java index 2ac1185b..ab0b8384 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/common/MultiChatUtil.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/common/MultiChatUtil.java @@ -11,10 +11,10 @@ public class MultiChatUtil { private static final Pattern SHORT_UNTRANSLATED_RGB = Pattern.compile("(?i)\\&(x|#)([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])"); private static final Pattern LONG_UNTRANSLATED_RGB = Pattern.compile("(?i)\\&x\\&([0-9A-F])\\&([0-9A-F])\\&([0-9A-F])\\&([0-9A-F])\\&([0-9A-F])\\&([0-9A-F])"); - private static final Pattern TRANSLATED_RGB = Pattern.compile("(?i)(§r)?§x§([0-9A-F])§([0-9A-F])§([0-9A-F])§([0-9A-F])§([0-9A-F])§([0-9A-F])"); + private static final Pattern TRANSLATED_RGB = Pattern.compile("(?i)(§r)?§x§([0-9A-F])§([0-9A-F])§([0-9A-F])§([0-9A-F])§([0-9A-F])§([0-9A-F])"); private static final Pattern ALL_FORMATTING_CHARS = Pattern.compile("(?i)([0-9A-FK-ORX])"); private static final Pattern JSON_RGB = Pattern.compile("(?i)(\"color\":\")#([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])(\")"); - private static final Pattern APPROX_RGB_FORMAT = Pattern.compile("(?i)\\§(#)([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])"); + private static final Pattern APPROX_RGB_FORMAT = Pattern.compile("(?i)\\§(#)([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])"); /** @@ -53,9 +53,9 @@ public static String translateColorCodes(String rawMessage, TranslateMode... mod /** *

Takes a raw string and strips any color codes using the & symbol

- *

If stripTranslatedCodes is true then it will also strip any codes using the § symbol

+ *

If stripTranslatedCodes is true then it will also strip any codes using the § symbol

* @param rawMessage The raw message to strip - * @param stripTranslatedCodes If pre-translated codes (§) should also be stripped + * @param stripTranslatedCodes If pre-translated codes (§) should also be stripped * @return the stripped message */ public static String stripColorCodes(String rawMessage, boolean stripTranslatedCodes) { @@ -64,9 +64,9 @@ public static String stripColorCodes(String rawMessage, boolean stripTranslatedC /** *

Takes a raw string and strips formatting codes (&) according to the TranslateMode

- *

If stripTranslatedCodes is true then it will also strip any codes using the § symbol

+ *

If stripTranslatedCodes is true then it will also strip any codes using the § symbol

* @param rawMessage The raw message to strip - * @param stripTranslatedCodes If pre-translated codes (§) should also be stripped + * @param stripTranslatedCodes If pre-translated codes (§) should also be stripped * @param modes The TranslateModes to apply * @return the stripped message */ @@ -96,7 +96,7 @@ public static String stripColorCodes(String rawMessage, boolean stripTranslatedC *

Takes a raw string and checks if it contains any codes using the & symbol

*

Any RGB codes in the format &#abcdef, &xabcdef or &x&a&b&c&d&e&f will also be checked

* @param rawMessage The raw message to check - * @param checkTranslatedCodes If pre-translated codes (§) should also be checked + * @param checkTranslatedCodes If pre-translated codes (§) should also be checked * @return true if it contains format codes */ public static boolean containsColorCodes(String rawMessage, boolean checkTranslatedCodes) { @@ -106,7 +106,7 @@ public static boolean containsColorCodes(String rawMessage, boolean checkTransla /** *

Takes a raw string and checks if it contains any formatting codes (&) according to the TranslateMode

* @param rawMessage The raw message to check - * @param checkTranslatedCodes If pre-translated codes (§) should also be checked + * @param checkTranslatedCodes If pre-translated codes (§) should also be checked * @param modes The TranslateModes to process * @return true if it contains format codes */ @@ -174,7 +174,7 @@ public static String preProcessColorCodes(String message) { public static String approximateRGBColorCodes(String message) { Matcher rgbMatcher = TRANSLATED_RGB.matcher(message); - message = rgbMatcher.replaceAll("§#$2$3$4$5$6$7"); + message = rgbMatcher.replaceAll("§#$2$3$4$5$6$7"); message = replaceRGBShortCodesWithApproximations(message, false); @@ -185,7 +185,7 @@ public static String approximateRGBColorCodes(String message) { private static String approximateJsonRGBColorCodes(String message) { Matcher jsonRgbMatcher = JSON_RGB.matcher(message); - message = jsonRgbMatcher.replaceAll("$1§#$2$3$4$5$6$7$8"); + message = jsonRgbMatcher.replaceAll("$1§#$2$3$4$5$6$7$8"); return replaceRGBShortCodesWithApproximations(message, true); } @@ -214,7 +214,7 @@ private static String replaceRGBShortCodesWithApproximations(String message, boo if (useNameInsteadOfCode) { message = message.replace(match,getMinecraftCodeName(minecraftCode)); } else { - message = message.replace(match,"§"+minecraftCode); + message = message.replace(match,"§"+minecraftCode); } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/common/RegexUtil.java b/multichat/src/main/java/xyz/olivermartin/multichat/common/RegexUtil.java index 2ed40bdc..570394a1 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/common/RegexUtil.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/common/RegexUtil.java @@ -2,8 +2,21 @@ import java.util.regex.Pattern; -public class RegexUtil { - public static final Pattern COLOR_LEGACY = Pattern.compile("(?i)[a-f0-9]"); - public static final Pattern FORMAT = Pattern.compile("(?i)[k-or]"); - public static final Pattern COLOR_LEGACY_FORMAT = Pattern.compile("(?i)[a-fk-or0-9]"); +public enum RegexUtil { + LEGACY_COLOR("\b(?i)[a-f0-9]\b"), + LEGACY_COLORS("(?i)[a-f0-9]"), + FORMAT("\b(?i)[k-or]\b"), + FORMATS("(?i)[k-or]"), + LEGACY_COLOR_FORMAT("\b(?i)[a-fk-or0-9]\b"), + LEGACY_COLORS_FORMATS("(?i)[a-fk-or0-9]"); + + private final Pattern pattern; + + RegexUtil(String pattern) { + this.pattern = Pattern.compile(pattern); + } + + public boolean matches(String toMatch) { + return pattern.matcher(toMatch).matches(); + } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/common/TranslateMode.java b/multichat/src/main/java/xyz/olivermartin/multichat/common/TranslateMode.java index 7e6ab2dc..3571bced 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/common/TranslateMode.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/common/TranslateMode.java @@ -19,7 +19,7 @@ public enum TranslateMode { X ("(?i)%1$s([x])"); private static final String ORIGIN_CHAR = "&"; - private static final String TRANSLATED_CHAR = "§"; + private static final String TRANSLATED_CHAR = "§"; private Pattern originPattern; private Pattern translatedPattern; diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/local/common/config/RegexChannelForcer.java b/multichat/src/main/java/xyz/olivermartin/multichat/local/common/config/RegexChannelForcer.java index d33f6c1c..a768c912 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/local/common/config/RegexChannelForcer.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/local/common/config/RegexChannelForcer.java @@ -31,7 +31,7 @@ public boolean matchesRegex(String messageFormat) { testMessage = MultiChatUtil.stripColorCodes(testMessage, true); } else { // This makes life easier when doing the config file as only have to use & style colour codes - testMessage = testMessage.replace('§', '&'); + testMessage = testMessage.replace('§', '&'); } return testMessage.matches(regex); diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/local/sponge/LocalSpongeChatManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/local/sponge/LocalSpongeChatManager.java index b9d48244..657854fe 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/local/sponge/LocalSpongeChatManager.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/local/sponge/LocalSpongeChatManager.java @@ -22,12 +22,12 @@ public String processExternalPlaceholders(MultiChatLocalPlayer player, String me Optional opPlayer = Sponge.getServer().getPlayer(player.getUniqueId()); if (opPlayer.isPresent()) { //MultiChatLocal.getInstance().getConsoleLogger().debug("Going into PAPI we have: " + message); - //MultiChatLocal.getInstance().getConsoleLogger().debug("Going into PAPI we have (visualised): " + message.replace("&", "(#d)").replace("§", "(#e)")); + //MultiChatLocal.getInstance().getConsoleLogger().debug("Going into PAPI we have (visualised): " + message.replace("&", "(#d)").replace("§", "(#e)")); message = TextSerializers.FORMATTING_CODE.serialize(papi.replaceSourcePlaceholders(message+"#", opPlayer.get())); //MultiChatLocal.getInstance().getConsoleLogger().debug("Serialised we have: " + message); - //MultiChatLocal.getInstance().getConsoleLogger().debug("Serialised we have (visualised): " + message.replace("&", "(#d)").replace("§", "(#e)")); + //MultiChatLocal.getInstance().getConsoleLogger().debug("Serialised we have (visualised): " + message.replace("&", "(#d)").replace("§", "(#e)")); // PAPI replaces unknown placeholders with {key}, so change them back to %key%!! message = message.substring(0,message.length()-1); @@ -41,7 +41,7 @@ public String processExternalPlaceholders(MultiChatLocalPlayer player, String me message = message.replace("{MODE}", "%MODE%"); //MultiChatLocal.getInstance().getConsoleLogger().debug("After PAPI we have: " + message); - //MultiChatLocal.getInstance().getConsoleLogger().debug("After PAPI we have (visualised): " + message.replace("&", "(#d)").replace("§", "(#e)")); + //MultiChatLocal.getInstance().getConsoleLogger().debug("After PAPI we have (visualised): " + message.replace("&", "(#d)").replace("§", "(#e)")); } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/local/sponge/LocalSpongeConsoleLogger.java b/multichat/src/main/java/xyz/olivermartin/multichat/local/sponge/LocalSpongeConsoleLogger.java index 27c39690..cc172ea1 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/local/sponge/LocalSpongeConsoleLogger.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/local/sponge/LocalSpongeConsoleLogger.java @@ -19,7 +19,7 @@ protected void displayMessageUsingLogger(String message) { @Override protected void sendConsoleMessage(String message) { - Sponge.getServer().getConsole().sendMessage(TextSerializers.formattingCode('§').deserialize(message)); + Sponge.getServer().getConsole().sendMessage(TextSerializers.formattingCode('§').deserialize(message)); } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/local/sponge/listeners/chat/MultiChatLocalSpongePlayerChatEvent.java b/multichat/src/main/java/xyz/olivermartin/multichat/local/sponge/listeners/chat/MultiChatLocalSpongePlayerChatEvent.java index d51fe42d..14435f29 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/local/sponge/listeners/chat/MultiChatLocalSpongePlayerChatEvent.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/local/sponge/listeners/chat/MultiChatLocalSpongePlayerChatEvent.java @@ -33,22 +33,22 @@ public MultiChatLocalPlayer getPlayer() { @Override public String getMessage() { - return TextSerializers.formattingCode('§').serialize(event.getFormatter().getBody().toText()); + return TextSerializers.formattingCode('§').serialize(event.getFormatter().getBody().toText()); } @Override public String getFormat() { - return TextSerializers.formattingCode('§').serialize(event.getFormatter().getHeader().toText()); + return TextSerializers.formattingCode('§').serialize(event.getFormatter().getHeader().toText()); } @Override public void setMessage(String message) { - event.getFormatter().setBody(TextSerializers.formattingCode('§').deserialize(message)); + event.getFormatter().setBody(TextSerializers.formattingCode('§').deserialize(message)); } @Override public void setFormat(String format) { - event.getFormatter().setHeader(TextSerializers.formattingCode('§').deserialize(format)); + event.getFormatter().setHeader(TextSerializers.formattingCode('§').deserialize(format)); } @Override diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/ProxyChatManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/ProxyChatManager.java index b874e977..ac1d1980 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/ProxyChatManager.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/ProxyChatManager.java @@ -6,13 +6,11 @@ import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.connection.ProxiedPlayer; import xyz.olivermartin.multichat.bungee.ChatControl; -import xyz.olivermartin.multichat.bungee.ConfigManager; import xyz.olivermartin.multichat.bungee.DebugManager; -import xyz.olivermartin.multichat.bungee.MessageManager; import xyz.olivermartin.multichat.bungee.PlayerMeta; import xyz.olivermartin.multichat.bungee.PlayerMetaManager; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; -import xyz.olivermartin.multichat.proxy.common.config.ConfigValues; +import xyz.olivermartin.multichat.common.MessageType; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; public class ProxyChatManager { @@ -69,18 +67,18 @@ private boolean canPlayerSendChat(ProxiedPlayer player, String message) { // Check if chat is frozen if (MultiChatProxy.getInstance().getDataStore().isChatFrozen() && !player.hasPermission("multichat.chat.always")) { - MessageManager.sendMessage(player, "freezechat_frozen"); + ProxyConfigs.MESSAGES.sendMessage(player, "freezechat_frozen"); return false; } // Check if they are muted by MultiChat - if (ChatControl.isMuted(player.getUniqueId(), "global_chat")) { - MessageManager.sendMessage(player, "mute_cannot_send_message"); + if (ChatControl.isMuted(player.getUniqueId(), MessageType.GLOBAL_CHAT)) { + ProxyConfigs.MESSAGES.sendMessage(player, "mute_cannot_send_message"); return false; } // Check if they are spamming - if (ChatControl.handleSpam(player, message, "global_chat")) { + if (ChatControl.handleSpam(player, message, MessageType.GLOBAL_CHAT)) { DebugManager.log(player.getName() + " - chat message being cancelled due to spam"); return false; } @@ -105,7 +103,7 @@ private Optional preProcessMessage(ProxiedPlayer player, String message) Optional crm; - crm = ChatControl.applyChatRules(message, "global_chat", player.getName()); + crm = ChatControl.applyChatRules(player, message, MessageType.GLOBAL_CHAT); if (crm.isPresent()) { message = crm.get(); @@ -114,7 +112,7 @@ private Optional preProcessMessage(ProxiedPlayer player, String message) } if (!player.hasPermission("multichat.chat.link")) { - message = ChatControl.replaceLinks(message); + message = ProxyConfigs.CHAT_CONTROL.replaceLinks(message); } return Optional.of(message); @@ -148,8 +146,7 @@ public Optional handleChatMessage(ProxiedPlayer player, String message) public String getLocalSpyMessage(ProxiedPlayer player, String format, String message) { - String spyFormat = ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig() - .getString(ConfigValues.Config.LOCAL_SPY_FORMAT, "&8[&7SPY&8] %FORMAT%"); + String spyFormat = ProxyConfigs.CONFIG.getLocalSpyFormat(); spyFormat = spyFormat.replace("%FORMAT%", format); spyFormat = spyFormat.replace("%DISPLAYNAME%", player.getDisplayName()); @@ -175,8 +172,7 @@ public String getLocalSpyMessage(ProxiedPlayer player, String format, String mes public String getLocalSpyMessage(CommandSender sender, String message) { - String spyFormat = ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig() - .getString(ConfigValues.Config.LOCAL_SPY_FORMAT, "&8[&7SPY&8] %FORMAT%"); + String spyFormat = ProxyConfigs.CONFIG.getLocalSpyFormat(); spyFormat = spyFormat.replace("%FORMAT%", ""); spyFormat = spyFormat.replace("%DISPLAYNAME%", sender.getName()); diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/ProxyLocalCommunicationManager.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/ProxyLocalCommunicationManager.java index 3741284f..0470fee5 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/ProxyLocalCommunicationManager.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/ProxyLocalCommunicationManager.java @@ -1,17 +1,15 @@ package xyz.olivermartin.multichat.proxy.common; +import net.md_5.bungee.api.config.ServerInfo; +import xyz.olivermartin.multichat.bungee.DebugManager; +import xyz.olivermartin.multichat.common.communication.CommChannels; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; + import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; -import net.md_5.bungee.api.config.ServerInfo; -import net.md_5.bungee.config.Configuration; -import xyz.olivermartin.multichat.bungee.ConfigManager; -import xyz.olivermartin.multichat.bungee.DebugManager; -import xyz.olivermartin.multichat.common.communication.CommChannels; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; - /** * Proxy -> Local communication manager *

Manages all plugin messaging channels on the BungeeCord side

@@ -40,8 +38,7 @@ public static void sendGlobalServerData(ServerInfo server) { ObjectOutputStream out = new ObjectOutputStream(stream); - boolean globalChatServer = ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getBoolean("global") == true - && !ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getStringList("no_global").contains(server.getName()); + boolean globalChatServer = ProxyConfigs.CONFIG.isGlobal() && ProxyConfigs.CONFIG.isGlobalServer(server.getName()); String globalChatFormat = MultiChatProxy.getInstance().getChannelManager().getGlobalChannel().getInfo().getFormat(); out.writeUTF("global"); @@ -72,15 +69,14 @@ public static void sendDisplayNameServerData(ServerInfo server) { * - legacy = legacy server info */ - Configuration configYML = ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig(); ByteArrayOutputStream stream = new ByteArrayOutputStream(); try { ObjectOutputStream out = new ObjectOutputStream(stream); - boolean setDisplayName = configYML.getBoolean("set_display_name", true); - String displayNameFormat = configYML.getString("display_name_format", "%PREFIX%%NICK%%SUFFIX%"); + boolean setDisplayName = ProxyConfigs.CONFIG.isSetDisplayName(); + String displayNameFormat = ProxyConfigs.CONFIG.getDisplayNameFormat(); out.writeUTF("dn"); out.writeBoolean(setDisplayName); @@ -118,10 +114,7 @@ public static void sendLegacyServerData(ServerInfo server) { ObjectOutputStream out = new ObjectOutputStream(stream); - boolean isLegacy = - ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig() - .getStringList("legacy_servers") - .contains(server.getName()); + boolean isLegacy = ProxyConfigs.CONFIG.isLegacyServer(server.getName()); DebugManager.log("isLegacy = " + isLegacy); diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/channels/local/LocalChannel.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/channels/local/LocalChannel.java index 69107afa..5fd54b0a 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/channels/local/LocalChannel.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/channels/local/LocalChannel.java @@ -1,33 +1,31 @@ package xyz.olivermartin.multichat.proxy.common.channels.local; -import java.util.List; -import java.util.Set; -import java.util.UUID; - import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.chat.TextComponent; import net.md_5.bungee.api.connection.ProxiedPlayer; import xyz.olivermartin.multichat.bungee.ChatControl; -import xyz.olivermartin.multichat.bungee.MultiChat; +import xyz.olivermartin.multichat.common.MessageType; import xyz.olivermartin.multichat.common.MultiChatUtil; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; import xyz.olivermartin.multichat.proxy.common.ProxyLocalCommunicationManager; import xyz.olivermartin.multichat.proxy.common.channels.ChannelManager; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; + +import java.util.Set; +import java.util.UUID; public class LocalChannel { private String desc; private String format; - private List aliases; private ChannelManager manager; - public LocalChannel(String desc, String format, List aliases, ChannelManager manager) { + public LocalChannel(String desc, String format, ChannelManager manager) { this.desc = desc; this.format = format; - this.aliases = aliases; this.manager = manager; @@ -41,10 +39,6 @@ public String getFormat() { return this.format; } - public List getAliases() { - return this.aliases; - } - public ChannelManager getManager() { return this.manager; } @@ -71,7 +65,7 @@ public void distributeMessage(ProxiedPlayer sender, String message, String forma && !manager.isLocalSpy(receiver)) continue; // If receiver ignores sender - if (ChatControl.ignores(sender.getUniqueId(), receiver.getUniqueId(), "global_chat")) { + if (ChatControl.ignores(sender.getUniqueId(), receiver.getUniqueId(), MessageType.GLOBAL_CHAT)) { ChatControl.sendIgnoreNotifications(receiver, sender, "global_chat"); continue; } @@ -83,7 +77,7 @@ public void distributeMessage(ProxiedPlayer sender, String message, String forma finalMessage = MultiChatProxy.getInstance().getChatManager().getLocalSpyMessage(sender, format, message); } - if (MultiChat.legacyServers.contains(receiver.getServer().getInfo().getName())) { + if (ProxyConfigs.CONFIG.isLegacyServer(receiver.getServer().getInfo().getName())) { receiver.sendMessage(TextComponent.fromLegacyText(MultiChatUtil.approximateRGBColorCodes(finalMessage))); } else { receiver.sendMessage(TextComponent.fromLegacyText(finalMessage)); @@ -117,7 +111,7 @@ public void broadcastRawMessage(CommandSender sender, String server, String mess finalMessage = MultiChatProxy.getInstance().getChatManager().getLocalSpyMessage(sender, message); } - if (MultiChat.legacyServers.contains(receiver.getServer().getInfo().getName())) { + if (ProxyConfigs.CONFIG.isLegacyServer(receiver.getServer().getInfo().getName())) { receiver.sendMessage(TextComponent.fromLegacyText(MultiChatUtil.approximateRGBColorCodes(finalMessage))); } else { receiver.sendMessage(TextComponent.fromLegacyText(finalMessage)); diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/channels/proxy/GenericProxyChannel.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/channels/proxy/GenericProxyChannel.java index ced45e52..950910a4 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/channels/proxy/GenericProxyChannel.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/channels/proxy/GenericProxyChannel.java @@ -1,21 +1,22 @@ package xyz.olivermartin.multichat.proxy.common.channels.proxy; -import java.util.Set; -import java.util.UUID; - import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.chat.TextComponent; import net.md_5.bungee.api.connection.ProxiedPlayer; import xyz.olivermartin.multichat.bungee.ChatControl; import xyz.olivermartin.multichat.bungee.ConsoleManager; -import xyz.olivermartin.multichat.bungee.MultiChat; import xyz.olivermartin.multichat.bungee.events.PostBroadcastEvent; import xyz.olivermartin.multichat.bungee.events.PostGlobalChatEvent; +import xyz.olivermartin.multichat.common.MessageType; import xyz.olivermartin.multichat.common.MultiChatUtil; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; import xyz.olivermartin.multichat.proxy.common.ProxyLocalCommunicationManager; import xyz.olivermartin.multichat.proxy.common.channels.ChannelManager; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; + +import java.util.Set; +import java.util.UUID; public abstract class GenericProxyChannel implements ProxyChannel { @@ -78,12 +79,12 @@ public void distributeMessage(ProxiedPlayer sender, String message, String forma continue; // If receiver ignores sender - if (ChatControl.ignores(sender.getUniqueId(), receiver.getUniqueId(), "global_chat")) { + if (ChatControl.ignores(sender.getUniqueId(), receiver.getUniqueId(), MessageType.GLOBAL_CHAT)) { ChatControl.sendIgnoreNotifications(receiver, sender, "global_chat"); continue; } - if (MultiChat.legacyServers.contains(receiver.getServer().getInfo().getName())) { + if (ProxyConfigs.CONFIG.isLegacyServer(receiver.getServer().getInfo().getName())) { receiver.sendMessage(TextComponent.fromLegacyText(MultiChatUtil.approximateRGBColorCodes(joined))); } else { receiver.sendMessage(TextComponent.fromLegacyText(joined)); @@ -119,7 +120,7 @@ public void broadcastRawMessage(CommandSender sender, String message) { || manager.isHidden(receiver.getUniqueId(), id)) // Receiver has hidden this channel continue; - if (MultiChat.legacyServers.contains(receiver.getServer().getInfo().getName())) { + if (ProxyConfigs.CONFIG.isLegacyServer(receiver.getServer().getInfo().getName())) { receiver.sendMessage(TextComponent.fromLegacyText(MultiChatUtil.approximateRGBColorCodes(message))); } else { receiver.sendMessage(TextComponent.fromLegacyText(message)); diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/channels/proxy/GlobalStaticProxyChannel.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/channels/proxy/GlobalStaticProxyChannel.java index 94fa8967..f8f38bfe 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/channels/proxy/GlobalStaticProxyChannel.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/channels/proxy/GlobalStaticProxyChannel.java @@ -1,14 +1,12 @@ package xyz.olivermartin.multichat.proxy.common.channels.proxy; -import java.util.List; - import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; import xyz.olivermartin.multichat.proxy.common.channels.ChannelManager; public class GlobalStaticProxyChannel extends StaticProxyChannel { - public GlobalStaticProxyChannel(String desc, String format, List aliases, ChannelManager manager) { - super("global", new ProxyChannelInfo(desc, format, false, MultiChatProxy.getInstance().getContextManager().getGlobalContext(), aliases), manager); + public GlobalStaticProxyChannel(String desc, String format, ChannelManager manager) { + super("global", new ProxyChannelInfo(desc, format, false, MultiChatProxy.getInstance().getContextManager().getGlobalContext()), manager); } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/channels/proxy/ProxyChannelInfo.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/channels/proxy/ProxyChannelInfo.java index 31906752..3dc3dddf 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/channels/proxy/ProxyChannelInfo.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/channels/proxy/ProxyChannelInfo.java @@ -1,41 +1,38 @@ package xyz.olivermartin.multichat.proxy.common.channels.proxy; -import java.util.List; -import java.util.Optional; - import net.md_5.bungee.api.CommandSender; import xyz.olivermartin.multichat.proxy.common.contexts.Context; +import java.util.Optional; + public class ProxyChannelInfo { private String desc; // A short description of the channel private String format; // The format of this channel private boolean unhideable; // If the channel is unhideable private Context context; // The context for this channel - private List aliases; // The command aliases for this channel private String permission; // Permission to view / speak private String viewPermission; // Permission to view only - public ProxyChannelInfo(String desc, String format, boolean unhideable, Context context, List aliases, String permission, String viewPermission) { + public ProxyChannelInfo(String desc, String format, boolean unhideable, Context context, String permission, String viewPermission) { this.desc = desc; this.format = format; this.unhideable = unhideable; this.context = context; - this.aliases = aliases; this.permission = permission; this.viewPermission = viewPermission; } - public ProxyChannelInfo(String desc, String format, boolean unhideable, Context context, List aliases, String permission) { - this(desc, format, unhideable, context, aliases, permission, permission); + public ProxyChannelInfo(String desc, String format, boolean unhideable, Context context, String permission) { + this(desc, format, unhideable, context, permission, permission); } - public ProxyChannelInfo(String desc, String format, boolean unhideable, Context context, List aliases) { - this(desc, format, unhideable, context, aliases, null); + public ProxyChannelInfo(String desc, String format, boolean unhideable, Context context) { + this(desc, format, unhideable, context, null); } /** @@ -70,14 +67,6 @@ public Context getContext() { return this.context; } - /** - * Gets the command aliases of this channel - * @return the command aliases - */ - public List getAliases() { - return this.aliases; - } - /* * Are any permissions set for this channel? */ diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/AbstractProxyConfig.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/AbstractProxyConfig.java new file mode 100644 index 00000000..2ce280a4 --- /dev/null +++ b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/AbstractProxyConfig.java @@ -0,0 +1,162 @@ +package xyz.olivermartin.multichat.proxy.common.config; + + +import java.io.File; +import java.io.IOException; + +import net.md_5.bungee.api.plugin.Plugin; +import net.md_5.bungee.config.Configuration; +import net.md_5.bungee.config.ConfigurationProvider; +import net.md_5.bungee.config.YamlConfiguration; + +/** + * Class that represents the base of a config that can be handled by MultiChat + *

+ * Manages creation and reloads + * + * @author Oliver Martin (Revilo410) + */ +public abstract class AbstractProxyConfig { + + private final String fileName; + + /** + * Prepare an abstract config. + * You have to call {@link #setPlugin(Plugin)} to make {@link #reloadConfig()} work. + * You can call {@link #setDataFolder(File)} to change the folder under which the plugin will be saved. + * + * @param fileName The name of the file, needs + */ + AbstractProxyConfig(String fileName) { + if (!fileName.endsWith(".yml")) + throw new IllegalArgumentException("Filename did not end with .yml"); + + this.fileName = fileName; + } + + private Plugin plugin; + private File dataFolder, configFile; + private Configuration config; + + /** + * Set the plugin that owns the configuration file + * + * @param plugin the BungeeCord plugin + * @throws IllegalArgumentException if the plugin has already been set + */ + public final void setPlugin(Plugin plugin) throws IllegalArgumentException { + if (this.plugin != null) + throw new IllegalArgumentException("You can not change the plugin after setting it once."); + + this.plugin = plugin; + } + + /** + * Set the folder under which the file should be + * + * @param dataFolder the folder + * @throws IllegalArgumentException if the data folder has already been set + */ + public final void setDataFolder(File dataFolder) throws IllegalArgumentException { + if (this.dataFolder != null) + throw new IllegalArgumentException("You can not change the data folder after setting it once."); + + this.dataFolder = dataFolder; + } + + /** + * Reload the config. + *

+ * This method can only be called if {@link #setPlugin(Plugin)} has been called. + * Data folder will be the plugin folder unless first set with with {@link #setDataFolder(File)}. + * + * @throws IllegalStateException if the plugin has not been set yet. + */ + public final void reloadConfig() throws IllegalStateException { + if (plugin == null) + throw new IllegalStateException("You have not set the plugin yet."); + + if (this.configFile == null) + this.configFile = new File(getDataFolder(), fileName); + + plugin.getLogger().info("Loading " + fileName + " ..."); + ProxyConfigUpdater configUpdater = new ProxyConfigUpdater(this); + configUpdater.update(); + + try { + config = ConfigurationProvider.getProvider(YamlConfiguration.class).load(configFile); + reloadValues(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * Method that can be overridden to define what should happen after configuration has been reloaded. + */ + void reloadValues() { + } + + /** + * Convenience method to get the plugin. Same-Package only. + * + * @return the data folder. + * @throws IllegalStateException if the plugin has not been set + */ + Plugin getPlugin() { + if (plugin == null) + throw new IllegalStateException("Method has been called without defining the plugin first."); + + return plugin; + } + + /** + * Convenience method to get the file name. + * + * @return the file name. + */ + public final String getFileName() { + return fileName; + } + + /** + * Convenience method to get the data folder. + * + * @return the data folder. + * @throws IllegalStateException if the plugin has not been set + */ + public final File getDataFolder() throws IllegalStateException { + if (plugin == null) + throw new IllegalStateException("Method has been called without defining the plugin first."); + + if (dataFolder == null) + dataFolder = plugin.getDataFolder(); + + return dataFolder; + } + + /** + * Convenience method to get the config's file. + * + * @return the config's file. + * @throws IllegalStateException if the plugin has not been set + */ + public final File getConfigFile() throws IllegalStateException { + if (plugin == null) + throw new IllegalStateException("Method has been called without defining the plugin first."); + + return configFile; + } + + /** + * Convenience method to get the bungee configuration. + * + * @return the config. + */ + public final Configuration getConfig() { + if (config == null) + throw new IllegalStateException("Configuration has not been loaded yet. This should NOT happen! " + + "Check the server startup for errors."); + return config; + } +} diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ConfigFile.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ConfigFile.java deleted file mode 100644 index 297223e5..00000000 --- a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ConfigFile.java +++ /dev/null @@ -1,25 +0,0 @@ -package xyz.olivermartin.multichat.proxy.common.config; - -public enum ConfigFile { - - CONFIG ("config.yml"), - JOIN_MESSAGES ("joinmessages.yml"), - CHAT_CONTROL ("chatcontrol.yml"), - MESSAGES ("messages.yml"), - ALIASES ("aliases.yml"); - - private String fileName; - - private ConfigFile(String fileName) { - this.fileName = fileName; - } - - /** - * Get the raw file name of this config file - * @return the file name - */ - public String getFileName() { - return this.fileName; - } - -} diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ConfigValues.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ConfigValues.java deleted file mode 100644 index 8e189a8a..00000000 --- a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ConfigValues.java +++ /dev/null @@ -1,235 +0,0 @@ -package xyz.olivermartin.multichat.proxy.common.config; - -public class ConfigValues { - - public static interface Config { - - // Version - - /** - * STRING :: Version of config file - */ - String VERSION = "version"; - - // General - - /** - * BOOL :: Should display names be fetched from spigot - */ - String FETCH_SPIGOT_DISPLAY_NAMES = "fetch_spigot_display_names"; - - /** - * BOOL :: Should MultiChat set display names - */ - String SET_DISPLAY_NAME = "set_display_name"; - - /** - * STRING :: The format MultiChat should use to set display names - */ - String DISPLAY_NAME_FORMAT = "display_name_format"; - - // Private Messaging - - /** - * BOOL :: Should private messaging be enabled - */ - String PM = "pm"; - - /** - * STRING LIST :: List of servers that are excluded from PMs - */ - String NO_PM = "no_pm"; - - /** - * BOOL :: Can players toggle pms with /msg playername? - */ - String TOGGLE_PM = "toggle_pm"; - - /** - * STRING :: Format used for outgoing PMs - */ - String PM_OUT_FORMAT = "pmout"; - - /** - * STRING :: Format used for incoming PMs - */ - String PM_IN_FORMAT = "pmin"; - - /** - * STRING :: Format used for social spy PMs - */ - String PM_SPY_FORMAT = "pmspy"; - - // Chat Channels - - /** - * STRING :: Default channel (local or global) - */ - String DEFAULT_CHANNEL = "default_channel"; - - /** - * BOOL :: Should the default channel be enforced every time a player joins? - */ - String FORCE_CHANNEL_ON_JOIN = "force_channel_on_join"; - - // Global Chat - - /** - * BOOL :: Should global chat be enabled? - */ - String GLOBAL = "global"; - - /** - * STRING LIST :: List of servers to be excluded from global chat - */ - String NO_GLOBAL = "no_global"; - - /** - * STRING :: Format for global chat - */ - String GLOBAL_FORMAT = "globalformat"; - - /** - * STRING :: Format for local spy - */ - String LOCAL_SPY_FORMAT = "localspyformat"; - - // Group Chats - - public static interface GroupChat { - - /** - * The prefix for this section of the config file - */ - String PREFIX = "groupchat."; - - /** - * STRING :: Format for group chats - */ - String FORMAT = PREFIX + "format"; - - /** - * STRING :: Default chat colour - */ - String CC_DEFAULT = PREFIX + "ccdefault"; - - /** - * STRING :: Default name colour - */ - String NC_DEFAULT = PREFIX + "ncdefault"; - - } - - // Staff Chats - - public static interface ModChat { - - /** - * The prefix for this section of the config file - */ - String PREFIX = "modchat."; - - /** - * STRING :: Format for mod chat - */ - String FORMAT = PREFIX + "format"; - - /** - * STRING :: Default chat colour - */ - String CC_DEFAULT = PREFIX + "ccdefault"; - - /** - * STRING :: Default name colour - */ - String NC_DEFAULT = PREFIX + "ncdefault"; - - } - - public static interface AdminChat { - - /** - * The prefix for this section of the config file - */ - String PREFIX = "adminchat."; - - /** - * STRING :: Format for admin chat - */ - String FORMAT = PREFIX + "format"; - - /** - * STRING :: Default chat colour - */ - String CC_DEFAULT = PREFIX + "ccdefault"; - - /** - * STRING :: Default name colour - */ - String NC_DEFAULT = PREFIX + "ncdefault"; - - } - - // Other Settings - - /** - * BOOL :: Should staff list be enabled? - */ - String STAFF_LIST = "staff_list"; - - public static interface PrivacySettings { - - /** - * The prefix for this section of the config file - */ - String PREFIX = "privacy_settings."; - - /** - * BOOL :: Should PMs be logged? - */ - String LOG_PMS = PREFIX + "log_pms"; - - /** - * BOOL :: Should staff chat be logged? - */ - String LOG_STAFFCHAT = PREFIX + "log_staffchat"; - - /** - * BOOL :: Should group chat be logged? - */ - String LOG_GROUPCHAT = PREFIX + "log_groupchat"; - - } - - public static interface PremiumVanish { - - /** - * The prefix for this section of the config file - */ - String PREFIX = "premium_vanish."; - - /** - * BOOL :: Should PMs to vanished staff be prevented? - */ - String PREVENT_MESSAGE = PREFIX + "prevent_message"; - - /** - * BOOL :: Should vanished staff be hidden from staff list? - */ - String PREVENT_STAFF_LIST = PREFIX + "prevent_staff_list"; - - /** - * BOOL :: Should join messages be hidden for vanished staff? - */ - String SILENCE_JOIN = PREFIX + "silence_join"; - - } - - /** - * STRING LIST :: List of pre 1.16 servers for RGB code approximation - */ - String LEGACY_SERVERS = "legacy_servers"; - - } - -} diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ProxyAliases.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ProxyAliases.java new file mode 100644 index 00000000..76458e0e --- /dev/null +++ b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ProxyAliases.java @@ -0,0 +1,35 @@ +package xyz.olivermartin.multichat.proxy.common.config; + +import java.util.HashMap; +import java.util.Map; + +/** + * Class to represent the proxy's aliases.yml. + */ +public class ProxyAliases extends AbstractProxyConfig { + + private final Map commandAliases = new HashMap<>(); + + ProxyAliases() { + super("aliases.yml"); + } + + @Override + void reloadValues() { + commandAliases.clear(); + + getConfig().getKeys().forEach(key -> + commandAliases.put(key, getConfig().getStringList(key).toArray(new String[0])) + ); + } + + /** + * Get all aliases to a certain command. + * + * @param command The base name of the command + * @return the array of defined aliases, empty if command does not exist + */ + public String[] getAliases(String command) { + return commandAliases.getOrDefault(command, new String[0]); + } +} diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ProxyChatControl.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ProxyChatControl.java new file mode 100644 index 00000000..7d93ba7c --- /dev/null +++ b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ProxyChatControl.java @@ -0,0 +1,257 @@ +package xyz.olivermartin.multichat.proxy.common.config; + +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.ProxyServer; +import net.md_5.bungee.api.connection.ProxiedPlayer; +import xyz.olivermartin.multichat.common.MessageType; +import xyz.olivermartin.multichat.proxy.common.ProxyLocalCommunicationManager; + +import java.util.*; +import java.util.regex.Pattern; + +/** + * Class to represent the proxy's chatcontrol.yml. + *

+ * All methods should be relatively straight forward and represent their respective entries in the config. + */ +public class ProxyChatControl extends AbstractProxyConfig { + + private String version, antiSpamCommand, linkRemovalMessage; + private final Set regexRules = new LinkedHashSet<>(); + private final Set regexActions = new LinkedHashSet<>(); + private final Map applyRulesTo = new HashMap<>(), applyActionsTo = new HashMap<>(), + applyAntiSpamTo = new HashMap<>(), applyMuteTo = new HashMap<>(), applyIgnoreTo = new HashMap<>(); + + private boolean antiSpam, antiSpamAction, antiSpamSpigot, mute, notifyIgnore, sessionIgnore, linkControl; + private int antiSpamTime, spamSameMessage, antiSpamCoolDown, antiSpamTrigger; + private Pattern linkPattern; + + ProxyChatControl() { + super("chatcontrol.yml"); + } + + @Override + void reloadValues() { + regexRules.clear(); + regexActions.clear(); + applyRulesTo.clear(); + applyActionsTo.clear(); + applyAntiSpamTo.clear(); + applyMuteTo.clear(); + applyIgnoreTo.clear(); + + version = getConfig().getString("version", "1.10"); + + // Load regex rules + getConfig().getList("regex_rules").forEach(listEntry -> { + if (!(listEntry instanceof Map)) + return; + Map regexRuleConfig = (Map) listEntry; + String pattern = String.valueOf(regexRuleConfig.get("look_for")); + if (pattern == null || pattern.isEmpty()) + return; + + regexRules.add(new RegexRule(pattern, + String.valueOf(regexRuleConfig.get("replace_with")), + String.valueOf(regexRuleConfig.get("permission"))) + ); + }); + for (MessageType messageType : MessageType.values()) + applyRulesTo.put(messageType, getConfig().getBoolean("apply_rules_to." + messageType.toString(), false)); + + // Load regex actions + getConfig().getList("regex_actions").forEach(listEntry -> { + if (!(listEntry instanceof Map)) + return; + Map regexActionConfig = (Map) listEntry; + + String pattern = String.valueOf(regexActionConfig.get("look_for")); + if (pattern == null || pattern.isEmpty()) + return; + + Object cancelObject = regexActionConfig.get("cancel"); + boolean cancel = cancelObject instanceof Boolean && (boolean) cancelObject; + + Object spigotObject = regexActionConfig.get("spigot"); + boolean spigot = spigotObject instanceof Boolean && (boolean) spigotObject; + + regexActions.add(new RegexAction(pattern, + String.valueOf(regexActionConfig.get("command")), + String.valueOf(regexActionConfig.get("permission")), + cancel, + spigot + ) + ); + }); + for (MessageType messageType : MessageType.values()) + applyActionsTo.put(messageType, getConfig().getBoolean("apply_actions_to." + messageType.toString(), false)); + + // Load spam settings + antiSpam = getConfig().getBoolean("anti_spam", true); + antiSpamTime = getConfig().getInt("anti_spam_time", 4); + spamSameMessage = getConfig().getInt("spam_same_message", 4); + antiSpamCoolDown = getConfig().getInt("anti_spam_cooldown", 60); + antiSpamAction = getConfig().getBoolean("anti_spam_action", true); + antiSpamSpigot = getConfig().getBoolean("anti_spam_spigot", true); + antiSpamTrigger = getConfig().getInt("anti_spam_trigger", 3); + antiSpamCommand = getConfig().getString("anti_spam_command"); + for (MessageType messageType : MessageType.values()) + applyAntiSpamTo.put(messageType, getConfig().getBoolean("apply_anti_spam_to." + messageType.toString(), false)); + + // Load mute settings + mute = getConfig().getBoolean("mute", false); + for (MessageType messageType : MessageType.values()) + applyMuteTo.put(messageType, getConfig().getBoolean("apply_mute_to." + messageType.toString(), false)); + + // Load ignore settings + notifyIgnore = getConfig().getBoolean("notify_ignore", false); + sessionIgnore = getConfig().getBoolean("session_ignore", false); + for (MessageType messageType : MessageType.values()) + applyIgnoreTo.put(messageType, getConfig().getBoolean("apply_ignore_to." + messageType.toString(), false)); + + // Load link control settings + linkControl = getConfig().getBoolean("link_control", false); + linkPattern = Pattern.compile(getConfig().getString("link_regex", + "((https|http):\\/\\/)?(www\\.)?([-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.)+[a-zA-Z]{2,4}\\b([-a-zA-Z0-9@:%_\\+.~#?&\\/\\/=]*)") + ); + linkRemovalMessage = getConfig().getString("link_removal_message", "[LINK REMOVED]"); + } + + public String getVersion() { + return version; + } + + // TODO: [2.0] Some of these #apply / #replace / #handle methods could be moved into a refactored ChatControl.class + // I just added them to not lose the logic for now + // TODO: [2.0] Add events for regex rules and actions ? + public String applyRegexRules(CommandSender commandSender, String message, MessageType messageType) { + if (!applyRulesTo.get(messageType)) return message; + + for (RegexRule regexRule : regexRules) + message = regexRule.apply(commandSender, message); + return message; + } + + public boolean regexActionsCancel(CommandSender commandSender, String message, MessageType messageType) { + if (!applyActionsTo.get(messageType)) return false; + + // TODO: [ConfigRefactor] Personally I believe we should return after the first action cancels the message being sent + boolean cancel = false; + for (RegexAction regexAction : regexActions) { + if (regexAction.cancels(commandSender, message)) + cancel = true; + } + + return cancel; + } + + public String replaceLinks(String message) { + if (!linkControl) + return message; + + return linkPattern.matcher(message).replaceAll(linkRemovalMessage); + } + + public boolean applyMuteTo(MessageType messageType) { + return applyMuteTo.get(messageType); + } + + public boolean applyIgnoreTo(MessageType messageType) { + return applyIgnoreTo.get(messageType); + } + + public boolean applyAntiSpamTo(MessageType messageType) { + return applyAntiSpamTo.get(messageType); + } + + public boolean isAntiSpam() { + return antiSpam; + } + + public int getAntiSpamTime() { + return antiSpamTime; + } + + public int getSpamSameMessage() { + return spamSameMessage; + } + + public int getAntiSpamCoolDown() { + return antiSpamCoolDown; + } + + public boolean isAntiSpamAction() { + return antiSpamAction; + } + + public boolean isAntiSpamSpigot() { + return antiSpamSpigot; + } + + public int getAntiSpamTrigger() { + return antiSpamTrigger; + } + + public String getAntiSpamCommand() { + return antiSpamCommand; + } + + public boolean isMute() { + return mute; + } + + public boolean isNotifyIgnore() { + return notifyIgnore; + } + + public boolean isSessionIgnore() { + return sessionIgnore; + } + + // TODO: [ConfigRefactor] [2.0] Decide if we want to move these out of here. I don't think any other class needs access to these though. + private static class RegexRule { + private final Pattern pattern; + private final String replaceWith, permission; + + RegexRule(String pattern, String replaceWith, String permission) { + this.pattern = Pattern.compile(pattern); + this.replaceWith = replaceWith.equals("null") ? "" : replaceWith; + this.permission = permission.equals("null") ? "" : permission; + } + + public String apply(CommandSender commandSender, String message) { + if (commandSender != null && !permission.isEmpty() && !commandSender.hasPermission(permission)) + return message; + return pattern.matcher(message).replaceAll(replaceWith); + } + } + + private static class RegexAction { + private final Pattern pattern, playerPattern = Pattern.compile("%PLAYER%"); + private final String command, permission; + private final boolean cancel, spigot; + + RegexAction(String pattern, String command, String permission, boolean cancel, boolean spigot) { + this.pattern = Pattern.compile(pattern); + this.command = command.equals("null") ? "" : command; + this.permission = permission.equals("null") ? "" : permission; + this.cancel = cancel; + this.spigot = spigot; + } + + public boolean cancels(CommandSender commandSender, String message) { + if (!permission.isEmpty() && !commandSender.hasPermission(permission)) + return false; + if (!pattern.matcher(message).matches()) + return false; + if (!command.isEmpty()) { + String tempCommand = playerPattern.matcher(command).replaceAll(commandSender.getName()); + if (spigot && commandSender instanceof ProxiedPlayer) + ProxyLocalCommunicationManager.sendCommandMessage(tempCommand, ((ProxiedPlayer) commandSender).getServer().getInfo()); + else + ProxyServer.getInstance().getPluginManager().dispatchCommand(commandSender, tempCommand); + } + return cancel; + } + } +} diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ProxyConfig.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ProxyConfig.java new file mode 100644 index 00000000..fd4e5f48 --- /dev/null +++ b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ProxyConfig.java @@ -0,0 +1,225 @@ +package xyz.olivermartin.multichat.proxy.common.config; + +import xyz.olivermartin.multichat.common.RegexUtil; + +import java.util.HashSet; +import java.util.Set; + +/** + * Class to represent the proxy's config.yml. + *

+ * All methods should be relatively straight forward and represent their respective entries in the config. + */ +public class ProxyConfig extends AbstractProxyConfig { + + private String version, displayNameFormat, pmOutFormat, pmInFormat, pmSpyFormat, defaultChannel, globalFormat, + localSpyFormat, groupChatFormat, modChatFormat, adminChatFormat; + private char groupChatColor, groupNameColor, modChatColor, modNameColor, adminChatColor, adminNameColor; + private boolean fetchSpigotDisplayNames, setDisplayName, pm, togglePm, forceChannelOnJoin, global, staffList, + logPms, logStaffChat, logGroupChat, pvPreventMessage, pvPreventStaffList, pvSilenceJoin; + private final Set noPmServers = new HashSet<>(), localServers = new HashSet<>(), legacyServers = new HashSet<>(); + + ProxyConfig() { + super("config.yml"); + } + + @Override + void reloadValues() { + noPmServers.clear(); + localServers.clear(); + legacyServers.clear(); + + version = getConfig().getString("version", "1.10"); + + fetchSpigotDisplayNames = getConfig().getBoolean("fetch_spigot_display_names", true); + setDisplayName = getConfig().getBoolean("set_display_name", true); + displayNameFormat = getConfig().getString("display_name_format", "%PREFIX%%NICK%%SUFFIX%"); + + pm = getConfig().getBoolean("pm", true); + noPmServers.addAll(getConfig().getStringList("no_pm")); + togglePm = getConfig().getBoolean("toggle_pm", true); + + pmOutFormat = getConfig().getString("pmout", "&6[&cYou &6-> &c%DISPLAYNAMET%&6] &f%MESSAGE%"); + pmInFormat = getConfig().getString("pmin", "&6[&c%DISPLAYNAME% &6-> &cMe&6] &f%MESSAGE%"); + pmSpyFormat = getConfig().getString("pmSpyFormat", "&8&l<< &f%NAME% &7-> &f%NAMET%&8: &7%MESSAGE% &8&l>>"); + + defaultChannel = getConfig().getString("default_channel", "global"); + if (!defaultChannel.equals("global") && !defaultChannel.equals("local")) + defaultChannel = "global"; + forceChannelOnJoin = getConfig().getBoolean("force_channel_on_join", forceChannelOnJoin); + + global = getConfig().getBoolean("global", true); + localServers.addAll(getConfig().getStringList("no_global")); + + globalFormat = getConfig().getString("globalformat", "&2[&aG&2] &f%DISPLAYNAME%&f: "); + localSpyFormat = getConfig().getString("localspyformat", "&8[&7SPY&8] %FORMAT%"); + + groupChatFormat = getConfig().getString("groupchat.format", "%CC%(%NC%%GROUPNAME%%CC%)(%NC%%NAME%%CC%) %MESSAGE%"); + groupChatColor = getConfig().getString("groupchat.ccdefault", "a").charAt(0); + if (!RegexUtil.LEGACY_COLOR.matches(String.valueOf(groupChatColor))) + groupChatColor = 'a'; + groupNameColor = getConfig().getString("groupchat.ncdefault", "f").charAt(0); + if (!RegexUtil.LEGACY_COLOR.matches(String.valueOf(groupNameColor))) + groupNameColor = 'f'; + + modChatFormat = getConfig().getString("modchat.format", "%CC%{%NC%%NAME%%CC%} %MESSAGE%"); + modChatColor = getConfig().getString("modchat.ccdefault", "b").charAt(0); + if (!RegexUtil.LEGACY_COLOR.matches(String.valueOf(modChatColor))) + modChatColor = 'b'; + modNameColor = getConfig().getString("modchat.ncdefault", "d").charAt(0); + if (!RegexUtil.LEGACY_COLOR.matches(String.valueOf(modNameColor))) + modNameColor = 'd'; + + adminChatFormat = getConfig().getString("adminchat.format", "%CC%{%NC%%NAME%%CC%} %MESSAGE%"); + adminChatColor = getConfig().getString("adminchat.ccdefault", "d").charAt(0); + if (!RegexUtil.LEGACY_COLOR.matches(String.valueOf(adminChatColor))) + adminChatColor = 'd'; + adminNameColor = getConfig().getString("adminchat.ncdefault", "b").charAt(0); + if (!RegexUtil.LEGACY_COLOR.matches(String.valueOf(adminNameColor))) + adminNameColor = 'b'; + + staffList = getConfig().getBoolean("staff_list", true); + + logPms = getConfig().getBoolean("privacy_settings.log_pms", true); + logStaffChat = getConfig().getBoolean("privacy_settings.log_staffchat", true); + logGroupChat = getConfig().getBoolean("privacy_settings.log_groupochat", true); + + pvPreventMessage = getConfig().getBoolean("premium_vanish.prevent_message", true); + pvPreventStaffList = getConfig().getBoolean("premium_vanish.prevent_staff_list", true); + pvSilenceJoin = getConfig().getBoolean("premium_vanish.silence_join", true); + + legacyServers.addAll(getConfig().getStringList("legacy_servers")); + } + + public String getVersion() { + return version; + } + + public boolean isFetchSpigotDisplayNames() { + return fetchSpigotDisplayNames; + } + + public boolean isSetDisplayName() { + return setDisplayName; + } + + public String getDisplayNameFormat() { + return displayNameFormat; + } + + public boolean isPm() { + return pm; + } + + public boolean isNoPmServer(String serverName) { + return noPmServers.contains(serverName); + } + + public boolean isTogglePm() { + return togglePm; + } + + public String getPmOutFormat() { + return pmOutFormat; + } + + public String getPmInFormat() { + return pmInFormat; + } + + public String getPmSpyFormat() { + return pmSpyFormat; + } + + public String getDefaultChannel() { + return defaultChannel; + } + + public boolean isForceChannelOnJoin() { + return forceChannelOnJoin; + } + + public boolean isGlobal() { + return global; + } + + public boolean isGlobalServer(String serverName) { + return !localServers.contains(serverName); + } + + public String getGlobalFormat() { + return globalFormat; + } + + public String getLocalSpyFormat() { + return localSpyFormat; + } + + public String getGroupChatFormat() { + return groupChatFormat; + } + + public char getGroupChatColor() { + return groupChatColor; + } + + public char getGroupNameColor() { + return groupNameColor; + } + + public String getModChatFormat() { + return modChatFormat; + } + + public char getModChatColor() { + return modChatColor; + } + + public char getModNameColor() { + return modNameColor; + } + + public String getAdminChatFormat() { + return adminChatFormat; + } + + public char getAdminChatColor() { + return adminChatColor; + } + + public char getAdminNameColor() { + return adminNameColor; + } + + public boolean isStaffList() { + return staffList; + } + + public boolean isLogPms() { + return logPms; + } + + public boolean isLogStaffChat() { + return logStaffChat; + } + + public boolean isLogGroupChat() { + return logGroupChat; + } + + public boolean isPvPreventMessage() { + return pvPreventMessage; + } + + public boolean isPvPreventStaffList() { + return pvPreventStaffList; + } + + public boolean isPvSilenceJoin() { + return pvSilenceJoin; + } + + public boolean isLegacyServer(String serverName) { + return legacyServers.contains(serverName); + } +} diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ProxyConfigUpdater.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ProxyConfigUpdater.java new file mode 100644 index 00000000..0bde8fad --- /dev/null +++ b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ProxyConfigUpdater.java @@ -0,0 +1,341 @@ +package xyz.olivermartin.multichat.proxy.common.config; + +import net.md_5.bungee.api.plugin.Plugin; +import net.md_5.bungee.config.Configuration; +import net.md_5.bungee.config.ConfigurationProvider; +import net.md_5.bungee.config.YamlConfiguration; +import org.yaml.snakeyaml.Yaml; + +import java.io.*; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.util.*; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.stream.Collectors; + +public class ProxyConfigUpdater { + + private final Plugin plugin; + private final AbstractProxyConfig config; + private final File backupDir; + private BufferedWriter writer; + private final Yaml yaml = new Yaml(); + + /** + * Create an updater for a proxy config. Will not do anything until you call {@link #update()} + * + * @param config the config that this updater will update + */ + public ProxyConfigUpdater(AbstractProxyConfig config) { + this.config = config; + this.plugin = config.getPlugin(); + this.backupDir = new File(config.getDataFolder(), "backups"); + } + + /** + * Update a yaml file from a resource inside your plugin jar, if the new version is higher than the old version. + *

+ * Creates the yaml file if it does not exist. + */ + public void update() { + if (!config.getConfigFile().exists()) { + plugin.getLogger().info("Creating " + config.getFileName() + " ..."); + try { + Files.copy(plugin.getResourceAsStream(config.getFileName()), config.getConfigFile().toPath()); + } catch (IOException e) { + e.printStackTrace(); + } + return; + } + + Configuration oldConfig; + try { + oldConfig = ConfigurationProvider.getProvider(YamlConfiguration.class).load(config.getConfigFile()); + } catch (IOException e) { + e.printStackTrace(); + return; + } + Configuration newConfig = ConfigurationProvider.getProvider(YamlConfiguration.class).load( + new InputStreamReader(plugin.getResourceAsStream(config.getFileName())) + ); + + String oldVersionString = oldConfig.getString("version"); + String newVersionString = newConfig.getString("version"); + if (oldVersionString == null) { + plugin.getLogger().info("Your saved version of " + config.getFileName() + + " does not have a version. The auto updater will cancel."); + return; + } + if (newVersionString == null) { + plugin.getLogger().info("The plugin-stored version of " + config.getFileName() + + " does not have a version. Please contact the plugin developer: " + + plugin.getDescription().getAuthor()); + return; + } + + boolean shouldUpdate = false; + String[] oldVersionStringSplit = oldVersionString.split("\\."); + String[] newVersionStringSplit = newVersionString.split("\\."); + for (int i = 0; i < oldVersionStringSplit.length; i++) { + if (i > newVersionStringSplit.length - 1) break; + try { + int oldVersionInt = Integer.parseInt(oldVersionStringSplit[i]); + int newVersionInt = Integer.parseInt(newVersionStringSplit[i]); + + if (newVersionInt > oldVersionInt) { + shouldUpdate = true; + break; + } + } catch (NumberFormatException ignored) { + break; + } + } + + if (!shouldUpdate) return; + + plugin.getLogger().info("New config version found for " + config.getFileName() + "! Attempting auto update..."); + + if (!backupDir.exists() && !backupDir.mkdirs()) { + plugin.getLogger().severe("The backups directory could not be created."); + return; + } + + // Back old config up + try { + InputStream in = new BufferedInputStream(new FileInputStream(config.getConfigFile())); + OutputStream out = new BufferedOutputStream(new FileOutputStream( + new File(backupDir, config.getFileName().replace(".yml", oldVersionString + ".yml"))) + ); + + byte[] buffer = new byte[1024]; + int lengthRead; + while ((lengthRead = in.read(buffer)) > 0) { + out.write(buffer, 0, lengthRead); + out.flush(); + } + } catch (IOException ex) { + ex.printStackTrace(); + } + oldConfig.set("version", newVersionString); + + try { + write(oldConfig, newConfig); + plugin.getLogger().info("Auto update for " + config.getFileName() + " successful! Please check it yourself to verify."); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * Get all keys and child keys of a configuration + *

+ * Thanks BungeeCord for not offering this. + * + * @param configuration the configuration to get the keys of + * @param previousKey the previous key (used for recursion, should be called with "") + * @return an insertion-ordered set of key names + */ + private Set getDeepKeys(Configuration configuration, String previousKey) { + Set output = new LinkedHashSet<>(); + configuration.getKeys().forEach(key -> { + Object deepKeyObject = configuration.get(key); + output.add(previousKey + key); + if (deepKeyObject instanceof Configuration) { + output.add(previousKey + key); + Configuration deepKey = (Configuration) deepKeyObject; + output.addAll(getDeepKeys(deepKey, key + ".")); + } + }); + return output; + } + + private void write(Configuration oldConfig, Configuration newConfig) throws IOException { + BufferedReader resourceBufferedReader = new BufferedReader( + new InputStreamReader(plugin.getResourceAsStream(config.getFileName()), StandardCharsets.UTF_8) + ); + Map comments = getComments(resourceBufferedReader.lines().collect(Collectors.toList())); + resourceBufferedReader.close(); + + writer = new BufferedWriter( + new OutputStreamWriter(new FileOutputStream(config.getConfigFile()), StandardCharsets.UTF_8) + ); + + for (String key : getDeepKeys(newConfig, "")) { + String[] currentKeys = key.split("\\."); + String actualKey = currentKeys[currentKeys.length - 1]; + String comment = comments.remove(key); + + StringBuilder indentBuilder = new StringBuilder(); + for (int i = 0; i < currentKeys.length - 1; i++) + indentBuilder.append(" "); + String indent = indentBuilder.toString(); + + if (comment != null) + writer.write(comment); + + Object newObject = newConfig.get(key); + Object oldObject = oldConfig.get(key); + + if (newObject instanceof Configuration && oldObject instanceof Configuration) { + // Write the old section + writeSection(indent, actualKey, (Configuration) oldObject); + } else if (newObject instanceof Configuration) { + // Write the new section + writeSection(indent, actualKey, (Configuration) newObject); + } else if (oldObject != null) { + // Write the old object + write(indent, actualKey, oldObject); + } else { + // Write the new object + write(indent, actualKey, newObject); + } + } + + // All keys written, write leftover comments + String danglingComments = comments.get(null); + + if (danglingComments != null) + writer.write(danglingComments); + + writer.close(); + } + + private void write(String indent, String key, Object toWrite) throws IOException { + if (toWrite instanceof String || toWrite instanceof Character) { + String string = String.valueOf(toWrite); + writer.write(indent + key + ": " + yaml.dump(string.replace("\n", "\\n"))); + } else if (toWrite instanceof List) { + writer.write(getListAsString(indent, key, (List) toWrite)); + } else { + writer.write(indent + key + ": " + yaml.dump(toWrite)); + } + } + + private void writeSection(String indent, String key, Configuration section) throws IOException { + if (section.getKeys().isEmpty()) { + writer.write(indent + key + ": {}"); + } else { + writer.write(indent + key + ":"); + } + + writer.write("\n"); + } + + private String getListAsString(String indent, String key, List list) { + StringBuilder builder = new StringBuilder(indent).append(key).append(":"); + + if (list.isEmpty()) { + builder.append(" []\n"); + return builder.toString(); + } + + builder.append("\n"); + + for (Object toWrite : list) { + builder.append(indent); + + if (toWrite instanceof String || toWrite instanceof Character) { + builder.append("- '").append(toWrite).append("'"); + } else if (toWrite instanceof List) { + builder.append("- ").append(yaml.dump(toWrite)); + } else if (toWrite instanceof Map) { + AtomicBoolean first = new AtomicBoolean(true); + ((Map) toWrite).forEach(((mapKey, mapValue) -> { + if (first.get()) { + builder.append("- "); + first.set(false); + } else + builder.append(" "); + builder.append(mapKey).append(": ").append(yaml.dump(mapValue)); + })); + } else { + builder.append("- ").append(toWrite); + } + } + + return builder.toString(); + } + + private Map getComments(List lines) { + Map comments = new HashMap<>(); + StringBuilder keysBuilder = new StringBuilder(); + StringBuilder commentBuilder = new StringBuilder(); + long indents = 0; + + for (String line : lines) { + String trimmedLine = line == null ? "" : line.trim(); + if (trimmedLine.startsWith("-")) continue; + + if (trimmedLine.isEmpty() || trimmedLine.startsWith("#")) { + commentBuilder.append(line).append("\n"); + } else { + indents = setFullKey(keysBuilder, line, indents); + + if (keysBuilder.length() > 0) { + comments.put(keysBuilder.toString(), commentBuilder.toString()); + commentBuilder.setLength(0); + } + } + } + + if (commentBuilder.length() > 0) { + comments.put(null, commentBuilder.toString()); + } + + return comments; + } + + private void removeLastKey(StringBuilder keyBuilder) { + String temp = keyBuilder.toString(); + String[] keys = temp.split("\\."); + + if (keys.length == 1) { + keyBuilder.setLength(0); + return; + } + + temp = temp.substring(0, temp.length() - keys[keys.length - 1].length() - 1); + keyBuilder.setLength(temp.length()); + } + + private long setFullKey(StringBuilder keysBuilder, String configLine, long indents) { + // One indent is 2 spaces + long currentIndents = 0; + for (char c : configLine.toCharArray()) { + if (c == ' ') currentIndents++; + // Ignore further spaces + else break; + } + currentIndents = currentIndents / 2; + + String key = configLine.trim().split(":")[0]; + + if (keysBuilder.length() == 0) { + keysBuilder.append(key); + } else if (currentIndents == indents) { + removeLastKey(keysBuilder); + + if (keysBuilder.length() > 0) { + keysBuilder.append("."); + } + + keysBuilder.append(key); + } else if (currentIndents > indents) { + keysBuilder.append(".").append(key); + } else { + long difference = indents - currentIndents; + + for (int i = 0; i < difference + 1; i++) { + removeLastKey(keysBuilder); + } + + if (keysBuilder.length() > 0) { + keysBuilder.append("."); + } + + keysBuilder.append(key); + } + + return currentIndents; + } +} \ No newline at end of file diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ProxyConfigs.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ProxyConfigs.java new file mode 100644 index 00000000..6ad48a96 --- /dev/null +++ b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ProxyConfigs.java @@ -0,0 +1,95 @@ +package xyz.olivermartin.multichat.proxy.common.config; + +import net.md_5.bungee.api.plugin.Plugin; + +import java.io.File; +import java.util.*; + +/** + * Utility class to access proxy configs. + */ +public class ProxyConfigs { + + private ProxyConfigs() { + } + + /** + * Used to access the proxy's config.yml. + */ + public static final ProxyConfig CONFIG = new ProxyConfig(); + + /** + * Used to access the proxy's aliases.yml. + */ + public static final ProxyAliases ALIASES = new ProxyAliases(); + + /** + * Used to access the proxy's chatcontrol.yml. + */ + public static final ProxyChatControl CHAT_CONTROL = new ProxyChatControl(); + + /** + * Used to access the proxy's messages.yml. + */ + public static final ProxyMessages MESSAGES = new ProxyMessages(); + + /** + * Used to access the proxy's joinmessages.yml. + */ + public static final ProxyJoinMessages JOIN_MESSAGES = new ProxyJoinMessages(); + + /** + * List of all configurations that are managed by the plugin and have pre-defined values. + */ + public static final List ALL = Arrays.asList(CONFIG, ALIASES, CHAT_CONTROL, MESSAGES, JOIN_MESSAGES); + + /** + * List of all configurations that are saved in the plugin jar and don't have pre-defined values. + */ + public static final Set RAW_CONFIGS = new HashSet<>(); + + /** + * Loads or reloads and gets the {@link AbstractProxyConfig} of a .yml file inside a plugin's resources. + * Calling reloadValues on the config will do nothing, you will have to make your own implementation. + *

+ * Currently only used by french translations in MultiChat. + * + * @param plugin the plugin of which the resources should be loaded + * @param fileName the name of the file that ends with .yml + * @return the {@link AbstractProxyConfig} of that file + */ + public static AbstractProxyConfig loadRawConfig(Plugin plugin, String fileName) { + return loadRawConfig(plugin, fileName, plugin.getDataFolder()); + } + + /** + * Loads or reloads and gets the {@link AbstractProxyConfig} of a .yml file inside a plugin's resources. + * Calling reloadValues on the config will do nothing, you will have to make your own implementation. + *

+ * Currently only used by french translations in MultiChat. + * + * @param plugin the plugin of which the resources should be loaded + * @param fileName the name of the file that ends with .yml + * @param dataFolder the path where the file should end up + * @return the {@link AbstractProxyConfig} of that file + */ + public static AbstractProxyConfig loadRawConfig(Plugin plugin, String fileName, File dataFolder) { + if (!fileName.endsWith(".yml")) + throw new IllegalArgumentException("File name did not end with .yml"); + + AbstractProxyConfig rawConfig = RAW_CONFIGS.stream() + .filter(abstractProxyConfig -> abstractProxyConfig.getFileName().equals(fileName)) + .findFirst() + .orElse(null); + if (rawConfig == null) { + rawConfig = new AbstractProxyConfig(fileName) {}; + rawConfig.setPlugin(plugin); + rawConfig.setDataFolder(dataFolder); + } else + RAW_CONFIGS.remove(rawConfig); + rawConfig.reloadConfig(); + RAW_CONFIGS.add(rawConfig); + + return rawConfig; + } +} diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ProxyJoinMessages.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ProxyJoinMessages.java new file mode 100644 index 00000000..54b1d3cb --- /dev/null +++ b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ProxyJoinMessages.java @@ -0,0 +1,78 @@ +package xyz.olivermartin.multichat.proxy.common.config; + +/** + * Class to represent the proxy's joinmessages.yml. + *

+ * All methods should be relatively straight forward and represent their respective entries in the config. + */ +public class ProxyJoinMessages extends AbstractProxyConfig { + + private String version, serverJoin, silentJoin, networkQuit, silentQuit, welcomeMessage, privateWelcomeMessage; + private boolean showJoin, showQuit, welcome, privateWelcome; + + ProxyJoinMessages() { + super("joinmessages.yml"); + } + + @Override + void reloadValues() { + version = getConfig().getString("version", "1.10"); + + showJoin = getConfig().getBoolean("showjoin", true); + showQuit = getConfig().getBoolean("showquit", true); + + serverJoin = getConfig().getString("serverjoin", "&e%NAME% &ejoined the network"); + silentJoin = getConfig().getString("silentjoin", "&b&o%NAME% &b&ojoined the network silently"); + networkQuit = getConfig().getString("networkquit", "&e%NAME% left the network"); + silentQuit = getConfig().getString("silentquit", "&b&o%NAME% &b&oleft the network silently"); + + welcome = getConfig().getBoolean("welcome", true); + welcomeMessage = getConfig().getString("welcome_message", "&dWelcome %NAME% to the network for the first time!"); + privateWelcome = getConfig().getBoolean("private_welcome", false); + privateWelcomeMessage = getConfig().getString("private_welcome_message", "&5Hi there %NAME%, please make sure you read the /rules!"); + } + + public String getVersion() { + return version; + } + + public boolean isShowJoin() { + return showJoin; + } + + public boolean isShowQuit() { + return showQuit; + } + + public String getServerJoin() { + return serverJoin; + } + + public String getSilentJoin() { + return silentJoin; + } + + public String getNetworkQuit() { + return networkQuit; + } + + public String getSilentQuit() { + return silentQuit; + } + + public boolean isWelcome() { + return welcome; + } + + public String getWelcomeMessage() { + return welcomeMessage; + } + + public boolean isPrivateWelcome() { + return privateWelcome; + } + + public String getPrivateWelcomeMessage() { + return privateWelcomeMessage; + } +} diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ProxyMessages.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ProxyMessages.java new file mode 100644 index 00000000..efe755b7 --- /dev/null +++ b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/config/ProxyMessages.java @@ -0,0 +1,96 @@ +package xyz.olivermartin.multichat.proxy.common.config; + +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.connection.ProxiedPlayer; +import xyz.olivermartin.multichat.common.MultiChatUtil; +import xyz.olivermartin.multichat.proxy.common.ProxyJsonUtils; + +import java.util.HashMap; +import java.util.Map; + +/** + * Class to represent the proxy's messages.yml. + *

+ * All methods should be relatively straight forward and represent their respective entries in the config. + */ +public class ProxyMessages extends AbstractProxyConfig { + + private final Map messagesMap = new HashMap<>(); + + ProxyMessages() { + super("messages.yml"); + } + + @Override + void reloadValues() { + messagesMap.clear(); + + getConfig().getKeys().forEach(key -> messagesMap.put(key, getConfig().getString(key))); + } + + public String getPrefix() { + return messagesMap.getOrDefault("prefix", "&8&l[&2&lM&a&lC&8&l]&f "); + } + + public String getMessage(String key) { + return messagesMap.getOrDefault(key, "&cERROR - Please report to plugin dev - No message defined for: " + key); + } + + public void sendMessage(CommandSender sender, String id) { + sendMessage(sender, id, true); + } + + public void sendMessage(CommandSender sender, String id, boolean usePrefix) { + sendMessage(sender, id, usePrefix, null); + } + + public void sendMessage(CommandSender sender, String id, String special) { + sendMessage(sender, id, true, special, false); + } + + public void sendMessage(CommandSender sender, String id, boolean usePrefix, String special) { + sendMessage(sender, id, usePrefix, special, false); + } + + public void sendMessage(CommandSender sender, String id, String special, boolean specialJson) { + sendMessage(sender, id, true, special, specialJson); + } + + // TODO: [2.0] [ConfigRefactor] Should probably take another look at this method at some point + public void sendMessage(CommandSender sender, String id, boolean usePrefix, String special, boolean specialJson) { + + boolean isSpecial = special != null; + + // Translate format codes + String message = (usePrefix ? getPrefix() : "+++") + getMessage(id); + message = MultiChatUtil.translateColorCodes(message); + if (isSpecial) special = MultiChatUtil.translateColorCodes(special); + + // Handle legacy servers + if (sender instanceof ProxiedPlayer) { + ProxiedPlayer player = (ProxiedPlayer) sender; + if (ProxyConfigs.CONFIG.isLegacyServer(player.getServer().getInfo().getName())) { + message = MultiChatUtil.approximateRGBColorCodes(message); + if (isSpecial) special = MultiChatUtil.approximateRGBColorCodes(special); + } + } else { + // Handle console + message = MultiChatUtil.approximateRGBColorCodes(message); + if (isSpecial) special = MultiChatUtil.approximateRGBColorCodes(special); + } + + // If we want to treat the "Special" part as Json, then we will parse it here and treat it as a non special message + if (isSpecial && specialJson) { + message = message.replace("%SPECIAL%", special); + isSpecial = false; + } + + // Parse & send message + if (isSpecial) { + sender.sendMessage(ProxyJsonUtils.parseMessage(message, "%SPECIAL%", special)); + } else { + sender.sendMessage(ProxyJsonUtils.parseMessage(message)); + } + + } +} diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/contexts/GlobalContext.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/contexts/GlobalContext.java index 785e1001..c0699429 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/contexts/GlobalContext.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/contexts/GlobalContext.java @@ -1,11 +1,34 @@ package xyz.olivermartin.multichat.proxy.common.contexts; -import java.util.List; +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.connection.ProxiedPlayer; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; + +import java.util.ArrayList; public class GlobalContext extends Context { - public GlobalContext(String defaultChannel, boolean forceChannel, boolean blacklistServers, List servers) { - super("global", 0, defaultChannel, forceChannel, blacklistServers, servers); + public GlobalContext(String defaultChannel, boolean forceChannel, boolean blacklistServers) { + super("global", 0, defaultChannel, forceChannel, blacklistServers, new ArrayList<>()); } + @Override + public boolean contains(CommandSender sender) { + if (!(sender instanceof ProxiedPlayer)) return true; + + ProxiedPlayer player = (ProxiedPlayer) sender; + if (player.getServer() == null) return false; + + /* + global blacklist needed + -------------------------------- + 0 0 0 + 0 1 1 + 1 0 1 + 1 1 0 + + This concludes that we can use XOR + */ + return ProxyConfigs.CONFIG.isGlobalServer(player.getServer().getInfo().getName()) ^ isBlacklistServers(); + } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/ProxyLoginListener.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/ProxyLoginListener.java index 9b0b7e86..cd795541 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/ProxyLoginListener.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/ProxyLoginListener.java @@ -9,11 +9,10 @@ import net.md_5.bungee.api.plugin.Listener; import net.md_5.bungee.event.EventHandler; import net.md_5.bungee.event.EventPriority; -import xyz.olivermartin.multichat.bungee.ConfigManager; import xyz.olivermartin.multichat.bungee.ConsoleManager; import xyz.olivermartin.multichat.bungee.PlayerMetaManager; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import xyz.olivermartin.multichat.proxy.common.storage.ProxyDataStore; public class ProxyLoginListener implements Listener { @@ -32,8 +31,8 @@ public void onLogin(PostLoginEvent event) { if (!ds.getModChatPreferences().containsKey(uuid)) { TChatInfo chatinfo = new TChatInfo(); - chatinfo.setChatColor(ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getString("modchat.ccdefault").toCharArray()[0]); - chatinfo.setNameColor(ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getString("modchat.ncdefault").toCharArray()[0]); + chatinfo.setChatColor(ProxyConfigs.CONFIG.getModChatColor()); + chatinfo.setNameColor(ProxyConfigs.CONFIG.getModNameColor()); ds.getModChatPreferences().put(uuid, chatinfo); } @@ -45,8 +44,8 @@ public void onLogin(PostLoginEvent event) { if (!ds.getAdminChatPreferences().containsKey(uuid)) { TChatInfo chatinfo = new TChatInfo(); - chatinfo.setChatColor(ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getString("adminchat.ccdefault").toCharArray()[0]); - chatinfo.setNameColor(ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getString("adminchat.ncdefault").toCharArray()[0]); + chatinfo.setChatColor(ProxyConfigs.CONFIG.getAdminChatColor()); + chatinfo.setNameColor(ProxyConfigs.CONFIG.getAdminNameColor()); ds.getAdminChatPreferences().put(uuid, chatinfo); } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/ProxyLogoutListener.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/ProxyLogoutListener.java index 80f18030..368ecded 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/ProxyLogoutListener.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/ProxyLogoutListener.java @@ -1,27 +1,20 @@ package xyz.olivermartin.multichat.proxy.common.listeners; -import java.util.UUID; - import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.event.PlayerDisconnectEvent; import net.md_5.bungee.api.plugin.Listener; -import net.md_5.bungee.config.Configuration; import net.md_5.bungee.event.EventHandler; import net.md_5.bungee.event.EventPriority; -import xyz.olivermartin.multichat.bungee.ChatControl; -import xyz.olivermartin.multichat.bungee.ChatManipulation; -import xyz.olivermartin.multichat.bungee.ConfigManager; -import xyz.olivermartin.multichat.bungee.ConsoleManager; -import xyz.olivermartin.multichat.bungee.Events; -import xyz.olivermartin.multichat.bungee.MultiChat; -import xyz.olivermartin.multichat.bungee.PlayerMetaManager; +import xyz.olivermartin.multichat.bungee.*; import xyz.olivermartin.multichat.common.MultiChatUtil; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; import xyz.olivermartin.multichat.proxy.common.ProxyJsonUtils; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import xyz.olivermartin.multichat.proxy.common.storage.ProxyDataStore; +import java.util.UUID; + public class ProxyLogoutListener implements Listener { private void displayMessage(ProxiedPlayer player, String message) { @@ -30,7 +23,7 @@ private void displayMessage(ProxiedPlayer player, String message) { message = MultiChatUtil.translateColorCodes(message); - if (MultiChat.legacyServers.contains(player.getServer().getInfo().getName())) message = MultiChatUtil.approximateRGBColorCodes(message); + if (ProxyConfigs.CONFIG.isLegacyServer(player.getServer().getInfo().getName())) message = MultiChatUtil.approximateRGBColorCodes(message); player.sendMessage(ProxyJsonUtils.parseMessage(message)); @@ -65,10 +58,8 @@ public void onLogout(PlayerDisconnectEvent event) { Events.GCToggle.remove(uuid); } - Configuration config = ConfigManager.getInstance().getHandler(ConfigFile.CHAT_CONTROL).getConfig(); - // If using sessional ignore, then wipe ignores stored - if (config.getBoolean("session_ignore")) { + if (ProxyConfigs.CHAT_CONTROL.isSessionIgnore()) { ChatControl.unignoreAll(uuid); } @@ -89,32 +80,23 @@ public void onLogout(PlayerDisconnectEvent event) { ds.getJoinedNetwork().remove(player.getUniqueId()); // If we are handling the quit messages, then handle them... - if ( ConfigManager.getInstance().getHandler(ConfigFile.JOIN_MESSAGES).getConfig().getBoolean("showquit") == true ) { - + if (ProxyConfigs.JOIN_MESSAGES.isShowQuit()) { // Get the formats - String joinformat = ConfigManager.getInstance().getHandler(ConfigFile.JOIN_MESSAGES).getConfig().getString("networkquit"); - String silentformat = ConfigManager.getInstance().getHandler(ConfigFile.JOIN_MESSAGES).getConfig().getString("silentquit"); + String quitFormat = ProxyConfigs.JOIN_MESSAGES.getNetworkQuit(); + boolean silenceQuit = player.hasPermission("multichat.staff.silentjoin"); + if (silenceQuit) + quitFormat = ProxyConfigs.JOIN_MESSAGES.getSilentQuit(); // Replace the placeholders - ChatManipulation chatman = new ChatManipulation(); - joinformat = chatman.replaceJoinMsgVars(joinformat, player.getName(), player.getServer().getInfo().getName()); - silentformat = chatman.replaceJoinMsgVars(silentformat, player.getName(), player.getServer().getInfo().getName()); + String serverName = player.getServer().getInfo().getName(); + quitFormat = new ChatManipulation().replaceJoinMsgVars(quitFormat, player.getName(), serverName); // Broadcast - for (ProxiedPlayer onlineplayer : ProxyServer.getInstance().getPlayers()) { - - if (!player.hasPermission("multichat.staff.silentjoin")) { - - displayMessage(onlineplayer, joinformat); - - } else { - - if (onlineplayer.hasPermission("multichat.staff.silentjoin") ) { - displayMessage(onlineplayer, silentformat); - } - - } + for (ProxiedPlayer target : ProxyServer.getInstance().getPlayers()) { + if (silenceQuit && !target.hasPermission("multichat.staff.silentjoin")) + continue; + displayMessage(target, quitFormat); } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/ProxyServerConnectedListener.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/ProxyServerConnectedListener.java index e8098d35..c428e0b6 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/ProxyServerConnectedListener.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/ProxyServerConnectedListener.java @@ -1,7 +1,5 @@ package xyz.olivermartin.multichat.proxy.common.listeners; -import java.util.UUID; - import de.myzelyam.api.vanish.BungeeVanishAPI; import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.connection.ProxiedPlayer; @@ -9,19 +7,16 @@ import net.md_5.bungee.api.plugin.Listener; import net.md_5.bungee.event.EventHandler; import net.md_5.bungee.event.EventPriority; -import xyz.olivermartin.multichat.bungee.ChatManipulation; -import xyz.olivermartin.multichat.bungee.ChatModeManager; -import xyz.olivermartin.multichat.bungee.ConfigManager; -import xyz.olivermartin.multichat.bungee.ConsoleManager; -import xyz.olivermartin.multichat.bungee.MultiChat; -import xyz.olivermartin.multichat.bungee.UUIDNameManager; +import xyz.olivermartin.multichat.bungee.*; import xyz.olivermartin.multichat.common.MultiChatUtil; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; import xyz.olivermartin.multichat.proxy.common.ProxyJsonUtils; import xyz.olivermartin.multichat.proxy.common.channels.ChannelManager; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import xyz.olivermartin.multichat.proxy.common.storage.ProxyDataStore; +import java.util.UUID; + public class ProxyServerConnectedListener implements Listener { private void displayMessage(ProxiedPlayer player, ProxiedPlayer sender, String senderServer, String message) { @@ -29,10 +24,10 @@ private void displayMessage(ProxiedPlayer player, ProxiedPlayer sender, String s message = MultiChatUtil.translateColorCodes(message); if (player.getUniqueId().equals(sender.getUniqueId())) { - if (MultiChat.legacyServers.contains(senderServer)) message = MultiChatUtil.approximateRGBColorCodes(message); + if (ProxyConfigs.CONFIG.isLegacyServer(senderServer)) message = MultiChatUtil.approximateRGBColorCodes(message); } else { if (player.getServer() == null) return; - if (MultiChat.legacyServers.contains(player.getServer().getInfo().getName())) message = MultiChatUtil.approximateRGBColorCodes(message); + if (ProxyConfigs.CONFIG.isLegacyServer(player.getServer().getInfo().getName())) message = MultiChatUtil.approximateRGBColorCodes(message); } player.sendMessage(ProxyJsonUtils.parseMessage(message)); @@ -101,20 +96,20 @@ public void onServerConnected(ServerConnectedEvent event) { ds.getJoinedNetwork().add(player.getUniqueId()); // If MultiChat is handling join messages... - if (ConfigManager.getInstance().getHandler(ConfigFile.JOIN_MESSAGES).getConfig().getBoolean("showjoin") - || ConfigManager.getInstance().getHandler(ConfigFile.JOIN_MESSAGES).getConfig().getBoolean("welcome") - || ConfigManager.getInstance().getHandler(ConfigFile.JOIN_MESSAGES).getConfig().getBoolean("private_welcome")) { + if (ProxyConfigs.JOIN_MESSAGES.isShowJoin() + || ProxyConfigs.JOIN_MESSAGES.isWelcome() + || ProxyConfigs.JOIN_MESSAGES.isPrivateWelcome()) { // PremiumVanish support, return as early as possible to avoid loading unnecessary resources - if (MultiChat.premiumVanish && MultiChat.hideVanishedStaffInJoin && BungeeVanishAPI.isInvisible(player)) { + if (MultiChat.premiumVanish && ProxyConfigs.CONFIG.isPvSilenceJoin() && BungeeVanishAPI.isInvisible(player)) { return; } // Load join message formats from config - String joinformat = ConfigManager.getInstance().getHandler(ConfigFile.JOIN_MESSAGES).getConfig().getString("serverjoin"); - String silentformat = ConfigManager.getInstance().getHandler(ConfigFile.JOIN_MESSAGES).getConfig().getString("silentjoin"); - String welcomeMessage = ConfigManager.getInstance().getHandler(ConfigFile.JOIN_MESSAGES).getConfig().getString("welcome_message"); - String privateWelcomeMessage = ConfigManager.getInstance().getHandler(ConfigFile.JOIN_MESSAGES).getConfig().getString("private_welcome_message"); + String joinformat = ProxyConfigs.JOIN_MESSAGES.getServerJoin(); + String silentformat = ProxyConfigs.JOIN_MESSAGES.getSilentJoin(); + String welcomeMessage = ProxyConfigs.JOIN_MESSAGES.getWelcomeMessage(); + String privateWelcomeMessage = ProxyConfigs.JOIN_MESSAGES.getPrivateWelcomeMessage(); // Replace the placeholders ChatManipulation chatman = new ChatManipulation(); // TODO Legacy @@ -124,8 +119,8 @@ public void onServerConnected(ServerConnectedEvent event) { privateWelcomeMessage = chatman.replaceJoinMsgVars(privateWelcomeMessage, player.getName(), event.getServer().getInfo().getName()); // Check which messages should be broadcast - boolean broadcastWelcome = ConfigManager.getInstance().getHandler(ConfigFile.JOIN_MESSAGES).getConfig().getBoolean("welcome", true); - boolean privateWelcome = ConfigManager.getInstance().getHandler(ConfigFile.JOIN_MESSAGES).getConfig().getBoolean("private_welcome", false); + boolean broadcastWelcome = ProxyConfigs.JOIN_MESSAGES.isWelcome(); + boolean privateWelcome = ProxyConfigs.JOIN_MESSAGES.isPrivateWelcome(); boolean broadcastJoin = !player.hasPermission("multichat.staff.silentjoin"); // Broadcast @@ -144,7 +139,7 @@ public void onServerConnected(ServerConnectedEvent event) { } - if (ConfigManager.getInstance().getHandler(ConfigFile.JOIN_MESSAGES).getConfig().getBoolean("showjoin")) { + if (ProxyConfigs.JOIN_MESSAGES.isShowJoin()) { displayMessage(onlineplayer, event.getPlayer(), event.getServer().getInfo().getName(), joinformat); } @@ -152,7 +147,7 @@ public void onServerConnected(ServerConnectedEvent event) { ds.getHiddenStaff().add(player.getUniqueId()); - if (ConfigManager.getInstance().getHandler(ConfigFile.JOIN_MESSAGES).getConfig().getBoolean("showjoin")) { + if (ProxyConfigs.JOIN_MESSAGES.isShowJoin()) { if (onlineplayer.hasPermission("multichat.staff.silentjoin") ) { displayMessage(onlineplayer, event.getPlayer(), event.getServer().getInfo().getName(), silentformat); } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/ProxyServerSwitchListener.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/ProxyServerSwitchListener.java index 2283f305..4bf8794a 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/ProxyServerSwitchListener.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/ProxyServerSwitchListener.java @@ -8,12 +8,10 @@ import net.md_5.bungee.api.plugin.Listener; import net.md_5.bungee.event.EventHandler; import net.md_5.bungee.event.EventPriority; -import xyz.olivermartin.multichat.bungee.ConfigManager; import xyz.olivermartin.multichat.proxy.common.MultiChatProxy; import xyz.olivermartin.multichat.proxy.common.ProxyLocalCommunicationManager; import xyz.olivermartin.multichat.proxy.common.channels.ChannelManager; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; -import xyz.olivermartin.multichat.proxy.common.config.ConfigValues; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; public class ProxyServerSwitchListener implements Listener { @@ -48,7 +46,7 @@ public void run() { ProxyLocalCommunicationManager.sendPlayerDataMessage(event.getPlayer().getName(), MultiChatProxy.getInstance().getChannelManager().getChannel(event.getPlayer()), channelFormat, event.getPlayer().getServer().getInfo(), (event.getPlayer().hasPermission("multichat.chat.colour")||event.getPlayer().hasPermission("multichat.chat.color")||event.getPlayer().hasPermission("multichat.chat.colour.simple")||event.getPlayer().hasPermission("multichat.chat.color.simple")), (event.getPlayer().hasPermission("multichat.chat.colour")||event.getPlayer().hasPermission("multichat.chat.color")||event.getPlayer().hasPermission("multichat.chat.colour.rgb")||event.getPlayer().hasPermission("multichat.chat.color.rgb"))); ProxyLocalCommunicationManager.sendLegacyServerData(event.getPlayer().getServer().getInfo()); - if (ConfigManager.getInstance().getHandler(ConfigFile.CONFIG).getConfig().getBoolean(ConfigValues.Config.FETCH_SPIGOT_DISPLAY_NAMES) == true) { + if (ProxyConfigs.CONFIG.isFetchSpigotDisplayNames()) { ProxiedPlayer player = event.getPlayer(); if (player.getServer() != null) { diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/communication/ProxyPlayerActionListener.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/communication/ProxyPlayerActionListener.java index ea11a8aa..1d874526 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/communication/ProxyPlayerActionListener.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/communication/ProxyPlayerActionListener.java @@ -10,8 +10,8 @@ import net.md_5.bungee.api.event.PluginMessageEvent; import net.md_5.bungee.api.plugin.Listener; import net.md_5.bungee.event.EventHandler; -import xyz.olivermartin.multichat.bungee.MessageManager; import xyz.olivermartin.multichat.common.communication.CommChannels; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; /** * Listener for communication over the Player Action communication channel @@ -22,7 +22,7 @@ public class ProxyPlayerActionListener implements Listener { @EventHandler - public static void onPluginMessage(PluginMessageEvent event) { + public void onPluginMessage(PluginMessageEvent event) { // Ignore if sent to a different channel if (!event.getTag().equals(CommChannels.PLAYER_ACTION)) return; @@ -54,7 +54,7 @@ public static void onPluginMessage(PluginMessageEvent event) { } } catch (PatternSyntaxException e) { - MessageManager.sendMessage(ProxyServer.getInstance().getConsole(), "command_execute_regex"); + ProxyConfigs.MESSAGES.sendMessage(ProxyServer.getInstance().getConsole(), "command_execute_regex"); } } diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/communication/ProxyPlayerChatListener.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/communication/ProxyPlayerChatListener.java index 064231be..ca91d9ea 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/communication/ProxyPlayerChatListener.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/communication/ProxyPlayerChatListener.java @@ -30,7 +30,7 @@ public class ProxyPlayerChatListener implements Listener { @SuppressWarnings("unchecked") @EventHandler - public static void onPluginMessage(PluginMessageEvent event) { + public void onPluginMessage(PluginMessageEvent event) { // Ignore if sent to a different channel if (!event.getTag().equals(CommChannels.PLAYER_CHAT)) return; diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/communication/ProxyPlayerMetaListener.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/communication/ProxyPlayerMetaListener.java index c3319e83..21338f58 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/communication/ProxyPlayerMetaListener.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/communication/ProxyPlayerMetaListener.java @@ -24,7 +24,7 @@ public class ProxyPlayerMetaListener implements Listener { @EventHandler - public static void onPluginMessage(PluginMessageEvent event) { + public void onPluginMessage(PluginMessageEvent event) { // Ignore if sent to a different channel if (!event.getTag().equals(CommChannels.PLAYER_META)) return; diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/communication/ProxyServerActionListener.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/communication/ProxyServerActionListener.java index 9979698a..59be0632 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/communication/ProxyServerActionListener.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/listeners/communication/ProxyServerActionListener.java @@ -19,7 +19,7 @@ public class ProxyServerActionListener implements Listener { @EventHandler - public static void onPluginMessage(PluginMessageEvent event) { + public void onPluginMessage(PluginMessageEvent event) { // Ignore if sent to a different channel if (!event.getTag().equals(CommChannels.SERVER_ACTION)) return; diff --git a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/storage/files/ProxyIgnoreFileStore.java b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/storage/files/ProxyIgnoreFileStore.java index 7b937972..f49a7fed 100644 --- a/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/storage/files/ProxyIgnoreFileStore.java +++ b/multichat/src/main/java/xyz/olivermartin/multichat/proxy/common/storage/files/ProxyIgnoreFileStore.java @@ -11,10 +11,8 @@ import java.util.Set; import java.util.UUID; -import net.md_5.bungee.config.Configuration; import xyz.olivermartin.multichat.bungee.ChatControl; -import xyz.olivermartin.multichat.bungee.ConfigManager; -import xyz.olivermartin.multichat.proxy.common.config.ConfigFile; +import xyz.olivermartin.multichat.proxy.common.config.ProxyConfigs; import xyz.olivermartin.multichat.proxy.common.storage.ProxyGenericFileStore; public class ProxyIgnoreFileStore extends ProxyGenericFileStore { @@ -26,11 +24,8 @@ public ProxyIgnoreFileStore(String fileName, File fileDirectory) { @SuppressWarnings("unchecked") @Override protected boolean loadFile(File file) { - - Configuration config = ConfigManager.getInstance().getHandler(ConfigFile.CHAT_CONTROL).getConfig(); - - if (config.getBoolean("session_ignore")) { - ChatControl.setIgnoreMap(new HashMap>()); + if (ProxyConfigs.CHAT_CONTROL.isSessionIgnore()) { + ChatControl.setIgnoreMap(new HashMap<>()); return true; } @@ -56,10 +51,7 @@ protected boolean loadFile(File file) { @Override protected boolean saveFile(File file) { - - Configuration config = ConfigManager.getInstance().getHandler(ConfigFile.CHAT_CONTROL).getConfig(); - - if (config.getBoolean("session_ignore")) return true; + if (ProxyConfigs.CHAT_CONTROL.isSessionIgnore()) return true; try { diff --git a/multichat/src/main/resources/aliases.yml b/multichat/src/main/resources/aliases.yml index c7516d6c..9cf28195 100644 --- a/multichat/src/main/resources/aliases.yml +++ b/multichat/src/main/resources/aliases.yml @@ -20,100 +20,100 @@ version: "1.10" # ############################################################ # The admin chat colour command has the following aliases (other than /mcacc) -acc: +mcacc: - acc # The admin chat command has the following aliases (other than /mcac) -ac: +mcac: - ac # The announcement command has the following aliases (other than /mcannouncement) -announcement: +mcannouncement: - announcement - announce - announcements # The bulletin command has the following aliases (other than /mcbulletin) -bulletin: +mcbulletin: - bulletin - bulletins # The cast command has the following aliases (other than /mccast) -cast: +mccast: - cast # The channel command has the following aliases (other than /mcchannel) -channel: +mcchannel: - channel - ch # The clearchat command has the following aliases (other than /mcclearchat) -clearchat: +mcclearchat: - clearchat - chatclear - wipechat - killchat # The display command has the following aliases (other than /mcdisplay) -display: +mcdisplay: - display # The freezechat command has the following aliases (other than /mcfreezechat) -freezechat: +mcfreezechat: - freezechat - pausechat - lockchat - chatlock # The group chat command has the following aliases (other than /mcgc) -gc: +mcgc: - gc # The global command has the following aliases (other than /mcglobal) -global: +mcglobal: - global - g # The group command has the following aliases (other than /mcgroup) -group: +mcgroup: - group # The group list command has the following aliases (other than /mcgroups) -groups: +mcgroups: - groups - grouplist # The helpme command has the following aliases (other than /mchelpme) -helpme: +mchelpme: - helpme - helpop # The ignore command has the following aliases (other than /mcignore) -ignore: +mcignore: - ignore - blockplayer # The local command has the following aliases (other than /mclocal) -local: +mclocal: - local - l # The localspy command has the following aliases (other than /mclocalspy) -localspy: +mclocalspy: - localspy - localchatspy - lspy # The mod chat colour command has the following aliases (other than /mcmcc) -mcc: +mcmcc: - mcc # The mod chat command has the following aliases (other than /mcmc) -mc: +mcmc: - mc # The private message command has the following aliases (other than /mcmsg) -msg: +mcmsg: - msg - m - message @@ -125,7 +125,7 @@ msg: - pm # The multichat bypass command has the following aliases (other than /mcbypass) -bypass: +mcbypass: - bypass - mcb - multichatbypass @@ -136,7 +136,7 @@ multichat: - mcversion # The multichat execute command has the following aliases (other than /mcexecute) -execute: +mcexecute: - execute - mce - multichatexecute @@ -144,30 +144,30 @@ execute: - gexecute # The mute command has the following aliases (other than /mcmute) -mute: +mcmute: - mute - silence - multichatmute # The reply command has the following aliases (other than /mcr) -r: +mcr: - r - reply - respond # The socialspy command has the following aliases (other than /mcsocialspy) -socialspy: +mcsocialspy: - socialspy - spy - sspy # The staff list command has the following aliases (other than /mcstaff) -staff: +mcstaff: - staff - stafflist - liststaff # The usecast command has the following aliases (other than /mcusecast) -usecast: +mcusecast: - usecast - ccast diff --git a/multichat/src/main/resources/aliases_fr.yml b/multichat/src/main/resources/aliases_fr.yml index ffd3bd0b..932d76c5 100644 --- a/multichat/src/main/resources/aliases_fr.yml +++ b/multichat/src/main/resources/aliases_fr.yml @@ -22,100 +22,100 @@ version: "1.10" # ############################################################ # La commande 'acc' possède les alias suivants (autres que /mcacc) -acc: +mcacc: - acc # La commande 'ac' possède les alias suivants (autres que /mcac) -ac: +mcac: - ac # La commande 'announcement' possède les alias suivants (autres que /mcannouncement) -announcement: +mcannouncement: - announcement - announce - announcements # La commande 'bulletin' possède les alias suivants (autres que /mcbulletin) -bulletin: +mcbulletin: - bulletin - bulletins # La commande 'cast' possède les alias suivants (autres que /mccast) -cast: +mccast: - cast # La commande 'channel' possède les alias suivants (autres que /mcchannel) -channel: +mcchannel: - channel - ch # La commande 'clearchat' possède les alias suivants (autres que /mcclearchat) -clearchat: +mcclearchat: - clearchat - chatclear - wipechat - killchat # La commande 'display' possède les alias suivants (autres que /mcdisplay) -display: +mcdisplay: - display # La commande 'freezechat' possède les alias suivants (autres que /mcfreezechat) -freezechat: +mcfreezechat: - freezechat - pausechat - lockchat - chatlock # La commande 'gc' possède les alias suivants (autres que /mcgc) -gc: +mcgc: - gc # La commande 'global' possède les alias suivants (autres que /mcglobal) -global: +mcglobal: - global - g # La commande 'group' possède les alias suivants (autres que /mcgroup) -group: +mcgroup: - group # La commande 'groups' possède les alias suivants (autres que /mcgroups) -groups: +mcgroups: - groups - grouplist # La commande 'helpme' possède les alias suivants (autres que /mchelpme) -helpme: +mchelpme: - helpme - helpop # La commande 'ignore' possède les alias suivants (autres que /mcignore) -ignore: +mcignore: - ignore - blockplayer # La commande 'local' possède les alias suivants (autres que /mclocal) -local: +mclocal: - local - l # La commande 'localspy' possède les alias suivants (autres que /mclocalspy) -localspy: +mclocalspy: - localspy - localchatspy - lspy # La commande 'mcc' possède les alias suivants (autres que /mcmcc) -mcc: +mcmcc: - mcc # La commande 'mc' possède les alias suivants (autres que /mcmc) -mc: +mcmc: - mc # La commande 'msg' possède les alias suivants (autres que /mcmsg) -msg: +mcmsg: - msg - m - message @@ -127,7 +127,7 @@ msg: - pm # La commande 'bypass' possède les alias suivants (autres que /mcbypass) -bypass: +mcbypass: - bypass - mcb - multichatbypass @@ -138,7 +138,7 @@ multichat: - mcversion # La commande 'execute' possède les alias suivants (autres que /mcexecute) -execute: +mcexecute: - execute - mce - multichatexecute @@ -146,30 +146,30 @@ execute: - gexecute # La commande 'mute' possède les alias suivants (autres que /mcmute) -mute: +mcmute: - mute - silence - multichatmute # La commande 'r' possède les alias suivants (autres que /mcr) -r: +mcr: - r - reply - respond # La commande 'socialspy' possède les alias suivants (autres que /mcsocialspy) -socialspy: +mcsocialspy: - socialspy - spy - sspy # La commande 'staff' possède les alias suivants (autres que /mcstaff) -staff: +mcstaff: - staff - stafflist - liststaff # La commande 'usecast' possède les alias suivants (autres que /mcusecast) -usecast: +mcusecast: - usecast - ccast diff --git a/multichat/src/test/java/xyz/olivermartin/multichat/junit/MultiChatUtilTest.java b/multichat/src/test/java/xyz/olivermartin/multichat/junit/MultiChatUtilTest.java index f051a5a2..28adeb76 100644 --- a/multichat/src/test/java/xyz/olivermartin/multichat/junit/MultiChatUtilTest.java +++ b/multichat/src/test/java/xyz/olivermartin/multichat/junit/MultiChatUtilTest.java @@ -29,67 +29,67 @@ public void shouldTranslateColorCodesCorrectly() { // ALL assertEquals("All codes should be translated appropriately", - "§r§aHello §kthere! §6§lthis §ois §ma §nmessage! §r§x§a§b§c§d§e§fRGB §r§x§a§b§c§d§e§ftoo§r§x§a§b§c§d§e§f!", + "§r§aHello §kthere! §6§lthis §ois §ma §nmessage! §r§x§a§b§c§d§e§fRGB §r§x§a§b§c§d§e§ftoo§r§x§a§b§c§d§e§f!", MultiChatUtil.translateColorCodes(rawMessage)); // ALL #2 assertEquals("All codes should be translated appropriately", - "§r§aHello §kthere! §6§lthis §ois §ma §nmessage! §r§x§a§b§c§d§e§fRGB §r§x§a§b§c§d§e§ftoo§r§x§a§b§c§d§e§f!", + "§r§aHello §kthere! §6§lthis §ois §ma §nmessage! §r§x§a§b§c§d§e§fRGB §r§x§a§b§c§d§e§ftoo§r§x§a§b§c§d§e§f!", MultiChatUtil.translateColorCodes(rawMessage, TranslateMode.ALL)); // SIMPLE assertEquals("Simple codes should be translated appropriately", - "§r§aHello §kthere! §6§lthis §ois §ma §nmessage! &#ABCDEFRGB &xAbCdEftoo&x§a§b§c§d§e§f!", + "§r§aHello §kthere! §6§lthis §ois §ma §nmessage! &#ABCDEFRGB &xAbCdEftoo&x§a§b§c§d§e§f!", MultiChatUtil.translateColorCodes(rawMessage, TranslateMode.SIMPLE)); // SIMPLE COLOR assertEquals("Simple color codes should be translated appropriately", - "&r§aHello &kthere! §6<his &ois &ma &nmessage! &#ABCDEFRGB &xAbCdEftoo&x§a§b§c§d§e§f!", + "&r§aHello &kthere! §6<his &ois &ma &nmessage! &#ABCDEFRGB &xAbCdEftoo&x§a§b§c§d§e§f!", MultiChatUtil.translateColorCodes(rawMessage, TranslateMode.COLOR_SIMPLE)); // ALL COLOR assertEquals("All color codes should be translated appropriately", - "§r§aHello &kthere! §6<his &ois &ma &nmessage! §r§x§a§b§c§d§e§fRGB §r§x§a§b§c§d§e§ftoo§r§x§a§b§c§d§e§f!", + "§r§aHello &kthere! §6<his &ois &ma &nmessage! §r§x§a§b§c§d§e§fRGB §r§x§a§b§c§d§e§ftoo§r§x§a§b§c§d§e§f!", MultiChatUtil.translateColorCodes(rawMessage, TranslateMode.COLOR_ALL)); // FORMAT UNDERLINE assertEquals("Underline codes should be translated appropriately", - "&r&aHello &kthere! &6<his &ois &ma §nmessage! &#ABCDEFRGB &xAbCdEftoo&x&a&b&c&d&e&f!", + "&r&aHello &kthere! &6<his &ois &ma §nmessage! &#ABCDEFRGB &xAbCdEftoo&x&a&b&c&d&e&f!", MultiChatUtil.translateColorCodes(rawMessage, TranslateMode.FORMAT_UNDERLINE)); // FORMAT ITALIC assertEquals("Italic codes should be translated appropriately", - "&r&aHello &kthere! &6<his §ois &ma &nmessage! &#ABCDEFRGB &xAbCdEftoo&x&a&b&c&d&e&f!", + "&r&aHello &kthere! &6<his §ois &ma &nmessage! &#ABCDEFRGB &xAbCdEftoo&x&a&b&c&d&e&f!", MultiChatUtil.translateColorCodes(rawMessage, TranslateMode.FORMAT_ITALIC)); // FORMAT BOLD assertEquals("Bold codes should be translated appropriately", - "&r&aHello &kthere! &6§lthis &ois &ma &nmessage! &#ABCDEFRGB &xAbCdEftoo&x&a&b&c&d&e&f!", + "&r&aHello &kthere! &6§lthis &ois &ma &nmessage! &#ABCDEFRGB &xAbCdEftoo&x&a&b&c&d&e&f!", MultiChatUtil.translateColorCodes(rawMessage, TranslateMode.FORMAT_BOLD)); // FORMAT STRIKE assertEquals("Strike codes should be translated appropriately", - "&r&aHello &kthere! &6<his &ois §ma &nmessage! &#ABCDEFRGB &xAbCdEftoo&x&a&b&c&d&e&f!", + "&r&aHello &kthere! &6<his &ois §ma &nmessage! &#ABCDEFRGB &xAbCdEftoo&x&a&b&c&d&e&f!", MultiChatUtil.translateColorCodes(rawMessage, TranslateMode.FORMAT_STRIKE)); // FORMAT OBFUSCATED assertEquals("Obfuscation codes should be translated appropriately", - "&r&aHello §kthere! &6<his &ois &ma &nmessage! &#ABCDEFRGB &xAbCdEftoo&x&a&b&c&d&e&f!", + "&r&aHello §kthere! &6<his &ois &ma &nmessage! &#ABCDEFRGB &xAbCdEftoo&x&a&b&c&d&e&f!", MultiChatUtil.translateColorCodes(rawMessage, TranslateMode.FORMAT_OBFUSCATED)); // FORMAT RESET assertEquals("Reset codes should be translated appropriately", - "§r&aHello &kthere! &6<his &ois &ma &nmessage! &#ABCDEFRGB &xAbCdEftoo&x&a&b&c&d&e&f!", + "§r&aHello &kthere! &6<his &ois &ma &nmessage! &#ABCDEFRGB &xAbCdEftoo&x&a&b&c&d&e&f!", MultiChatUtil.translateColorCodes(rawMessage, TranslateMode.FORMAT_RESET)); // FORMAT ALL assertEquals("All format codes should be translated appropriately", - "§r&aHello §kthere! &6§lthis §ois §ma §nmessage! &#ABCDEFRGB &xAbCdEftoo&x&a&b&c&d&e&f!", + "§r&aHello §kthere! &6§lthis §ois §ma §nmessage! &#ABCDEFRGB &xAbCdEftoo&x&a&b&c&d&e&f!", MultiChatUtil.translateColorCodes(rawMessage, TranslateMode.FORMAT_ALL)); // X assertEquals("All X codes should be translated appropriately", - "&r&aHello &kthere! &6<his &ois &ma &nmessage! &r§x&a&b&c&d&e&fRGB &r§x&a&b&c&d&e&ftoo&r§x&a&b&c&d&e&f!", + "&r&aHello &kthere! &6<his &ois &ma &nmessage! &r§x&a&b&c&d&e&fRGB &r§x&a&b&c&d&e&ftoo&r§x&a&b&c&d&e&f!", MultiChatUtil.translateColorCodes(rawMessage, TranslateMode.X)); } @@ -119,7 +119,7 @@ public void shouldApproximateRGBColorCodesCorrectly() { String approximated = MultiChatUtil.approximateRGBColorCodes(translated); assertEquals("Translated RGB color codes should be approximated to nearest minecraft equivalent", - "§r§aHello §kthere! §6§lthis §ois §ma §nmessage! §7RGB §7too§7!", + "§r§aHello §kthere! §6§lthis §ois §ma §nmessage! §7RGB §7too§7!", approximated); String simpleTranslated = MultiChatUtil.translateColorCodes(rawMessage, TranslateMode.SIMPLE); @@ -127,7 +127,7 @@ public void shouldApproximateRGBColorCodesCorrectly() { String simpleApproximated = MultiChatUtil.approximateRGBColorCodes(simpleTranslated); assertEquals("Non translated RGB color codes should NOT be approximated to nearest minecraft equivalent", - "§r§aHello §kthere! §6§lthis §ois §ma §nmessage! &#ABCDEFRGB &xAbCdEftoo&x§a§b§c§d§e§f!", + "§r§aHello §kthere! §6§lthis §ois §ma §nmessage! &#ABCDEFRGB &xAbCdEftoo&x§a§b§c§d§e§f!", simpleApproximated); String jsonMessage = "{\"text\":\"hello world\", \"color\":\"#ABCDEF\"}";