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);