diff --git a/velocity/src/main/java/com/alttd/chat/config/Config.java b/api/src/main/java/com/alttd/chat/config/Config.java similarity index 100% rename from velocity/src/main/java/com/alttd/chat/config/Config.java rename to api/src/main/java/com/alttd/chat/config/Config.java diff --git a/velocity/src/main/java/com/alttd/chat/config/RegexConfig.java b/api/src/main/java/com/alttd/chat/config/RegexConfig.java similarity index 81% rename from velocity/src/main/java/com/alttd/chat/config/RegexConfig.java rename to api/src/main/java/com/alttd/chat/config/RegexConfig.java index cadf506..04b0602 100644 --- a/velocity/src/main/java/com/alttd/chat/config/RegexConfig.java +++ b/api/src/main/java/com/alttd/chat/config/RegexConfig.java @@ -154,18 +154,31 @@ public final class RegexConfig { // REPLACEMENT = getString("replacement", REPLACEMENT); // } +// Options: +// Filter: the regexstring +// replacements: +// exclusions: ["list", "of", "words"] private void loadChatFilters() { - Map chProps = new HashMap<>(); - config.getChildrenMap().forEach((key, value) -> { - if (value.hasMapChildren()) { - for (Map.Entry vl : value.getChildrenMap().entrySet()) { - chProps.put( vl.getKey().toString(), vl.getValue().getValue()); - } - } else { - chProps.put(key.toString(), value.getValue()); + for (Map.Entry entry : config.getChildrenMap().entrySet()) { + String name = entry.getKey().toString(); // the name in the config this filter has + String type = entry.getValue().getNode("type").getString(); // the type of filter, block or replace + String regex = ""; + List replacements = new ArrayList<>(); + List exclusions = new ArrayList<>(); + Map options = entry.getValue().getNode("options").getChildrenMap(); + if (options.containsKey("filter")) { + regex = options.get("filter").getString(); } - }); - //UCChannel ch = new UCChannel(chProps); - //addChannel(ch); + if (options.containsKey("replacements")) { + options.get("replacements").getChildrenList().forEach(key -> { + replacements.add(key.getString()); + }); + } + if (options.containsKey("exclusions")) { + options.get("exclusions").getChildrenList().forEach(key -> { + exclusions.add(key.getString()); + }); + } + } } } diff --git a/velocity/src/main/java/com/alttd/chat/database/DatabaseConnection.java b/api/src/main/java/com/alttd/chat/database/DatabaseConnection.java similarity index 100% rename from velocity/src/main/java/com/alttd/chat/database/DatabaseConnection.java rename to api/src/main/java/com/alttd/chat/database/DatabaseConnection.java diff --git a/velocity/src/main/java/com/alttd/chat/database/Queries.java b/api/src/main/java/com/alttd/chat/database/Queries.java similarity index 98% rename from velocity/src/main/java/com/alttd/chat/database/Queries.java rename to api/src/main/java/com/alttd/chat/database/Queries.java index e2f2c8d..7fb790b 100644 --- a/velocity/src/main/java/com/alttd/chat/database/Queries.java +++ b/api/src/main/java/com/alttd/chat/database/Queries.java @@ -1,9 +1,8 @@ package com.alttd.chat.database; -import com.alttd.chat.data.ChatUser; -import com.alttd.chat.data.Party; -import com.alttd.chat.data.ServerWrapper; -import com.alttd.chat.handlers.ChatUserManager; +import com.alttd.chat.managers.ChatUserManager; +import com.alttd.chat.objects.ChatUser; +import com.alttd.chat.objects.Party; import com.alttd.chat.util.ALogger; import java.sql.Connection; diff --git a/velocity/src/main/java/com/alttd/chat/handlers/ChatUserManager.java b/api/src/main/java/com/alttd/chat/managers/ChatUserManager.java similarity index 87% rename from velocity/src/main/java/com/alttd/chat/handlers/ChatUserManager.java rename to api/src/main/java/com/alttd/chat/managers/ChatUserManager.java index 13f7b8e..3c685b3 100644 --- a/velocity/src/main/java/com/alttd/chat/handlers/ChatUserManager.java +++ b/api/src/main/java/com/alttd/chat/managers/ChatUserManager.java @@ -1,9 +1,8 @@ -package com.alttd.chat.handlers; +package com.alttd.chat.managers; -import com.alttd.chat.data.ChatUser; -import com.alttd.chat.data.Mail; -import com.alttd.chat.data.ServerWrapper; import com.alttd.chat.database.Queries; +import com.alttd.chat.objects.ChatUser; +import com.alttd.chat.objects.Mail; import java.util.List; import java.util.UUID; diff --git a/velocity/src/main/java/com/alttd/chat/handlers/RegexManager.java b/api/src/main/java/com/alttd/chat/managers/RegexManager.java similarity index 87% rename from velocity/src/main/java/com/alttd/chat/handlers/RegexManager.java rename to api/src/main/java/com/alttd/chat/managers/RegexManager.java index 96f086f..9f1d600 100644 --- a/velocity/src/main/java/com/alttd/chat/handlers/RegexManager.java +++ b/api/src/main/java/com/alttd/chat/managers/RegexManager.java @@ -1,10 +1,4 @@ -package com.alttd.chat.handlers; - -import com.alttd.chat.config.Config; -import com.alttd.chat.config.RegexConfig; -import com.alttd.chat.data.FilterType; -import com.google.common.collect.Lists; -import ninja.leaping.configurate.ConfigurationNode; +package com.alttd.chat.managers; import java.util.ArrayList; import java.util.HashMap; @@ -20,16 +14,17 @@ public class RegexManager { // IDEA: Regex object -> RegexPattern, shatteredPattern, replacement, replacements public static void initRegex() { + //RegexConfig.init(VelocityChat.getPlugin().getDataDirectory()); // TODO setup the dir // LOAD REGEXES, sad way of doing it:( // maiby a REGEXobject and a list would be better here? - for(ConfigurationNode node : Config.REGEXNODE.getChildrenMap().values()) { + /*for(ConfigurationNode node : Config.REGEXNODE.getChildrenMap().values()) { RegexConfig regexConfig = new RegexConfig(node.getString()); if (FilterType.getType(regexConfig.TYPE) == FilterType.BLOCK) { cancelRegex.put(Pattern.compile(regexConfig.REGEX), Lists.newArrayList(regexConfig.REPLACEMENT)); } else if (FilterType.getType(regexConfig.TYPE) == FilterType.REPLACE) { replaceRegex.put(regexConfig.REGEX, regexConfig.REPLACEMENT); } - } + }*/ //TODO load data from config (a regex string, and it's exceptions if there are any) cancelRegex.put(Pattern.compile("\\b([R]+[^\\w]?[4A]+[^\\w]?[P]+(([^\\w]?[E3]+[^\\w]?[DT]*)|([^\\w]?[I!1]+[^\\w]?[S5]+[^\\w]?[T7]+)|([^\\w]?[I!1]+[^\\w]?[N]+[^\\w]?[G69]+)))\\b"), new ArrayList<>()); diff --git a/velocity/src/main/java/com/alttd/chat/data/ChatFilter.java b/api/src/main/java/com/alttd/chat/objects/ChatFilter.java similarity index 95% rename from velocity/src/main/java/com/alttd/chat/data/ChatFilter.java rename to api/src/main/java/com/alttd/chat/objects/ChatFilter.java index 76bc755..b598bbb 100644 --- a/velocity/src/main/java/com/alttd/chat/data/ChatFilter.java +++ b/api/src/main/java/com/alttd/chat/objects/ChatFilter.java @@ -1,4 +1,4 @@ -package com.alttd.chat.data; +package com.alttd.chat.objects; public class ChatFilter { diff --git a/velocity/src/main/java/com/alttd/chat/data/ChatUser.java b/api/src/main/java/com/alttd/chat/objects/ChatUser.java similarity index 98% rename from velocity/src/main/java/com/alttd/chat/data/ChatUser.java rename to api/src/main/java/com/alttd/chat/objects/ChatUser.java index 100c37d..4cdc456 100644 --- a/velocity/src/main/java/com/alttd/chat/data/ChatUser.java +++ b/api/src/main/java/com/alttd/chat/objects/ChatUser.java @@ -1,4 +1,4 @@ -package com.alttd.chat.data; +package com.alttd.chat.objects; import com.alttd.chat.database.Queries; import com.alttd.chat.util.Utility; diff --git a/velocity/src/main/java/com/alttd/chat/data/FilterType.java b/api/src/main/java/com/alttd/chat/objects/FilterType.java similarity index 92% rename from velocity/src/main/java/com/alttd/chat/data/FilterType.java rename to api/src/main/java/com/alttd/chat/objects/FilterType.java index ca7a2bf..1740d39 100644 --- a/velocity/src/main/java/com/alttd/chat/data/FilterType.java +++ b/api/src/main/java/com/alttd/chat/objects/FilterType.java @@ -1,4 +1,4 @@ -package com.alttd.chat.data; +package com.alttd.chat.objects; public enum FilterType { REPLACE("replace"), diff --git a/velocity/src/main/java/com/alttd/chat/data/Mail.java b/api/src/main/java/com/alttd/chat/objects/Mail.java similarity index 97% rename from velocity/src/main/java/com/alttd/chat/data/Mail.java rename to api/src/main/java/com/alttd/chat/objects/Mail.java index 6744933..e6c93f3 100644 --- a/velocity/src/main/java/com/alttd/chat/data/Mail.java +++ b/api/src/main/java/com/alttd/chat/objects/Mail.java @@ -1,4 +1,4 @@ -package com.alttd.chat.data; +package com.alttd.chat.objects; import java.util.UUID; diff --git a/velocity/src/main/java/com/alttd/chat/data/Party.java b/api/src/main/java/com/alttd/chat/objects/Party.java similarity index 98% rename from velocity/src/main/java/com/alttd/chat/data/Party.java rename to api/src/main/java/com/alttd/chat/objects/Party.java index ece967e..1a1bf11 100644 --- a/velocity/src/main/java/com/alttd/chat/data/Party.java +++ b/api/src/main/java/com/alttd/chat/objects/Party.java @@ -1,4 +1,4 @@ -package com.alttd.chat.data; +package com.alttd.chat.objects; import com.alttd.chat.database.Queries; diff --git a/velocity/src/main/java/com/alttd/chat/util/ALogger.java b/api/src/main/java/com/alttd/chat/util/ALogger.java similarity index 96% rename from velocity/src/main/java/com/alttd/chat/util/ALogger.java rename to api/src/main/java/com/alttd/chat/util/ALogger.java index 37c2316..8a59255 100644 --- a/velocity/src/main/java/com/alttd/chat/util/ALogger.java +++ b/api/src/main/java/com/alttd/chat/util/ALogger.java @@ -1,7 +1,7 @@ package com.alttd.chat.util; public class ALogger { - // static abuse + private static org.slf4j.Logger logger; public ALogger(org.slf4j.Logger log) { diff --git a/velocity/src/main/java/com/alttd/chat/util/Utility.java b/api/src/main/java/com/alttd/chat/util/Utility.java similarity index 93% rename from velocity/src/main/java/com/alttd/chat/util/Utility.java rename to api/src/main/java/com/alttd/chat/util/Utility.java index cc4568d..0696f7c 100644 --- a/velocity/src/main/java/com/alttd/chat/util/Utility.java +++ b/api/src/main/java/com/alttd/chat/util/Utility.java @@ -1,6 +1,6 @@ package com.alttd.chat.util; -import com.alttd.chat.VelocityChat; +import com.alttd.chat.ChatAPI; import com.alttd.chat.config.Config; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import net.luckperms.api.LuckPerms; @@ -49,7 +49,7 @@ public class Utility { public static String getPrefix(UUID uuid, boolean highest) { StringBuilder prefix = new StringBuilder(); - LuckPerms luckPerms = VelocityChat.getPlugin().getLuckPerms(); + LuckPerms luckPerms = ChatAPI.get().getLuckPerms(); User user = luckPerms.getUserManager().getUser(uuid); if(user == null) return ""; if(!highest) { @@ -71,7 +71,7 @@ public class Utility { // @teri you don't reference the plugin instance from the API instance, this creates a circular reference and breaks on compile and will never run public static String getStaffPrefix(UUID uuid) { StringBuilder prefix = new StringBuilder(); - LuckPerms luckPerms = VelocityChat.getPlugin().getLuckPerms(); + LuckPerms luckPerms = ChatAPI.get().getLuckPerms(); User user = luckPerms.getUserManager().getUser(uuid); if(user == null) return prefix.toString(); if(user.getCachedData().getPermissionData().checkPermission("group." + Config.MINIMIUMSTAFFRANK).asBoolean()) { @@ -82,7 +82,7 @@ public class Utility { public static String getDisplayName(UUID uuid) { StringBuilder prefix = new StringBuilder(); - LuckPerms luckPerms = VelocityChat.getPlugin().getLuckPerms(); + LuckPerms luckPerms = ChatAPI.get().getLuckPerms(); User user = luckPerms.getUserManager().getUser(uuid); if(user == null) return ""; return user.getUsername(); diff --git a/galaxy/dependency-reduced-pom.xml b/galaxy/dependency-reduced-pom.xml index e8d6a64..492c569 100644 --- a/galaxy/dependency-reduced-pom.xml +++ b/galaxy/dependency-reduced-pom.xml @@ -63,7 +63,7 @@ - 11 - 11 + 16 + 16 diff --git a/galaxy/pom.xml b/galaxy/pom.xml index 915e129..e25bc1d 100644 --- a/galaxy/pom.xml +++ b/galaxy/pom.xml @@ -5,8 +5,8 @@ 4.0.0 - 11 - 11 + 16 + 16 diff --git a/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java b/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java index 09a15cc..a9992f9 100644 --- a/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java +++ b/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java @@ -10,7 +10,6 @@ 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/handler/ChatHandler.java b/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java index 8ce9b77..1a76578 100644 --- a/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java +++ b/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java @@ -27,7 +27,43 @@ 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