From 95308349aab8d06243f2326d5bb50b2bca89d457 Mon Sep 17 00:00:00 2001 From: 4drian3d Date: Fri, 1 Jul 2022 16:19:28 +0000 Subject: [PATCH] perf: Improved default regex patterns performance --- .../dreamerzero/chatregulator/ChatRegulator.java | 2 +- .../chatregulator/config/Blacklist.java | 16 ++++++++-------- .../chatregulator/config/ConfigManager.java | 8 +++++--- .../config/CustomPatternSerializer.java | 2 +- .../chatregulator/config/MainConfig.java | 2 +- .../chatregulator/config/Messages.java | 14 +++++++------- .../listener/chat/ChatListener.java | 2 +- .../{utils => placeholders}/Placeholders.java | 2 +- .../modules/checks/UnicodeTest.java | 8 ++++++-- .../chatregulator/utils/PlaceholderTest.java | 2 +- .../chatregulator/utils/TestsUtils.java | 1 + 11 files changed, 33 insertions(+), 26 deletions(-) rename src/main/java/me/dreamerzero/chatregulator/{utils => placeholders}/Placeholders.java (98%) diff --git a/src/main/java/me/dreamerzero/chatregulator/ChatRegulator.java b/src/main/java/me/dreamerzero/chatregulator/ChatRegulator.java index dbf95513..4a21d9df 100644 --- a/src/main/java/me/dreamerzero/chatregulator/ChatRegulator.java +++ b/src/main/java/me/dreamerzero/chatregulator/ChatRegulator.java @@ -30,9 +30,9 @@ import me.dreamerzero.chatregulator.listener.plugin.ReloadListener; import me.dreamerzero.chatregulator.modules.Statistics; import me.dreamerzero.chatregulator.utils.Constants; -import me.dreamerzero.chatregulator.utils.Placeholders; import net.byteflux.libby.Library; import net.byteflux.libby.VelocityLibraryManager; +import me.dreamerzero.chatregulator.placeholders.Placeholders; import me.dreamerzero.chatregulator.placeholders.RegulatorExpansion; import me.dreamerzero.chatregulator.placeholders.formatter.IFormatter; import me.dreamerzero.chatregulator.placeholders.formatter.MiniPlaceholderFormatter; diff --git a/src/main/java/me/dreamerzero/chatregulator/config/Blacklist.java b/src/main/java/me/dreamerzero/chatregulator/config/Blacklist.java index 6d0239ec..274d1168 100644 --- a/src/main/java/me/dreamerzero/chatregulator/config/Blacklist.java +++ b/src/main/java/me/dreamerzero/chatregulator/config/Blacklist.java @@ -21,15 +21,15 @@ public static class Config{ Infractions module in commands and general chat""") @Setting(value = "blocked-words") private Pattern[] blockedPatterns = { - Pattern.compile("f(u|v|4)ck", Pattern.CASE_INSENSITIVE), - Pattern.compile("sh(i|@|l|j|1|y)t", Pattern.CASE_INSENSITIVE), - Pattern.compile("d(i|@|l|j|1|y)c(k)?", Pattern.CASE_INSENSITIVE), - Pattern.compile("b(i|@|l|j|1|y)tch", Pattern.CASE_INSENSITIVE), - Pattern.compile("(a|@|4|x)w(3|@|e|x)b(o|@|0|x|8)n(a|@|4|x)d(o|@|0|x|8)", Pattern.CASE_INSENSITIVE), - Pattern.compile("p(u|@|v)ssy", Pattern.CASE_INSENSITIVE), + Pattern.compile("f[uv4@]ck", Pattern.CASE_INSENSITIVE), + Pattern.compile("sh[i@lj1y]t", Pattern.CASE_INSENSITIVE), + Pattern.compile("d[i@lj1y]c(k)?", Pattern.CASE_INSENSITIVE), + Pattern.compile("b[i@lj1y]tch", Pattern.CASE_INSENSITIVE), + Pattern.compile("[a@4x]w[3@ex]b[o@0x8]n[a@4x]d[o@0x8]", Pattern.CASE_INSENSITIVE), + Pattern.compile("p[u@v]ssy", Pattern.CASE_INSENSITIVE), Pattern.compile("(?:(?:https?|ftp|file):\\/\\/|www\\.|ftp\\.)(?:\\([-A-Z0-9+&@#\\/%=~_|$?!:,.]*\\)|[-A-Z0-9+&@#\\/%=~_|$?!:,.])*(?:\\([-A-Z0-9+&@#\\/%=~_|$?!:,.]*\\)|[A-Z0-9+&@#\\/%=~_|$])", Pattern.CASE_INSENSITIVE), - Pattern.compile("(i|@|l|j|1|y)mb(3|@|e|x)c(i|@|l|j|1|y)l", Pattern.CASE_INSENSITIVE), - Pattern.compile("m(o|@|0|x|8)th(3|@|e|x)rf(u|@|v)ck(3|@|e|x)r", Pattern.CASE_INSENSITIVE), + Pattern.compile("[i@lj1y]mb[3@ex]c[i@lj1y]l", Pattern.CASE_INSENSITIVE), + Pattern.compile("m[o@0x8]th[3@ex]rf[u@v]ck[3@ex]r", Pattern.CASE_INSENSITIVE), Pattern.compile("\\$\\{(jndi|log4j|sys|env|main|marker|java|base64|lower|upper|web|docker|kubernetes|spring|jvmrunargs|date|ctx)\\:.*\\}", Pattern.CASE_INSENSITIVE) }; diff --git a/src/main/java/me/dreamerzero/chatregulator/config/ConfigManager.java b/src/main/java/me/dreamerzero/chatregulator/config/ConfigManager.java index a438aeb0..296362e1 100644 --- a/src/main/java/me/dreamerzero/chatregulator/config/ConfigManager.java +++ b/src/main/java/me/dreamerzero/chatregulator/config/ConfigManager.java @@ -30,7 +30,8 @@ public static void sendWarningMessage(InfractionPlayer infractor, Result result, final TagResolver placeholder = TagResolver.resolver( Placeholder.unparsed("infraction", result.getInfractionString()), plugin.placeholders().getPlaceholders(infractor)); - switch(((MainConfig.Warning)type.getConfig()).getWarningType()){ + MainConfig.Warning config = (MainConfig.Warning)type.getConfig(); + switch(config.getWarningType()){ case TITLE: sendTitle(message, infractor, placeholder); break; case MESSAGE: infractor.sendMessage(plugin.getFormatter().parse(message, infractor.getPlayer(), placeholder)); break; case ACTIONBAR: infractor.sendActionBar(plugin.getFormatter().parse(message, infractor.getPlayer(), placeholder)); break; @@ -38,11 +39,12 @@ public static void sendWarningMessage(InfractionPlayer infractor, Result result, } private static void sendTitle(String message, Audience player, TagResolver placeholder){ - if (message.indexOf(';') != -1) { + int index = message.indexOf(';'); + if (index != -1) { sendSingleTitle(player, message, placeholder); } else { final String[] titleParts = message.split(";"); - if(titleParts.length == 1){ + if (titleParts.length == 1) { sendSingleTitle(player, titleParts[0], placeholder); return; } diff --git a/src/main/java/me/dreamerzero/chatregulator/config/CustomPatternSerializer.java b/src/main/java/me/dreamerzero/chatregulator/config/CustomPatternSerializer.java index ed0d7b3d..92197b67 100644 --- a/src/main/java/me/dreamerzero/chatregulator/config/CustomPatternSerializer.java +++ b/src/main/java/me/dreamerzero/chatregulator/config/CustomPatternSerializer.java @@ -8,7 +8,7 @@ import org.spongepowered.configurate.serialize.ScalarSerializer; import org.spongepowered.configurate.serialize.SerializationException; -public final class CustomPatternSerializer extends ScalarSerializer { +final class CustomPatternSerializer extends ScalarSerializer { CustomPatternSerializer() { super(Pattern.class); } diff --git a/src/main/java/me/dreamerzero/chatregulator/config/MainConfig.java b/src/main/java/me/dreamerzero/chatregulator/config/MainConfig.java index 199408c0..676d4f39 100644 --- a/src/main/java/me/dreamerzero/chatregulator/config/MainConfig.java +++ b/src/main/java/me/dreamerzero/chatregulator/config/MainConfig.java @@ -236,7 +236,7 @@ public static class Commands extends CommandsConfig{} public static class Flood implements Toggleable, Warning, Controllable, Executable { @Comment(""" Enable flood check in the chat - (e.g.: \"aaaaaaaa\")""") + (e.g.: "aaaaaaaa")""") private boolean enabled = true; @Comment(""" diff --git a/src/main/java/me/dreamerzero/chatregulator/config/Messages.java b/src/main/java/me/dreamerzero/chatregulator/config/Messages.java index 36a46f4d..d263d576 100644 --- a/src/main/java/me/dreamerzero/chatregulator/config/Messages.java +++ b/src/main/java/me/dreamerzero/chatregulator/config/Messages.java @@ -432,10 +432,10 @@ public String getMessage(){ public static class General{ @Comment(""" Violation statistics message - This message will appear when using the \"/chatregulator stats\" command + This message will appear when using the "/chatregulator stats" command Available Placeholders: , , , , , . """) private List stats = List.of( - "<#3B4371>|-- ChatRegulator -------|", + "<#3B4371>|-- ChatRegulator -------| ", "<#3B4371>| General Stats", "<#3B4371>| Regular Infractions: ", "<#3B4371>| Flood Infractions: ", @@ -449,10 +449,10 @@ public static class General{ @Comment(""" Player statistics message - This message will appear when using the command \"/chatregulator player \" + This message will appear when using the command "/chatregulator player " Available Placeholders: , , , , , , """) private List player = List.of( - "<#3B4371>|-- ChatRegulator -------|", + "<#3B4371>|-- ChatRegulator -------| ", "<#3B4371>| Stats", "<#3B4371>| Regular Infractions: ", "<#3B4371>| Flood Infractions: ", @@ -580,13 +580,13 @@ public static class Help{ @Comment("Plugin main help message") @Setting(value = "main-help") private List main = List.of( - "<#3B4371>|-- ChatRegulator -------|", + "<#3B4371>|--- ChatRegulator -------|", "<#3B4371>| + Click on a section to view its commands'>Command Help", "<#3B4371>| This command shows you the global statistics of infractions'> stats", "<#3B4371>| Obtain the infractions of a specific player [Click here for more]'> player", "<#3B4371>| Resets a player infractions [Click here for more]'> reset", "<#3B4371>| Cleans the chat of a player, server or network [Click here for more]'> clear", - "<#3B4371>|----------------------|" + "<#3B4371>|----------------------| " ); @Comment("Help message for \"/chatregulator player \" command") @@ -594,7 +594,7 @@ public static class Help{ "<#3B4371>|-- ChatRegulator -------|", "<#3B4371>| + Player Help", "<#3B4371>| '>This command shows you a player infractions'> player ", - "<#3B4371>|----------------------|" + "<#3B4371>|----------------------| " ); @Comment("Help message for \"/chatregulator reset\" subcommands") diff --git a/src/main/java/me/dreamerzero/chatregulator/listener/chat/ChatListener.java b/src/main/java/me/dreamerzero/chatregulator/listener/chat/ChatListener.java index 81fe726f..b8580605 100644 --- a/src/main/java/me/dreamerzero/chatregulator/listener/chat/ChatListener.java +++ b/src/main/java/me/dreamerzero/chatregulator/listener/chat/ChatListener.java @@ -41,7 +41,7 @@ public void onChat(final PlayerChatEvent event, final Continuation continuation) return; } final Player player = event.getPlayer(); - final AtomicReference message = new AtomicReference(event.getMessage()); + final AtomicReference message = new AtomicReference<>(event.getMessage()); final InfractionPlayer infractor = InfractionPlayer.get(player); final EventWrapper wrapper = new ChatWrapper(event, continuation); diff --git a/src/main/java/me/dreamerzero/chatregulator/utils/Placeholders.java b/src/main/java/me/dreamerzero/chatregulator/placeholders/Placeholders.java similarity index 98% rename from src/main/java/me/dreamerzero/chatregulator/utils/Placeholders.java rename to src/main/java/me/dreamerzero/chatregulator/placeholders/Placeholders.java index 0fe102a9..b1defdec 100644 --- a/src/main/java/me/dreamerzero/chatregulator/utils/Placeholders.java +++ b/src/main/java/me/dreamerzero/chatregulator/placeholders/Placeholders.java @@ -1,4 +1,4 @@ -package me.dreamerzero.chatregulator.utils; +package me.dreamerzero.chatregulator.placeholders; import java.util.Objects; diff --git a/src/test/java/me/dreamerzero/chatregulator/modules/checks/UnicodeTest.java b/src/test/java/me/dreamerzero/chatregulator/modules/checks/UnicodeTest.java index 3fdc0eb8..af2e1b3e 100644 --- a/src/test/java/me/dreamerzero/chatregulator/modules/checks/UnicodeTest.java +++ b/src/test/java/me/dreamerzero/chatregulator/modules/checks/UnicodeTest.java @@ -40,7 +40,9 @@ void illegalTest(){ String illegal = "ƕƘaea"; String expected = " aea"; - UnicodeCheck check = UnicodeCheck.builder().controlType(ControlType.REPLACE).build(); + UnicodeCheck check = UnicodeCheck.builder() + .controlType(ControlType.REPLACE) + .build(); Result result = check.check(illegal).join(); assertTrue(result.isInfraction()); @@ -80,7 +82,9 @@ void realTest(){ assertTrue(GeneralUtils.allowedPlayer(player, InfractionType.UNICODE)); - UnicodeCheck check = UnicodeCheck.builder().controlType(ControlType.REPLACE).build(); + UnicodeCheck check = UnicodeCheck.builder() + .controlType(ControlType.REPLACE) + .build(); Result result = check.check(randomMSG).join(); assertTrue(GeneralUtils.callViolationEvent(new EventBundle(InfractionPlayer.get(player), randomMSG, InfractionType.UNICODE, result, SourceType.CHAT), TestsUtils.createRegulator())); diff --git a/src/test/java/me/dreamerzero/chatregulator/utils/PlaceholderTest.java b/src/test/java/me/dreamerzero/chatregulator/utils/PlaceholderTest.java index 6f7a20ee..01260213 100644 --- a/src/test/java/me/dreamerzero/chatregulator/utils/PlaceholderTest.java +++ b/src/test/java/me/dreamerzero/chatregulator/utils/PlaceholderTest.java @@ -16,7 +16,7 @@ import net.kyori.adventure.text.minimessage.tag.standard.StandardTags; import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; -public final class PlaceholderTest { +final class PlaceholderTest { private static final PlainTextComponentSerializer PLAIN_SERIALIZER = PlainTextComponentSerializer.plainText(); @Test diff --git a/src/test/java/me/dreamerzero/chatregulator/utils/TestsUtils.java b/src/test/java/me/dreamerzero/chatregulator/utils/TestsUtils.java index 3db47a97..2195924f 100644 --- a/src/test/java/me/dreamerzero/chatregulator/utils/TestsUtils.java +++ b/src/test/java/me/dreamerzero/chatregulator/utils/TestsUtils.java @@ -16,6 +16,7 @@ import me.dreamerzero.chatregulator.objects.TestPlayer; import me.dreamerzero.chatregulator.objects.TestPluginManager; import me.dreamerzero.chatregulator.objects.TestProxy; +import me.dreamerzero.chatregulator.placeholders.Placeholders; import me.dreamerzero.chatregulator.placeholders.formatter.IFormatter; import me.dreamerzero.chatregulator.placeholders.formatter.NormalFormatter;