diff --git a/src/dummy/java/club/sk1er/mods/autogg/AutoGG.java b/src/dummy/java/club/sk1er/mods/autogg/AutoGG.java new file mode 100644 index 0000000..e21f9c7 --- /dev/null +++ b/src/dummy/java/club/sk1er/mods/autogg/AutoGG.java @@ -0,0 +1,29 @@ +/* + * Hytils Reborn - Hypixel focused Quality of Life mod. + * Copyright (C) 2020, 2021, 2022, 2023 Polyfrost, Sk1er LLC and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package club.sk1er.mods.autogg; + +import club.sk1er.mods.autogg.config.AutoGGConfig; + +public class AutoGG { + public static AutoGG INSTANCE = new AutoGG(); + + public AutoGGConfig getAutoGGConfig() { + return new AutoGGConfig(); + } +} diff --git a/src/dummy/java/club/sk1er/mods/autogg/config/AutoGGConfig.java b/src/dummy/java/club/sk1er/mods/autogg/config/AutoGGConfig.java new file mode 100644 index 0000000..3507d12 --- /dev/null +++ b/src/dummy/java/club/sk1er/mods/autogg/config/AutoGGConfig.java @@ -0,0 +1,69 @@ +/* + * Hytils Reborn - Hypixel focused Quality of Life mod. + * Copyright (C) 2020, 2021, 2022, 2023 Polyfrost, Sk1er LLC and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package club.sk1er.mods.autogg.config; + +public class AutoGGConfig { + + // these arent the actual default values + private boolean autoGGEnabled = true; + private boolean casualAutoGGEnabled = true; + private boolean antiGGEnabled = true; + private boolean antiKarmaEnabled = true; + private int autoGGDelay = 5; + private int autoGGPhrase = 0; + private boolean secondaryEnabled = true; + private int autoGGPhrase2 = 0; + private int secondaryDelay = 5; + + public boolean isModEnabled() { + return autoGGEnabled; + } + + public boolean isCasualAutoGGEnabled() { + return casualAutoGGEnabled; + } + + public boolean isAntiGGEnabled() { + return antiGGEnabled; + } + + public boolean isAntiKarmaEnabled() { + return antiKarmaEnabled; + } + + public int getAutoGGDelay() { + return autoGGDelay; + } + + public int getAutoGGPhrase() { + return autoGGPhrase; + } + + public boolean isSecondaryEnabled() { + return secondaryEnabled; + } + + public int getAutoGGPhrase2() { + return autoGGPhrase2; + } + + public int getSecondaryDelay() { + return secondaryDelay; + } +} diff --git a/src/main/java/org/polyfrost/hytils/HytilsReborn.java b/src/main/java/org/polyfrost/hytils/HytilsReborn.java index 9f87b89..a0f98f1 100644 --- a/src/main/java/org/polyfrost/hytils/HytilsReborn.java +++ b/src/main/java/org/polyfrost/hytils/HytilsReborn.java @@ -97,6 +97,7 @@ public class HytilsReborn { public boolean isPatcher; public boolean isChatting; + public boolean isSk1erAutoGG; private boolean loadedCall; private RankType rank; diff --git a/src/main/java/org/polyfrost/hytils/config/HytilsConfig.java b/src/main/java/org/polyfrost/hytils/config/HytilsConfig.java index 1f39ac9..5ff47e6 100644 --- a/src/main/java/org/polyfrost/hytils/config/HytilsConfig.java +++ b/src/main/java/org/polyfrost/hytils/config/HytilsConfig.java @@ -26,6 +26,8 @@ import cc.polyfrost.oneconfig.config.data.ModType; import cc.polyfrost.oneconfig.config.data.PageLocation; import cc.polyfrost.oneconfig.config.migration.VigilanceMigrator; +import cc.polyfrost.oneconfig.utils.Notifications; +import club.sk1er.mods.autogg.AutoGG; import org.polyfrost.hytils.HytilsReborn; import org.polyfrost.hytils.handlers.chat.modules.modifiers.GameStartCompactor; import org.polyfrost.hytils.util.DarkColorUtils; @@ -35,11 +37,13 @@ import java.awt.Color; import java.io.File; +import java.lang.reflect.Field; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.Arrays; +import java.util.function.Supplier; @SuppressWarnings("unused") public class HytilsConfig extends Config { @@ -128,6 +132,66 @@ public class HytilsConfig extends Config { // Chat + @Switch( + name = "Auto GG", + description = "Send a \"gg\" message at the end of a game.", + category = "Chat", subcategory = "Automatic" + ) + public static boolean autoGG = true; + + @Switch( + name = "Auto GG Second Message", + description = "Enable a secondary message to send after your first GG.", + category = "Chat", subcategory = "Automatic" + ) + public static boolean autoGGSecondMessage; + + @Switch( + name = "Casual Auto GG", + description = "Send a \"gg\" message at the end of minigames/events that don't give out Karma, such as SkyBlock and The Pit events.", + category = "Chat", subcategory = "Automatic" + ) + public static boolean casualAutoGG = true; + + @Switch( + name = "Anti GG", + description = "Remove GG messages from chat.", + category = "Chat", subcategory = "Automatic" + ) + public static boolean antiGG; + + @Dropdown( + name = "Auto GG First Message", + description = "Choose what message is said on game completion.", + category = "Chat", subcategory = "Automatic", + options = {"gg", "GG", "gf", "Good Game", "Good Fight", "Good Round! :D"} + ) + public static int autoGGMessage = 0; + + @Slider( + name = "Auto GG First Phrase Delay", + description = "Delay after the game ends to say the first message in seconds.", + category = "Chat", subcategory = "Automatic", + min = 0, max = 5 + ) + public static int autoGGFirstPhraseDelay = 1; + + @Dropdown( + name = "Auto GG Second Message", + description = "Send a secondary message sent after the first GG message.", + category = "Chat", subcategory = "Automatic", + options = {"Have a good day!", "<3", "AutoGG By Hytils Reborn!", "gf", "Good Fight", "Good Round", ":D", "Well played!", "wp"} + ) + public static int autoGGMessage2 = 0; + + @Slider( + name = "Auto GG Second Phrase Delay", + description = "Delay after the game ends to say the second message in seconds.", + category = "Chat", subcategory = "Automatic", + min = 0, max = 5 + ) + public static int autoGGSecondPhraseDelay = 1; + @Switch( name = "Auto GL", description = "Send a message 5 seconds before a Hypixel game starts.", @@ -339,6 +403,13 @@ public class HytilsConfig extends Config { ) public static boolean preventShoutingOnCooldown = true; + @Switch( + name = "Remove Karma Messages", + description = "Remove Karma messages from the chat.", + category = "Chat", subcategory = "Toggles" + ) + public static boolean hideKarmaMessages; + @Switch( name = "Hide Locraw Messages", description = "Hide locraw messages in chat (e.g {\"server\": \"something\"}).", @@ -1157,7 +1228,6 @@ public class HytilsConfig extends Config { public HytilsConfig() { super(new Mod("Hytils Reborn", ModType.HYPIXEL, "/assets/hytils/hypixel.png", new VigilanceMigrator(new File(HytilsReborn.INSTANCE.oldModDir, "hytilsreborn.toml").getAbsolutePath())), "hytilsreborn.json"); - initialize(); try { File modDir = HytilsReborn.INSTANCE.oldModDir; File oldModDir = new File(modDir.getParentFile(), "Hytilities Reborn"); @@ -1172,11 +1242,40 @@ public HytilsConfig() { e.printStackTrace(); } - if (configNumber != 2) { // Config version has not been set or is outdated + initialize(); + + if (configNumber != 3) { // Config version has not been set or is outdated if (configNumber == 1) { overlayAmount = 300; } - configNumber = 2; // set this to the current config version + if (configNumber <= 2) { + try { + Class clazz = Class.forName("club.sk1er.mods.autogg.config.AutoGGConfig"); + + HytilsReborn.INSTANCE.isSk1erAutoGG = true; + + autoGG = AutoGG.INSTANCE.getAutoGGConfig().isModEnabled(); + autoGGSecondMessage = AutoGG.INSTANCE.getAutoGGConfig().isSecondaryEnabled(); + casualAutoGG = AutoGG.INSTANCE.getAutoGGConfig().isCasualAutoGGEnabled(); + autoGGMessage = AutoGG.INSTANCE.getAutoGGConfig().getAutoGGPhrase(); + autoGGFirstPhraseDelay = AutoGG.INSTANCE.getAutoGGConfig().getAutoGGDelay(); + autoGGMessage2 = AutoGG.INSTANCE.getAutoGGConfig().getAutoGGPhrase2(); + autoGGSecondPhraseDelay = AutoGG.INSTANCE.getAutoGGConfig().getSecondaryDelay(); + + try { + Field sk1erEnabled = clazz.getDeclaredField("autoGGEnabled"); + sk1erEnabled.setAccessible(true); + sk1erEnabled.set(AutoGG.INSTANCE.getAutoGGConfig(), false); + } catch (NoSuchFieldException | IllegalAccessException e) { + e.printStackTrace(); + } + + Notifications.INSTANCE.send("Hytils Reborn", "AutoGG settings have been migrated to Hytils Reborn. You can now configure them in the Hytils Reborn settings.", 5); + } catch (ClassNotFoundException ignored) { + + } + } + configNumber = 3; // set this to the current config version save(); } @@ -1184,6 +1283,23 @@ public HytilsConfig() { addDependency("gexpMode", "autoGetGEXP"); + addDependency("autoGGSecondMessage", "autoGG"); + addDependency("casualAutoGG", "autoGG"); + addDependency("autoGGMessage", "autoGG"); + addDependency("autoGGFirstPhraseDelay", "autoGG"); + addDependency("autoGGMessage2", "autoGG"); + addDependency("autoGGSecondPhraseDelay", "autoGG"); + + Supplier autoGGEnabled = () -> HytilsReborn.INSTANCE.isSk1erAutoGG && AutoGG.INSTANCE.getAutoGGConfig().isModEnabled(); + + addDependency("autoGG", "Sk1er's AutoGG Enabled", autoGGEnabled); + addDependency("autoGGSecondMessage", "Sk1er's AutoGG Enabled", autoGGEnabled); + addDependency("casualAutoGG", "Sk1er's AutoGG Enabled", autoGGEnabled); + addDependency("autoGGMessage", "Sk1er's AutoGG Enabled", autoGGEnabled); + addDependency("autoGGFirstPhraseDelay", "Sk1er's AutoGG Enabled", autoGGEnabled); + addDependency("autoGGMessage2", "Sk1er's AutoGG Enabled", autoGGEnabled); + addDependency("autoGGSecondPhraseDelay", "Sk1er's AutoGG Enabled", autoGGEnabled); + addDependency("glPhrase", "autoGL"); addDependency("guildAutoWB", "autoWB"); diff --git a/src/main/java/org/polyfrost/hytils/handlers/chat/ChatHandler.java b/src/main/java/org/polyfrost/hytils/handlers/chat/ChatHandler.java index 3b6b270..065212b 100644 --- a/src/main/java/org/polyfrost/hytils/handlers/chat/ChatHandler.java +++ b/src/main/java/org/polyfrost/hytils/handlers/chat/ChatHandler.java @@ -49,6 +49,7 @@ public ChatHandler() { // Blockers this.registerModule(new AdBlocker()); + this.registerModule(new AntiGG()); this.registerModule(new AntiGL()); this.registerModule(new AutoWB()); this.registerModule(new BedwarsAdvertisementsRemover()); @@ -66,6 +67,7 @@ public ChatHandler() { this.registerModule(new GuildMOTD()); this.registerModule(new HotPotatoRemover()); this.registerModule(new HypeLimitReminderRemover()); + this.registerModule(new KarmaRemover()); this.registerModule(new LobbyFishingAnnouncementRemover()); this.registerModule(new LobbyStatusRemover()); this.registerModule(new MvpEmotesRemover()); @@ -98,6 +100,7 @@ public ChatHandler() { this.registerModule(new AutoChatReportConfirm()); this.registerModule(new AutoChatSwapper()); this.registerModule(new AutoFriend()); + this.registerModule(new AutoGG()); this.registerModule(new AutoGL()); this.registerModule(new AutoPartyWarpConfirm()); this.registerModule(new AutoVictory()); diff --git a/src/main/java/org/polyfrost/hytils/handlers/chat/modules/blockers/AntiGG.java b/src/main/java/org/polyfrost/hytils/handlers/chat/modules/blockers/AntiGG.java new file mode 100644 index 0000000..80af2b7 --- /dev/null +++ b/src/main/java/org/polyfrost/hytils/handlers/chat/modules/blockers/AntiGG.java @@ -0,0 +1,45 @@ +/* + * Hytils Reborn - Hypixel focused Quality of Life mod. + * Copyright (C) 2020, 2021, 2022, 2023 Polyfrost, Sk1er LLC and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package org.polyfrost.hytils.handlers.chat.modules.blockers; + +import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.client.event.ClientChatReceivedEvent; +import org.jetbrains.annotations.NotNull; +import org.polyfrost.hytils.config.HytilsConfig; +import org.polyfrost.hytils.handlers.chat.ChatReceiveModule; + +public class AntiGG implements ChatReceiveModule { + @Override + public void onMessageReceived(@NotNull ClientChatReceivedEvent event) { + String message = EnumChatFormatting.getTextWithoutFormattingCodes(event.message.getUnformattedText()); + if (getLanguage().cancelGgMessagesRegex.matcher(message).matches()) { + event.setCanceled(true); + } + } + + @Override + public boolean isEnabled() { + return HytilsConfig.antiGG; + } + + @Override + public int getPriority() { + return -3; + } +} diff --git a/src/main/java/org/polyfrost/hytils/handlers/chat/modules/blockers/KarmaRemover.java b/src/main/java/org/polyfrost/hytils/handlers/chat/modules/blockers/KarmaRemover.java new file mode 100644 index 0000000..2119447 --- /dev/null +++ b/src/main/java/org/polyfrost/hytils/handlers/chat/modules/blockers/KarmaRemover.java @@ -0,0 +1,45 @@ +/* + * Hytils Reborn - Hypixel focused Quality of Life mod. + * Copyright (C) 2020, 2021, 2022, 2023 Polyfrost, Sk1er LLC and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package org.polyfrost.hytils.handlers.chat.modules.blockers; + +import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.client.event.ClientChatReceivedEvent; +import org.jetbrains.annotations.NotNull; +import org.polyfrost.hytils.config.HytilsConfig; +import org.polyfrost.hytils.handlers.chat.ChatReceiveModule; + +public class KarmaRemover implements ChatReceiveModule { + @Override + public void onMessageReceived(@NotNull ClientChatReceivedEvent event) { + String message = EnumChatFormatting.getTextWithoutFormattingCodes(event.message.getUnformattedText()); + if (getLanguage().chatCleanerKarmaMessagesRegex.matcher(message).matches()) { + event.setCanceled(true); + } + } + + @Override + public boolean isEnabled() { + return HytilsConfig.hideKarmaMessages; + } + + @Override + public int getPriority() { + return -1; + } +} diff --git a/src/main/java/org/polyfrost/hytils/handlers/chat/modules/triggers/AutoGG.java b/src/main/java/org/polyfrost/hytils/handlers/chat/modules/triggers/AutoGG.java new file mode 100644 index 0000000..30e8021 --- /dev/null +++ b/src/main/java/org/polyfrost/hytils/handlers/chat/modules/triggers/AutoGG.java @@ -0,0 +1,76 @@ +/* + * Hytils Reborn - Hypixel focused Quality of Life mod. + * Copyright (C) 2020, 2021, 2022, 2023 Polyfrost, Sk1er LLC and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package org.polyfrost.hytils.handlers.chat.modules.triggers; + +import cc.polyfrost.oneconfig.libs.universal.UChat; +import cc.polyfrost.oneconfig.utils.Multithreading; +import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.client.event.ClientChatReceivedEvent; +import org.jetbrains.annotations.NotNull; +import org.polyfrost.hytils.HytilsReborn; +import org.polyfrost.hytils.config.HytilsConfig; +import org.polyfrost.hytils.handlers.cache.PatternHandler; +import org.polyfrost.hytils.handlers.chat.ChatReceiveModule; + +import java.util.concurrent.TimeUnit; +import java.util.regex.Pattern; + +public class AutoGG implements ChatReceiveModule { + private static final String[] ggMessagesOne = {"gg", "GG", "gf", "Good Game", "Good Fight", "Good Round! :D"}; + private static final String[] ggMessagesTwo = {"Have a good day!", "<3", "AutoGG By Hytils Reborn!", "gf", "Good Fight", "Good Round", ":D", "Well played!", "wp"}; + + private static String getGGMessageOne() { + return ggMessagesOne[HytilsConfig.autoGGMessage]; + } + private static String getGGMessageTwo() { + return ggMessagesTwo[HytilsConfig.autoGGMessage2]; + } + + @Override + public void onMessageReceived(@NotNull ClientChatReceivedEvent event) { + String message = EnumChatFormatting.getTextWithoutFormattingCodes(event.message.getUnformattedText()); + if (!hasGameEnded(message)) return; + Multithreading.schedule(() -> UChat.say("/ac " + getGGMessageOne()), HytilsConfig.autoGGFirstPhraseDelay, TimeUnit.SECONDS); + if (HytilsConfig.autoGGSecondMessage) + Multithreading.schedule(() -> UChat.say("/ac " + getGGMessageTwo()), HytilsConfig.autoGGSecondPhraseDelay, TimeUnit.SECONDS); + } + + private boolean hasGameEnded(String message) { + if (!PatternHandler.INSTANCE.gameEnd.isEmpty()) { + for (Pattern triggers : PatternHandler.INSTANCE.gameEnd) { + if (triggers.matcher(message).matches()) { + return true; + } + } + } + + // TODO: UNTESTED! + return getLanguage().casualGameEndRegex.matcher(message).matches(); + } + + @Override + public boolean isEnabled() { + return HytilsConfig.autoGG && (!HytilsReborn.INSTANCE.isSk1erAutoGG || club.sk1er.mods.autogg.AutoGG.INSTANCE.getAutoGGConfig().isModEnabled()); // If Sk1er's AutoGG is enabled, we don't want to interfere with it. + } + + @Override + public int getPriority() { + return 3; + } +} diff --git a/src/main/java/org/polyfrost/hytils/handlers/chat/modules/triggers/AutoVictory.java b/src/main/java/org/polyfrost/hytils/handlers/chat/modules/triggers/AutoVictory.java index 0d07a1f..3fba4b2 100644 --- a/src/main/java/org/polyfrost/hytils/handlers/chat/modules/triggers/AutoVictory.java +++ b/src/main/java/org/polyfrost/hytils/handlers/chat/modules/triggers/AutoVictory.java @@ -49,7 +49,7 @@ public AutoVictory() { @Override public void onMessageReceived(@NotNull ClientChatReceivedEvent event) { String unformattedText = UTextComponent.Companion.stripFormatting(event.message.getUnformattedText()); - if (PatternHandler.INSTANCE.gameEnd.size() != 0) { + if (!PatternHandler.INSTANCE.gameEnd.isEmpty()) { if (!victoryDetected) { // prevent victories being detected twice Multithreading.runAsync(() -> { //run this async as getting from the API normally would freeze minecraft for (Pattern triggers : PatternHandler.INSTANCE.gameEnd) { diff --git a/src/main/java/org/polyfrost/hytils/handlers/language/LanguageData.java b/src/main/java/org/polyfrost/hytils/handlers/language/LanguageData.java index 1ef7d1c..c15501b 100644 --- a/src/main/java/org/polyfrost/hytils/handlers/language/LanguageData.java +++ b/src/main/java/org/polyfrost/hytils/handlers/language/LanguageData.java @@ -37,6 +37,7 @@ public class LanguageData { private String autoFriendPattern = "Friend request from (?.+)\\[ACCEPT] - \\[DENY] - \\[IGNORE].*"; private String autoAfkReplyPattern = "^From (\\[.+?] )?(.+?): .+$"; + private String chatCleanerKarmaMessages = "^\\+(?\\d)+ Karma!$"; private String chatCleanerJoin = "(?:sled into|slid into|joined|spooked into) the lobby"; private String chatCleanerTicketAnnouncer = "^(?(?!You )\\w{1,16} )has found an? .+$"; private String chatCleanerSoulWellFind = "^.+ has found .+ in the Soul Well!$"; @@ -98,6 +99,8 @@ public class LanguageData { private String hypixelLevelUp = "You are now Hypixel Level (?\\d+)!"; + private String casualGameEnd = "^(?:MINOR EVENT! .+ in .+ ended|DRAGON EGG OVER! Earned [\\d,]+XP [\\d,]g clicking the egg \\d+ times|GIANT CAKE! Event ended! Cake's gone!|PIT EVENT ENDED: .+ \\[INFO\\])$"; + private String cancelGgMessages = "^(?:.* )?(?:\\[.+] )?\\w{1,16}(?: .+)?: (?:❤|gg|GG|gf|Good Game|Good Fight|Good Round! :D|Have a good day!|<3|AutoGG By Sk1er!|AutoGG By Hytils Reborn!|gf|Good Fight|Good Round|:D|Well Played!|wp)$"; private String cancelGlMessages = "(?!.+: )(gl|glhf|good luck|have a good game|autogl by sk1er)"; public String autoChatReportConfirm = "Please type /report confirm to log your report for staff review."; @@ -117,6 +120,7 @@ public class LanguageData { public Pattern autoFriendPatternRegex; public Pattern autoAfkReplyPatternRegex; + public Pattern chatCleanerKarmaMessagesRegex; public Pattern chatCleanerJoinRegex; public Pattern chatCleanerTicketAnnouncerRegex; public Pattern chatCleanerSoulWellFindRegex; @@ -164,6 +168,8 @@ public class LanguageData { public Pattern hypixelLevelUpRegex; + public Pattern casualGameEndRegex; + public Pattern cancelGgMessagesRegex; public Pattern cancelGlMessagesRegex; public Pattern gameBossbarAdvertisementRegex; @@ -180,6 +186,7 @@ public void initialize() { autoFriendPatternRegex = Pattern.compile(autoFriendPattern); autoAfkReplyPatternRegex = Pattern.compile(autoAfkReplyPattern); + chatCleanerKarmaMessagesRegex = Pattern.compile(chatCleanerKarmaMessages); chatCleanerJoinRegex = Pattern.compile(chatCleanerJoin); chatCleanerTicketAnnouncerRegex = Pattern.compile(chatCleanerTicketAnnouncer); chatCleanerSoulWellFindRegex = Pattern.compile(chatCleanerSoulWellFind); @@ -227,6 +234,8 @@ public void initialize() { hypixelLevelUpRegex = Pattern.compile(hypixelLevelUp); + casualGameEndRegex = Pattern.compile(casualGameEnd); + cancelGgMessagesRegex = Pattern.compile(cancelGgMessages); cancelGlMessagesRegex = Pattern.compile(cancelGlMessages, Pattern.CASE_INSENSITIVE); gameBossbarAdvertisementRegex = Pattern.compile(gameBossbarAdvertisement);