From 4b79d6909f3e1d2ee5aac6bbcde9fa81ec21db06 Mon Sep 17 00:00:00 2001 From: len <40720638+destro174@users.noreply.github.com> Date: Sat, 22 May 2021 20:34:32 +0200 Subject: [PATCH] Refactor --- .../java/com/alttd/chat/config/Config.java | 5 ++ .../com/alttd/chat/managers/RegexManager.java | 7 +- .../com/alttd/chat/objects/ChatFilter.java | 8 +- .../java/com/alttd/chat/objects/ChatUser.java | 17 ++-- .../{ChatFilterType.java => FilterType.java} | 8 +- .../main/java/com/alttd/chat/ChatPlugin.java | 1 + .../com/alttd/chat/commands/GlobalChat.java | 37 -------- .../com/alttd/chat/handler/ChatHandler.java | 73 ---------------- .../alttd/chat/listeners/PluginMessage.java | 43 +++++++++- .../java/com/alttd/chat/VelocityChat.java | 2 + .../alttd/chat/commands/GlobalAdminChat.java | 2 +- .../com/alttd/chat/commands/GlobalChat.java | 43 ++++++++++ .../alttd/chat/commands/GlobalChatToggle.java | 52 ++++++++++++ .../java/com/alttd/chat/commands/Message.java | 6 +- .../com/alttd/chat/commands/SendMail.java | 49 +++++++++-- .../com/alttd/chat/config/ServerConfig.java | 4 +- .../{api => events}/GlobalAdminChatEvent.java | 2 +- .../{api => events}/PrivateMessageEvent.java | 2 +- .../com/alttd/chat/handlers/ChatHandler.java | 85 +++++++++++++++++-- .../alttd/chat/handlers/ServerHandler.java | 5 +- .../alttd/chat/listeners/ChatListener.java | 4 +- .../chat/listeners/PluginMessageListener.java | 3 +- 22 files changed, 300 insertions(+), 158 deletions(-) rename api/src/main/java/com/alttd/chat/objects/{ChatFilterType.java => FilterType.java} (60%) delete mode 100644 galaxy/src/main/java/com/alttd/chat/commands/GlobalChat.java create mode 100644 velocity/src/main/java/com/alttd/chat/commands/GlobalChat.java create mode 100644 velocity/src/main/java/com/alttd/chat/commands/GlobalChatToggle.java rename velocity/src/main/java/com/alttd/chat/{api => events}/GlobalAdminChatEvent.java (93%) rename velocity/src/main/java/com/alttd/chat/{api => events}/PrivateMessageEvent.java (97%) diff --git a/api/src/main/java/com/alttd/chat/config/Config.java b/api/src/main/java/com/alttd/chat/config/Config.java index 0067411..873253d 100644 --- a/api/src/main/java/com/alttd/chat/config/Config.java +++ b/api/src/main/java/com/alttd/chat/config/Config.java @@ -184,9 +184,14 @@ public final class Config { public static String GCFORMAT = " >to Global: "; public static String GCPERMISSION = "proxy.globalchat"; + public static List GCALIAS = new ArrayList<>(); + public static String GCNOTENABLED = "You don't have global chat enabled."; private static void globalChat() { MESSAGERECIEVER = getString("commands.globalchat.format", MESSAGERECIEVER); GCPERMISSION = getString("commands.globalchat.view-chat-permission", GCPERMISSION); + GCALIAS.clear(); + GCALIAS = getList("commands.globalchat.alias", Lists.newArrayList("gc", "global")); + GCNOTENABLED = getString("commands.globalchat.not-enabled", GCNOTENABLED); } public static List GACECOMMANDALIASES = new ArrayList<>(); diff --git a/api/src/main/java/com/alttd/chat/managers/RegexManager.java b/api/src/main/java/com/alttd/chat/managers/RegexManager.java index a750ab5..781642b 100644 --- a/api/src/main/java/com/alttd/chat/managers/RegexManager.java +++ b/api/src/main/java/com/alttd/chat/managers/RegexManager.java @@ -2,7 +2,7 @@ package com.alttd.chat.managers; import com.alttd.chat.config.Config; import com.alttd.chat.config.RegexConfig; -import com.alttd.chat.objects.ChatFilterType; +import com.alttd.chat.objects.FilterType; import com.google.common.collect.Lists; import ninja.leaping.configurate.ConfigurationNode; @@ -12,6 +12,7 @@ import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; +// TODO rebuild this class, All regexes go in a single list where we use the ChatFilter object and a matcher public class RegexManager { private static final HashMap> cancelRegex = new HashMap<>(); @@ -23,9 +24,9 @@ public class RegexManager { // maiby a REGEXobject and a list would be better here? for(ConfigurationNode node : Config.REGEXNODE.getChildrenMap().values()) { RegexConfig regexConfig = new RegexConfig(node.getString()); - if (ChatFilterType.getType(regexConfig.TYPE) == ChatFilterType.BLOCK) { + if (FilterType.getType(regexConfig.TYPE) == FilterType.BLOCK) { cancelRegex.put(Pattern.compile(regexConfig.REGEX), Lists.newArrayList(regexConfig.REPLACEMENT)); - } else if (ChatFilterType.getType(regexConfig.TYPE) == ChatFilterType.REPLACE) { + } else if (FilterType.getType(regexConfig.TYPE) == FilterType.REPLACE) { replaceRegex.put(regexConfig.REGEX, regexConfig.REPLACEMENT); } } diff --git a/api/src/main/java/com/alttd/chat/objects/ChatFilter.java b/api/src/main/java/com/alttd/chat/objects/ChatFilter.java index c1a9117..b598bbb 100644 --- a/api/src/main/java/com/alttd/chat/objects/ChatFilter.java +++ b/api/src/main/java/com/alttd/chat/objects/ChatFilter.java @@ -3,15 +3,15 @@ package com.alttd.chat.objects; public class ChatFilter { private final String regex; - private final ChatFilterType type; + private final FilterType type; private String replacement = ""; - public ChatFilter(String regex, ChatFilterType type) { + public ChatFilter(String regex, FilterType type) { this.regex = regex; this.type = type; } - public ChatFilter(String regex, ChatFilterType type, String replacement) { + public ChatFilter(String regex, FilterType type, String replacement) { this.regex = regex; this.type = type; this.replacement = replacement; @@ -21,7 +21,7 @@ public class ChatFilter { return regex; } - public ChatFilterType getType() { + public FilterType getType() { return type; } diff --git a/api/src/main/java/com/alttd/chat/objects/ChatUser.java b/api/src/main/java/com/alttd/chat/objects/ChatUser.java index 51fdfb1..4cdc456 100644 --- a/api/src/main/java/com/alttd/chat/objects/ChatUser.java +++ b/api/src/main/java/com/alttd/chat/objects/ChatUser.java @@ -20,9 +20,6 @@ public class ChatUser { private LinkedList mails; - /** - * Not all of the objects are relevant to proxy or server, so the saving should only update if the value has been changed? - */ public ChatUser(UUID uuid, int partyId, boolean toggled_chat, boolean force_tp, boolean toggle_Gc) { this.uuid = uuid; this.partyId = partyId; @@ -37,9 +34,9 @@ public class ChatUser { prefix = Utility.getPrefix(uuid, true); staffPrefix = Utility.getStaffPrefix(uuid); - prefixAll = prefix + staffPrefix; //TODO test what this does cus I barely understand lp api - // a boolean is lighter then a permission check, it's what I'd suggest doing here - toggleGc = toggle_Gc;//Utility.checkPermission(uuid, "chat.gc"); //TODO put the actual permission here, I don't know what it is... + prefixAll = Utility.getPrefix(uuid, false); + + toggleGc = toggle_Gc; replyTarget = null; mails = new LinkedList<>(); // todo load mails } @@ -58,7 +55,7 @@ public class ChatUser { public void togglePartyChat() { toggledPartyChat = !toggledPartyChat; - Queries.setPartyChatState(toggledPartyChat, uuid); //TODO: Async pls + Queries.setPartyChatState(toggledPartyChat, uuid); //TODO: Async pls - no CompleteableFuture<>! } public boolean ForceTp() { @@ -67,7 +64,7 @@ public class ChatUser { public void toggleForceTp() { forceTp = !forceTp; - Queries.setForceTpState(forceTp, uuid); //TODO: Async pls + Queries.setForceTpState(forceTp, uuid); //TODO: Async pls - no CompleteableFuture<>! } public String getDisplayName() { @@ -121,4 +118,8 @@ public class ChatUser { public LinkedList getMails() { return mails; } + + public void addMail(Mail mail) { + mails.add(mail); + } } diff --git a/api/src/main/java/com/alttd/chat/objects/ChatFilterType.java b/api/src/main/java/com/alttd/chat/objects/FilterType.java similarity index 60% rename from api/src/main/java/com/alttd/chat/objects/ChatFilterType.java rename to api/src/main/java/com/alttd/chat/objects/FilterType.java index f262bc8..1740d39 100644 --- a/api/src/main/java/com/alttd/chat/objects/ChatFilterType.java +++ b/api/src/main/java/com/alttd/chat/objects/FilterType.java @@ -1,17 +1,17 @@ package com.alttd.chat.objects; -public enum ChatFilterType { +public enum FilterType { REPLACE("replace"), BLOCK("block"); private final String name; - ChatFilterType(String name) { + FilterType(String name) { this.name = name; } - public static ChatFilterType getType(String name) { - for (ChatFilterType type : ChatFilterType.values()) { + public static FilterType getType(String name) { + for (FilterType type : FilterType.values()) { if (type.name.equalsIgnoreCase(name)) { return type; } diff --git a/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java b/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java index a9992f9..09a15cc 100644 --- a/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java +++ b/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java @@ -10,6 +10,7 @@ import org.bukkit.command.CommandExecutor; import org.bukkit.event.Listener; import org.bukkit.plugin.java.JavaPlugin; +// Todo this is only needed to get some special usecases eg [i] -> get and return the item the player is holding over a SYNCRONIZED connection:/ public class ChatPlugin extends JavaPlugin { private static ChatPlugin instance; diff --git a/galaxy/src/main/java/com/alttd/chat/commands/GlobalChat.java b/galaxy/src/main/java/com/alttd/chat/commands/GlobalChat.java deleted file mode 100644 index 209fc72..0000000 --- a/galaxy/src/main/java/com/alttd/chat/commands/GlobalChat.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.alttd.chat.commands; - -import com.alttd.chat.ChatPlugin; -import com.alttd.chat.managers.ChatUserManager; -import org.apache.commons.lang.StringUtils; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitRunnable; - -import java.util.Objects; - -public class GlobalChat implements CommandExecutor { - - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if(!(sender instanceof Player)) { // must be a player - return true; - } - Player player = (Player) sender; - if(args.length == 0) return false; - if(args[0].equalsIgnoreCase("togglegc")) { - new BukkitRunnable() { - @Override - public void run() { - Objects.requireNonNull(ChatUserManager.getChatUser(((Player) sender).getUniqueId())).toggleGc(); - } - }.runTask(ChatPlugin.getInstance()); - } - - String message = StringUtils.join(args, " ", 0, args.length); - ChatPlugin.getInstance().getChatHandler().globalChat(player, message); - return false; - } - -} diff --git a/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java b/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java index 231a665..8ce9b77 100644 --- a/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java +++ b/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java @@ -27,80 +27,7 @@ public class ChatHandler { plugin = ChatPlugin.getInstance(); } - public void globalChat(Player player, String message) { - ChatUser user = ChatUserManager.getChatUser(player.getUniqueId()); - if(user == null) return; - if(!user.isGcOn()) { - player.sendMessage();// GC IS OFF INFORM THEM ABOUT THIS and cancel - return; - } - // Check if the player has global chat enabled, if not warn them - String senderName, prefix = ""; - senderName = player.getDisplayName(); // TODO this can be a component - // can also be cached in the chatuser object? - prefix = plugin.getChatAPI().getPrefix(player.getUniqueId()); - MiniMessage miniMessage = MiniMessage.get(); - message = Utility.parseColors(message); - if(!player.hasPermission("chat.format")) - message = miniMessage.stripTokens(message); - if(message.contains("[i]")) - message = message.replace("[i]", "<[i]>"); - List