From c3ba6477c607e6e00943964affcf7ef7e936cda6 Mon Sep 17 00:00:00 2001 From: ev chang Date: Thu, 20 Jun 2024 16:51:18 +0700 Subject: [PATCH] add migration for Sk1er's AutoGG --- .../java/club/sk1er/mods/autogg/AutoGG.java | 29 ++++++++ .../mods/autogg/config/AutoGGConfig.java | 69 +++++++++++++++++++ .../org/polyfrost/hytils/HytilsReborn.java | 1 + .../polyfrost/hytils/config/HytilsConfig.java | 52 ++++++++++++-- .../chat/modules/triggers/AutoGG.java | 3 +- 5 files changed, 148 insertions(+), 6 deletions(-) create mode 100644 src/dummy/java/club/sk1er/mods/autogg/AutoGG.java create mode 100644 src/dummy/java/club/sk1er/mods/autogg/config/AutoGGConfig.java 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 387aec1..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 { @@ -133,7 +137,7 @@ public class HytilsConfig extends Config { description = "Send a \"gg\" message at the end of a game.", category = "Chat", subcategory = "Automatic" ) - public static boolean autoGG; + public static boolean autoGG = true; @Switch( name = "Auto GG Second Message", @@ -147,7 +151,7 @@ public class HytilsConfig extends Config { 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; + public static boolean casualAutoGG = true; @Switch( name = "Anti GG", @@ -1224,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"); @@ -1239,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(); } @@ -1258,6 +1290,16 @@ public HytilsConfig() { 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/modules/triggers/AutoGG.java b/src/main/java/org/polyfrost/hytils/handlers/chat/modules/triggers/AutoGG.java index b314858..30e8021 100644 --- 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 @@ -23,6 +23,7 @@ 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; @@ -65,7 +66,7 @@ private boolean hasGameEnded(String message) { @Override public boolean isEnabled() { - return HytilsConfig.autoGG; + 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