From 776dadb050b4e7d76de9fa16161d2cda4dd66e5b Mon Sep 17 00:00:00 2001 From: Aaron <51387595+AzureAaron@users.noreply.github.com> Date: Sun, 3 Sep 2023 16:36:08 -0400 Subject: YACL Config --- .../compatibility/modmenu/ModMenuEntry.java | 3 +- .../me/xmrvizzy/skyblocker/config/ConfigModel.java | 805 +++++++++++++++++++++ .../skyblocker/config/ConfigSerializer.java | 24 + .../me/xmrvizzy/skyblocker/config/ConfigUtils.java | 15 + .../skyblocker/config/SkyblockerConfig.java | 788 ++------------------ .../config/categories/DiscordRPCCategory.java | 50 ++ .../config/categories/DungeonsCategory.java | 316 ++++++++ .../config/categories/DwarvenMinesCategory.java | 95 +++ .../config/categories/GeneralCategory.java | 478 ++++++++++++ .../config/categories/LocationsCategory.java | 80 ++ .../config/categories/MessageFilterCategory.java | 99 +++ .../config/categories/QuickNavigationCategory.java | 596 +++++++++++++++ .../config/categories/SlayersCategory.java | 116 +++ .../xmrvizzy/skyblocker/skyblock/FairySouls.java | 3 +- .../skyblocker/skyblock/HotbarSlotLock.java | 2 +- .../skyblock/dungeon/DungeonChestProfit.java | 3 +- .../skyblock/dungeon/DungeonMapConfigScreen.java | 17 +- .../skyblock/dungeon/secrets/SecretWaypoint.java | 6 +- .../skyblock/dwarven/DwarvenHudConfigScreen.java | 17 +- .../skyblock/experiment/ChronomatronSolver.java | 4 +- .../skyblock/experiment/ExperimentSolver.java | 3 +- .../skyblock/experiment/SuperpairsSolver.java | 3 +- .../skyblock/experiment/UltrasequencerSolver.java | 3 +- .../skyblocker/skyblock/item/CustomArmorTrims.java | 4 +- .../skyblocker/skyblock/item/PriceInfoTooltip.java | 16 +- .../skyblocker/skyblock/quicknav/QuickNav.java | 8 +- .../skyblock/shortcut/ShortcutsConfigScreen.java | 16 +- .../skyblocker/skyblock/spidersden/Relics.java | 3 +- .../skyblock/tabhud/widget/PlayerListWidget.java | 3 +- .../utils/discord/DiscordRPCManager.java | 3 +- .../utils/render/title/TitleContainer.java | 25 +- .../render/title/TitleContainerConfigScreen.java | 35 +- 32 files changed, 2858 insertions(+), 781 deletions(-) create mode 100644 src/main/java/me/xmrvizzy/skyblocker/config/ConfigModel.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/config/ConfigSerializer.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/config/categories/DiscordRPCCategory.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/config/categories/DwarvenMinesCategory.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/config/categories/GeneralCategory.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/config/categories/LocationsCategory.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/config/categories/MessageFilterCategory.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/config/categories/QuickNavigationCategory.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/config/categories/SlayersCategory.java (limited to 'src/main/java/me/xmrvizzy') diff --git a/src/main/java/me/xmrvizzy/skyblocker/compatibility/modmenu/ModMenuEntry.java b/src/main/java/me/xmrvizzy/skyblocker/compatibility/modmenu/ModMenuEntry.java index 0cba3d5e..7fd188bf 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/compatibility/modmenu/ModMenuEntry.java +++ b/src/main/java/me/xmrvizzy/skyblocker/compatibility/modmenu/ModMenuEntry.java @@ -1,6 +1,5 @@ package me.xmrvizzy.skyblocker.compatibility.modmenu; -import me.shedaniel.autoconfig.AutoConfig; import com.terraformersmc.modmenu.api.ConfigScreenFactory; import com.terraformersmc.modmenu.api.ModMenuApi; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; @@ -11,6 +10,6 @@ import net.fabricmc.api.Environment; public class ModMenuEntry implements ModMenuApi { @Override public ConfigScreenFactory getModConfigScreenFactory() { - return screen -> AutoConfig.getConfigScreen(SkyblockerConfig.class, screen).get(); + return parent -> SkyblockerConfig.createGUI(parent); } } \ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/ConfigModel.java b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigModel.java new file mode 100644 index 00000000..748b731c --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigModel.java @@ -0,0 +1,805 @@ +package me.xmrvizzy.skyblocker.config; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; + +import dev.isxander.yacl3.config.ConfigEntry; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.skyblock.item.CustomArmorTrims; +import net.minecraft.client.resource.language.I18n; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +public class ConfigModel { + @ConfigEntry + public General general = new General(); + + @ConfigEntry + public Locations locations = new Locations(); + + @ConfigEntry + public Slayer slayer = new Slayer(); + + @ConfigEntry + public QuickNav quickNav = new QuickNav(); + + @ConfigEntry + public Messages messages = new Messages(); + + @ConfigEntry + public RichPresence richPresence = new RichPresence(); + + public static class QuickNav { + @ConfigEntry + public boolean enableQuickNav = true; + + @ConfigEntry + public QuickNavItem button1 = new QuickNavItem(true, new ItemData("diamond_sword"), "Your Skills", "/skills"); + + @ConfigEntry + public QuickNavItem button2 = new QuickNavItem(true, new ItemData("painting"), "Collections", "/collection"); + + /* REGEX Explanation + * "Pets" : simple match on letters + * "(?: \\(\\d+\\/\\d+\\))?" : optional match on the non-capturing group for the page in the format " ($number/$number)" + */ + @ConfigEntry + public QuickNavItem button3 = new QuickNavItem(true, new ItemData("bone"), "Pets(:? \\(\\d+\\/\\d+\\))?", "/pets"); + + /* REGEX Explanation + * "Wardrobe" : simple match on letters + * " \\([12]\\/2\\)" : match on the page either " (1/2)" or " (2/2)" + */ + @ConfigEntry + public QuickNavItem button4 = new QuickNavItem(true, + new ItemData("leather_chestplate", 1, "tag:{display:{color:8991416}}"), "Wardrobe \\([12]/2\\)", + "/wardrobe"); + + @ConfigEntry + public QuickNavItem button5 = new QuickNavItem(true, new ItemData("player_head", 1, + "tag:{SkullOwner:{Id:[I;-2081424676,-57521078,-2073572414,158072763],Properties:{textures:[{Value:\"ewogICJ0aW1lc3RhbXAiIDogMTU5MTMxMDU4NTYwOSwKICAicHJvZmlsZUlkIiA6ICI0MWQzYWJjMmQ3NDk0MDBjOTA5MGQ1NDM0ZDAzODMxYiIsCiAgInByb2ZpbGVOYW1lIiA6ICJNZWdha2xvb24iLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODBhMDc3ZTI0OGQxNDI3NzJlYTgwMDg2NGY4YzU3OGI5ZDM2ODg1YjI5ZGFmODM2YjY0YTcwNjg4MmI2ZWMxMCIKICAgIH0KICB9Cn0=\"}]}}}"), + "Sack of Sacks", "/sacks"); + + /* REGEX Explanation + * "(?:Rift )?" : optional match on the non-capturing group "Rift " + * "Storage" : simple match on letters + * "(?: \\([12]\\/2\\))?" : optional match on the non-capturing group " (1/2)" or " (2/2)" + */ + @ConfigEntry + public QuickNavItem button6 = new QuickNavItem(true, new ItemData("ender_chest"), + "(?:Rift )?Storage(?: \\(1/2\\))?", "/storage"); + + @ConfigEntry + public QuickNavItem button7 = new QuickNavItem(true, new ItemData("player_head", 1, + "tag:{SkullOwner:{Id:[I;-300151517,-631415889,-1193921967,-1821784279],Properties:{textures:[{Value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDdjYzY2ODc0MjNkMDU3MGQ1NTZhYzUzZTA2NzZjYjU2M2JiZGQ5NzE3Y2Q4MjY5YmRlYmVkNmY2ZDRlN2JmOCJ9fX0=\"}]}}}"), + "none", "/hub"); + + @ConfigEntry + public QuickNavItem button8 = new QuickNavItem(true, new ItemData("player_head", 1, + "tag:{SkullOwner:{Id:[I;1605800870,415127827,-1236127084,15358548],Properties:{textures:[{Value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzg5MWQ1YjI3M2ZmMGJjNTBjOTYwYjJjZDg2ZWVmMWM0MGExYjk0MDMyYWU3MWU3NTQ3NWE1NjhhODI1NzQyMSJ9fX0=\"}]}}}"), + "none", "/warp dungeon_hub"); + + @ConfigEntry + public QuickNavItem button9 = new QuickNavItem(true, new ItemData("player_head", 1, + "tag:{SkullOwner:{Id:[I;-562285948,532499670,-1705302742,775653035],Properties:{textures:[{Value:\"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjVkZjU1NTkyNjQzMGQ1ZDc1YWRlZDIxZGQ5NjE5Yjc2YzViN2NhMmM3ZjU0MDE0NDA1MjNkNTNhOGJjZmFhYiJ9fX0=\"}]}}}"), + "Visit prtl", "/visit prtl"); + + @ConfigEntry + public QuickNavItem button10 = new QuickNavItem(true, new ItemData("enchanting_table"), "Enchant Item", + "/etable"); + + @ConfigEntry + public QuickNavItem button11 = new QuickNavItem(true, new ItemData("anvil"), "Anvil", "/anvil"); + + @ConfigEntry + public QuickNavItem button12 = new QuickNavItem(true, new ItemData("crafting_table"), "Craft Item", "/craft"); + } + + public static class QuickNavItem { + public QuickNavItem(Boolean render, ItemData itemData, String uiTitle, String clickEvent) { + this.render = render; + this.item = itemData; + this.clickEvent = clickEvent; + this.uiTitle = uiTitle; + } + + @ConfigEntry + public Boolean render; + + @ConfigEntry + public ItemData item; + + @ConfigEntry + public String uiTitle; + + @ConfigEntry + public String clickEvent; + } + + public static class ItemData { + public ItemData(String itemName, int count, String nbt) { + this.itemName = itemName; + this.count = count; + this.nbt = nbt; + } + + public ItemData(String itemName) { + this.itemName = itemName; + this.count = 1; + this.nbt = ""; + } + + @ConfigEntry + public String itemName; + + @ConfigEntry + public int count; + + @ConfigEntry + public String nbt; + } + + public static class General { + @ConfigEntry + public boolean acceptReparty = true; + + @ConfigEntry + public boolean backpackPreviewWithoutShift = false; + + @ConfigEntry + public boolean compactorDeletorPreview = true; + + @ConfigEntry + public boolean hideEmptyTooltips = true; + + @ConfigEntry + public boolean hideStatusEffectOverlay = false; + + @ConfigEntry + public TabHudConf tabHud = new TabHudConf(); + + @ConfigEntry + public Bars bars = new Bars(); + + @ConfigEntry + public Experiments experiments = new Experiments(); + + @ConfigEntry + public Fishing fishing = new Fishing(); + + @ConfigEntry + public FairySouls fairySouls = new FairySouls(); + + @ConfigEntry + public Shortcuts shortcuts = new Shortcuts(); + + @ConfigEntry + public QuiverWarning quiverWarning = new QuiverWarning(); + + @ConfigEntry + public ItemList itemList = new ItemList(); + + @ConfigEntry + public ItemTooltip itemTooltip = new ItemTooltip(); + + @ConfigEntry + public ItemInfoDisplay itemInfoDisplay = new ItemInfoDisplay(); + + @ConfigEntry + public SpecialEffects specialEffects = new SpecialEffects(); + + @ConfigEntry + public Hitbox hitbox = new Hitbox(); + + @ConfigEntry + public TitleContainer titleContainer = new TitleContainer(); + + @ConfigEntry + public TeleportOverlay teleportOverlay = new TeleportOverlay(); + + @ConfigEntry + public List lockedSlots = new ArrayList<>(); + + @ConfigEntry + public Object2ObjectOpenHashMap customItemNames = new Object2ObjectOpenHashMap<>(); + + @ConfigEntry + public Object2IntOpenHashMap customDyeColors = new Object2IntOpenHashMap<>(); + + @ConfigEntry + public Object2ObjectOpenHashMap customArmorTrims = new Object2ObjectOpenHashMap<>(); + } + + public static class TabHudConf { + @ConfigEntry + public boolean tabHudEnabled = true; + + @ConfigEntry + public int tabHudScale = 100; + + @ConfigEntry + public boolean plainPlayerNames = false; + + @ConfigEntry + public NameSorting nameSorting = NameSorting.DEFAULT; + } + + public enum NameSorting { + DEFAULT, ALPHABETICAL; + + @Override + public String toString() { + return switch (this) { + case DEFAULT -> "Default"; + case ALPHABETICAL -> "Alphabetical"; + }; + } + } + + public static class Bars { + @ConfigEntry + public boolean enableBars = true; + + @ConfigEntry + public BarPositions barpositions = new BarPositions(); + } + + public static class BarPositions { + @ConfigEntry + public BarPosition healthBarPosition = BarPosition.LAYER1; + + @ConfigEntry + public BarPosition manaBarPosition = BarPosition.LAYER1; + + @ConfigEntry + public BarPosition defenceBarPosition = BarPosition.LAYER1; + + @ConfigEntry + public BarPosition experienceBarPosition = BarPosition.LAYER1; + + } + + public enum BarPosition { + LAYER1, LAYER2, RIGHT, NONE; + + @Override + public String toString() { + return I18n.translate("text.autoconfig.skyblocker.option.general.bars.barpositions." + name()); + } + + public int toInt() { + return switch (this) { + case LAYER1 -> 0; + case LAYER2 -> 1; + case RIGHT -> 2; + case NONE -> -1; + }; + } + } + + public static class Experiments { + @ConfigEntry + public boolean enableChronomatronSolver = true; + + @ConfigEntry + public boolean enableSuperpairsSolver = true; + + @ConfigEntry + public boolean enableUltrasequencerSolver = true; + } + + public static class Fishing { + @ConfigEntry + public boolean enableFishingHelper = true; + } + + public static class FairySouls { + @ConfigEntry + public boolean enableFairySoulsHelper = false; + + @ConfigEntry + public boolean highlightFoundSouls = true; + + @ConfigEntry + public boolean highlightOnlyNearbySouls = false; + } + + public static class Shortcuts { + @ConfigEntry + public boolean enableShortcuts = true; + + @ConfigEntry + public boolean enableCommandShortcuts = true; + + @ConfigEntry + public boolean enableCommandArgShortcuts = true; + } + + public static class QuiverWarning { + @ConfigEntry + public boolean enableQuiverWarning = true; + + @ConfigEntry + public boolean enableQuiverWarningInDungeons = true; + + @ConfigEntry + public boolean enableQuiverWarningAfterDungeon = true; + } + + public static class Hitbox { + @ConfigEntry + public boolean oldFarmlandHitbox = true; + + @ConfigEntry + public boolean oldLeverHitbox = false; + } + + public static class TitleContainer { + @ConfigEntry + public float titleContainerScale = 100; + + @ConfigEntry + public int x = 540; + + @ConfigEntry + public int y = 10; + + @ConfigEntry + public Direction direction = Direction.HORIZONTAL; + + @ConfigEntry + public Alignment alignment = Alignment.MIDDLE; + } + + public static class TeleportOverlay { + @ConfigEntry + public boolean enableTeleportOverlays = true; + + @ConfigEntry + public boolean enableWeirdTransmission = true; + + @ConfigEntry + public boolean enableInstantTransmission = true; + + @ConfigEntry + public boolean enableEtherTransmission = true; + + @ConfigEntry + public boolean enableSinrecallTransmission = true; + + @ConfigEntry + public boolean enableWitherImpact = true; + } + + public enum Direction { + HORIZONTAL, VERTICAL; + + @Override + public String toString() { + return switch (this) { + case HORIZONTAL -> "Horizontal"; + case VERTICAL -> "Vertical"; + }; + } + } + + public enum Alignment { + LEFT, RIGHT, MIDDLE; + + @Override + public String toString() { + return switch (this) { + case LEFT -> "Left"; + case RIGHT -> "Right"; + case MIDDLE -> "Middle"; + }; + } + } + + public static class RichPresence { + @ConfigEntry + public boolean enableRichPresence = false; + + @ConfigEntry + public Info info = Info.LOCATION; + + @ConfigEntry + public boolean cycleMode = false; + + @ConfigEntry + public String customMessage = "Playing Skyblock"; + } + + public static class ItemList { + @ConfigEntry + public boolean enableItemList = true; + } + + public enum Average { + ONE_DAY, THREE_DAY, BOTH; + + @Override + public String toString() { + return I18n.translate("text.autoconfig.skyblocker.option.general.itemTooltip.avg." + name()); + } + } + + public static class ItemTooltip { + @ConfigEntry + public boolean enableNPCPrice = true; + + @ConfigEntry + public boolean enableMotesPrice = true; + + @ConfigEntry + public boolean enableAvgBIN = true; + + @ConfigEntry + public Average avg = Average.THREE_DAY; + + @ConfigEntry + public boolean enableLowestBIN = true; + + @ConfigEntry + public boolean enableBazaarPrice = true; + + @ConfigEntry + public boolean enableMuseumDate = true; + } + + public static class ItemInfoDisplay { + @ConfigEntry + public boolean attributeShardInfo = true; + } + + public static class SpecialEffects { + @ConfigEntry + public boolean rareDungeonDropEffects = true; + } + + public static class Locations { + @ConfigEntry + public Barn barn = new Barn(); + + @ConfigEntry + public Dungeons dungeons = new Dungeons(); + + @ConfigEntry + public DwarvenMines dwarvenMines = new DwarvenMines(); + + @ConfigEntry + public Rift rift = new Rift(); + + @ConfigEntry + public SpidersDen spidersDen = new SpidersDen(); + } + + public static class Dungeons { + @ConfigEntry + public SecretWaypoints secretWaypoints = new SecretWaypoints(); + + @ConfigEntry + public DungeonChestProfit dungeonChestProfit = new DungeonChestProfit(); + + @ConfigEntry + public boolean croesusHelper = true; + + @ConfigEntry + public boolean enableMap = true; + + @ConfigEntry + public float mapScaling = 1f; + + @ConfigEntry + public int mapX = 2; + + @ConfigEntry + public int mapY = 2; + + @ConfigEntry + public boolean starredMobGlow = true; + + @ConfigEntry + public boolean solveThreeWeirdos = true; + + @ConfigEntry + public boolean blazesolver = true; + + @ConfigEntry + public boolean solveTrivia = true; + + @ConfigEntry + public boolean solveTicTacToe = true; + + @ConfigEntry + public LividColor lividColor = new LividColor(); + + @ConfigEntry + public Terminals terminals = new Terminals(); + } + + public static class SecretWaypoints { + @ConfigEntry + public boolean enableSecretWaypoints = true; + + @ConfigEntry + public boolean noInitSecretWaypoints = false; + + @ConfigEntry + public boolean enableEntranceWaypoints = true; + + @ConfigEntry + public boolean enableSuperboomWaypoints = true; + + @ConfigEntry + public boolean enableChestWaypoints = true; + + @ConfigEntry + public boolean enableItemWaypoints = true; + + @ConfigEntry + public boolean enableBatWaypoints = true; + + @ConfigEntry + public boolean enableWitherWaypoints = true; + + @ConfigEntry + public boolean enableLeverWaypoints = true; + + @ConfigEntry + public boolean enableFairySoulWaypoints = true; + + @ConfigEntry + public boolean enableStonkWaypoints = true; + + @ConfigEntry + public boolean enableDefaultWaypoints = true; + } + + public static class DungeonChestProfit { + @ConfigEntry + public boolean enableProfitCalculator = true; + + @ConfigEntry + public boolean includeKismet = false; + + @ConfigEntry + public boolean includeEssence = true; + + @ConfigEntry + public int neutralThreshold = 1000; + + @ConfigEntry + public FormattingOption neutralColor = FormattingOption.DARK_GRAY; + + @ConfigEntry + public FormattingOption profitColor = FormattingOption.DARK_GREEN; + + @ConfigEntry + public FormattingOption lossColor = FormattingOption.RED; + + @ConfigEntry + public FormattingOption incompleteColor = FormattingOption.BLUE; + + } + + public enum FormattingOption { + BLACK(Formatting.BLACK), + DARK_BLUE(Formatting.DARK_BLUE), + DARK_GREEN(Formatting.DARK_GREEN), + DARK_AQUA(Formatting.DARK_AQUA), + DARK_RED(Formatting.DARK_RED), + DARK_PURPLE(Formatting.DARK_PURPLE), + GOLD(Formatting.GOLD), + GRAY(Formatting.GRAY), + DARK_GRAY(Formatting.DARK_GRAY), + BLUE(Formatting.BLUE), + GREEN(Formatting.GREEN), + AQUA(Formatting.AQUA), + RED(Formatting.RED), + LIGHT_PURPLE(Formatting.LIGHT_PURPLE), + YELLOW(Formatting.YELLOW), + WHITE(Formatting.WHITE), + OBFUSCATED(Formatting.OBFUSCATED), + BOLD(Formatting.BOLD), + STRIKETHROUGH(Formatting.STRIKETHROUGH), + UNDERLINE(Formatting.UNDERLINE), + ITALIC(Formatting.ITALIC), + RESET(Formatting.RESET); + + public final Formatting formatting; + + + FormattingOption(Formatting formatting) { + this.formatting = formatting; + } + + @Override + public String toString() { + return StringUtils.capitalize(formatting.getName().replaceAll("_", " ")); + } + } + + public static class LividColor { + @ConfigEntry + public boolean enableLividColor = true; + + @ConfigEntry + public String lividColorText = "The livid color is [color]"; + } + + public static class Terminals { + @ConfigEntry + public boolean solveColor = true; + + @ConfigEntry + public boolean solveOrder = true; + + @ConfigEntry + public boolean solveStartsWith = true; + } + + public static class DwarvenMines { + @ConfigEntry + public boolean enableDrillFuel = true; + + @ConfigEntry + public boolean solveFetchur = true; + + @ConfigEntry + public boolean solvePuzzler = true; + + @ConfigEntry + public DwarvenHud dwarvenHud = new DwarvenHud(); + } + + public static class DwarvenHud { + @ConfigEntry + public boolean enabled = true; + + @ConfigEntry + public DwarvenHudStyle style = DwarvenHudStyle.SIMPLE; + + @ConfigEntry + public boolean enableBackground = true; + + @ConfigEntry + public int x = 10; + + @ConfigEntry + public int y = 10; + } + + public enum DwarvenHudStyle { + SIMPLE, FANCY, CLASSIC; + + @Override + public String toString() { + return switch (this) { + case SIMPLE -> "Simple"; + case FANCY -> "Fancy"; + case CLASSIC -> "Classic"; + }; + } + } + + public static class Barn { + @ConfigEntry + public boolean solveHungryHiker = true; + + @ConfigEntry + public boolean solveTreasureHunter = true; + } + + public static class Rift { + @ConfigEntry + public boolean mirrorverseWaypoints = true; + + @ConfigEntry + public int mcGrubberStacks = 0; + } + + public static class SpidersDen { + @ConfigEntry + public Relics relics = new Relics(); + } + + public static class Relics { + @ConfigEntry + public boolean enableRelicsHelper = false; + + @ConfigEntry + public boolean highlightFoundRelics = true; + } + + public static class Slayer { + @ConfigEntry + public VampireSlayer vampireSlayer = new VampireSlayer(); + } + + public static class VampireSlayer { + @ConfigEntry + public boolean enableEffigyWaypoints = true; + + @ConfigEntry + public boolean compactEffigyWaypoints; + + @ConfigEntry + public int effigyUpdateFrequency = 5; + + @ConfigEntry + public boolean enableHolyIceIndicator = true; + + @ConfigEntry + public int holyIceIndicatorTickDelay = 10; + + @ConfigEntry + public int holyIceUpdateFrequency = 5; + + @ConfigEntry + public boolean enableHealingMelonIndicator = true; + + @ConfigEntry + public float healingMelonHealthThreshold = 4f; + + @ConfigEntry + public boolean enableSteakStakeIndicator = true; + + @ConfigEntry + public int steakStakeUpdateFrequency = 5; + + @ConfigEntry + public boolean enableManiaIndicator = true; + + @ConfigEntry + public int maniaUpdateFrequency = 5; + } + + public static class Messages { + @ConfigEntry + public ChatFilterResult hideAbility = ChatFilterResult.PASS; + + @ConfigEntry + public ChatFilterResult hideHeal = ChatFilterResult.PASS; + + @ConfigEntry + public ChatFilterResult hideAOTE = ChatFilterResult.PASS; + + @ConfigEntry + public ChatFilterResult hideImplosion = ChatFilterResult.PASS; + + @ConfigEntry + public ChatFilterResult hideMoltenWave = ChatFilterResult.PASS; + + @ConfigEntry + public ChatFilterResult hideAds = ChatFilterResult.PASS; + + @ConfigEntry + public ChatFilterResult hideTeleportPad = ChatFilterResult.PASS; + + @ConfigEntry + public ChatFilterResult hideCombo = ChatFilterResult.PASS; + + @ConfigEntry + public ChatFilterResult hideAutopet = ChatFilterResult.PASS; + + @ConfigEntry + public ChatFilterResult hideShowOff = ChatFilterResult.PASS; + + @ConfigEntry + public boolean hideMana = false; + } + + public enum Info { + PURSE, BITS, LOCATION; + + @Override + public String toString() { + return I18n.translate("text.autoconfig.skyblocker.option.richPresence.info." + name()); + } + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/ConfigSerializer.java b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigSerializer.java new file mode 100644 index 00000000..8aaa7d2d --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigSerializer.java @@ -0,0 +1,24 @@ +package me.xmrvizzy.skyblocker.config; + +import java.awt.Color; + +import com.google.gson.FieldNamingPolicy; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +import dev.isxander.yacl3.config.GsonConfigInstance.ColorTypeAdapter; +import net.minecraft.text.Style; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; + +class ConfigSerializer { + static final Gson INSTANCE = new GsonBuilder() + .setFieldNamingPolicy(FieldNamingPolicy.IDENTITY) + .registerTypeHierarchyAdapter(Text.class, new Text.Serializer()) + .registerTypeHierarchyAdapter(Style.class, new Style.Serializer()) + .registerTypeHierarchyAdapter(Identifier.class, new Identifier.Serializer()) + .registerTypeHierarchyAdapter(Color.class, new ColorTypeAdapter()) + .serializeNulls() + .setPrettyPrinting() + .create(); +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java new file mode 100644 index 00000000..57ea5893 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java @@ -0,0 +1,15 @@ +package me.xmrvizzy.skyblocker.config; + +import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.CyclingListControllerBuilder; +import net.minecraft.text.Text; + +public class ConfigUtils { + + @SuppressWarnings("unchecked") + public static > CyclingListControllerBuilder createCyclingListController4Enum(Option opt) { + E[] constants = (E[]) opt.binding().defaultValue().getClass().getEnumConstants(); + + return CyclingListControllerBuilder.create(opt).values(constants).valueFormatter(c -> Text.of(c.toString())); + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index 5848ed15..12007671 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -1,728 +1,80 @@ package me.xmrvizzy.skyblocker.config; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; +import java.lang.StackWalker.Option; +import java.nio.file.Path; import com.mojang.brigadier.builder.LiteralArgumentBuilder; -import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; -import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; -import me.shedaniel.autoconfig.AutoConfig; -import me.shedaniel.autoconfig.ConfigData; -import me.shedaniel.autoconfig.annotation.Config; -import me.shedaniel.autoconfig.annotation.ConfigEntry; -import me.shedaniel.autoconfig.serializer.ConfigSerializer; -import me.shedaniel.autoconfig.serializer.GsonConfigSerializer; + +import dev.isxander.yacl3.api.YetAnotherConfigLib; +import dev.isxander.yacl3.config.GsonConfigInstance; import me.xmrvizzy.skyblocker.SkyblockerMod; -import me.xmrvizzy.skyblocker.skyblock.item.CustomArmorTrims; -import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.config.categories.DiscordRPCCategory; +import me.xmrvizzy.skyblocker.config.categories.DungeonsCategory; +import me.xmrvizzy.skyblocker.config.categories.DwarvenMinesCategory; +import me.xmrvizzy.skyblocker.config.categories.GeneralCategory; +import me.xmrvizzy.skyblocker.config.categories.MessageFilterCategory; +import me.xmrvizzy.skyblocker.config.categories.LocationsCategory; +import me.xmrvizzy.skyblocker.config.categories.QuickNavigationCategory; +import me.xmrvizzy.skyblocker.config.categories.SlayersCategory; import me.xmrvizzy.skyblocker.utils.scheduler.Scheduler; +import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; -import net.minecraft.client.resource.language.I18n; -import net.minecraft.text.Style; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.client.gui.screen.Screen; import net.minecraft.text.Text; -import net.minecraft.util.Formatting; -import net.minecraft.util.Identifier; -import org.eclipse.jgit.util.StringUtils; - -import java.util.ArrayList; -import java.util.List; - -import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal; - -@Config(name = "skyblocker") -public class SkyblockerConfig implements ConfigData { - - @ConfigEntry.Category("general") - @ConfigEntry.Gui.TransitiveObject - public General general = new General(); - - @ConfigEntry.Category("locations") - @ConfigEntry.Gui.TransitiveObject - public Locations locations = new Locations(); - - @ConfigEntry.Category("slayer") - @ConfigEntry.Gui.TransitiveObject - public Slayer slayer = new Slayer(); - - @ConfigEntry.Category("quickNav") - @ConfigEntry.Gui.TransitiveObject - public QuickNav quickNav = new QuickNav(); - - @ConfigEntry.Category("messages") - @ConfigEntry.Gui.TransitiveObject - public Messages messages = new Messages(); - - @ConfigEntry.Category("richPresence") - @ConfigEntry.Gui.TransitiveObject - public RichPresence richPresence = new RichPresence(); - - public static class QuickNav { - public boolean enableQuickNav = true; - - @ConfigEntry.Category("button1") - @ConfigEntry.Gui.CollapsibleObject() - public QuickNavItem button1 = new QuickNavItem(true, new ItemData("diamond_sword"), "Your Skills", "/skills"); - - @ConfigEntry.Category("button2") - @ConfigEntry.Gui.CollapsibleObject() - public QuickNavItem button2 = new QuickNavItem(true, new ItemData("painting"), "Collections", "/collection"); - - @ConfigEntry.Category("button3") - @ConfigEntry.Gui.CollapsibleObject() - public QuickNavItem button3 = new QuickNavItem(true, new ItemData("bone"), "Pets(:? \\(\\d+\\/\\d+\\))?", "/pets"); - /* REGEX Explanation - * "Pets" : simple match on letters - * "(?: \\(\\d+\\/\\d+\\))?" : optional match on the non-capturing group for the page in the format " ($number/$number)" - */ - - @ConfigEntry.Category("button4") - @ConfigEntry.Gui.CollapsibleObject() - public QuickNavItem button4 = new QuickNavItem(true, new ItemData("leather_chestplate", 1, "tag:{display:{color:8991416}}"), "Wardrobe \\([12]\\/2\\)", "/wardrobe"); - /* REGEX Explanation - * "Wardrobe" : simple match on letters - * " \\([12]\\/2\\)" : match on the page either " (1/2)" or " (2/2)" - */ - - @ConfigEntry.Category("button5") - @ConfigEntry.Gui.CollapsibleObject() - public QuickNavItem button5 = new QuickNavItem(true, new ItemData("player_head", 1, "tag:{SkullOwner:{Id:[I;-2081424676,-57521078,-2073572414,158072763],Properties:{textures:[{Value:\"ewogICJ0aW1lc3RhbXAiIDogMTU5MTMxMDU4NTYwOSwKICAicHJvZmlsZUlkIiA6ICI0MWQzYWJjMmQ3NDk0MDBjOTA5MGQ1NDM0ZDAzODMxYiIsCiAgInByb2ZpbGVOYW1lIiA6ICJNZWdha2xvb24iLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODBhMDc3ZTI0OGQxNDI3NzJlYTgwMDg2NGY4YzU3OGI5ZDM2ODg1YjI5ZGFmODM2YjY0YTcwNjg4MmI2ZWMxMCIKICAgIH0KICB9Cn0=\"}]}}}"), "Sack of Sacks", "/sacks"); - - @ConfigEntry.Category("button6") - @ConfigEntry.Gui.CollapsibleObject() - public QuickNavItem button6 = new QuickNavItem(true, new ItemData("ender_chest"), "(?:Rift )?Storage(?: \\([12]\\/2\\))?", "/storage"); - /* REGEX Explanation - * "(?:Rift )?" : optional match on the non-capturing group "Rift " - * "Storage" : simple match on letters - * "(?: \\([12]\\/2\\))?" : optional match on the non-capturing group " (1/2)" or " (2/2)" - */ - - @ConfigEntry.Category("button7") - @ConfigEntry.Gui.CollapsibleObject() - public QuickNavItem button7 = new QuickNavItem(true, new ItemData("player_head", 1, "tag:{SkullOwner:{Id:[I;-300151517,-631415889,-1193921967,-1821784279],Properties:{textures:[{Value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDdjYzY2ODc0MjNkMDU3MGQ1NTZhYzUzZTA2NzZjYjU2M2JiZGQ5NzE3Y2Q4MjY5YmRlYmVkNmY2ZDRlN2JmOCJ9fX0=\"}]}}}"), "none", "/hub"); - - @ConfigEntry.Category("button8") - @ConfigEntry.Gui.CollapsibleObject() - public QuickNavItem button8 = new QuickNavItem(true, new ItemData("player_head", 1, "tag:{SkullOwner:{Id:[I;1605800870,415127827,-1236127084,15358548],Properties:{textures:[{Value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzg5MWQ1YjI3M2ZmMGJjNTBjOTYwYjJjZDg2ZWVmMWM0MGExYjk0MDMyYWU3MWU3NTQ3NWE1NjhhODI1NzQyMSJ9fX0=\"}]}}}"), "none", "/warp dungeon_hub"); - - @ConfigEntry.Category("button9") - @ConfigEntry.Gui.CollapsibleObject() - public QuickNavItem button9 = new QuickNavItem(true, new ItemData("player_head", 1, "tag:{SkullOwner:{Id:[I;-562285948,532499670,-1705302742,775653035],Properties:{textures:[{Value:\"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjVkZjU1NTkyNjQzMGQ1ZDc1YWRlZDIxZGQ5NjE5Yjc2YzViN2NhMmM3ZjU0MDE0NDA1MjNkNTNhOGJjZmFhYiJ9fX0=\"}]}}}"), "Visit prtl", "/visit prtl"); - - @ConfigEntry.Category("button10") - @ConfigEntry.Gui.CollapsibleObject() - public QuickNavItem button10 = new QuickNavItem(true, new ItemData("enchanting_table"), "Enchant Item", "/etable"); - - @ConfigEntry.Category("button11") - @ConfigEntry.Gui.CollapsibleObject() - public QuickNavItem button11 = new QuickNavItem(true, new ItemData("anvil"), "Anvil", "/anvil"); - - @ConfigEntry.Category("button12") - @ConfigEntry.Gui.CollapsibleObject() - public QuickNavItem button12 = new QuickNavItem(true, new ItemData("crafting_table"), "Craft Item", "/craft"); - } - - public static class QuickNavItem { - public QuickNavItem(Boolean render, ItemData itemData, String uiTitle, String clickEvent) { - this.render = render; - this.item = itemData; - this.clickEvent = clickEvent; - this.uiTitle = uiTitle; - } - - public Boolean render; - - @ConfigEntry.Category("item") - @ConfigEntry.Gui.CollapsibleObject() - public ItemData item; - - public String uiTitle; - public String clickEvent; - } - - public static class ItemData { - public ItemData(String itemName, int count, String nbt) { - this.itemName = itemName; - this.count = count; - this.nbt = nbt; - } - - public ItemData(String itemName) { - this.itemName = itemName; - this.count = 1; - this.nbt = ""; - } - - public String itemName; - public int count; - public String nbt; - } - - public static class General { - public boolean acceptReparty = true; - public boolean backpackPreviewWithoutShift = false; - public boolean compactorDeletorPreview = true; - public boolean hideEmptyTooltips = true; - public boolean hideStatusEffectOverlay = false; - - @ConfigEntry.Category("tabHud") - @ConfigEntry.Gui.CollapsibleObject() - public TabHudConf tabHud = new TabHudConf(); - - @ConfigEntry.Gui.Excluded - public String apiKey; - - @ConfigEntry.Category("bars") - @ConfigEntry.Gui.CollapsibleObject() - public Bars bars = new Bars(); - - @ConfigEntry.Category("experiments") - @ConfigEntry.Gui.CollapsibleObject() - public Experiments experiments = new Experiments(); - - @ConfigEntry.Category("fishing") - @ConfigEntry.Gui.CollapsibleObject() - public Fishing fishing = new Fishing(); - - @ConfigEntry.Category("fairySouls") - @ConfigEntry.Gui.CollapsibleObject() - public FairySouls fairySouls = new FairySouls(); - - @ConfigEntry.Category("shortcuts") - @ConfigEntry.Gui.CollapsibleObject() - public Shortcuts shortcuts = new Shortcuts(); - - @ConfigEntry.Category("quiverWarning") - @ConfigEntry.Gui.CollapsibleObject() - public QuiverWarning quiverWarning = new QuiverWarning(); - - @ConfigEntry.Category("itemList") - @ConfigEntry.Gui.CollapsibleObject() - public ItemList itemList = new ItemList(); - - @ConfigEntry.Category("itemTooltip") - @ConfigEntry.Gui.CollapsibleObject() - public ItemTooltip itemTooltip = new ItemTooltip(); - - @ConfigEntry.Category("itemInfoDisplay") - @ConfigEntry.Gui.CollapsibleObject - public ItemInfoDisplay itemInfoDisplay = new ItemInfoDisplay(); - - @ConfigEntry.Category("specialEffects") - @ConfigEntry.Gui.CollapsibleObject - public SpecialEffects specialEffects = new SpecialEffects(); - - @ConfigEntry.Category("hitbox") - @ConfigEntry.Gui.CollapsibleObject() - public Hitbox hitbox = new Hitbox(); - - @ConfigEntry.Gui.Tooltip() - @ConfigEntry.Category("titleContainer") - @ConfigEntry.Gui.CollapsibleObject() - public TitleContainer titleContainer = new TitleContainer(); - - @ConfigEntry.Category("Teleport Overlay") - @ConfigEntry.Gui.CollapsibleObject() - public TeleportOverlay teleportOverlay = new TeleportOverlay(); - - @ConfigEntry.Gui.Excluded - public List lockedSlots = new ArrayList<>(); - - @ConfigEntry.Gui.Excluded - public Object2ObjectOpenHashMap customItemNames = new Object2ObjectOpenHashMap<>(); - - @ConfigEntry.Gui.Excluded - public Object2IntOpenHashMap customDyeColors = new Object2IntOpenHashMap<>(); - - @ConfigEntry.Gui.Excluded - public Object2ObjectOpenHashMap customArmorTrims = new Object2ObjectOpenHashMap<>(); - } - - public static class TabHudConf { - public boolean tabHudEnabled = true; - - @ConfigEntry.BoundedDiscrete(min = 10, max = 200) - @ConfigEntry.Gui.Tooltip() - public int tabHudScale = 100; - @ConfigEntry.Gui.Tooltip - public boolean plainPlayerNames = false; - @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) - @ConfigEntry.Gui.Tooltip - public NameSorting nameSorting = NameSorting.DEFAULT; - } - - public enum NameSorting { - DEFAULT, - ALPHABETICAL; - - @Override - public String toString() { - return switch (this) { - case DEFAULT -> "Default"; - case ALPHABETICAL -> "Alphabetical"; - }; - } - } - - public static class Bars { - public boolean enableBars = true; - - @ConfigEntry.Category("barpositions") - @ConfigEntry.Gui.CollapsibleObject() - public BarPositions barpositions = new BarPositions(); - } - - public static class BarPositions { - @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) - public BarPosition healthBarPosition = BarPosition.LAYER1; - @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) - public BarPosition manaBarPosition = BarPosition.LAYER1; - @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) - public BarPosition defenceBarPosition = BarPosition.LAYER1; - @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) - public BarPosition experienceBarPosition = BarPosition.LAYER1; - } - - public enum BarPosition { - LAYER1, - LAYER2, - RIGHT, - NONE; - - @Override - public String toString() { - return I18n.translate("text.autoconfig.skyblocker.option.general.bars.barpositions." + name()); - } - - public int toInt() { - return switch (this) { - case LAYER1 -> 0; - case LAYER2 -> 1; - case RIGHT -> 2; - case NONE -> -1; - }; - } - } - - public static class Experiments { - public boolean enableChronomatronSolver = true; - public boolean enableSuperpairsSolver = true; - public boolean enableUltrasequencerSolver = true; - } - - public static class Fishing { - public boolean enableFishingHelper = true; - } - - public static class FairySouls { - public boolean enableFairySoulsHelper = false; - public boolean highlightFoundSouls = true; - @ConfigEntry.Gui.Tooltip() - public boolean highlightOnlyNearbySouls = false; - } - - public static class Shortcuts { - @ConfigEntry.Gui.Tooltip() - public boolean enableShortcuts = true; - @ConfigEntry.Gui.Tooltip() - public boolean enableCommandShortcuts = true; - @ConfigEntry.Gui.Tooltip() - public boolean enableCommandArgShortcuts = true; - } - - public static class QuiverWarning { - public boolean enableQuiverWarning = true; - public boolean enableQuiverWarningInDungeons = true; - public boolean enableQuiverWarningAfterDungeon = true; - } - - public static class Hitbox { - public boolean oldFarmlandHitbox = true; - public boolean oldLeverHitbox = false; - } - - public static class TitleContainer { - @ConfigEntry.BoundedDiscrete(min = 30, max = 140) - public float titleContainerScale = 100; - public int x = 540; - public int y = 10; - @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) - public Direction direction = Direction.HORIZONTAL; - @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.DROPDOWN) - public Alignment alignment = Alignment.MIDDLE; - } - - public static class TeleportOverlay { - public boolean enableTeleportOverlays = true; - public boolean enableWeirdTransmission = true; - public boolean enableInstantTransmission = true; - public boolean enableEtherTransmission = true; - public boolean enableSinrecallTransmission = true; - public boolean enableWitherImpact = true; - } - - public enum Direction { - HORIZONTAL, - VERTICAL; - - @Override - public String toString() { - return switch (this) { - case HORIZONTAL -> "Horizontal"; - case VERTICAL -> "Vertical"; - }; - } - } - - public enum Alignment { - LEFT, - RIGHT, - MIDDLE; - - @Override - public String toString() { - return switch (this) { - case LEFT -> "Left"; - case RIGHT -> "Right"; - case MIDDLE -> "Middle"; - }; - } - } - - public static class RichPresence { - public boolean enableRichPresence = false; - @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) - @ConfigEntry.Gui.Tooltip() - public Info info = Info.LOCATION; - public boolean cycleMode = false; - public String customMessage = "Playing Skyblock"; - } - - public static class ItemList { - public boolean enableItemList = true; - } - - public enum Average { - ONE_DAY, - THREE_DAY, - BOTH; - - @Override - public String toString() { - return I18n.translate("text.autoconfig.skyblocker.option.general.itemTooltip.avg." + name()); - } - } - - public static class ItemTooltip { - public boolean enableNPCPrice = true; - @ConfigEntry.Gui.Tooltip - public boolean enableMotesPrice = true; - public boolean enableAvgBIN = true; - @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) - @ConfigEntry.Gui.Tooltip() - public Average avg = Average.THREE_DAY; - public boolean enableLowestBIN = true; - public boolean enableBazaarPrice = true; - public boolean enableMuseumDate = true; - } - - public static class ItemInfoDisplay { - @ConfigEntry.Gui.Tooltip - public boolean attributeShardInfo = true; - } - - public static class SpecialEffects { - @ConfigEntry.Gui.Tooltip - public boolean rareDungeonDropEffects = true; - } - - public static class Locations { - @ConfigEntry.Category("barn") - @ConfigEntry.Gui.CollapsibleObject() - public Barn barn = new Barn(); - - @ConfigEntry.Category("dungeons") - @ConfigEntry.Gui.CollapsibleObject() - public Dungeons dungeons = new Dungeons(); - - @ConfigEntry.Category("dwarvenmines") - @ConfigEntry.Gui.CollapsibleObject() - public DwarvenMines dwarvenMines = new DwarvenMines(); - - @ConfigEntry.Category("rift") - @ConfigEntry.Gui.CollapsibleObject() - public Rift rift = new Rift(); - - @ConfigEntry.Category("spidersden") - @ConfigEntry.Gui.CollapsibleObject() - public SpidersDen spidersDen = new SpidersDen(); - } - - public static class Dungeons { - @ConfigEntry.Gui.CollapsibleObject - public SecretWaypoints secretWaypoints = new SecretWaypoints(); - @ConfigEntry.Gui.CollapsibleObject - public DungeonChestProfit dungeonChestProfit = new DungeonChestProfit(); - @ConfigEntry.Gui.Tooltip() - public boolean croesusHelper = true; - public boolean enableMap = true; - public float mapScaling = 1f; - public int mapX = 2; - public int mapY = 2; - @ConfigEntry.Gui.Tooltip - public boolean starredMobGlow = true; - public boolean solveThreeWeirdos = true; - @ConfigEntry.Gui.Tooltip - public boolean blazesolver = true; - public boolean solveTrivia = true; - @ConfigEntry.Gui.Tooltip - public boolean solveTicTacToe = true; - @ConfigEntry.Gui.CollapsibleObject - public LividColor lividColor = new LividColor(); - @ConfigEntry.Gui.CollapsibleObject() - public Terminals terminals = new Terminals(); - } - - public static class SecretWaypoints { - - public boolean enableSecretWaypoints = true; - @ConfigEntry.Gui.Tooltip() - public boolean noInitSecretWaypoints = false; - public boolean enableEntranceWaypoints = true; - public boolean enableSuperboomWaypoints = true; - public boolean enableChestWaypoints = true; - public boolean enableItemWaypoints = true; - public boolean enableBatWaypoints = true; - public boolean enableWitherWaypoints = true; - public boolean enableLeverWaypoints = true; - public boolean enableFairySoulWaypoints = true; - public boolean enableStonkWaypoints = true; - @ConfigEntry.Gui.Tooltip() - public boolean enableDefaultWaypoints = true; - } - - public static class DungeonChestProfit { - @ConfigEntry.Gui.Tooltip - public boolean enableProfitCalculator = true; - @ConfigEntry.Gui.Tooltip - public boolean includeKismet = false; - @ConfigEntry.Gui.Tooltip - public boolean includeEssence = true; - @ConfigEntry.Gui.Tooltip - public int neutralThreshold = 1000; - @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.DROPDOWN) - public FormattingOption neutralColor = FormattingOption.DARK_GRAY; - @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.DROPDOWN) - public FormattingOption profitColor = FormattingOption.DARK_GREEN; - @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.DROPDOWN) - public FormattingOption lossColor = FormattingOption.RED; - @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.DROPDOWN) - @ConfigEntry.Gui.Tooltip - public FormattingOption incompleteColor = FormattingOption.BLUE; - } - - public enum FormattingOption { - BLACK(Formatting.BLACK), - DARK_BLUE(Formatting.DARK_BLUE), - DARK_GREEN(Formatting.DARK_GREEN), - DARK_AQUA(Formatting.DARK_AQUA), - DARK_RED(Formatting.DARK_RED), - DARK_PURPLE(Formatting.DARK_PURPLE), - GOLD(Formatting.GOLD), - GRAY(Formatting.GRAY), - DARK_GRAY(Formatting.DARK_GRAY), - BLUE(Formatting.BLUE), - GREEN(Formatting.GREEN), - AQUA(Formatting.AQUA), - RED(Formatting.RED), - LIGHT_PURPLE(Formatting.LIGHT_PURPLE), - YELLOW(Formatting.YELLOW), - WHITE(Formatting.WHITE), - OBFUSCATED(Formatting.OBFUSCATED), - BOLD(Formatting.BOLD), - STRIKETHROUGH(Formatting.STRIKETHROUGH), - UNDERLINE(Formatting.UNDERLINE), - ITALIC(Formatting.ITALIC), - RESET(Formatting.RESET); - public final Formatting formatting; - - FormattingOption(Formatting formatting) { - this.formatting = formatting; - } - - @Override - public String toString() { - return StringUtils.capitalize(formatting.getName().replaceAll("_", " ")); - } - } - - public static class LividColor { - @ConfigEntry.Gui.Tooltip() - public boolean enableLividColor = true; - @ConfigEntry.Gui.Tooltip() - public String lividColorText = "The livid color is [color]"; - } - - public static class Terminals { - public boolean solveColor = true; - public boolean solveOrder = true; - public boolean solveStartsWith = true; - } - - public static class DwarvenMines { - public boolean enableDrillFuel = true; - public boolean solveFetchur = true; - public boolean solvePuzzler = true; - @ConfigEntry.Gui.CollapsibleObject() - public DwarvenHud dwarvenHud = new DwarvenHud(); - } - - public static class DwarvenHud { - public boolean enabled = true; - @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) - @ConfigEntry.Gui.Tooltip(count = 3) - public DwarvenHudStyle style = DwarvenHudStyle.SIMPLE; - public boolean enableBackground = true; - public int x = 10; - public int y = 10; - } - - public enum DwarvenHudStyle { - SIMPLE, - FANCY, - CLASSIC; - - @Override - public String toString() { - return switch (this) { - case SIMPLE -> "Simple"; - case FANCY -> "Fancy"; - case CLASSIC -> "Classic"; - }; - } - } - - public static class Barn { - public boolean solveHungryHiker = true; - public boolean solveTreasureHunter = true; - } - - public static class Rift { - public boolean mirrorverseWaypoints = true; - @ConfigEntry.BoundedDiscrete(min = 0, max = 5) - @ConfigEntry.Gui.Tooltip - public int mcGrubberStacks = 0; - } - - public static class SpidersDen { - @ConfigEntry.Category("relics") - @ConfigEntry.Gui.CollapsibleObject() - public Relics relics = new Relics(); - } - - public static class Relics { - public boolean enableRelicsHelper = false; - public boolean highlightFoundRelics = true; - } - - public static class Slayer { - @ConfigEntry.Category("vampire") - @ConfigEntry.Gui.CollapsibleObject() - public VampireSlayer vampireSlayer = new VampireSlayer(); - } - - public static class VampireSlayer { - public boolean enableEffigyWaypoints = true; - public boolean compactEffigyWaypoints; - @ConfigEntry.BoundedDiscrete(min = 1, max = 10) - @ConfigEntry.Gui.Tooltip() - public int effigyUpdateFrequency = 5; - public boolean enableHolyIceIndicator = true; - public int holyIceIndicatorTickDelay = 10; - @ConfigEntry.BoundedDiscrete(min = 1, max = 10) - @ConfigEntry.Gui.Tooltip() - public int holyIceUpdateFrequency = 5; - public boolean enableHealingMelonIndicator = true; - public float healingMelonHealthThreshold = 4F; - public boolean enableSteakStakeIndicator = true; - @ConfigEntry.BoundedDiscrete(min = 1, max = 10) - @ConfigEntry.Gui.Tooltip() - public int steakStakeUpdateFrequency = 5; - public boolean enableManiaIndicator = true; - @ConfigEntry.BoundedDiscrete(min = 1, max = 10) - @ConfigEntry.Gui.Tooltip() - public int maniaUpdateFrequency = 5; - } - - public static class Messages { - @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) - public ChatFilterResult hideAbility = ChatFilterResult.PASS; - @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) - public ChatFilterResult hideHeal = ChatFilterResult.PASS; - @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) - public ChatFilterResult hideAOTE = ChatFilterResult.PASS; - @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) - public ChatFilterResult hideImplosion = ChatFilterResult.PASS; - @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) - public ChatFilterResult hideMoltenWave = ChatFilterResult.PASS; - @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) - public ChatFilterResult hideAds = ChatFilterResult.PASS; - @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) - public ChatFilterResult hideTeleportPad = ChatFilterResult.PASS; - @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) - public ChatFilterResult hideCombo = ChatFilterResult.PASS; - @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) - public ChatFilterResult hideAutopet = ChatFilterResult.PASS; - @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON) - @ConfigEntry.Gui.Tooltip - public ChatFilterResult hideShowOff = ChatFilterResult.PASS; - @ConfigEntry.Gui.Tooltip() - public boolean hideMana = false; - } - - public enum Info { - PURSE, - BITS, - LOCATION; - - @Override - public String toString() { - return I18n.translate("text.autoconfig.skyblocker.option.richPresence.info." + name()); - } - } - - /** - * Registers the config to AutoConfig and registers commands to open the config screen. - */ - public static void init() { - Gson gson = new GsonBuilder() - .setPrettyPrinting() - .registerTypeHierarchyAdapter(Text.class, new Text.Serializer()) - .registerTypeHierarchyAdapter(Style.class, new Style.Serializer()) - .registerTypeHierarchyAdapter(Identifier.class, new Identifier.Serializer()) - .create(); - - ConfigSerializer.Factory serializer = (cfg, cfgClass) -> new GsonConfigSerializer<>(cfg, cfgClass, gson); - - AutoConfig.register(SkyblockerConfig.class, serializer); - ClientCommandRegistrationCallback.EVENT.register(((dispatcher, registryAccess) -> dispatcher.register(literal(SkyblockerMod.NAMESPACE).then(optionsLiteral("config")).then(optionsLiteral("options"))))); - } - - /** - * Registers an options command with the given name. Used for registering both options and config as valid commands. - * - * @param name the name of the command node - * @return the command builder - */ - private static LiteralArgumentBuilder optionsLiteral(String name) { - // Don't immediately open the next screen as it will be closed by ChatScreen right after this command is executed - return literal(name).executes(Scheduler.queueOpenScreenCommand(AutoConfig.getConfigScreen(SkyblockerConfig.class, null))); - } - - public static SkyblockerConfig get() { - return AutoConfig.getConfigHolder(SkyblockerConfig.class).getConfig(); - } - public static void save() { - AutoConfig.getConfigHolder(SkyblockerConfig.class).save(); - } +public class SkyblockerConfig { + private static final Path PATH = FabricLoader.getInstance().getConfigDir().resolve("skyblocker.json"); + private static final GsonConfigInstance INSTANCE = GsonConfigInstance.createBuilder(ConfigModel.class) + .setPath(PATH) + .overrideGsonBuilder(ConfigSerializer.INSTANCE) + .build(); + + public static ConfigModel get() { + return INSTANCE.getConfig(); + } + + /** + * This method is caller sensitive and can only be called by the mod initializer, + * this is enforced. + */ + public static void init() { + if (StackWalker.getInstance(Option.RETAIN_CLASS_REFERENCE).getCallerClass() != SkyblockerMod.class) { + throw new RuntimeException("Skyblocker: Called config init from an illegal place!"); + } + + INSTANCE.load(); + ClientCommandRegistrationCallback.EVENT.register(((dispatcher, registryAccess) -> dispatcher.register(ClientCommandManager.literal(SkyblockerMod.NAMESPACE).then(optionsLiteral("config")).then(optionsLiteral("options"))))); + } + + public static void save() { + INSTANCE.save(); + } + + public static Screen createGUI(Screen parent) { + return YetAnotherConfigLib.create(INSTANCE, (defaults, config, builder) -> { + return builder + .title(Text.literal("Skyblocker")) + .category(GeneralCategory.create(defaults, config)) + .category(DungeonsCategory.create(defaults, config)) + .category(DwarvenMinesCategory.create(defaults, config)) + .category(LocationsCategory.create(defaults, config)) + .category(SlayersCategory.create(defaults, config)) + .category(QuickNavigationCategory.create(defaults, config)) + .category(MessageFilterCategory.create(defaults, config)) + .category(DiscordRPCCategory.create(defaults, config)); + + }).generateScreen(parent); + } + + /** + * Registers an options command with the given name. Used for registering both options and config as valid commands. + * + * @param name the name of the command node + * @return the command builder + */ + private static LiteralArgumentBuilder optionsLiteral(String name) { + // Don't immediately open the next screen as it will be closed by ChatScreen right after this command is executed + return ClientCommandManager.literal(name).executes(Scheduler.queueOpenScreenCommand(() -> createGUI(null))); + } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DiscordRPCCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DiscordRPCCategory.java new file mode 100644 index 00000000..9f7d066b --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DiscordRPCCategory.java @@ -0,0 +1,50 @@ +package me.xmrvizzy.skyblocker.config.categories; + +import dev.isxander.yacl3.api.ConfigCategory; +import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.OptionDescription; +import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; +import dev.isxander.yacl3.api.controller.StringControllerBuilder; +import me.xmrvizzy.skyblocker.config.ConfigModel; +import me.xmrvizzy.skyblocker.config.ConfigUtils; +import net.minecraft.text.Text; + +public class DiscordRPCCategory { + + public static ConfigCategory create(ConfigModel defaults, ConfigModel config) { + return ConfigCategory.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.category.richPresence")) + + //Uncategorized Options + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.richPresence.enableRichPresence")) + .binding(defaults.richPresence.enableRichPresence, + () -> config.richPresence.enableRichPresence, + newValue -> config.richPresence.enableRichPresence = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.richPresence.info")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.richPresence.info.@Tooltip"))) + .binding(defaults.richPresence.info, + () -> config.richPresence.info, + newValue -> config.richPresence.info = newValue) + .controller(ConfigUtils::createCyclingListController4Enum) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.richPresence.cycleMode")) + .binding(defaults.richPresence.cycleMode, + () -> config.richPresence.cycleMode, + newValue -> config.richPresence.cycleMode = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.richPresence.customMessage")) + .binding(defaults.richPresence.customMessage, + () -> config.richPresence.customMessage, + newValue -> config.richPresence.customMessage = newValue) + .controller(StringControllerBuilder::create) + .build()) + .build(); + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java new file mode 100644 index 00000000..e26bbae6 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java @@ -0,0 +1,316 @@ +package me.xmrvizzy.skyblocker.config.categories; + +import dev.isxander.yacl3.api.ButtonOption; +import dev.isxander.yacl3.api.ConfigCategory; +import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.OptionDescription; +import dev.isxander.yacl3.api.OptionFlag; +import dev.isxander.yacl3.api.OptionGroup; +import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; +import dev.isxander.yacl3.api.controller.FloatFieldControllerBuilder; +import dev.isxander.yacl3.api.controller.IntegerFieldControllerBuilder; +import dev.isxander.yacl3.api.controller.StringControllerBuilder; +import me.xmrvizzy.skyblocker.config.ConfigModel; +import me.xmrvizzy.skyblocker.config.ConfigModel.FormattingOption; +import me.xmrvizzy.skyblocker.config.ConfigUtils; +import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonMapConfigScreen; +import net.minecraft.client.MinecraftClient; +import net.minecraft.text.Text; + +public class DungeonsCategory { + + public static ConfigCategory create(ConfigModel defaults, ConfigModel config) { + return ConfigCategory.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons")) + + //Dungeon Secret Waypoints + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enableSecretWaypoints")) + .binding(defaults.locations.dungeons.secretWaypoints.enableSecretWaypoints, + () -> config.locations.dungeons.secretWaypoints.enableSecretWaypoints, + newValue -> config.locations.dungeons.secretWaypoints.enableSecretWaypoints = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.noInitSecretWaypoints")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.noInitSecretWaypoints.@Tooltip"))) + .binding(defaults.locations.dungeons.secretWaypoints.noInitSecretWaypoints, + () -> config.locations.dungeons.secretWaypoints.noInitSecretWaypoints, + newValue -> config.locations.dungeons.secretWaypoints.noInitSecretWaypoints = newValue) + .controller(BooleanControllerBuilder::create) + .flag(OptionFlag.GAME_RESTART) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enableEntranceWaypoints")) + .binding(defaults.locations.dungeons.secretWaypoints.enableEntranceWaypoints, + () -> config.locations.dungeons.secretWaypoints.enableEntranceWaypoints, + newValue -> config.locations.dungeons.secretWaypoints.enableEntranceWaypoints = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enableSuperboomWaypoints")) + .binding(defaults.locations.dungeons.secretWaypoints.enableSuperboomWaypoints, + () -> config.locations.dungeons.secretWaypoints.enableSuperboomWaypoints, + newValue -> config.locations.dungeons.secretWaypoints.enableSuperboomWaypoints = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enableChestWaypoints")) + .binding(defaults.locations.dungeons.secretWaypoints.enableChestWaypoints, + () -> config.locations.dungeons.secretWaypoints.enableChestWaypoints, + newValue -> config.locations.dungeons.secretWaypoints.enableChestWaypoints = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enableItemWaypoints")) + .binding(defaults.locations.dungeons.secretWaypoints.enableItemWaypoints, + () -> config.locations.dungeons.secretWaypoints.enableItemWaypoints, + newValue -> config.locations.dungeons.secretWaypoints.enableItemWaypoints = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enableBatWaypoints")) + .binding(defaults.locations.dungeons.secretWaypoints.enableBatWaypoints, + () -> config.locations.dungeons.secretWaypoints.enableBatWaypoints, + newValue -> config.locations.dungeons.secretWaypoints.enableBatWaypoints = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enableWitherWaypoints")) + .binding(defaults.locations.dungeons.secretWaypoints.enableWitherWaypoints, + () -> config.locations.dungeons.secretWaypoints.enableWitherWaypoints, + newValue -> config.locations.dungeons.secretWaypoints.enableWitherWaypoints = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enableLeverWaypoints")) + .binding(defaults.locations.dungeons.secretWaypoints.enableLeverWaypoints, + () -> config.locations.dungeons.secretWaypoints.enableLeverWaypoints, + newValue -> config.locations.dungeons.secretWaypoints.enableLeverWaypoints = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enableFairySoulWaypoints")) + .binding(defaults.locations.dungeons.secretWaypoints.enableFairySoulWaypoints, + () -> config.locations.dungeons.secretWaypoints.enableFairySoulWaypoints, + newValue -> config.locations.dungeons.secretWaypoints.enableFairySoulWaypoints = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enableStonkWaypoints")) + .binding(defaults.locations.dungeons.secretWaypoints.enableStonkWaypoints, + () -> config.locations.dungeons.secretWaypoints.enableStonkWaypoints, + newValue -> config.locations.dungeons.secretWaypoints.enableStonkWaypoints = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enableDefaultWaypoints")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enableDefaultWaypoints.@Tooltip"))) + .binding(defaults.locations.dungeons.secretWaypoints.enableDefaultWaypoints, + () -> config.locations.dungeons.secretWaypoints.enableDefaultWaypoints, + newValue -> config.locations.dungeons.secretWaypoints.enableDefaultWaypoints = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .build()) + + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.enableProfitCalculator")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.enableProfitCalculator.@Tooltip"))) + .binding(defaults.locations.dungeons.dungeonChestProfit.enableProfitCalculator, + () -> config.locations.dungeons.dungeonChestProfit.enableProfitCalculator, + newValue -> config.locations.dungeons.dungeonChestProfit.enableProfitCalculator = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.includeKismet")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.includeKismet.@Tooltip"))) + .binding(defaults.locations.dungeons.dungeonChestProfit.includeKismet, + () -> config.locations.dungeons.dungeonChestProfit.includeKismet, + newValue -> config.locations.dungeons.dungeonChestProfit.includeKismet = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.includeEssence")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.includeEssence.@Tooltip"))) + .binding(defaults.locations.dungeons.dungeonChestProfit.includeEssence, + () -> config.locations.dungeons.dungeonChestProfit.includeEssence, + newValue -> config.locations.dungeons.dungeonChestProfit.includeEssence = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.neutralThreshold")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.neutralThreshold.@Tooltip"))) + .binding(defaults.locations.dungeons.dungeonChestProfit.neutralThreshold, + () -> config.locations.dungeons.dungeonChestProfit.neutralThreshold, + newValue -> config.locations.dungeons.dungeonChestProfit.neutralThreshold = newValue) + .controller(IntegerFieldControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.neutralColor")) + .binding(defaults.locations.dungeons.dungeonChestProfit.neutralColor, + () -> config.locations.dungeons.dungeonChestProfit.neutralColor, + newValue -> config.locations.dungeons.dungeonChestProfit.neutralColor = newValue) + .controller(ConfigUtils::createCyclingListController4Enum) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.profitColor")) + .binding(defaults.locations.dungeons.dungeonChestProfit.profitColor, + () -> config.locations.dungeons.dungeonChestProfit.profitColor, + newValue -> config.locations.dungeons.dungeonChestProfit.profitColor = newValue) + .controller(ConfigUtils::createCyclingListController4Enum) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.lossColor")) + .binding(defaults.locations.dungeons.dungeonChestProfit.lossColor, + () -> config.locations.dungeons.dungeonChestProfit.lossColor, + newValue -> config.locations.dungeons.dungeonChestProfit.lossColor = newValue) + .controller(ConfigUtils::createCyclingListController4Enum) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.incompleteColor")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.incompleteColor.@Tooltip"))) + .binding(defaults.locations.dungeons.dungeonChestProfit.incompleteColor, + () -> config.locations.dungeons.dungeonChestProfit.incompleteColor, + newValue -> config.locations.dungeons.dungeonChestProfit.incompleteColor = newValue) + .controller(ConfigUtils::createCyclingListController4Enum) + .build()) + .build()) + + //Others + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.croesusHelper")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.croesusHelper.@Tooltip"))) + .binding(defaults.locations.dungeons.croesusHelper, + () -> config.locations.dungeons.croesusHelper, + newValue -> config.locations.dungeons.croesusHelper = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.enableMap")) + .binding(defaults.locations.dungeons.enableMap, + () -> config.locations.dungeons.enableMap, + newValue -> config.locations.dungeons.enableMap = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(ButtonOption.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.mapScreen")) + .text(Text.translatable("text.skyblocker.open")) + .action((screen, opt) -> MinecraftClient.getInstance().setScreen(new DungeonMapConfigScreen(screen))) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.mapScaling")) + .binding(defaults.locations.dungeons.mapScaling, + () -> config.locations.dungeons.mapScaling, + newValue -> config.locations.dungeons.mapScaling = newValue) + .controller(FloatFieldControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.mapX")) + .binding(defaults.locations.dungeons.mapX, + () -> config.locations.dungeons.mapX, + newValue -> config.locations.dungeons.mapX = newValue) + .controller(IntegerFieldControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.mapY")) + .binding(defaults.locations.dungeons.mapY, + () -> config.locations.dungeons.mapY, + newValue -> config.locations.dungeons.mapY = newValue) + .controller(IntegerFieldControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.starredMobGlow")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.starredMobGlow.@Tooltip"))) + .binding(defaults.locations.dungeons.starredMobGlow, + () -> config.locations.dungeons.starredMobGlow, + newValue -> config.locations.dungeons.starredMobGlow = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.solveThreeWeirdos")) + .binding(defaults.locations.dungeons.solveThreeWeirdos, + () -> config.locations.dungeons.solveThreeWeirdos, + newValue -> config.locations.dungeons.solveThreeWeirdos = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.blazesolver")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.blazesolver.@Tooltip"))) + .binding(defaults.locations.dungeons.blazesolver, + () -> config.locations.dungeons.blazesolver, + newValue -> config.locations.dungeons.blazesolver = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.solveTrivia")) + .binding(defaults.locations.dungeons.solveTrivia, + () -> config.locations.dungeons.solveTrivia, + newValue -> config.locations.dungeons.solveTrivia = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.solveTicTacToe")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.solveTicTacToe.@Tooltip"))) + .binding(defaults.locations.dungeons.solveTicTacToe, + () -> config.locations.dungeons.solveTicTacToe, + newValue -> config.locations.dungeons.solveTicTacToe = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + + //Livid Color + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.lividColor")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.lividColor.enableLividColor")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.lividColor.enableLividColor.@Tooltip"))) + .binding(defaults.locations.dungeons.lividColor.enableLividColor, + () -> config.locations.dungeons.lividColor.enableLividColor, + newValue -> config.locations.dungeons.lividColor.enableLividColor = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.lividColor.lividColorText")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.lividColor.lividColorText.@Tooltip"))) + .binding(defaults.locations.dungeons.lividColor.lividColorText, + () -> config.locations.dungeons.lividColor.lividColorText, + newValue -> config.locations.dungeons.lividColor.lividColorText = newValue) + .controller(StringControllerBuilder::create) + .build()) + .build()) + + //Terminal Solvers + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.terminals")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.terminals.solveColor")) + .binding(defaults.locations.dungeons.terminals.solveColor, + () -> config.locations.dungeons.terminals.solveColor, + newValue -> config.locations.dungeons.terminals.solveColor = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.terminals.solveOrder")) + .binding(defaults.locations.dungeons.terminals.solveOrder, + () -> config.locations.dungeons.terminals.solveOrder, + newValue -> config.locations.dungeons.terminals.solveOrder = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.terminals.solveStartsWith")) + .binding(defaults.locations.dungeons.terminals.solveStartsWith, + () -> config.locations.dungeons.terminals.solveStartsWith, + newValue -> config.locations.dungeons.terminals.solveStartsWith = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .build()) + .build(); + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DwarvenMinesCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DwarvenMinesCategory.java new file mode 100644 index 00000000..540a04e4 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DwarvenMinesCategory.java @@ -0,0 +1,95 @@ +package me.xmrvizzy.skyblocker.config.categories; + +import dev.isxander.yacl3.api.ButtonOption; +import dev.isxander.yacl3.api.ConfigCategory; +import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.OptionDescription; +import dev.isxander.yacl3.api.OptionGroup; +import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; +import dev.isxander.yacl3.api.controller.IntegerFieldControllerBuilder; +import me.xmrvizzy.skyblocker.config.ConfigModel; +import me.xmrvizzy.skyblocker.config.ConfigUtils; +import me.xmrvizzy.skyblocker.skyblock.dwarven.DwarvenHudConfigScreen; +import net.minecraft.client.MinecraftClient; +import net.minecraft.text.Text; + +public class DwarvenMinesCategory { + + public static ConfigCategory create(ConfigModel defaults, ConfigModel config) { + return ConfigCategory.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines")) + + //Uncategorized Options + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.enableDrillFuel")) + .binding(defaults.locations.dwarvenMines.enableDrillFuel, + () -> config.locations.dwarvenMines.enableDrillFuel, + newValue -> config.locations.dwarvenMines.enableDrillFuel = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.solveFetchur")) + .binding(defaults.locations.dwarvenMines.solveFetchur, + () -> config.locations.dwarvenMines.solveFetchur, + newValue -> config.locations.dwarvenMines.solveFetchur = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.solvePuzzler")) + .binding(defaults.locations.dwarvenMines.solvePuzzler, + () -> config.locations.dwarvenMines.solvePuzzler, + newValue -> config.locations.dwarvenMines.solvePuzzler = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + + //Dwarven HUD + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud")) + .collapsed(false) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.enabled")) + .binding(defaults.locations.dwarvenMines.dwarvenHud.enabled, + () -> config.locations.dwarvenMines.dwarvenHud.enabled, + newValue -> config.locations.dwarvenMines.dwarvenHud.enabled = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.style")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.style.@Tooltip[0]", + Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.style.@Tooltip[1]"), + Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.style.@Tooltip[2]")))) + .binding(defaults.locations.dwarvenMines.dwarvenHud.style, + () -> config.locations.dwarvenMines.dwarvenHud.style, + newValue -> config.locations.dwarvenMines.dwarvenHud.style = newValue) + .controller(ConfigUtils::createCyclingListController4Enum) + .build()) + .option(ButtonOption.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.screen")) + .text(Text.translatable("text.skyblocker.open")) + .action((screen, opt) -> MinecraftClient.getInstance().setScreen(new DwarvenHudConfigScreen(screen))) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.enableBackground")) + .binding(defaults.locations.dwarvenMines.dwarvenHud.enableBackground, + () -> config.locations.dwarvenMines.dwarvenHud.enableBackground, + newValue -> config.locations.dwarvenMines.dwarvenHud.enableBackground = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.x")) + .binding(defaults.locations.dwarvenMines.dwarvenHud.x, + () -> config.locations.dwarvenMines.dwarvenHud.x, + newValue -> config.locations.dwarvenMines.dwarvenHud.x = newValue) + .controller(IntegerFieldControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.y")) + .binding(defaults.locations.dwarvenMines.dwarvenHud.y, + () -> config.locations.dwarvenMines.dwarvenHud.y, + newValue -> config.locations.dwarvenMines.dwarvenHud.y = newValue) + .controller(IntegerFieldControllerBuilder::create) + .build()) + .build()) + .build(); + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/GeneralCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/GeneralCategory.java new file mode 100644 index 00000000..aecf9374 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/GeneralCategory.java @@ -0,0 +1,478 @@ +package me.xmrvizzy.skyblocker.config.categories; + +import dev.isxander.yacl3.api.ButtonOption; +import dev.isxander.yacl3.api.ConfigCategory; +import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.OptionDescription; +import dev.isxander.yacl3.api.OptionGroup; +import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; +import dev.isxander.yacl3.api.controller.FloatFieldControllerBuilder; +import dev.isxander.yacl3.api.controller.IntegerFieldControllerBuilder; +import dev.isxander.yacl3.api.controller.IntegerSliderControllerBuilder; +import me.xmrvizzy.skyblocker.config.ConfigModel; +import me.xmrvizzy.skyblocker.config.ConfigUtils; +import me.xmrvizzy.skyblocker.skyblock.shortcut.ShortcutsConfigScreen; +import net.minecraft.client.MinecraftClient; +import net.minecraft.text.Text; + +public class GeneralCategory { + + public static ConfigCategory create(ConfigModel defaults, ConfigModel config) { + return ConfigCategory.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.category.general")) + + //Ungrouped Options + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.acceptReparty")) + .binding(defaults.general.acceptReparty, + () -> config.general.acceptReparty, + newValue -> config.general.acceptReparty = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.backpackPreviewWithoutShift")) + .binding(defaults.general.backpackPreviewWithoutShift, + () -> config.general.backpackPreviewWithoutShift, + newValue -> config.general.backpackPreviewWithoutShift = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.compactorDeletorPreview")) + .binding(defaults.general.compactorDeletorPreview, + () -> config.general.compactorDeletorPreview, + newValue -> config.general.compactorDeletorPreview = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.hideEmptyTooltips")) + .binding(defaults.general.hideEmptyTooltips, + () -> config.general.hideEmptyTooltips, + newValue -> config.general.hideEmptyTooltips = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.hideStatusEffectOverlay")) + .binding(defaults.general.hideStatusEffectOverlay, + () -> config.general.hideStatusEffectOverlay, + newValue -> config.general.hideStatusEffectOverlay = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + + //Tab Hud + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.tabHud")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.tabHud.tabHudEnabled")) + .binding(defaults.general.tabHud.tabHudEnabled, + () -> config.general.tabHud.tabHudEnabled, + newValue -> config.general.tabHud.tabHudEnabled = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.tabHud.tabHudScale")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.tabHud.tabHudScale.@Tooltip"))) + .binding(defaults.general.tabHud.tabHudScale, + () -> config.general.tabHud.tabHudScale, + newValue -> config.general.tabHud.tabHudScale = newValue) + .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(10, 200).step(1)) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.tabHud.plainPlayerNames")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.tabHud.plainPlayerNames.@Tooltip"))) + .binding(defaults.general.tabHud.plainPlayerNames, + () -> config.general.tabHud.plainPlayerNames, + newValue -> config.general.tabHud.plainPlayerNames = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.tabHud.nameSorting")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.tabHud.nameSorting.@Tooltip"))) + .binding(defaults.general.tabHud.nameSorting, + () -> config.general.tabHud.nameSorting, + newValue -> config.general.tabHud.nameSorting = newValue) + .controller(ConfigUtils::createCyclingListController4Enum) + .build()) + .build()) + + //Fancy Bars + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.bars")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.bars.enableBars")) + .binding(defaults.general.bars.enableBars, + () -> config.general.bars.enableBars, + newValue -> config.general.bars.enableBars = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.bars.barpositions.healthBarPosition")) + .binding(defaults.general.bars.barpositions.healthBarPosition, + () -> config.general.bars.barpositions.healthBarPosition, + newValue -> config.general.bars.barpositions.healthBarPosition = newValue) + .controller(ConfigUtils::createCyclingListController4Enum) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.bars.barpositions.manaBarPosition")) + .binding(defaults.general.bars.barpositions.manaBarPosition, + () -> config.general.bars.barpositions.manaBarPosition, + newValue -> config.general.bars.barpositions.manaBarPosition = newValue) + .controller(ConfigUtils::createCyclingListController4Enum) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.bars.barpositions.defenceBarPosition")) + .binding(defaults.general.bars.barpositions.defenceBarPosition, + () -> config.general.bars.barpositions.defenceBarPosition, + newValue -> config.general.bars.barpositions.defenceBarPosition = newValue) + .controller(ConfigUtils::createCyclingListController4Enum) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.bars.barpositions.experienceBarPosition")) + .binding(defaults.general.bars.barpositions.experienceBarPosition, + () -> config.general.bars.barpositions.experienceBarPosition, + newValue -> config.general.bars.barpositions.experienceBarPosition = newValue) + .controller(ConfigUtils::createCyclingListController4Enum) + .build()) + .build()) + + //Experiments Solver + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.experiments")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.experiments.enableChronomatronSolver")) + .binding(defaults.general.experiments.enableChronomatronSolver, + () -> config.general.experiments.enableChronomatronSolver, + newValue -> config.general.experiments.enableChronomatronSolver = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.experiments.enableSuperpairsSolver")) + .binding(defaults.general.experiments.enableSuperpairsSolver, + () -> config.general.experiments.enableSuperpairsSolver, + newValue -> config.general.experiments.enableSuperpairsSolver = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.experiments.enableUltrasequencerSolver")) + .binding(defaults.general.experiments.enableUltrasequencerSolver, + () -> config.general.experiments.enableUltrasequencerSolver, + newValue -> config.general.experiments.enableUltrasequencerSolver = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .build()) + + //Fishing Helper + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.fishing")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.fishing.enableFishingHelper")) + .binding(defaults.general.fishing.enableFishingHelper, + () -> config.general.fishing.enableFishingHelper, + newValue -> config.general.fishing.enableFishingHelper = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .build()) + + //Fairy Souls Helper + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.fairySouls")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.fairySouls.enableFairySoulsHelper")) + .binding(defaults.general.fairySouls.enableFairySoulsHelper, + () -> config.general.fairySouls.enableFairySoulsHelper, + newValue -> config.general.fairySouls.enableFairySoulsHelper = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.fairySouls.highlightFoundSouls")) + .binding(defaults.general.fairySouls.highlightFoundSouls, + () -> config.general.fairySouls.highlightFoundSouls, + newValue -> config.general.fairySouls.highlightFoundSouls = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.fairySouls.highlightOnlyNearbySouls")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.fairySouls.highlightOnlyNearbySouls.@Tooltip"))) + .binding(defaults.general.fairySouls.highlightOnlyNearbySouls, + () -> config.general.fairySouls.highlightOnlyNearbySouls, + newValue -> config.general.fairySouls.highlightOnlyNearbySouls = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .build()) + + //Shortcuts + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.shortcuts")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.shortcuts.enableShortcuts")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.shortcuts.enableShortcuts.@Tooltip"))) + .binding(defaults.general.shortcuts.enableShortcuts, + () -> config.general.shortcuts.enableShortcuts, + newValue -> config.general.shortcuts.enableShortcuts = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.shortcuts.enableCommandShortcuts")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.shortcuts.enableCommandShortcuts.@Tooltip"))) + .binding(defaults.general.shortcuts.enableCommandShortcuts, + () -> config.general.shortcuts.enableCommandShortcuts, + newValue -> config.general.shortcuts.enableCommandShortcuts = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.shortcuts.enableCommandArgShortcuts")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.shortcuts.enableCommandArgShortcuts.@Tooltip"))) + .binding(defaults.general.shortcuts.enableCommandArgShortcuts, + () -> config.general.shortcuts.enableCommandArgShortcuts, + newValue -> config.general.shortcuts.enableCommandArgShortcuts = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(ButtonOption.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.shortcuts.config")) + .text(Text.translatable("text.skyblocker.open")) + .action((screen, opt) -> MinecraftClient.getInstance().setScreen(new ShortcutsConfigScreen(screen))) + .build()) + .build()) + + //Quiver Warning + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.quiverWarning")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.quiverWarning.enableQuiverWarning")) + .binding(defaults.general.quiverWarning.enableQuiverWarning, + () -> config.general.quiverWarning.enableQuiverWarning, + newValue -> config.general.quiverWarning.enableQuiverWarning = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.quiverWarning.enableQuiverWarningInDungeons")) + .binding(defaults.general.quiverWarning.enableQuiverWarningInDungeons, + () -> config.general.quiverWarning.enableQuiverWarningInDungeons, + newValue -> config.general.quiverWarning.enableQuiverWarningInDungeons = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.quiverWarning.enableQuiverWarningAfterDungeon")) + .binding(defaults.general.quiverWarning.enableQuiverWarningAfterDungeon, + () -> config.general.quiverWarning.enableQuiverWarningAfterDungeon, + newValue -> config.general.quiverWarning.enableQuiverWarningAfterDungeon = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .build()) + + //Item List + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemList")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemList.enableItemList")) + .binding(defaults.general.itemList.enableItemList, + () -> config.general.itemList.enableItemList, + newValue -> config.general.itemList.enableItemList = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .build()) + + //Item Tooltip + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.enableNPCPrice")) + .binding(defaults.general.itemTooltip.enableNPCPrice, + () -> config.general.itemTooltip.enableNPCPrice, + newValue -> config.general.itemTooltip.enableNPCPrice = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.enableMotesPrice")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.enableMotesPrice.@Tooltip"))) + .binding(defaults.general.itemTooltip.enableMotesPrice, + () -> config.general.itemTooltip.enableMotesPrice, + newValue -> config.general.itemTooltip.enableMotesPrice = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.enableAvgBIN")) + .binding(defaults.general.itemTooltip.enableAvgBIN, + () -> config.general.itemTooltip.enableAvgBIN, + newValue -> config.general.itemTooltip.enableAvgBIN = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.avg")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.avg.@Tooltip"))) + .binding(defaults.general.itemTooltip.avg, + () -> config.general.itemTooltip.avg, + newValue -> config.general.itemTooltip.avg = newValue) + .controller(ConfigUtils::createCyclingListController4Enum) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.enableLowestBIN")) + .binding(defaults.general.itemTooltip.enableLowestBIN, + () -> config.general.itemTooltip.enableLowestBIN, + newValue -> config.general.itemTooltip.enableLowestBIN = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.enableBazaarPrice")) + .binding(defaults.general.itemTooltip.enableBazaarPrice, + () -> config.general.itemTooltip.enableBazaarPrice, + newValue -> config.general.itemTooltip.enableBazaarPrice = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.enableMuseumDate")) + .binding(defaults.general.itemTooltip.enableMuseumDate, + () -> config.general.itemTooltip.enableMuseumDate, + newValue -> config.general.itemTooltip.enableMuseumDate = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .build()) + + //Item Info Display + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemInfoDisplay")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemInfoDisplay.attributeShardInfo")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.itemInfoDisplay.attributeShardInfo.@Tooltip"))) + .binding(defaults.general.itemInfoDisplay.attributeShardInfo, + () -> config.general.itemInfoDisplay.attributeShardInfo, + newValue -> config.general.itemInfoDisplay.attributeShardInfo = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .build()) + + //Special Effects + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.specialEffects")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.specialEffects.rareDungeonDropEffects")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.specialEffects.rareDungeonDropEffects.@Tooltip"))) + .binding(defaults.general.specialEffects.rareDungeonDropEffects, + () -> config.general.specialEffects.rareDungeonDropEffects, + newValue -> config.general.specialEffects.rareDungeonDropEffects = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .build()) + + //Hitboxes + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.hitbox")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.hitbox.oldFarmlandHitbox")) + .binding(defaults.general.hitbox.oldFarmlandHitbox, + () -> config.general.hitbox.oldFarmlandHitbox, + newValue -> config.general.hitbox.oldFarmlandHitbox = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.hitbox.oldLeverHitbox")) + .binding(defaults.general.hitbox.oldLeverHitbox, + () -> config.general.hitbox.oldLeverHitbox, + newValue -> config.general.hitbox.oldLeverHitbox = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .build()) + + //Title Container + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.titleContainer")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.titleContainer.@Tooltip"))) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.titleContainer.titleContainerScale")) + .binding(defaults.general.titleContainer.titleContainerScale, + () -> config.general.titleContainer.titleContainerScale, + newValue -> config.general.titleContainer.titleContainerScale = newValue) + .controller(opt -> FloatFieldControllerBuilder.create(opt).range(30f, 140f)) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.titleContainer.x")) + .binding(defaults.general.titleContainer.x, + () -> config.general.titleContainer.x, + newValue -> config.general.titleContainer.x = newValue) + .controller(IntegerFieldControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.titleContainer.y")) + .binding(defaults.general.titleContainer.y, + () -> config.general.titleContainer.y, + newValue -> config.general.titleContainer.y = newValue) + .controller(IntegerFieldControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.titleContainer.direction")) + .binding(defaults.general.titleContainer.direction, + () -> config.general.titleContainer.direction, + newValue -> config.general.titleContainer.direction = newValue) + .controller(ConfigUtils::createCyclingListController4Enum) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.titleContainer.alignment")) + .binding(defaults.general.titleContainer.alignment, + () -> config.general.titleContainer.alignment, + newValue -> config.general.titleContainer.alignment = newValue) + .controller(ConfigUtils::createCyclingListController4Enum) + .build()) + .build()) + + //Teleport Overlays + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.teleportOverlay")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.teleportOverlay.enableTeleportOverlays")) + .binding(defaults.general.teleportOverlay.enableTeleportOverlays, + () -> config.general.teleportOverlay.enableTeleportOverlays, + newValue -> config.general.teleportOverlay.enableTeleportOverlays = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.teleportOverlay.enableWeirdTransmission")) + .binding(defaults.general.teleportOverlay.enableWeirdTransmission, + () -> config.general.teleportOverlay.enableWeirdTransmission, + newValue -> config.general.teleportOverlay.enableWeirdTransmission = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.teleportOverlay.enableInstantTransmission")) + .binding(defaults.general.teleportOverlay.enableInstantTransmission, + () -> config.general.teleportOverlay.enableInstantTransmission, + newValue -> config.general.teleportOverlay.enableInstantTransmission = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.teleportOverlay.enableEtherTransmission")) + .binding(defaults.general.teleportOverlay.enableEtherTransmission, + () -> config.general.teleportOverlay.enableEtherTransmission, + newValue -> config.general.teleportOverlay.enableEtherTransmission = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.teleportOverlay.enableSinrecallTransmission")) + .binding(defaults.general.teleportOverlay.enableSinrecallTransmission, + () -> config.general.teleportOverlay.enableSinrecallTransmission, + newValue -> config.general.teleportOverlay.enableSinrecallTransmission = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.teleportOverlay.enableWitherImpact")) + .binding(defaults.general.teleportOverlay.enableWitherImpact, + () -> config.general.teleportOverlay.enableWitherImpact, + newValue -> config.general.teleportOverlay.enableWitherImpact = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .build()) + .build(); + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/LocationsCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/LocationsCategory.java new file mode 100644 index 00000000..640bc5e6 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/LocationsCategory.java @@ -0,0 +1,80 @@ +package me.xmrvizzy.skyblocker.config.categories; + +import dev.isxander.yacl3.api.ConfigCategory; +import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.OptionDescription; +import dev.isxander.yacl3.api.OptionGroup; +import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; +import dev.isxander.yacl3.api.controller.IntegerSliderControllerBuilder; +import me.xmrvizzy.skyblocker.config.ConfigModel; +import net.minecraft.text.Text; + +public class LocationsCategory { + + public static ConfigCategory create(ConfigModel defaults, ConfigModel config) { + return ConfigCategory.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.category.locations")) + + //Barn + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.barn")) + .collapsed(false) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.barn.solveHungryHiker")) + .binding(defaults.locations.barn.solveHungryHiker, + () -> config.locations.barn.solveHungryHiker, + newValue -> config.locations.barn.solveHungryHiker = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.barn.solveTreasureHunter")) + .binding(defaults.locations.barn.solveTreasureHunter, + () -> config.locations.barn.solveTreasureHunter, + newValue -> config.locations.barn.solveTreasureHunter = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .build()) + + //The Rift + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.rift")) + .collapsed(false) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.rift.mirrorverseWaypoints")) + .binding(defaults.locations.rift.mirrorverseWaypoints, + () -> config.locations.rift.mirrorverseWaypoints, + newValue -> config.locations.rift.mirrorverseWaypoints = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.rift.mcGrubberStacks")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.rift.mcGrubberStacks.@Tooltip"))) + .binding(defaults.locations.rift.mcGrubberStacks, + () -> config.locations.rift.mcGrubberStacks, + newValue -> config.locations.rift.mcGrubberStacks = newValue) + .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(0, 5).step(1)) + .build()) + .build()) + + //Spider's Den + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.spidersDen")) + .collapsed(false) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.spidersDen.relics.enableRelicsHelper")) + .binding(defaults.locations.spidersDen.relics.enableRelicsHelper, + () -> config.locations.spidersDen.relics.enableRelicsHelper, + newValue -> config.locations.spidersDen.relics.enableRelicsHelper = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.locations.spidersDen.relics.highlightFoundRelics")) + .binding(defaults.locations.spidersDen.relics.highlightFoundRelics, + () -> config.locations.spidersDen.relics.highlightFoundRelics, + newValue -> config.locations.spidersDen.relics.highlightFoundRelics = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .build()) + .build(); + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/MessageFilterCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/MessageFilterCategory.java new file mode 100644 index 00000000..d73a38ba --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/MessageFilterCategory.java @@ -0,0 +1,99 @@ +package me.xmrvizzy.skyblocker.config.categories; + +import dev.isxander.yacl3.api.ConfigCategory; +import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.OptionDescription; +import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; +import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.config.ConfigModel; +import me.xmrvizzy.skyblocker.config.ConfigUtils; +import net.minecraft.text.Text; + +public class MessageFilterCategory { + + public static ConfigCategory create(ConfigModel defaults, ConfigModel config) { + return ConfigCategory.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.category.messages")) + + //Uncategorized Options + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideAbility")) + .binding(defaults.messages.hideAbility, + () -> config.messages.hideAbility, + newValue -> config.messages.hideAbility = newValue) + .controller(ConfigUtils::createCyclingListController4Enum) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideHeal")) + .binding(defaults.messages.hideHeal, + () -> config.messages.hideHeal, + newValue -> config.messages.hideHeal = newValue) + .controller(ConfigUtils::createCyclingListController4Enum) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideAOTE")) + .binding(defaults.messages.hideAOTE, + () -> config.messages.hideAOTE, + newValue -> config.messages.hideAOTE = newValue) + .controller(ConfigUtils::createCyclingListController4Enum) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideImplosion")) + .binding(defaults.messages.hideImplosion, + () -> config.messages.hideImplosion, + newValue -> config.messages.hideImplosion = newValue) + .controller(ConfigUtils::createCyclingListController4Enum) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideMoltenWave")) + .binding(defaults.messages.hideMoltenWave, + () -> config.messages.hideMoltenWave, + newValue -> config.messages.hideMoltenWave = newValue) + .controller(ConfigUtils::createCyclingListController4Enum) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideAds")) + .binding(defaults.messages.hideAds, + () -> config.messages.hideAds, + newValue -> config.messages.hideAds = newValue) + .controller(ConfigUtils::createCyclingListController4Enum) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideTeleportPad")) + .binding(defaults.messages.hideTeleportPad, + () -> config.messages.hideTeleportPad, + newValue -> config.messages.hideTeleportPad = newValue) + .controller(ConfigUtils::createCyclingListController4Enum) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideCombo")) + .binding(defaults.messages.hideCombo, + () -> config.messages.hideCombo, + newValue -> config.messages.hideCombo = newValue) + .controller(ConfigUtils::createCyclingListController4Enum) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideAutopet")) + .binding(defaults.messages.hideAutopet, + () -> config.messages.hideAutopet, + newValue -> config.messages.hideAutopet = newValue) + .controller(ConfigUtils::createCyclingListController4Enum) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideShowOff")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.messages.hideShowOff.@Tooltip"))) + .binding(defaults.messages.hideShowOff, + () -> config.messages.hideShowOff, + newValue -> config.messages.hideShowOff = newValue) + .controller(ConfigUtils::createCyclingListController4Enum) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideMana")) + .binding(defaults.messages.hideMana, + () -> config.messages.hideMana, + newValue -> config.messages.hideMana = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .build(); + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/QuickNavigationCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/QuickNavigationCategory.java new file mode 100644 index 00000000..831efa07 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/QuickNavigationCategory.java @@ -0,0 +1,596 @@ +package me.xmrvizzy.skyblocker.config.categories; + +import dev.isxander.yacl3.api.ConfigCategory; +import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.OptionGroup; +import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; +import dev.isxander.yacl3.api.controller.IntegerFieldControllerBuilder; +import dev.isxander.yacl3.api.controller.StringControllerBuilder; +import me.xmrvizzy.skyblocker.config.ConfigModel; +import net.minecraft.text.Text; + +public class QuickNavigationCategory { + + public static ConfigCategory create(ConfigModel defaults, ConfigModel config) { + return ConfigCategory.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.category.quickNav")) + + //Button 1 + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.render")) + .binding(defaults.quickNav.button1.render, + () -> config.quickNav.button1.render, + newValue -> config.quickNav.button1.render = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.itemName")) + .binding(defaults.quickNav.button1.item.itemName, + () -> config.quickNav.button1.item.itemName, + newValue -> config.quickNav.button1.item.itemName = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.count")) + .binding(defaults.quickNav.button1.item.count, + () -> config.quickNav.button1.item.count, + newValue -> config.quickNav.button1.item.count = newValue) + .controller(opt -> IntegerFieldControllerBuilder.create(opt).range(1, 64)) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.nbt")) + .binding(defaults.quickNav.button1.item.nbt, + () -> config.quickNav.button1.item.nbt, + newValue -> config.quickNav.button1.item.nbt = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.uiTitle")) + .binding(defaults.quickNav.button1.uiTitle, + () -> config.quickNav.button1.uiTitle, + newValue -> config.quickNav.button1.uiTitle = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.clickEvent")) + .binding(defaults.quickNav.button1.clickEvent, + () -> config.quickNav.button1.clickEvent, + newValue -> config.quickNav.button1.clickEvent = newValue) + .controller(StringControllerBuilder::create) + .build()) + .build()) + + //Button 2 + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button2")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.render")) + .binding(defaults.quickNav.button2.render, + () -> config.quickNav.button2.render, + newValue -> config.quickNav.button2.render = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.itemName")) + .binding(defaults.quickNav.button2.item.itemName, + () -> config.quickNav.button2.item.itemName, + newValue -> config.quickNav.button2.item.itemName = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.count")) + .binding(defaults.quickNav.button2.item.count, + () -> config.quickNav.button2.item.count, + newValue -> config.quickNav.button2.item.count = newValue) + .controller(opt -> IntegerFieldControllerBuilder.create(opt).range(1, 64)) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.nbt")) + .binding(defaults.quickNav.button2.item.nbt, + () -> config.quickNav.button2.item.nbt, + newValue -> config.quickNav.button2.item.nbt = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.uiTitle")) + .binding(defaults.quickNav.button2.uiTitle, + () -> config.quickNav.button2.uiTitle, + newValue -> config.quickNav.button2.uiTitle = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.clickEvent")) + .binding(defaults.quickNav.button2.clickEvent, + () -> config.quickNav.button2.clickEvent, + newValue -> config.quickNav.button2.clickEvent = newValue) + .controller(StringControllerBuilder::create) + .build()) + .build()) + + //Button 3 + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button3")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.render")) + .binding(defaults.quickNav.button3.render, + () -> config.quickNav.button3.render, + newValue -> config.quickNav.button3.render = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.itemName")) + .binding(defaults.quickNav.button3.item.itemName, + () -> config.quickNav.button3.item.itemName, + newValue -> config.quickNav.button3.item.itemName = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.count")) + .binding(defaults.quickNav.button3.item.count, + () -> config.quickNav.button3.item.count, + newValue -> config.quickNav.button3.item.count = newValue) + .controller(opt -> IntegerFieldControllerBuilder.create(opt).range(1, 64)) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.nbt")) + .binding(defaults.quickNav.button3.item.nbt, + () -> config.quickNav.button3.item.nbt, + newValue -> config.quickNav.button3.item.nbt = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.uiTitle")) + .binding(defaults.quickNav.button3.uiTitle, + () -> config.quickNav.button3.uiTitle, + newValue -> config.quickNav.button3.uiTitle = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.clickEvent")) + .binding(defaults.quickNav.button3.clickEvent, + () -> config.quickNav.button3.clickEvent, + newValue -> config.quickNav.button3.clickEvent = newValue) + .controller(StringControllerBuilder::create) + .build()) + .build()) + + //Button 4 + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button4")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.render")) + .binding(defaults.quickNav.button4.render, + () -> config.quickNav.button4.render, + newValue -> config.quickNav.button4.render = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.itemName")) + .binding(defaults.quickNav.button4.item.itemName, + () -> config.quickNav.button4.item.itemName, + newValue -> config.quickNav.button4.item.itemName = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.count")) + .binding(defaults.quickNav.button4.item.count, + () -> config.quickNav.button4.item.count, + newValue -> config.quickNav.button4.item.count = newValue) + .controller(opt -> IntegerFieldControllerBuilder.create(opt).range(1, 64)) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.nbt")) + .binding(defaults.quickNav.button4.item.nbt, + () -> config.quickNav.button4.item.nbt, + newValue -> config.quickNav.button4.item.nbt = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.uiTitle")) + .binding(defaults.quickNav.button4.uiTitle, + () -> config.quickNav.button4.uiTitle, + newValue -> config.quickNav.button4.uiTitle = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.clickEvent")) + .binding(defaults.quickNav.button4.clickEvent, + () -> config.quickNav.button4.clickEvent, + newValue -> config.quickNav.button4.clickEvent = newValue) + .controller(StringControllerBuilder::create) + .build()) + .build()) + + //Button 5 + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button5")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.render")) + .binding(defaults.quickNav.button5.render, + () -> config.quickNav.button5.render, + newValue -> config.quickNav.button5.render = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.itemName")) + .binding(defaults.quickNav.button5.item.itemName, + () -> config.quickNav.button5.item.itemName, + newValue -> config.quickNav.button5.item.itemName = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.count")) + .binding(defaults.quickNav.button5.item.count, + () -> config.quickNav.button5.item.count, + newValue -> config.quickNav.button5.item.count = newValue) + .controller(opt -> IntegerFieldControllerBuilder.create(opt).range(1, 64)) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.nbt")) + .binding(defaults.quickNav.button5.item.nbt, + () -> config.quickNav.button5.item.nbt, + newValue -> config.quickNav.button5.item.nbt = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.uiTitle")) + .binding(defaults.quickNav.button5.uiTitle, + () -> config.quickNav.button5.uiTitle, + newValue -> config.quickNav.button5.uiTitle = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.clickEvent")) + .binding(defaults.quickNav.button5.clickEvent, + () -> config.quickNav.button5.clickEvent, + newValue -> config.quickNav.button5.clickEvent = newValue) + .controller(StringControllerBuilder::create) + .build()) + .build()) + + //Button 6 + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button6")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.render")) + .binding(defaults.quickNav.button6.render, + () -> config.quickNav.button6.render, + newValue -> config.quickNav.button6.render = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.itemName")) + .binding(defaults.quickNav.button6.item.itemName, + () -> config.quickNav.button6.item.itemName, + newValue -> config.quickNav.button6.item.itemName = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.count")) + .binding(defaults.quickNav.button6.item.count, + () -> config.quickNav.button6.item.count, + newValue -> config.quickNav.button6.item.count = newValue) + .controller(opt -> IntegerFieldControllerBuilder.create(opt).range(1, 64)) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.nbt")) + .binding(defaults.quickNav.button6.item.nbt, + () -> config.quickNav.button6.item.nbt, + newValue -> config.quickNav.button6.item.nbt = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.uiTitle")) + .binding(defaults.quickNav.button6.uiTitle, + () -> config.quickNav.button6.uiTitle, + newValue -> config.quickNav.button6.uiTitle = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.clickEvent")) + .binding(defaults.quickNav.button6.clickEvent, + () -> config.quickNav.button6.clickEvent, + newValue -> config.quickNav.button6.clickEvent = newValue) + .controller(StringControllerBuilder::create) + .build()) + .build()) + + //Button 7 + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button7")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.render")) + .binding(defaults.quickNav.button7.render, + () -> config.quickNav.button7.render, + newValue -> config.quickNav.button7.render = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.itemName")) + .binding(defaults.quickNav.button7.item.itemName, + () -> config.quickNav.button7.item.itemName, + newValue -> config.quickNav.button7.item.itemName = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.count")) + .binding(defaults.quickNav.button7.item.count, + () -> config.quickNav.button7.item.count, + newValue -> config.quickNav.button7.item.count = newValue) + .controller(opt -> IntegerFieldControllerBuilder.create(opt).range(1, 64)) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.nbt")) + .binding(defaults.quickNav.button7.item.nbt, + () -> config.quickNav.button7.item.nbt, + newValue -> config.quickNav.button7.item.nbt = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.uiTitle")) + .binding(defaults.quickNav.button7.uiTitle, + () -> config.quickNav.button7.uiTitle, + newValue -> config.quickNav.button7.uiTitle = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.clickEvent")) + .binding(defaults.quickNav.button7.clickEvent, + () -> config.quickNav.button7.clickEvent, + newValue -> config.quickNav.button7.clickEvent = newValue) + .controller(StringControllerBuilder::create) + .build()) + .build()) + + //Button 8 + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button8")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.render")) + .binding(defaults.quickNav.button8.render, + () -> config.quickNav.button8.render, + newValue -> config.quickNav.button8.render = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.itemName")) + .binding(defaults.quickNav.button8.item.itemName, + () -> config.quickNav.button8.item.itemName, + newValue -> config.quickNav.button8.item.itemName = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.count")) + .binding(defaults.quickNav.button8.item.count, + () -> config.quickNav.button8.item.count, + newValue -> config.quickNav.button8.item.count = newValue) + .controller(opt -> IntegerFieldControllerBuilder.create(opt).range(1, 64)) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.nbt")) + .binding(defaults.quickNav.button8.item.nbt, + () -> config.quickNav.button8.item.nbt, + newValue -> config.quickNav.button8.item.nbt = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.uiTitle")) + .binding(defaults.quickNav.button8.uiTitle, + () -> config.quickNav.button8.uiTitle, + newValue -> config.quickNav.button8.uiTitle = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.clickEvent")) + .binding(defaults.quickNav.button8.clickEvent, + () -> config.quickNav.button8.clickEvent, + newValue -> config.quickNav.button8.clickEvent = newValue) + .controller(StringControllerBuilder::create) + .build()) + .build()) + + //Button 9 + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button9")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.render")) + .binding(defaults.quickNav.button9.render, + () -> config.quickNav.button9.render, + newValue -> config.quickNav.button9.render = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.itemName")) + .binding(defaults.quickNav.button9.item.itemName, + () -> config.quickNav.button9.item.itemName, + newValue -> config.quickNav.button9.item.itemName = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.count")) + .binding(defaults.quickNav.button9.item.count, + () -> config.quickNav.button9.item.count, + newValue -> config.quickNav.button9.item.count = newValue) + .controller(opt -> IntegerFieldControllerBuilder.create(opt).range(1, 64)) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.nbt")) + .binding(defaults.quickNav.button9.item.nbt, + () -> config.quickNav.button9.item.nbt, + newValue -> config.quickNav.button9.item.nbt = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.uiTitle")) + .binding(defaults.quickNav.button9.uiTitle, + () -> config.quickNav.button9.uiTitle, + newValue -> config.quickNav.button9.uiTitle = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.clickEvent")) + .binding(defaults.quickNav.button9.clickEvent, + () -> config.quickNav.button9.clickEvent, + newValue -> config.quickNav.button9.clickEvent = newValue) + .controller(StringControllerBuilder::create) + .build()) + .build()) + + //Button 10 + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button10")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.render")) + .binding(defaults.quickNav.button10.render, + () -> config.quickNav.button10.render, + newValue -> config.quickNav.button10.render = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.itemName")) + .binding(defaults.quickNav.button10.item.itemName, + () -> config.quickNav.button10.item.itemName, + newValue -> config.quickNav.button10.item.itemName = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.count")) + .binding(defaults.quickNav.button10.item.count, + () -> config.quickNav.button10.item.count, + newValue -> config.quickNav.button10.item.count = newValue) + .controller(opt -> IntegerFieldControllerBuilder.create(opt).range(1, 64)) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.nbt")) + .binding(defaults.quickNav.button10.item.nbt, + () -> config.quickNav.button10.item.nbt, + newValue -> config.quickNav.button10.item.nbt = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.uiTitle")) + .binding(defaults.quickNav.button10.uiTitle, + () -> config.quickNav.button10.uiTitle, + newValue -> config.quickNav.button10.uiTitle = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.clickEvent")) + .binding(defaults.quickNav.button10.clickEvent, + () -> config.quickNav.button10.clickEvent, + newValue -> config.quickNav.button10.clickEvent = newValue) + .controller(StringControllerBuilder::create) + .build()) + .build()) + + //Button 11 + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button11")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.render")) + .binding(defaults.quickNav.button11.render, + () -> config.quickNav.button11.render, + newValue -> config.quickNav.button11.render = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.itemName")) + .binding(defaults.quickNav.button11.item.itemName, + () -> config.quickNav.button11.item.itemName, + newValue -> config.quickNav.button11.item.itemName = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.count")) + .binding(defaults.quickNav.button11.item.count, + () -> config.quickNav.button11.item.count, + newValue -> config.quickNav.button11.item.count = newValue) + .controller(opt -> IntegerFieldControllerBuilder.create(opt).range(1, 64)) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.nbt")) + .binding(defaults.quickNav.button11.item.nbt, + () -> config.quickNav.button11.item.nbt, + newValue -> config.quickNav.button11.item.nbt = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.uiTitle")) + .binding(defaults.quickNav.button11.uiTitle, + () -> config.quickNav.button11.uiTitle, + newValue -> config.quickNav.button11.uiTitle = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.clickEvent")) + .binding(defaults.quickNav.button11.clickEvent, + () -> config.quickNav.button11.clickEvent, + newValue -> config.quickNav.button11.clickEvent = newValue) + .controller(StringControllerBuilder::create) + .build()) + .build()) + + //Button 12 + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button12")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.render")) + .binding(defaults.quickNav.button12.render, + () -> config.quickNav.button12.render, + newValue -> config.quickNav.button12.render = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.itemName")) + .binding(defaults.quickNav.button12.item.itemName, + () -> config.quickNav.button12.item.itemName, + newValue -> config.quickNav.button12.item.itemName = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.count")) + .binding(defaults.quickNav.button12.item.count, + () -> config.quickNav.button12.item.count, + newValue -> config.quickNav.button12.item.count = newValue) + .controller(opt -> IntegerFieldControllerBuilder.create(opt).range(1, 64)) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.nbt")) + .binding(defaults.quickNav.button12.item.nbt, + () -> config.quickNav.button12.item.nbt, + newValue -> config.quickNav.button12.item.nbt = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.uiTitle")) + .binding(defaults.quickNav.button12.uiTitle, + () -> config.quickNav.button12.uiTitle, + newValue -> config.quickNav.button12.uiTitle = newValue) + .controller(StringControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.clickEvent")) + .binding(defaults.quickNav.button12.clickEvent, + () -> config.quickNav.button12.clickEvent, + newValue -> config.quickNav.button12.clickEvent = newValue) + .controller(StringControllerBuilder::create) + .build()) + .build()) + + .build(); + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/SlayersCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/SlayersCategory.java new file mode 100644 index 00000000..f7f1886b --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/SlayersCategory.java @@ -0,0 +1,116 @@ +package me.xmrvizzy.skyblocker.config.categories; + +import dev.isxander.yacl3.api.ConfigCategory; +import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.OptionDescription; +import dev.isxander.yacl3.api.OptionGroup; +import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; +import dev.isxander.yacl3.api.controller.FloatFieldControllerBuilder; +import dev.isxander.yacl3.api.controller.IntegerFieldControllerBuilder; +import dev.isxander.yacl3.api.controller.IntegerSliderControllerBuilder; +import me.xmrvizzy.skyblocker.config.ConfigModel; +import net.minecraft.text.Text; + +public class SlayersCategory { + + public static ConfigCategory create(ConfigModel defaults, ConfigModel config) { + return ConfigCategory.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.category.slayer")) + + //Vampire Slayer + .group(OptionGroup.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.vampireSlayer")) + .collapsed(true) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.vampireSlayer.enableEffigyWaypoints")) + .binding(defaults.slayer.vampireSlayer.enableEffigyWaypoints, + () -> config.slayer.vampireSlayer.enableEffigyWaypoints, + newValue -> config.slayer.vampireSlayer.enableEffigyWaypoints = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.vampireSlayer.compactEffigyWaypoints")) + .binding(defaults.slayer.vampireSlayer.compactEffigyWaypoints, + () -> config.slayer.vampireSlayer.compactEffigyWaypoints, + newValue -> config.slayer.vampireSlayer.compactEffigyWaypoints = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.vampireSlayer.effigyUpdateFrequency")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.slayer.vampireSlayer.effigyUpdateFrequency.@Tooltip"))) + .binding(defaults.slayer.vampireSlayer.effigyUpdateFrequency, + () -> config.slayer.vampireSlayer.effigyUpdateFrequency, + newValue -> config.slayer.vampireSlayer.effigyUpdateFrequency = newValue) + .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(1, 10).step(1)) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.vampireSlayer.enableHolyIceIndicator")) + .binding(defaults.slayer.vampireSlayer.enableHolyIceIndicator, + () -> config.slayer.vampireSlayer.enableHolyIceIndicator, + newValue -> config.slayer.vampireSlayer.enableHolyIceIndicator = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.vampireSlayer.holyIceIndicatorTickDelay")) + .binding(defaults.slayer.vampireSlayer.holyIceIndicatorTickDelay, + () -> config.slayer.vampireSlayer.holyIceIndicatorTickDelay, + newValue -> config.slayer.vampireSlayer.holyIceIndicatorTickDelay = newValue) + .controller(IntegerFieldControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.vampireSlayer.holyIceUpdateFrequency")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.slayer.vampireSlayer.holyIceUpdateFrequency.@Tooltip"))) + .binding(defaults.slayer.vampireSlayer.holyIceUpdateFrequency, + () -> config.slayer.vampireSlayer.holyIceUpdateFrequency, + newValue -> config.slayer.vampireSlayer.holyIceUpdateFrequency = newValue) + .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(1, 10).step(1)) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.vampireSlayer.enableHealingMelonIndicator")) + .binding(defaults.slayer.vampireSlayer.enableHealingMelonIndicator, + () -> config.slayer.vampireSlayer.enableHealingMelonIndicator, + newValue -> config.slayer.vampireSlayer.enableHealingMelonIndicator = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.vampireSlayer.healingMelonHealthThreshold")) + .binding(defaults.slayer.vampireSlayer.healingMelonHealthThreshold, + () -> config.slayer.vampireSlayer.healingMelonHealthThreshold, + newValue -> config.slayer.vampireSlayer.healingMelonHealthThreshold = newValue) + .controller(FloatFieldControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.vampireSlayer.enableSteakStakeIndicator")) + .binding(defaults.slayer.vampireSlayer.enableSteakStakeIndicator, + () -> config.slayer.vampireSlayer.enableSteakStakeIndicator, + newValue -> config.slayer.vampireSlayer.enableSteakStakeIndicator = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.vampireSlayer.steakStakeUpdateFrequency")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.slayer.vampireSlayer.steakStakeUpdateFrequency.@Tooltip"))) + .binding(defaults.slayer.vampireSlayer.steakStakeUpdateFrequency, + () -> config.slayer.vampireSlayer.steakStakeUpdateFrequency, + newValue -> config.slayer.vampireSlayer.steakStakeUpdateFrequency = newValue) + .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(1, 10).step(1)) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.vampireSlayer.enableManiaIndicator")) + .binding(defaults.slayer.vampireSlayer.enableManiaIndicator, + () -> config.slayer.vampireSlayer.enableManiaIndicator, + newValue -> config.slayer.vampireSlayer.enableManiaIndicator = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + .option(Option.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.vampireSlayer.maniaUpdateFrequency")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.slayer.vampireSlayer.maniaUpdateFrequency.@Tooltip"))) + .binding(defaults.slayer.vampireSlayer.maniaUpdateFrequency, + () -> config.slayer.vampireSlayer.maniaUpdateFrequency, + newValue -> config.slayer.vampireSlayer.maniaUpdateFrequency = newValue) + .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(1, 10).step(1)) + .build()) + .build()) + + .build(); + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FairySouls.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FairySouls.java index fcd6be7a..1933184a 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FairySouls.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FairySouls.java @@ -7,6 +7,7 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.mojang.brigadier.CommandDispatcher; import me.xmrvizzy.skyblocker.SkyblockerMod; +import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.utils.NEURepo; import me.xmrvizzy.skyblocker.utils.PosUtils; @@ -141,7 +142,7 @@ public class FairySouls { } private static void render(WorldRenderContext context) { - SkyblockerConfig.FairySouls fairySoulsConfig = SkyblockerConfig.get().general.fairySouls; + ConfigModel.FairySouls fairySoulsConfig = SkyblockerConfig.get().general.fairySouls; if (fairySoulsConfig.enableFairySoulsHelper && fairySoulsLoaded.isDone() && fairySouls.containsKey(Utils.getLocationRaw())) { for (BlockPos fairySoulPos : fairySouls.get(Utils.getLocationRaw())) { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/HotbarSlotLock.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/HotbarSlotLock.java index e9b2bfa3..9f38fe35 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/HotbarSlotLock.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/HotbarSlotLock.java @@ -35,7 +35,7 @@ public class HotbarSlotLock { int selected = player.getInventory().selectedSlot; if (!isLocked(player.getInventory().selectedSlot)) lockedSlots.add(selected); else lockedSlots.remove(Integer.valueOf(selected)); - AutoConfig.getConfigHolder(SkyblockerConfig.class).save(); + SkyblockerConfig.save(); } } } \ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonChestProfit.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonChestProfit.java index b223e1a2..f6fd5909 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonChestProfit.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonChestProfit.java @@ -2,6 +2,7 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; import com.google.gson.JsonObject; import it.unimi.dsi.fastutil.ints.IntBooleanPair; +import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.mixin.accessor.ScreenAccessor; import me.xmrvizzy.skyblocker.skyblock.item.PriceInfoTooltip; @@ -158,7 +159,7 @@ public class DungeonChestProfit { } private static Text getProfitText(int profit, boolean hasIncompleteData) { - SkyblockerConfig.DungeonChestProfit config = SkyblockerConfig.get().locations.dungeons.dungeonChestProfit; + ConfigModel.DungeonChestProfit config = SkyblockerConfig.get().locations.dungeons.dungeonChestProfit; return getProfitText(profit, hasIncompleteData, config.neutralThreshold, config.neutralColor.formatting, config.profitColor.formatting, config.lossColor.formatting, config.incompleteColor.formatting); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java index d4fe812b..9f4cc6b7 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java @@ -13,9 +13,15 @@ public class DungeonMapConfigScreen extends Screen { private int hudX = SkyblockerConfig.get().locations.dungeons.mapX; private int hudY = SkyblockerConfig.get().locations.dungeons.mapY; - + private final Screen parent; + protected DungeonMapConfigScreen() { + this(null); + } + + public DungeonMapConfigScreen(Screen parent) { super(Text.literal("Dungeon Map Config")); + this.parent = parent; } @Override @@ -51,7 +57,14 @@ public class DungeonMapConfigScreen extends Screen { public void close() { SkyblockerConfig.get().locations.dungeons.mapX = hudX; SkyblockerConfig.get().locations.dungeons.mapY = hudY; - AutoConfig.getConfigHolder(SkyblockerConfig.class).save(); + SkyblockerConfig.save(); + + if (parent != null) { + this.client.setScreen(parent); + + return; + } + super.close(); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java index 3fdd683c..13ea400a 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java @@ -1,6 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon.secrets; import com.google.gson.JsonObject; + +import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.utils.render.RenderHelper; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; @@ -91,10 +93,10 @@ public class SecretWaypoint { FAIRYSOUL(secretWaypoints -> secretWaypoints.enableFairySoulWaypoints, 255, 85, 255), STONK(secretWaypoints -> secretWaypoints.enableStonkWaypoints, 146, 52, 235), DEFAULT(secretWaypoints -> secretWaypoints.enableDefaultWaypoints, 190, 255, 252); - private final Predicate enabledPredicate; + private final Predicate enabledPredicate; private final float[] colorComponents; - Category(Predicate enabledPredicate, int... intColorComponents) { + Category(Predicate enabledPredicate, int... intColorComponents) { this.enabledPredicate = enabledPredicate; colorComponents = new float[intColorComponents.length]; for (int i = 0; i < intColorComponents.length; i++) { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java index cde1b236..e8684540 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java @@ -19,9 +19,15 @@ public class DwarvenHudConfigScreen extends Screen { private int hudX = SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.x; private int hudY = SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.y; + private final Screen parent; protected DwarvenHudConfigScreen() { - super(Text.of("Dwarven HUD Config")); + this(null); + } + + public DwarvenHudConfigScreen(Screen parent) { + super(Text.of("Dwarven HUD Config")); + this.parent = parent; } @Override @@ -56,7 +62,14 @@ public class DwarvenHudConfigScreen extends Screen { public void close() { SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.x = hudX; SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.y = hudY; - AutoConfig.getConfigHolder(SkyblockerConfig.class).save(); + SkyblockerConfig.save(); + + if (parent != null) { + this.client.setScreen(parent); + + return; + } + super.close(); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ChronomatronSolver.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ChronomatronSolver.java index d62383be..84ef5698 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ChronomatronSolver.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ChronomatronSolver.java @@ -1,6 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.experiment; import com.google.common.collect.ImmutableMap; + +import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.utils.render.gui.ColorHighlight; import net.minecraft.client.gui.screen.Screen; @@ -51,7 +53,7 @@ public class ChronomatronSolver extends ExperimentSolver { } @Override - protected boolean isEnabled(SkyblockerConfig.Experiments experimentsConfig) { + protected boolean isEnabled(ConfigModel.Experiments experimentsConfig) { return experimentsConfig.enableChronomatronSolver; } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ExperimentSolver.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ExperimentSolver.java index d0e5522d..aaf25577 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ExperimentSolver.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ExperimentSolver.java @@ -1,5 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.experiment; +import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.utils.render.gui.ContainerSolver; import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; @@ -39,7 +40,7 @@ public abstract class ExperimentSolver extends ContainerSolver { return isEnabled(SkyblockerConfig.get().general.experiments); } - protected abstract boolean isEnabled(SkyblockerConfig.Experiments experimentsConfig); + protected abstract boolean isEnabled(ConfigModel.Experiments experimentsConfig); @Override protected void start(GenericContainerScreen screen) { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/SuperpairsSolver.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/SuperpairsSolver.java index f329a395..0ac15dfc 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/SuperpairsSolver.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/SuperpairsSolver.java @@ -1,5 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.experiment; +import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.utils.render.gui.ColorHighlight; import net.minecraft.client.gui.screen.Screen; @@ -27,7 +28,7 @@ public class SuperpairsSolver extends ExperimentSolver { } @Override - protected boolean isEnabled(SkyblockerConfig.Experiments experimentsConfig) { + protected boolean isEnabled(ConfigModel.Experiments experimentsConfig) { return experimentsConfig.enableSuperpairsSolver; } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/UltrasequencerSolver.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/UltrasequencerSolver.java index d4d80ee6..6527231f 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/UltrasequencerSolver.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/UltrasequencerSolver.java @@ -1,5 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.experiment; +import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.utils.render.gui.ColorHighlight; import net.minecraft.client.gui.screen.Screen; @@ -27,7 +28,7 @@ public class UltrasequencerSolver extends ExperimentSolver { } @Override - protected boolean isEnabled(SkyblockerConfig.Experiments experimentsConfig) { + protected boolean isEnabled(ConfigModel.Experiments experimentsConfig) { return experimentsConfig.enableUltrasequencerSolver; } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorTrims.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorTrims.java index 6c648da9..97861e93 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorTrims.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorTrims.java @@ -3,6 +3,8 @@ package me.xmrvizzy.skyblocker.skyblock.item; import com.mojang.brigadier.Command; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.suggestion.SuggestionProvider; + +import dev.isxander.yacl3.config.ConfigEntry; import it.unimi.dsi.fastutil.Pair; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; @@ -138,7 +140,7 @@ public class CustomArmorTrims { return Command.SINGLE_SUCCESS; } - public record ArmorTrimId(Identifier material, Identifier pattern) implements Pair { + public record ArmorTrimId(@ConfigEntry Identifier material, @ConfigEntry Identifier pattern) implements Pair { @Override public Identifier left() { return material(); diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java index d20aa0e3..f04e7029 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java @@ -2,6 +2,8 @@ package me.xmrvizzy.skyblocker.skyblock.item; import com.google.gson.Gson; import com.google.gson.JsonObject; + +import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.utils.Http; import me.xmrvizzy.skyblocker.utils.Utils; @@ -146,10 +148,10 @@ public class PriceInfoTooltip { } if (!neuName.isEmpty() && lbinExist) { - SkyblockerConfig.Average type = SkyblockerConfig.get().general.itemTooltip.avg; + ConfigModel.Average type = SkyblockerConfig.get().general.itemTooltip.avg; // "No data" line because of API not keeping old data, it causes NullPointerException - if (type == SkyblockerConfig.Average.ONE_DAY || type == SkyblockerConfig.Average.BOTH) { + if (type == ConfigModel.Average.ONE_DAY || type == ConfigModel.Average.BOTH) { lines.add( Text.literal(String.format("%-19s", "1 Day Avg. Price:")) .formatted(Formatting.GOLD) @@ -159,7 +161,7 @@ public class PriceInfoTooltip { ) ); } - if (type == SkyblockerConfig.Average.THREE_DAY || type == SkyblockerConfig.Average.BOTH) { + if (type == ConfigModel.Average.THREE_DAY || type == ConfigModel.Average.BOTH) { lines.add( Text.literal(String.format("%-19s", "3 Day Avg. Price:")) .formatted(Formatting.GOLD) @@ -362,16 +364,16 @@ public class PriceInfoTooltip { List> futureList = new ArrayList<>(); if (SkyblockerConfig.get().general.itemTooltip.enableAvgBIN) { - SkyblockerConfig.Average type = SkyblockerConfig.get().general.itemTooltip.avg; + ConfigModel.Average type = SkyblockerConfig.get().general.itemTooltip.avg; - if (type == SkyblockerConfig.Average.BOTH || oneDayAvgPricesJson == null || threeDayAvgPricesJson == null || minute % 5 == 0) { + if (type == ConfigModel.Average.BOTH || oneDayAvgPricesJson == null || threeDayAvgPricesJson == null || minute % 5 == 0) { futureList.add(CompletableFuture.runAsync(() -> { oneDayAvgPricesJson = downloadPrices("1 day avg"); threeDayAvgPricesJson = downloadPrices("3 day avg"); })); - } else if (type == SkyblockerConfig.Average.ONE_DAY) { + } else if (type == ConfigModel.Average.ONE_DAY) { futureList.add(CompletableFuture.runAsync(() -> oneDayAvgPricesJson = downloadPrices("1 day avg"))); - } else if (type == SkyblockerConfig.Average.THREE_DAY) { + } else if (type == ConfigModel.Average.THREE_DAY) { futureList.add(CompletableFuture.runAsync(() -> threeDayAvgPricesJson = downloadPrices("3 day avg"))); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java index fb8f438b..833a6917 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java @@ -1,6 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.quicknav; import com.mojang.brigadier.exceptions.CommandSyntaxException; + +import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.utils.Utils; import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; @@ -34,7 +36,7 @@ public class QuickNav { public static List init(String screenTitle) { List buttons = new ArrayList<>(); - SkyblockerConfig.QuickNav data = SkyblockerConfig.get().quickNav; + ConfigModel.QuickNav data = SkyblockerConfig.get().quickNav; try { if (data.button1.render) buttons.add(parseButton(data.button1, screenTitle, 0)); if (data.button2.render) buttons.add(parseButton(data.button2, screenTitle, 1)); @@ -54,8 +56,8 @@ public class QuickNav { return buttons; } - private static QuickNavButton parseButton(SkyblockerConfig.QuickNavItem buttonInfo, String screenTitle, int id) throws CommandSyntaxException { - SkyblockerConfig.ItemData itemData = buttonInfo.item; + private static QuickNavButton parseButton(ConfigModel.QuickNavItem buttonInfo, String screenTitle, int id) throws CommandSyntaxException { + ConfigModel.ItemData itemData = buttonInfo.item; String nbtString = "{id:\"minecraft:" + itemData.itemName.toLowerCase(Locale.ROOT) + "\",Count:1"; if (itemData.nbt.length() > 2) nbtString += "," + itemData.nbt; nbtString += "}"; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/ShortcutsConfigScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/ShortcutsConfigScreen.java index dec23d36..043582c4 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/ShortcutsConfigScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/ShortcutsConfigScreen.java @@ -18,9 +18,15 @@ public class ShortcutsConfigScreen extends Screen { private ButtonWidget buttonDone; private boolean initialized; private double scrollAmount; - + private final Screen parent; + public ShortcutsConfigScreen() { + this(null); + } + + public ShortcutsConfigScreen(Screen parent) { super(Text.translatable("skyblocker.shortcuts.config")); + this.parent = parent; } @Override @@ -89,13 +95,15 @@ public class ShortcutsConfigScreen extends Screen { if (client != null && shortcutsConfigListWidget.hasChanges()) { client.setScreen(new ConfirmScreen(confirmedAction -> { if (confirmedAction) { - super.close(); + this.client.setScreen(parent); + if (parent == null) super.close(); } else { client.setScreen(this); } - }, Text.translatable("text.cloth-config.quit_config"), Text.translatable("text.cloth-config.quit_config_sure"), Text.translatable("text.cloth-config.quit_discard"), ScreenTexts.CANCEL)); + }, Text.translatable("text.skyblocker.quit_config"), Text.translatable("text.skyblocker.quit_config_sure"), Text.translatable("text.skyblocker.quit_discard"), ScreenTexts.CANCEL)); } else { - super.close(); + this.client.setScreen(parent); + if (parent == null) super.close(); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/spidersden/Relics.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/spidersden/Relics.java index 12ce0715..dd420fcf 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/spidersden/Relics.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/spidersden/Relics.java @@ -6,6 +6,7 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.mojang.brigadier.CommandDispatcher; import me.xmrvizzy.skyblocker.SkyblockerMod; +import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.utils.PosUtils; import me.xmrvizzy.skyblocker.utils.Utils; @@ -115,7 +116,7 @@ public class Relics { } private static void render(WorldRenderContext context) { - SkyblockerConfig.Relics config = SkyblockerConfig.get().locations.spidersDen.relics; + ConfigModel.Relics config = SkyblockerConfig.get().locations.spidersDen.relics; if (config.enableRelicsHelper && relicsLoaded.isDone() && Utils.getLocationRaw().equals("combat_1")) { for (BlockPos fairySoulPos : relics) { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java index 31370dc6..068c9c5e 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java @@ -1,5 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; +import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent; @@ -50,7 +51,7 @@ public class PlayerListWidget extends Widget { list.add(PlayerListMgr.getRaw(i)); } - if (SkyblockerConfig.get().general.tabHud.nameSorting == SkyblockerConfig.NameSorting.ALPHABETICAL) { + if (SkyblockerConfig.get().general.tabHud.nameSorting == ConfigModel.NameSorting.ALPHABETICAL) { list.sort(Comparator.comparing(o -> o.getProfile().getName().toLowerCase())); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/discord/DiscordRPCManager.java b/src/main/java/me/xmrvizzy/skyblocker/utils/discord/DiscordRPCManager.java index 58408944..5360741d 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/discord/DiscordRPCManager.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/discord/DiscordRPCManager.java @@ -1,7 +1,6 @@ package me.xmrvizzy.skyblocker.utils.discord; -import me.shedaniel.autoconfig.AutoConfig; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.utils.SkyblockEvents; import me.xmrvizzy.skyblocker.utils.Utils; @@ -41,7 +40,7 @@ public class DiscordRPCManager { // If the custom message is empty, discord will keep the last message, this is can serve as a default if the user doesn't want a custom message if (SkyblockerConfig.get().richPresence.customMessage.isEmpty()) { SkyblockerConfig.get().richPresence.customMessage = "Playing Skyblock"; - AutoConfig.getConfigHolder(SkyblockerConfig.class).save(); + SkyblockerConfig.save(); } if (SkyblockerConfig.get().richPresence.cycleMode) cycleCount = (cycleCount + 1) % 3; initAndUpdatePresence(); diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/TitleContainer.java b/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/TitleContainer.java index 2555572c..5044b814 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/TitleContainer.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/TitleContainer.java @@ -1,5 +1,6 @@ package me.xmrvizzy.skyblocker.utils.render.title; +import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.utils.scheduler.Scheduler; import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; @@ -92,8 +93,8 @@ public class TitleContainer { float scale = 3F * (SkyblockerConfig.get().general.titleContainer.titleContainerScale / 100F); // Grab direction and alignment values - SkyblockerConfig.Direction direction = SkyblockerConfig.get().general.titleContainer.direction; - SkyblockerConfig.Alignment alignment = SkyblockerConfig.get().general.titleContainer.alignment; + ConfigModel.Direction direction = SkyblockerConfig.get().general.titleContainer.direction; + ConfigModel.Alignment alignment = SkyblockerConfig.get().general.titleContainer.alignment; // x/y refer to the starting position for the text // y always starts at yPos float x = 0; @@ -105,8 +106,8 @@ public class TitleContainer { width += textRenderer.getWidth(title.getText()) * scale + 10; } - if (alignment == SkyblockerConfig.Alignment.MIDDLE) { - if (direction == SkyblockerConfig.Direction.HORIZONTAL) { + if (alignment == ConfigModel.Alignment.MIDDLE) { + if (direction == ConfigModel.Direction.HORIZONTAL) { //If middle aligned horizontally, start the xPosition at half of the width to the left. x = xPos - (width / 2); } else { @@ -114,7 +115,7 @@ public class TitleContainer { x = xPos; } } - if (alignment == SkyblockerConfig.Alignment.LEFT || alignment == SkyblockerConfig.Alignment.RIGHT) { + if (alignment == ConfigModel.Alignment.LEFT || alignment == ConfigModel.Alignment.RIGHT) { //If left or right aligned, start at xPos, we will shift each text later x = xPos; } @@ -123,14 +124,14 @@ public class TitleContainer { //Calculate which x the text should use float xToUse; - if (direction == SkyblockerConfig.Direction.HORIZONTAL) { - xToUse = alignment == SkyblockerConfig.Alignment.RIGHT ? + if (direction == ConfigModel.Direction.HORIZONTAL) { + xToUse = alignment == ConfigModel.Alignment.RIGHT ? x - (textRenderer.getWidth(title.getText()) * scale) : //if right aligned we need the text position to be aligned on the right side. x; } else { - xToUse = alignment == SkyblockerConfig.Alignment.MIDDLE ? + xToUse = alignment == ConfigModel.Alignment.MIDDLE ? x - (textRenderer.getWidth(title.getText()) * scale) / 2 : //if middle aligned we need the text position to be aligned in the middle. - alignment == SkyblockerConfig.Alignment.RIGHT ? + alignment == ConfigModel.Alignment.RIGHT ? x - (textRenderer.getWidth(title.getText()) * scale) : //if right aligned we need the text position to be aligned on the right side. x; } @@ -155,13 +156,13 @@ public class TitleContainer { context.getMatrices().pop(); //Calculate the x and y positions for the next title - if (direction == SkyblockerConfig.Direction.HORIZONTAL) { - if (alignment == SkyblockerConfig.Alignment.MIDDLE || alignment == SkyblockerConfig.Alignment.LEFT) { + if (direction == ConfigModel.Direction.HORIZONTAL) { + if (alignment == ConfigModel.Alignment.MIDDLE || alignment == ConfigModel.Alignment.LEFT) { //Move to the right if middle or left aligned x += textRenderer.getWidth(title.getText()) * scale + 10; } - if (alignment == SkyblockerConfig.Alignment.RIGHT) { + if (alignment == ConfigModel.Alignment.RIGHT) { //Move to the left if right aligned x -= textRenderer.getWidth(title.getText()) * scale + 10; } diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/TitleContainerConfigScreen.java b/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/TitleContainerConfigScreen.java index 29f87961..bd5f19f2 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/TitleContainerConfigScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/TitleContainerConfigScreen.java @@ -1,6 +1,7 @@ package me.xmrvizzy.skyblocker.utils.render.title; import me.shedaniel.autoconfig.AutoConfig; +import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.utils.render.RenderHelper; import net.minecraft.client.gui.DrawContext; @@ -30,8 +31,8 @@ public class TitleContainerConfigScreen extends Screen { super.render(context, mouseX, mouseY, delta); renderBackground(context, mouseX, mouseY, delta); TitleContainer.render(context, Set.of(example1, example2, example3), (int) hudX, (int) hudY, delta); - SkyblockerConfig.Direction direction = SkyblockerConfig.get().general.titleContainer.direction; - SkyblockerConfig.Alignment alignment = SkyblockerConfig.get().general.titleContainer.alignment; + ConfigModel.Direction direction = SkyblockerConfig.get().general.titleContainer.direction; + ConfigModel.Alignment alignment = SkyblockerConfig.get().general.titleContainer.alignment; context.drawCenteredTextWithShadow(textRenderer, "Press Q/E to change Alignment: " + alignment, width / 2, textRenderer.fontHeight * 2, Color.WHITE.getRGB()); context.drawCenteredTextWithShadow(textRenderer, "Press R to change Direction: " + direction, width / 2, textRenderer.fontHeight * 3 + 5, Color.WHITE.getRGB()); context.drawCenteredTextWithShadow(textRenderer, "Press +/- to change Scale", width / 2, textRenderer.fontHeight * 4 + 10, Color.WHITE.getRGB()); @@ -50,7 +51,7 @@ public class TitleContainerConfigScreen extends Screen { } private Pair getSelectionBoundingBox() { - SkyblockerConfig.Alignment alignment = SkyblockerConfig.get().general.titleContainer.alignment; + ConfigModel.Alignment alignment = SkyblockerConfig.get().general.titleContainer.alignment; float midWidth = getSelectionWidth() / 2F; float x1 = 0; @@ -76,14 +77,14 @@ public class TitleContainerConfigScreen extends Screen { private float getSelectionHeight() { float scale = (3F * (SkyblockerConfig.get().general.titleContainer.titleContainerScale / 100F)); - return SkyblockerConfig.get().general.titleContainer.direction == SkyblockerConfig.Direction.HORIZONTAL ? + return SkyblockerConfig.get().general.titleContainer.direction == ConfigModel.Direction.HORIZONTAL ? (textRenderer.fontHeight * scale) : (textRenderer.fontHeight + 10F) * 3F * scale; } private float getSelectionWidth() { float scale = (3F * (SkyblockerConfig.get().general.titleContainer.titleContainerScale / 100F)); - return SkyblockerConfig.get().general.titleContainer.direction == SkyblockerConfig.Direction.HORIZONTAL ? + return SkyblockerConfig.get().general.titleContainer.direction == ConfigModel.Direction.HORIZONTAL ? (textRenderer.getWidth("Test1") + 10 + textRenderer.getWidth("Test23") + 10 + textRenderer.getWidth("Testing1234")) * scale : textRenderer.getWidth("Testing1234") * scale; } @@ -123,26 +124,26 @@ public class TitleContainerConfigScreen extends Screen { @Override public boolean keyPressed(int keyCode, int scanCode, int modifiers) { if (keyCode == GLFW.GLFW_KEY_Q) { - SkyblockerConfig.Alignment current = SkyblockerConfig.get().general.titleContainer.alignment; + ConfigModel.Alignment current = SkyblockerConfig.get().general.titleContainer.alignment; SkyblockerConfig.get().general.titleContainer.alignment = switch (current) { - case LEFT -> SkyblockerConfig.Alignment.MIDDLE; - case MIDDLE -> SkyblockerConfig.Alignment.RIGHT; - case RIGHT -> SkyblockerConfig.Alignment.LEFT; + case LEFT -> ConfigModel.Alignment.MIDDLE; + case MIDDLE -> ConfigModel.Alignment.RIGHT; + case RIGHT -> ConfigModel.Alignment.LEFT; }; } if (keyCode == GLFW.GLFW_KEY_E) { - SkyblockerConfig.Alignment current = SkyblockerConfig.get().general.titleContainer.alignment; + ConfigModel.Alignment current = SkyblockerConfig.get().general.titleContainer.alignment; SkyblockerConfig.get().general.titleContainer.alignment = switch (current) { - case LEFT -> SkyblockerConfig.Alignment.RIGHT; - case MIDDLE -> SkyblockerConfig.Alignment.LEFT; - case RIGHT -> SkyblockerConfig.Alignment.MIDDLE; + case LEFT -> ConfigModel.Alignment.RIGHT; + case MIDDLE -> ConfigModel.Alignment.LEFT; + case RIGHT -> ConfigModel.Alignment.MIDDLE; }; } if (keyCode == GLFW.GLFW_KEY_R) { - SkyblockerConfig.Direction current = SkyblockerConfig.get().general.titleContainer.direction; + ConfigModel.Direction current = SkyblockerConfig.get().general.titleContainer.direction; SkyblockerConfig.get().general.titleContainer.direction = switch (current) { - case HORIZONTAL -> SkyblockerConfig.Direction.VERTICAL; - case VERTICAL -> SkyblockerConfig.Direction.HORIZONTAL; + case HORIZONTAL -> ConfigModel.Direction.VERTICAL; + case VERTICAL -> ConfigModel.Direction.HORIZONTAL; }; } if (keyCode == GLFW.GLFW_KEY_EQUAL) { @@ -158,7 +159,7 @@ public class TitleContainerConfigScreen extends Screen { public void close() { SkyblockerConfig.get().general.titleContainer.x = (int) hudX; SkyblockerConfig.get().general.titleContainer.y = (int) hudY; - AutoConfig.getConfigHolder(SkyblockerConfig.class).save(); + SkyblockerConfig.save(); super.close(); } } -- cgit From 7a990e6a87a2b0856c9abab3485e5de321bb6176 Mon Sep 17 00:00:00 2001 From: Aaron <51387595+AzureAaron@users.noreply.github.com> Date: Sun, 24 Sep 2023 00:50:45 -0400 Subject: Add config version --- src/main/java/me/xmrvizzy/skyblocker/config/ConfigModel.java | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/main/java/me/xmrvizzy') diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/ConfigModel.java b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigModel.java index 748b731c..a4b8d1b0 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/ConfigModel.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigModel.java @@ -15,6 +15,9 @@ import net.minecraft.text.Text; import net.minecraft.util.Formatting; public class ConfigModel { + @ConfigEntry + public int version = 1; + @ConfigEntry public General general = new General(); -- cgit From 7ff019278797431a9b9731834463497f1a33d5b6 Mon Sep 17 00:00:00 2001 From: Aaron <51387595+AzureAaron@users.noreply.github.com> Date: Sun, 24 Sep 2023 14:12:29 -0400 Subject: YACL 3.2.0 (+1.20.2 Support) --- build.gradle | 3 ++- gradle.properties | 2 +- src/main/java/me/xmrvizzy/skyblocker/config/ConfigModel.java | 1 + .../java/me/xmrvizzy/skyblocker/config/ConfigSerializer.java | 9 +++++++-- src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java | 2 +- .../java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java | 8 ++++++++ .../me/xmrvizzy/skyblocker/skyblock/item/CustomArmorTrims.java | 1 + src/main/resources/fabric.mod.json | 2 +- 8 files changed, 22 insertions(+), 6 deletions(-) (limited to 'src/main/java/me/xmrvizzy') diff --git a/build.gradle b/build.gradle index 576d544c..8b2140f4 100644 --- a/build.gradle +++ b/build.gradle @@ -31,7 +31,8 @@ repositories { } maven { url "https://repo.codemc.io/repository/maven-public/" } // For Occlusion Culling library maven { url "https://repo.nea.moe/releases" } // For neu repoparser - maven { url "https://oss.sonatype.org/content/repositories/snapshots" } + maven { url "https://oss.sonatype.org/content/repositories/snapshots" } //For YACL + maven { url "https://maven.quiltmc.org/repository/release" } //For YACL maven {url "https://jitpack.io"} } diff --git a/gradle.properties b/gradle.properties index f15f8c90..4e236fb1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,7 +13,7 @@ fabric_api_version=0.89.1+1.20.2 # Dependencies ## YACL (https://github.com/isXander/YetAnotherConfigLib) -yacl_version=3.1.1+1.20 +yacl_version=3.2.0+1.20.2 ## Mod Menu (https://modrinth.com/mod/modmenu/versions) mod_menu_version=8.0.0-beta.2 ## REI (https://modrinth.com/mod/rei/versions?l=fabric) diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/ConfigModel.java b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigModel.java index a4b8d1b0..a8f27a35 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/ConfigModel.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigModel.java @@ -14,6 +14,7 @@ import net.minecraft.client.resource.language.I18n; import net.minecraft.text.Text; import net.minecraft.util.Formatting; +@SuppressWarnings("deprecation") public class ConfigModel { @ConfigEntry public int version = 1; diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/ConfigSerializer.java b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigSerializer.java index 8aaa7d2d..2d63fc76 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/ConfigSerializer.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigSerializer.java @@ -6,18 +6,23 @@ import com.google.gson.FieldNamingPolicy; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import dev.isxander.yacl3.config.GsonConfigInstance.ColorTypeAdapter; +import dev.isxander.yacl3.config.v2.impl.serializer.GsonConfigSerializer; +import net.minecraft.item.Item; import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.Identifier; +/** + * Note: The type hierarchy adapters are copied from YACL's code + */ class ConfigSerializer { static final Gson INSTANCE = new GsonBuilder() .setFieldNamingPolicy(FieldNamingPolicy.IDENTITY) .registerTypeHierarchyAdapter(Text.class, new Text.Serializer()) .registerTypeHierarchyAdapter(Style.class, new Style.Serializer()) .registerTypeHierarchyAdapter(Identifier.class, new Identifier.Serializer()) - .registerTypeHierarchyAdapter(Color.class, new ColorTypeAdapter()) + .registerTypeHierarchyAdapter(Color.class, new GsonConfigSerializer.ColorTypeAdapter()) + .registerTypeHierarchyAdapter(Item.class, new GsonConfigSerializer.ItemTypeAdapter()) .serializeNulls() .setPrettyPrinting() .create(); diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java index 57ea5893..f5605342 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java @@ -10,6 +10,6 @@ public class ConfigUtils { public static > CyclingListControllerBuilder createCyclingListController4Enum(Option opt) { E[] constants = (E[]) opt.binding().defaultValue().getClass().getEnumConstants(); - return CyclingListControllerBuilder.create(opt).values(constants).valueFormatter(c -> Text.of(c.toString())); + return CyclingListControllerBuilder.create(opt).values(constants).formatValue(formatter -> Text.of(formatter.toString())); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index 12007671..9020d7a0 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -23,12 +23,20 @@ import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.gui.screen.Screen; import net.minecraft.text.Text; +@SuppressWarnings("deprecation") public class SkyblockerConfig { private static final Path PATH = FabricLoader.getInstance().getConfigDir().resolve("skyblocker.json"); private static final GsonConfigInstance INSTANCE = GsonConfigInstance.createBuilder(ConfigModel.class) .setPath(PATH) .overrideGsonBuilder(ConfigSerializer.INSTANCE) .build(); + /*private static final ConfigClassHandler HANDLER = ConfigClassHandler.createBuilder(ConfigModel.class) + .serializer(config -> GsonConfigSerializerBuilder.create(config) + .setPath(PATH) + .setJson5(false) + .overrideGsonBuilder(ConfigSerializer.INSTANCE) + .build()) + .build();*/ public static ConfigModel get() { return INSTANCE.getConfig(); diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorTrims.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorTrims.java index 97861e93..443ad509 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorTrims.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorTrims.java @@ -140,6 +140,7 @@ public class CustomArmorTrims { return Command.SINGLE_SUCCESS; } + @SuppressWarnings("deprecation") public record ArmorTrimId(@ConfigEntry Identifier material, @ConfigEntry Identifier pattern) implements Pair { @Override public Identifier left() { diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 5ccf35c3..0920d7d7 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -38,7 +38,7 @@ "depends": { "fabricloader": ">=0.14.22", "fabric-api": ">=0.89.1+1.20.2", - "yet_another_config_lib_v3": ">=3.1.0+1.20", + "yet_another_config_lib_v3": ">=3.2.0+1.20.2", "minecraft": "~1.20.2" }, "conflicts": { -- cgit From 04f97400a0216d7fdd1154b8c8fa64ac65df63cb Mon Sep 17 00:00:00 2001 From: Aaron <51387595+AzureAaron@users.noreply.github.com> Date: Tue, 26 Sep 2023 12:49:48 -0400 Subject: Functionality Tweaks --- .../skyblocker/config/categories/GeneralCategory.java | 6 ++++++ .../skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java | 10 +--------- .../skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java | 9 +-------- .../skyblocker/skyblock/shortcut/ShortcutsConfigScreen.java | 4 +--- .../utils/render/title/TitleContainerConfigScreen.java | 13 +++++++++---- src/main/resources/assets/skyblocker/lang/en_us.json | 1 + 6 files changed, 19 insertions(+), 24 deletions(-) (limited to 'src/main/java/me/xmrvizzy') diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/GeneralCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/GeneralCategory.java index aecf9374..1019703c 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/GeneralCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/GeneralCategory.java @@ -12,6 +12,7 @@ import dev.isxander.yacl3.api.controller.IntegerSliderControllerBuilder; import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.ConfigUtils; import me.xmrvizzy.skyblocker.skyblock.shortcut.ShortcutsConfigScreen; +import me.xmrvizzy.skyblocker.utils.render.title.TitleContainerConfigScreen; import net.minecraft.client.MinecraftClient; import net.minecraft.text.Text; @@ -424,6 +425,11 @@ public class GeneralCategory { newValue -> config.general.titleContainer.alignment = newValue) .controller(ConfigUtils::createCyclingListController4Enum) .build()) + .option(ButtonOption.createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.titleContainer.config")) + .text(Text.translatable("text.skyblocker.open")) + .action((screen, opt) -> MinecraftClient.getInstance().setScreen(new TitleContainerConfigScreen(screen))) + .build()) .build()) //Teleport Overlays diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java index 9f4cc6b7..88a9070e 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java @@ -1,6 +1,5 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; -import me.shedaniel.autoconfig.AutoConfig; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.utils.render.RenderHelper; import net.minecraft.client.gui.DrawContext; @@ -58,13 +57,6 @@ public class DungeonMapConfigScreen extends Screen { SkyblockerConfig.get().locations.dungeons.mapX = hudX; SkyblockerConfig.get().locations.dungeons.mapY = hudY; SkyblockerConfig.save(); - - if (parent != null) { - this.client.setScreen(parent); - - return; - } - - super.close(); + this.client.setScreen(parent); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java index e8684540..ee7c71a2 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java @@ -63,13 +63,6 @@ public class DwarvenHudConfigScreen extends Screen { SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.x = hudX; SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.y = hudY; SkyblockerConfig.save(); - - if (parent != null) { - this.client.setScreen(parent); - - return; - } - - super.close(); + client.setScreen(parent); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/ShortcutsConfigScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/ShortcutsConfigScreen.java index 043582c4..d9fe850b 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/ShortcutsConfigScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/ShortcutsConfigScreen.java @@ -95,15 +95,13 @@ public class ShortcutsConfigScreen extends Screen { if (client != null && shortcutsConfigListWidget.hasChanges()) { client.setScreen(new ConfirmScreen(confirmedAction -> { if (confirmedAction) { - this.client.setScreen(parent); - if (parent == null) super.close(); + this.client.setScreen(parent); } else { client.setScreen(this); } }, Text.translatable("text.skyblocker.quit_config"), Text.translatable("text.skyblocker.quit_config_sure"), Text.translatable("text.skyblocker.quit_discard"), ScreenTexts.CANCEL)); } else { this.client.setScreen(parent); - if (parent == null) super.close(); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/TitleContainerConfigScreen.java b/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/TitleContainerConfigScreen.java index bd5f19f2..d8e3b43c 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/TitleContainerConfigScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/TitleContainerConfigScreen.java @@ -1,6 +1,5 @@ package me.xmrvizzy.skyblocker.utils.render.title; -import me.shedaniel.autoconfig.AutoConfig; import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.utils.render.RenderHelper; @@ -21,9 +20,15 @@ public class TitleContainerConfigScreen extends Screen { private final Title example3 = new Title(Text.literal("Testing1234").formatted(Formatting.DARK_GREEN)); private float hudX = SkyblockerConfig.get().general.titleContainer.x; private float hudY = SkyblockerConfig.get().general.titleContainer.y; - + private final Screen parent; + protected TitleContainerConfigScreen() { - super(Text.of("Title Container HUD Config")); + this(null); + } + + public TitleContainerConfigScreen(Screen parent) { + super(Text.of("Title Container HUD Config")); + this.parent = parent; } @Override @@ -160,6 +165,6 @@ public class TitleContainerConfigScreen extends Screen { SkyblockerConfig.get().general.titleContainer.x = (int) hudX; SkyblockerConfig.get().general.titleContainer.y = (int) hudY; SkyblockerConfig.save(); - super.close(); + this.client.setScreen(parent); } } diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index 7156bc62..fe246fe6 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -91,6 +91,7 @@ "text.autoconfig.skyblocker.option.general.titleContainer.y": "Title Container Y Position", "text.autoconfig.skyblocker.option.general.titleContainer.direction": "Title Container Orientation", "text.autoconfig.skyblocker.option.general.titleContainer.alignment": "Title Container Horizontal Alignment", + "text.autoconfig.skyblocker.option.general.titleContainer.config": "Title Container Placement Config...", "text.autoconfig.skyblocker.option.general.teleportOverlay": "Teleport Overlay", "text.autoconfig.skyblocker.option.general.teleportOverlay.enableTeleportOverlays": "Enable Teleport Overlays", "text.autoconfig.skyblocker.option.general.teleportOverlay.enableWeirdTransmission": "Enable Weird Transmission Overlay", -- cgit From 84aedfe464bc648cbb18b4f2a7eaeb695091b2b5 Mon Sep 17 00:00:00 2001 From: Aaron <51387595+AzureAaron@users.noreply.github.com> Date: Tue, 26 Sep 2023 12:58:40 -0400 Subject: Rename Config Files --- .../java/me/xmrvizzy/skyblocker/SkyblockerMod.java | 4 +- .../compatibility/modmenu/ModMenuEntry.java | 4 +- .../me/xmrvizzy/skyblocker/config/ConfigModel.java | 809 ------------------- .../skyblocker/config/SkyblockerConfig.java | 859 +++++++++++++++++++-- .../skyblocker/config/SkyblockerConfigManager.java | 88 +++ .../config/categories/DiscordRPCCategory.java | 6 +- .../config/categories/DungeonsCategory.java | 6 +- .../config/categories/DwarvenMinesCategory.java | 6 +- .../config/categories/GeneralCategory.java | 20 +- .../config/categories/LocationsCategory.java | 4 +- .../config/categories/MessageFilterCategory.java | 4 +- .../config/categories/QuickNavigationCategory.java | 4 +- .../config/categories/SlayersCategory.java | 4 +- .../mixin/AbstractInventoryScreenMixin.java | 4 +- .../xmrvizzy/skyblocker/mixin/ArmorTrimMixin.java | 4 +- .../skyblocker/mixin/DrawContextMixin.java | 6 +- .../skyblocker/mixin/DyeableItemMixin.java | 4 +- .../skyblocker/mixin/FarmlandBlockMixin.java | 4 +- .../skyblocker/mixin/HandledScreenMixin.java | 8 +- .../xmrvizzy/skyblocker/mixin/InGameHudMixin.java | 10 +- .../skyblocker/mixin/InventoryScreenMixin.java | 4 +- .../xmrvizzy/skyblocker/mixin/ItemStackMixin.java | 4 +- .../skyblocker/mixin/PlayerListHudMixin.java | 6 +- .../skyblocker/mixin/WorldRendererMixin.java | 4 +- .../xmrvizzy/skyblocker/skyblock/FairySouls.java | 4 +- .../skyblocker/skyblock/FancyStatusBars.java | 12 +- .../skyblocker/skyblock/FishingHelper.java | 4 +- .../skyblocker/skyblock/HotbarSlotLock.java | 8 +- .../skyblocker/skyblock/QuiverWarning.java | 8 +- .../skyblocker/skyblock/StatusBarTracker.java | 6 +- .../skyblocker/skyblock/TeleportOverlay.java | 18 +- .../skyblocker/skyblock/barn/HungryHiker.java | 4 +- .../skyblocker/skyblock/barn/TreasureHunter.java | 4 +- .../skyblocker/skyblock/dungeon/CroesusHelper.java | 4 +- .../skyblocker/skyblock/dungeon/DungeonBlaze.java | 4 +- .../skyblock/dungeon/DungeonChestProfit.java | 10 +- .../skyblocker/skyblock/dungeon/DungeonMap.java | 10 +- .../skyblock/dungeon/DungeonMapConfigScreen.java | 14 +- .../skyblocker/skyblock/dungeon/LividColor.java | 10 +- .../skyblocker/skyblock/dungeon/OldLever.java | 4 +- .../skyblocker/skyblock/dungeon/Reparty.java | 4 +- .../skyblocker/skyblock/dungeon/ThreeWeirdos.java | 4 +- .../skyblocker/skyblock/dungeon/TicTacToe.java | 4 +- .../skyblocker/skyblock/dungeon/Trivia.java | 4 +- .../skyblock/dungeon/secrets/DungeonSecrets.java | 10 +- .../skyblock/dungeon/secrets/SecretWaypoint.java | 8 +- .../skyblock/dungeon/terminal/ColorTerminal.java | 4 +- .../skyblock/dungeon/terminal/OrderTerminal.java | 4 +- .../dungeon/terminal/StartsWithTerminal.java | 4 +- .../skyblocker/skyblock/dwarven/DwarvenHud.java | 20 +- .../skyblock/dwarven/DwarvenHudConfigScreen.java | 12 +- .../skyblocker/skyblock/dwarven/Fetchur.java | 4 +- .../skyblocker/skyblock/dwarven/Puzzler.java | 4 +- .../skyblock/experiment/ChronomatronSolver.java | 4 +- .../skyblock/experiment/ExperimentSolver.java | 6 +- .../skyblock/experiment/SuperpairsSolver.java | 4 +- .../skyblock/experiment/UltrasequencerSolver.java | 4 +- .../skyblocker/skyblock/filters/AbilityFilter.java | 4 +- .../skyblocker/skyblock/filters/AdFilter.java | 4 +- .../skyblocker/skyblock/filters/AoteFilter.java | 4 +- .../skyblocker/skyblock/filters/AutopetFilter.java | 8 +- .../skyblocker/skyblock/filters/ComboFilter.java | 4 +- .../skyblocker/skyblock/filters/HealFilter.java | 4 +- .../skyblock/filters/ImplosionFilter.java | 4 +- .../skyblock/filters/MoltenWaveFilter.java | 4 +- .../skyblocker/skyblock/filters/ShowOffFilter.java | 4 +- .../skyblock/filters/TeleportPadFilter.java | 4 +- .../skyblock/item/CustomArmorDyeColors.java | 8 +- .../skyblocker/skyblock/item/CustomArmorTrims.java | 8 +- .../skyblocker/skyblock/item/CustomItemNames.java | 8 +- .../skyblocker/skyblock/item/PriceInfoTooltip.java | 42 +- .../skyblocker/skyblock/quicknav/QuickNav.java | 10 +- .../skyblocker/skyblock/rift/EffigyWaypoints.java | 8 +- .../skyblock/rift/HealingMelonIndicator.java | 6 +- .../skyblocker/skyblock/rift/ManiaIndicator.java | 4 +- .../skyblock/rift/MirrorverseWaypoints.java | 4 +- .../skyblocker/skyblock/rift/StakeIndicator.java | 4 +- .../xmrvizzy/skyblocker/skyblock/rift/TheRift.java | 10 +- .../skyblock/rift/TwinClawsIndicator.java | 6 +- .../skyblocker/skyblock/shortcut/Shortcuts.java | 12 +- .../skyblock/special/SpecialEffects.java | 4 +- .../skyblocker/skyblock/spidersden/Relics.java | 4 +- .../skyblock/tabhud/util/ScreenConst.java | 4 +- .../skyblock/tabhud/widget/PlayerListWidget.java | 4 +- .../skyblocker/skyblock/tabhud/widget/Widget.java | 4 +- .../tabhud/widget/component/PlayerComponent.java | 4 +- .../utils/discord/DiscordRPCManager.java | 30 +- .../utils/render/title/TitleContainer.java | 30 +- .../render/title/TitleContainerConfigScreen.java | 60 +- .../skyblock/dungeon/DungeonChestProfitTest.java | 4 +- 90 files changed, 1213 insertions(+), 1213 deletions(-) delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/config/ConfigModel.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfigManager.java (limited to 'src/main/java/me/xmrvizzy') diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java index b28ad3d4..1c2e112e 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java +++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java @@ -2,7 +2,7 @@ package me.xmrvizzy.skyblocker; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.skyblock.*; import me.xmrvizzy.skyblocker.skyblock.dungeon.*; import me.xmrvizzy.skyblocker.skyblock.dungeon.secrets.DungeonSecrets; @@ -69,7 +69,7 @@ public class SkyblockerMod implements ClientModInitializer { ClientTickEvents.END_CLIENT_TICK.register(this::tick); Utils.init(); HotbarSlotLock.init(); - SkyblockerConfig.init(); + SkyblockerConfigManager.init(); PriceInfoTooltip.init(); WikiLookup.init(); ItemRegistry.init(); diff --git a/src/main/java/me/xmrvizzy/skyblocker/compatibility/modmenu/ModMenuEntry.java b/src/main/java/me/xmrvizzy/skyblocker/compatibility/modmenu/ModMenuEntry.java index 7fd188bf..65287cc9 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/compatibility/modmenu/ModMenuEntry.java +++ b/src/main/java/me/xmrvizzy/skyblocker/compatibility/modmenu/ModMenuEntry.java @@ -2,7 +2,7 @@ package me.xmrvizzy.skyblocker.compatibility.modmenu; import com.terraformersmc.modmenu.api.ConfigScreenFactory; import com.terraformersmc.modmenu.api.ModMenuApi; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; @@ -10,6 +10,6 @@ import net.fabricmc.api.Environment; public class ModMenuEntry implements ModMenuApi { @Override public ConfigScreenFactory getModConfigScreenFactory() { - return parent -> SkyblockerConfig.createGUI(parent); + return parent -> SkyblockerConfigManager.createGUI(parent); } } \ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/ConfigModel.java b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigModel.java deleted file mode 100644 index a8f27a35..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/config/ConfigModel.java +++ /dev/null @@ -1,809 +0,0 @@ -package me.xmrvizzy.skyblocker.config; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; - -import dev.isxander.yacl3.config.ConfigEntry; -import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; -import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; -import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; -import me.xmrvizzy.skyblocker.skyblock.item.CustomArmorTrims; -import net.minecraft.client.resource.language.I18n; -import net.minecraft.text.Text; -import net.minecraft.util.Formatting; - -@SuppressWarnings("deprecation") -public class ConfigModel { - @ConfigEntry - public int version = 1; - - @ConfigEntry - public General general = new General(); - - @ConfigEntry - public Locations locations = new Locations(); - - @ConfigEntry - public Slayer slayer = new Slayer(); - - @ConfigEntry - public QuickNav quickNav = new QuickNav(); - - @ConfigEntry - public Messages messages = new Messages(); - - @ConfigEntry - public RichPresence richPresence = new RichPresence(); - - public static class QuickNav { - @ConfigEntry - public boolean enableQuickNav = true; - - @ConfigEntry - public QuickNavItem button1 = new QuickNavItem(true, new ItemData("diamond_sword"), "Your Skills", "/skills"); - - @ConfigEntry - public QuickNavItem button2 = new QuickNavItem(true, new ItemData("painting"), "Collections", "/collection"); - - /* REGEX Explanation - * "Pets" : simple match on letters - * "(?: \\(\\d+\\/\\d+\\))?" : optional match on the non-capturing group for the page in the format " ($number/$number)" - */ - @ConfigEntry - public QuickNavItem button3 = new QuickNavItem(true, new ItemData("bone"), "Pets(:? \\(\\d+\\/\\d+\\))?", "/pets"); - - /* REGEX Explanation - * "Wardrobe" : simple match on letters - * " \\([12]\\/2\\)" : match on the page either " (1/2)" or " (2/2)" - */ - @ConfigEntry - public QuickNavItem button4 = new QuickNavItem(true, - new ItemData("leather_chestplate", 1, "tag:{display:{color:8991416}}"), "Wardrobe \\([12]/2\\)", - "/wardrobe"); - - @ConfigEntry - public QuickNavItem button5 = new QuickNavItem(true, new ItemData("player_head", 1, - "tag:{SkullOwner:{Id:[I;-2081424676,-57521078,-2073572414,158072763],Properties:{textures:[{Value:\"ewogICJ0aW1lc3RhbXAiIDogMTU5MTMxMDU4NTYwOSwKICAicHJvZmlsZUlkIiA6ICI0MWQzYWJjMmQ3NDk0MDBjOTA5MGQ1NDM0ZDAzODMxYiIsCiAgInByb2ZpbGVOYW1lIiA6ICJNZWdha2xvb24iLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODBhMDc3ZTI0OGQxNDI3NzJlYTgwMDg2NGY4YzU3OGI5ZDM2ODg1YjI5ZGFmODM2YjY0YTcwNjg4MmI2ZWMxMCIKICAgIH0KICB9Cn0=\"}]}}}"), - "Sack of Sacks", "/sacks"); - - /* REGEX Explanation - * "(?:Rift )?" : optional match on the non-capturing group "Rift " - * "Storage" : simple match on letters - * "(?: \\([12]\\/2\\))?" : optional match on the non-capturing group " (1/2)" or " (2/2)" - */ - @ConfigEntry - public QuickNavItem button6 = new QuickNavItem(true, new ItemData("ender_chest"), - "(?:Rift )?Storage(?: \\(1/2\\))?", "/storage"); - - @ConfigEntry - public QuickNavItem button7 = new QuickNavItem(true, new ItemData("player_head", 1, - "tag:{SkullOwner:{Id:[I;-300151517,-631415889,-1193921967,-1821784279],Properties:{textures:[{Value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDdjYzY2ODc0MjNkMDU3MGQ1NTZhYzUzZTA2NzZjYjU2M2JiZGQ5NzE3Y2Q4MjY5YmRlYmVkNmY2ZDRlN2JmOCJ9fX0=\"}]}}}"), - "none", "/hub"); - - @ConfigEntry - public QuickNavItem button8 = new QuickNavItem(true, new ItemData("player_head", 1, - "tag:{SkullOwner:{Id:[I;1605800870,415127827,-1236127084,15358548],Properties:{textures:[{Value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzg5MWQ1YjI3M2ZmMGJjNTBjOTYwYjJjZDg2ZWVmMWM0MGExYjk0MDMyYWU3MWU3NTQ3NWE1NjhhODI1NzQyMSJ9fX0=\"}]}}}"), - "none", "/warp dungeon_hub"); - - @ConfigEntry - public QuickNavItem button9 = new QuickNavItem(true, new ItemData("player_head", 1, - "tag:{SkullOwner:{Id:[I;-562285948,532499670,-1705302742,775653035],Properties:{textures:[{Value:\"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjVkZjU1NTkyNjQzMGQ1ZDc1YWRlZDIxZGQ5NjE5Yjc2YzViN2NhMmM3ZjU0MDE0NDA1MjNkNTNhOGJjZmFhYiJ9fX0=\"}]}}}"), - "Visit prtl", "/visit prtl"); - - @ConfigEntry - public QuickNavItem button10 = new QuickNavItem(true, new ItemData("enchanting_table"), "Enchant Item", - "/etable"); - - @ConfigEntry - public QuickNavItem button11 = new QuickNavItem(true, new ItemData("anvil"), "Anvil", "/anvil"); - - @ConfigEntry - public QuickNavItem button12 = new QuickNavItem(true, new ItemData("crafting_table"), "Craft Item", "/craft"); - } - - public static class QuickNavItem { - public QuickNavItem(Boolean render, ItemData itemData, String uiTitle, String clickEvent) { - this.render = render; - this.item = itemData; - this.clickEvent = clickEvent; - this.uiTitle = uiTitle; - } - - @ConfigEntry - public Boolean render; - - @ConfigEntry - public ItemData item; - - @ConfigEntry - public String uiTitle; - - @ConfigEntry - public String clickEvent; - } - - public static class ItemData { - public ItemData(String itemName, int count, String nbt) { - this.itemName = itemName; - this.count = count; - this.nbt = nbt; - } - - public ItemData(String itemName) { - this.itemName = itemName; - this.count = 1; - this.nbt = ""; - } - - @ConfigEntry - public String itemName; - - @ConfigEntry - public int count; - - @ConfigEntry - public String nbt; - } - - public static class General { - @ConfigEntry - public boolean acceptReparty = true; - - @ConfigEntry - public boolean backpackPreviewWithoutShift = false; - - @ConfigEntry - public boolean compactorDeletorPreview = true; - - @ConfigEntry - public boolean hideEmptyTooltips = true; - - @ConfigEntry - public boolean hideStatusEffectOverlay = false; - - @ConfigEntry - public TabHudConf tabHud = new TabHudConf(); - - @ConfigEntry - public Bars bars = new Bars(); - - @ConfigEntry - public Experiments experiments = new Experiments(); - - @ConfigEntry - public Fishing fishing = new Fishing(); - - @ConfigEntry - public FairySouls fairySouls = new FairySouls(); - - @ConfigEntry - public Shortcuts shortcuts = new Shortcuts(); - - @ConfigEntry - public QuiverWarning quiverWarning = new QuiverWarning(); - - @ConfigEntry - public ItemList itemList = new ItemList(); - - @ConfigEntry - public ItemTooltip itemTooltip = new ItemTooltip(); - - @ConfigEntry - public ItemInfoDisplay itemInfoDisplay = new ItemInfoDisplay(); - - @ConfigEntry - public SpecialEffects specialEffects = new SpecialEffects(); - - @ConfigEntry - public Hitbox hitbox = new Hitbox(); - - @ConfigEntry - public TitleContainer titleContainer = new TitleContainer(); - - @ConfigEntry - public TeleportOverlay teleportOverlay = new TeleportOverlay(); - - @ConfigEntry - public List lockedSlots = new ArrayList<>(); - - @ConfigEntry - public Object2ObjectOpenHashMap customItemNames = new Object2ObjectOpenHashMap<>(); - - @ConfigEntry - public Object2IntOpenHashMap customDyeColors = new Object2IntOpenHashMap<>(); - - @ConfigEntry - public Object2ObjectOpenHashMap customArmorTrims = new Object2ObjectOpenHashMap<>(); - } - - public static class TabHudConf { - @ConfigEntry - public boolean tabHudEnabled = true; - - @ConfigEntry - public int tabHudScale = 100; - - @ConfigEntry - public boolean plainPlayerNames = false; - - @ConfigEntry - public NameSorting nameSorting = NameSorting.DEFAULT; - } - - public enum NameSorting { - DEFAULT, ALPHABETICAL; - - @Override - public String toString() { - return switch (this) { - case DEFAULT -> "Default"; - case ALPHABETICAL -> "Alphabetical"; - }; - } - } - - public static class Bars { - @ConfigEntry - public boolean enableBars = true; - - @ConfigEntry - public BarPositions barpositions = new BarPositions(); - } - - public static class BarPositions { - @ConfigEntry - public BarPosition healthBarPosition = BarPosition.LAYER1; - - @ConfigEntry - public BarPosition manaBarPosition = BarPosition.LAYER1; - - @ConfigEntry - public BarPosition defenceBarPosition = BarPosition.LAYER1; - - @ConfigEntry - public BarPosition experienceBarPosition = BarPosition.LAYER1; - - } - - public enum BarPosition { - LAYER1, LAYER2, RIGHT, NONE; - - @Override - public String toString() { - return I18n.translate("text.autoconfig.skyblocker.option.general.bars.barpositions." + name()); - } - - public int toInt() { - return switch (this) { - case LAYER1 -> 0; - case LAYER2 -> 1; - case RIGHT -> 2; - case NONE -> -1; - }; - } - } - - public static class Experiments { - @ConfigEntry - public boolean enableChronomatronSolver = true; - - @ConfigEntry - public boolean enableSuperpairsSolver = true; - - @ConfigEntry - public boolean enableUltrasequencerSolver = true; - } - - public static class Fishing { - @ConfigEntry - public boolean enableFishingHelper = true; - } - - public static class FairySouls { - @ConfigEntry - public boolean enableFairySoulsHelper = false; - - @ConfigEntry - public boolean highlightFoundSouls = true; - - @ConfigEntry - public boolean highlightOnlyNearbySouls = false; - } - - public static class Shortcuts { - @ConfigEntry - public boolean enableShortcuts = true; - - @ConfigEntry - public boolean enableCommandShortcuts = true; - - @ConfigEntry - public boolean enableCommandArgShortcuts = true; - } - - public static class QuiverWarning { - @ConfigEntry - public boolean enableQuiverWarning = true; - - @ConfigEntry - public boolean enableQuiverWarningInDungeons = true; - - @ConfigEntry - public boolean enableQuiverWarningAfterDungeon = true; - } - - public static class Hitbox { - @ConfigEntry - public boolean oldFarmlandHitbox = true; - - @ConfigEntry - public boolean oldLeverHitbox = false; - } - - public static class TitleContainer { - @ConfigEntry - public float titleContainerScale = 100; - - @ConfigEntry - public int x = 540; - - @ConfigEntry - public int y = 10; - - @ConfigEntry - public Direction direction = Direction.HORIZONTAL; - - @ConfigEntry - public Alignment alignment = Alignment.MIDDLE; - } - - public static class TeleportOverlay { - @ConfigEntry - public boolean enableTeleportOverlays = true; - - @ConfigEntry - public boolean enableWeirdTransmission = true; - - @ConfigEntry - public boolean enableInstantTransmission = true; - - @ConfigEntry - public boolean enableEtherTransmission = true; - - @ConfigEntry - public boolean enableSinrecallTransmission = true; - - @ConfigEntry - public boolean enableWitherImpact = true; - } - - public enum Direction { - HORIZONTAL, VERTICAL; - - @Override - public String toString() { - return switch (this) { - case HORIZONTAL -> "Horizontal"; - case VERTICAL -> "Vertical"; - }; - } - } - - public enum Alignment { - LEFT, RIGHT, MIDDLE; - - @Override - public String toString() { - return switch (this) { - case LEFT -> "Left"; - case RIGHT -> "Right"; - case MIDDLE -> "Middle"; - }; - } - } - - public static class RichPresence { - @ConfigEntry - public boolean enableRichPresence = false; - - @ConfigEntry - public Info info = Info.LOCATION; - - @ConfigEntry - public boolean cycleMode = false; - - @ConfigEntry - public String customMessage = "Playing Skyblock"; - } - - public static class ItemList { - @ConfigEntry - public boolean enableItemList = true; - } - - public enum Average { - ONE_DAY, THREE_DAY, BOTH; - - @Override - public String toString() { - return I18n.translate("text.autoconfig.skyblocker.option.general.itemTooltip.avg." + name()); - } - } - - public static class ItemTooltip { - @ConfigEntry - public boolean enableNPCPrice = true; - - @ConfigEntry - public boolean enableMotesPrice = true; - - @ConfigEntry - public boolean enableAvgBIN = true; - - @ConfigEntry - public Average avg = Average.THREE_DAY; - - @ConfigEntry - public boolean enableLowestBIN = true; - - @ConfigEntry - public boolean enableBazaarPrice = true; - - @ConfigEntry - public boolean enableMuseumDate = true; - } - - public static class ItemInfoDisplay { - @ConfigEntry - public boolean attributeShardInfo = true; - } - - public static class SpecialEffects { - @ConfigEntry - public boolean rareDungeonDropEffects = true; - } - - public static class Locations { - @ConfigEntry - public Barn barn = new Barn(); - - @ConfigEntry - public Dungeons dungeons = new Dungeons(); - - @ConfigEntry - public DwarvenMines dwarvenMines = new DwarvenMines(); - - @ConfigEntry - public Rift rift = new Rift(); - - @ConfigEntry - public SpidersDen spidersDen = new SpidersDen(); - } - - public static class Dungeons { - @ConfigEntry - public SecretWaypoints secretWaypoints = new SecretWaypoints(); - - @ConfigEntry - public DungeonChestProfit dungeonChestProfit = new DungeonChestProfit(); - - @ConfigEntry - public boolean croesusHelper = true; - - @ConfigEntry - public boolean enableMap = true; - - @ConfigEntry - public float mapScaling = 1f; - - @ConfigEntry - public int mapX = 2; - - @ConfigEntry - public int mapY = 2; - - @ConfigEntry - public boolean starredMobGlow = true; - - @ConfigEntry - public boolean solveThreeWeirdos = true; - - @ConfigEntry - public boolean blazesolver = true; - - @ConfigEntry - public boolean solveTrivia = true; - - @ConfigEntry - public boolean solveTicTacToe = true; - - @ConfigEntry - public LividColor lividColor = new LividColor(); - - @ConfigEntry - public Terminals terminals = new Terminals(); - } - - public static class SecretWaypoints { - @ConfigEntry - public boolean enableSecretWaypoints = true; - - @ConfigEntry - public boolean noInitSecretWaypoints = false; - - @ConfigEntry - public boolean enableEntranceWaypoints = true; - - @ConfigEntry - public boolean enableSuperboomWaypoints = true; - - @ConfigEntry - public boolean enableChestWaypoints = true; - - @ConfigEntry - public boolean enableItemWaypoints = true; - - @ConfigEntry - public boolean enableBatWaypoints = true; - - @ConfigEntry - public boolean enableWitherWaypoints = true; - - @ConfigEntry - public boolean enableLeverWaypoints = true; - - @ConfigEntry - public boolean enableFairySoulWaypoints = true; - - @ConfigEntry - public boolean enableStonkWaypoints = true; - - @ConfigEntry - public boolean enableDefaultWaypoints = true; - } - - public static class DungeonChestProfit { - @ConfigEntry - public boolean enableProfitCalculator = true; - - @ConfigEntry - public boolean includeKismet = false; - - @ConfigEntry - public boolean includeEssence = true; - - @ConfigEntry - public int neutralThreshold = 1000; - - @ConfigEntry - public FormattingOption neutralColor = FormattingOption.DARK_GRAY; - - @ConfigEntry - public FormattingOption profitColor = FormattingOption.DARK_GREEN; - - @ConfigEntry - public FormattingOption lossColor = FormattingOption.RED; - - @ConfigEntry - public FormattingOption incompleteColor = FormattingOption.BLUE; - - } - - public enum FormattingOption { - BLACK(Formatting.BLACK), - DARK_BLUE(Formatting.DARK_BLUE), - DARK_GREEN(Formatting.DARK_GREEN), - DARK_AQUA(Formatting.DARK_AQUA), - DARK_RED(Formatting.DARK_RED), - DARK_PURPLE(Formatting.DARK_PURPLE), - GOLD(Formatting.GOLD), - GRAY(Formatting.GRAY), - DARK_GRAY(Formatting.DARK_GRAY), - BLUE(Formatting.BLUE), - GREEN(Formatting.GREEN), - AQUA(Formatting.AQUA), - RED(Formatting.RED), - LIGHT_PURPLE(Formatting.LIGHT_PURPLE), - YELLOW(Formatting.YELLOW), - WHITE(Formatting.WHITE), - OBFUSCATED(Formatting.OBFUSCATED), - BOLD(Formatting.BOLD), - STRIKETHROUGH(Formatting.STRIKETHROUGH), - UNDERLINE(Formatting.UNDERLINE), - ITALIC(Formatting.ITALIC), - RESET(Formatting.RESET); - - public final Formatting formatting; - - - FormattingOption(Formatting formatting) { - this.formatting = formatting; - } - - @Override - public String toString() { - return StringUtils.capitalize(formatting.getName().replaceAll("_", " ")); - } - } - - public static class LividColor { - @ConfigEntry - public boolean enableLividColor = true; - - @ConfigEntry - public String lividColorText = "The livid color is [color]"; - } - - public static class Terminals { - @ConfigEntry - public boolean solveColor = true; - - @ConfigEntry - public boolean solveOrder = true; - - @ConfigEntry - public boolean solveStartsWith = true; - } - - public static class DwarvenMines { - @ConfigEntry - public boolean enableDrillFuel = true; - - @ConfigEntry - public boolean solveFetchur = true; - - @ConfigEntry - public boolean solvePuzzler = true; - - @ConfigEntry - public DwarvenHud dwarvenHud = new DwarvenHud(); - } - - public static class DwarvenHud { - @ConfigEntry - public boolean enabled = true; - - @ConfigEntry - public DwarvenHudStyle style = DwarvenHudStyle.SIMPLE; - - @ConfigEntry - public boolean enableBackground = true; - - @ConfigEntry - public int x = 10; - - @ConfigEntry - public int y = 10; - } - - public enum DwarvenHudStyle { - SIMPLE, FANCY, CLASSIC; - - @Override - public String toString() { - return switch (this) { - case SIMPLE -> "Simple"; - case FANCY -> "Fancy"; - case CLASSIC -> "Classic"; - }; - } - } - - public static class Barn { - @ConfigEntry - public boolean solveHungryHiker = true; - - @ConfigEntry - public boolean solveTreasureHunter = true; - } - - public static class Rift { - @ConfigEntry - public boolean mirrorverseWaypoints = true; - - @ConfigEntry - public int mcGrubberStacks = 0; - } - - public static class SpidersDen { - @ConfigEntry - public Relics relics = new Relics(); - } - - public static class Relics { - @ConfigEntry - public boolean enableRelicsHelper = false; - - @ConfigEntry - public boolean highlightFoundRelics = true; - } - - public static class Slayer { - @ConfigEntry - public VampireSlayer vampireSlayer = new VampireSlayer(); - } - - public static class VampireSlayer { - @ConfigEntry - public boolean enableEffigyWaypoints = true; - - @ConfigEntry - public boolean compactEffigyWaypoints; - - @ConfigEntry - public int effigyUpdateFrequency = 5; - - @ConfigEntry - public boolean enableHolyIceIndicator = true; - - @ConfigEntry - public int holyIceIndicatorTickDelay = 10; - - @ConfigEntry - public int holyIceUpdateFrequency = 5; - - @ConfigEntry - public boolean enableHealingMelonIndicator = true; - - @ConfigEntry - public float healingMelonHealthThreshold = 4f; - - @ConfigEntry - public boolean enableSteakStakeIndicator = true; - - @ConfigEntry - public int steakStakeUpdateFrequency = 5; - - @ConfigEntry - public boolean enableManiaIndicator = true; - - @ConfigEntry - public int maniaUpdateFrequency = 5; - } - - public static class Messages { - @ConfigEntry - public ChatFilterResult hideAbility = ChatFilterResult.PASS; - - @ConfigEntry - public ChatFilterResult hideHeal = ChatFilterResult.PASS; - - @ConfigEntry - public ChatFilterResult hideAOTE = ChatFilterResult.PASS; - - @ConfigEntry - public ChatFilterResult hideImplosion = ChatFilterResult.PASS; - - @ConfigEntry - public ChatFilterResult hideMoltenWave = ChatFilterResult.PASS; - - @ConfigEntry - public ChatFilterResult hideAds = ChatFilterResult.PASS; - - @ConfigEntry - public ChatFilterResult hideTeleportPad = ChatFilterResult.PASS; - - @ConfigEntry - public ChatFilterResult hideCombo = ChatFilterResult.PASS; - - @ConfigEntry - public ChatFilterResult hideAutopet = ChatFilterResult.PASS; - - @ConfigEntry - public ChatFilterResult hideShowOff = ChatFilterResult.PASS; - - @ConfigEntry - public boolean hideMana = false; - } - - public enum Info { - PURSE, BITS, LOCATION; - - @Override - public String toString() { - return I18n.translate("text.autoconfig.skyblocker.option.richPresence.info." + name()); - } - } -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index 9020d7a0..4207b495 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -1,88 +1,809 @@ package me.xmrvizzy.skyblocker.config; -import java.lang.StackWalker.Option; -import java.nio.file.Path; -import com.mojang.brigadier.builder.LiteralArgumentBuilder; - -import dev.isxander.yacl3.api.YetAnotherConfigLib; -import dev.isxander.yacl3.config.GsonConfigInstance; -import me.xmrvizzy.skyblocker.SkyblockerMod; -import me.xmrvizzy.skyblocker.config.categories.DiscordRPCCategory; -import me.xmrvizzy.skyblocker.config.categories.DungeonsCategory; -import me.xmrvizzy.skyblocker.config.categories.DwarvenMinesCategory; -import me.xmrvizzy.skyblocker.config.categories.GeneralCategory; -import me.xmrvizzy.skyblocker.config.categories.MessageFilterCategory; -import me.xmrvizzy.skyblocker.config.categories.LocationsCategory; -import me.xmrvizzy.skyblocker.config.categories.QuickNavigationCategory; -import me.xmrvizzy.skyblocker.config.categories.SlayersCategory; -import me.xmrvizzy.skyblocker.utils.scheduler.Scheduler; -import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; -import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; -import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; -import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.client.gui.screen.Screen; +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; + +import dev.isxander.yacl3.config.ConfigEntry; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.skyblock.item.CustomArmorTrims; +import net.minecraft.client.resource.language.I18n; import net.minecraft.text.Text; +import net.minecraft.util.Formatting; @SuppressWarnings("deprecation") public class SkyblockerConfig { - private static final Path PATH = FabricLoader.getInstance().getConfigDir().resolve("skyblocker.json"); - private static final GsonConfigInstance INSTANCE = GsonConfigInstance.createBuilder(ConfigModel.class) - .setPath(PATH) - .overrideGsonBuilder(ConfigSerializer.INSTANCE) - .build(); - /*private static final ConfigClassHandler HANDLER = ConfigClassHandler.createBuilder(ConfigModel.class) - .serializer(config -> GsonConfigSerializerBuilder.create(config) - .setPath(PATH) - .setJson5(false) - .overrideGsonBuilder(ConfigSerializer.INSTANCE) - .build()) - .build();*/ + @ConfigEntry + public int version = 1; - public static ConfigModel get() { - return INSTANCE.getConfig(); + @ConfigEntry + public General general = new General(); + + @ConfigEntry + public Locations locations = new Locations(); + + @ConfigEntry + public Slayer slayer = new Slayer(); + + @ConfigEntry + public QuickNav quickNav = new QuickNav(); + + @ConfigEntry + public Messages messages = new Messages(); + + @ConfigEntry + public RichPresence richPresence = new RichPresence(); + + public static class QuickNav { + @ConfigEntry + public boolean enableQuickNav = true; + + @ConfigEntry + public QuickNavItem button1 = new QuickNavItem(true, new ItemData("diamond_sword"), "Your Skills", "/skills"); + + @ConfigEntry + public QuickNavItem button2 = new QuickNavItem(true, new ItemData("painting"), "Collections", "/collection"); + + /* REGEX Explanation + * "Pets" : simple match on letters + * "(?: \\(\\d+\\/\\d+\\))?" : optional match on the non-capturing group for the page in the format " ($number/$number)" + */ + @ConfigEntry + public QuickNavItem button3 = new QuickNavItem(true, new ItemData("bone"), "Pets(:? \\(\\d+\\/\\d+\\))?", "/pets"); + + /* REGEX Explanation + * "Wardrobe" : simple match on letters + * " \\([12]\\/2\\)" : match on the page either " (1/2)" or " (2/2)" + */ + @ConfigEntry + public QuickNavItem button4 = new QuickNavItem(true, + new ItemData("leather_chestplate", 1, "tag:{display:{color:8991416}}"), "Wardrobe \\([12]/2\\)", + "/wardrobe"); + + @ConfigEntry + public QuickNavItem button5 = new QuickNavItem(true, new ItemData("player_head", 1, + "tag:{SkullOwner:{Id:[I;-2081424676,-57521078,-2073572414,158072763],Properties:{textures:[{Value:\"ewogICJ0aW1lc3RhbXAiIDogMTU5MTMxMDU4NTYwOSwKICAicHJvZmlsZUlkIiA6ICI0MWQzYWJjMmQ3NDk0MDBjOTA5MGQ1NDM0ZDAzODMxYiIsCiAgInByb2ZpbGVOYW1lIiA6ICJNZWdha2xvb24iLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODBhMDc3ZTI0OGQxNDI3NzJlYTgwMDg2NGY4YzU3OGI5ZDM2ODg1YjI5ZGFmODM2YjY0YTcwNjg4MmI2ZWMxMCIKICAgIH0KICB9Cn0=\"}]}}}"), + "Sack of Sacks", "/sacks"); + + /* REGEX Explanation + * "(?:Rift )?" : optional match on the non-capturing group "Rift " + * "Storage" : simple match on letters + * "(?: \\([12]\\/2\\))?" : optional match on the non-capturing group " (1/2)" or " (2/2)" + */ + @ConfigEntry + public QuickNavItem button6 = new QuickNavItem(true, new ItemData("ender_chest"), + "(?:Rift )?Storage(?: \\(1/2\\))?", "/storage"); + + @ConfigEntry + public QuickNavItem button7 = new QuickNavItem(true, new ItemData("player_head", 1, + "tag:{SkullOwner:{Id:[I;-300151517,-631415889,-1193921967,-1821784279],Properties:{textures:[{Value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDdjYzY2ODc0MjNkMDU3MGQ1NTZhYzUzZTA2NzZjYjU2M2JiZGQ5NzE3Y2Q4MjY5YmRlYmVkNmY2ZDRlN2JmOCJ9fX0=\"}]}}}"), + "none", "/hub"); + + @ConfigEntry + public QuickNavItem button8 = new QuickNavItem(true, new ItemData("player_head", 1, + "tag:{SkullOwner:{Id:[I;1605800870,415127827,-1236127084,15358548],Properties:{textures:[{Value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzg5MWQ1YjI3M2ZmMGJjNTBjOTYwYjJjZDg2ZWVmMWM0MGExYjk0MDMyYWU3MWU3NTQ3NWE1NjhhODI1NzQyMSJ9fX0=\"}]}}}"), + "none", "/warp dungeon_hub"); + + @ConfigEntry + public QuickNavItem button9 = new QuickNavItem(true, new ItemData("player_head", 1, + "tag:{SkullOwner:{Id:[I;-562285948,532499670,-1705302742,775653035],Properties:{textures:[{Value:\"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjVkZjU1NTkyNjQzMGQ1ZDc1YWRlZDIxZGQ5NjE5Yjc2YzViN2NhMmM3ZjU0MDE0NDA1MjNkNTNhOGJjZmFhYiJ9fX0=\"}]}}}"), + "Visit prtl", "/visit prtl"); + + @ConfigEntry + public QuickNavItem button10 = new QuickNavItem(true, new ItemData("enchanting_table"), "Enchant Item", + "/etable"); + + @ConfigEntry + public QuickNavItem button11 = new QuickNavItem(true, new ItemData("anvil"), "Anvil", "/anvil"); + + @ConfigEntry + public QuickNavItem button12 = new QuickNavItem(true, new ItemData("crafting_table"), "Craft Item", "/craft"); + } + + public static class QuickNavItem { + public QuickNavItem(Boolean render, ItemData itemData, String uiTitle, String clickEvent) { + this.render = render; + this.item = itemData; + this.clickEvent = clickEvent; + this.uiTitle = uiTitle; + } + + @ConfigEntry + public Boolean render; + + @ConfigEntry + public ItemData item; + + @ConfigEntry + public String uiTitle; + + @ConfigEntry + public String clickEvent; + } + + public static class ItemData { + public ItemData(String itemName, int count, String nbt) { + this.itemName = itemName; + this.count = count; + this.nbt = nbt; + } + + public ItemData(String itemName) { + this.itemName = itemName; + this.count = 1; + this.nbt = ""; + } + + @ConfigEntry + public String itemName; + + @ConfigEntry + public int count; + + @ConfigEntry + public String nbt; + } + + public static class General { + @ConfigEntry + public boolean acceptReparty = true; + + @ConfigEntry + public boolean backpackPreviewWithoutShift = false; + + @ConfigEntry + public boolean compactorDeletorPreview = true; + + @ConfigEntry + public boolean hideEmptyTooltips = true; + + @ConfigEntry + public boolean hideStatusEffectOverlay = false; + + @ConfigEntry + public TabHudConf tabHud = new TabHudConf(); + + @ConfigEntry + public Bars bars = new Bars(); + + @ConfigEntry + public Experiments experiments = new Experiments(); + + @ConfigEntry + public Fishing fishing = new Fishing(); + + @ConfigEntry + public FairySouls fairySouls = new FairySouls(); + + @ConfigEntry + public Shortcuts shortcuts = new Shortcuts(); + + @ConfigEntry + public QuiverWarning quiverWarning = new QuiverWarning(); + + @ConfigEntry + public ItemList itemList = new ItemList(); + + @ConfigEntry + public ItemTooltip itemTooltip = new ItemTooltip(); + + @ConfigEntry + public ItemInfoDisplay itemInfoDisplay = new ItemInfoDisplay(); + + @ConfigEntry + public SpecialEffects specialEffects = new SpecialEffects(); + + @ConfigEntry + public Hitbox hitbox = new Hitbox(); + + @ConfigEntry + public TitleContainer titleContainer = new TitleContainer(); + + @ConfigEntry + public TeleportOverlay teleportOverlay = new TeleportOverlay(); + + @ConfigEntry + public List lockedSlots = new ArrayList<>(); + + @ConfigEntry + public Object2ObjectOpenHashMap customItemNames = new Object2ObjectOpenHashMap<>(); + + @ConfigEntry + public Object2IntOpenHashMap customDyeColors = new Object2IntOpenHashMap<>(); + + @ConfigEntry + public Object2ObjectOpenHashMap customArmorTrims = new Object2ObjectOpenHashMap<>(); + } + + public static class TabHudConf { + @ConfigEntry + public boolean tabHudEnabled = true; + + @ConfigEntry + public int tabHudScale = 100; + + @ConfigEntry + public boolean plainPlayerNames = false; + + @ConfigEntry + public NameSorting nameSorting = NameSorting.DEFAULT; + } + + public enum NameSorting { + DEFAULT, ALPHABETICAL; + + @Override + public String toString() { + return switch (this) { + case DEFAULT -> "Default"; + case ALPHABETICAL -> "Alphabetical"; + }; + } + } + + public static class Bars { + @ConfigEntry + public boolean enableBars = true; + + @ConfigEntry + public BarPositions barpositions = new BarPositions(); + } + + public static class BarPositions { + @ConfigEntry + public BarPosition healthBarPosition = BarPosition.LAYER1; + + @ConfigEntry + public BarPosition manaBarPosition = BarPosition.LAYER1; + + @ConfigEntry + public BarPosition defenceBarPosition = BarPosition.LAYER1; + + @ConfigEntry + public BarPosition experienceBarPosition = BarPosition.LAYER1; + + } + + public enum BarPosition { + LAYER1, LAYER2, RIGHT, NONE; + + @Override + public String toString() { + return I18n.translate("text.autoconfig.skyblocker.option.general.bars.barpositions." + name()); + } + + public int toInt() { + return switch (this) { + case LAYER1 -> 0; + case LAYER2 -> 1; + case RIGHT -> 2; + case NONE -> -1; + }; + } + } + + public static class Experiments { + @ConfigEntry + public boolean enableChronomatronSolver = true; + + @ConfigEntry + public boolean enableSuperpairsSolver = true; + + @ConfigEntry + public boolean enableUltrasequencerSolver = true; + } + + public static class Fishing { + @ConfigEntry + public boolean enableFishingHelper = true; + } + + public static class FairySouls { + @ConfigEntry + public boolean enableFairySoulsHelper = false; + + @ConfigEntry + public boolean highlightFoundSouls = true; + + @ConfigEntry + public boolean highlightOnlyNearbySouls = false; + } + + public static class Shortcuts { + @ConfigEntry + public boolean enableShortcuts = true; + + @ConfigEntry + public boolean enableCommandShortcuts = true; + + @ConfigEntry + public boolean enableCommandArgShortcuts = true; } - /** - * This method is caller sensitive and can only be called by the mod initializer, - * this is enforced. - */ - public static void init() { - if (StackWalker.getInstance(Option.RETAIN_CLASS_REFERENCE).getCallerClass() != SkyblockerMod.class) { - throw new RuntimeException("Skyblocker: Called config init from an illegal place!"); + public static class QuiverWarning { + @ConfigEntry + public boolean enableQuiverWarning = true; + + @ConfigEntry + public boolean enableQuiverWarningInDungeons = true; + + @ConfigEntry + public boolean enableQuiverWarningAfterDungeon = true; + } + + public static class Hitbox { + @ConfigEntry + public boolean oldFarmlandHitbox = true; + + @ConfigEntry + public boolean oldLeverHitbox = false; + } + + public static class TitleContainer { + @ConfigEntry + public float titleContainerScale = 100; + + @ConfigEntry + public int x = 540; + + @ConfigEntry + public int y = 10; + + @ConfigEntry + public Direction direction = Direction.HORIZONTAL; + + @ConfigEntry + public Alignment alignment = Alignment.MIDDLE; + } + + public static class TeleportOverlay { + @ConfigEntry + public boolean enableTeleportOverlays = true; + + @ConfigEntry + public boolean enableWeirdTransmission = true; + + @ConfigEntry + public boolean enableInstantTransmission = true; + + @ConfigEntry + public boolean enableEtherTransmission = true; + + @ConfigEntry + public boolean enableSinrecallTransmission = true; + + @ConfigEntry + public boolean enableWitherImpact = true; + } + + public enum Direction { + HORIZONTAL, VERTICAL; + + @Override + public String toString() { + return switch (this) { + case HORIZONTAL -> "Horizontal"; + case VERTICAL -> "Vertical"; + }; + } + } + + public enum Alignment { + LEFT, RIGHT, MIDDLE; + + @Override + public String toString() { + return switch (this) { + case LEFT -> "Left"; + case RIGHT -> "Right"; + case MIDDLE -> "Middle"; + }; } + } + + public static class RichPresence { + @ConfigEntry + public boolean enableRichPresence = false; + + @ConfigEntry + public Info info = Info.LOCATION; + + @ConfigEntry + public boolean cycleMode = false; - INSTANCE.load(); - ClientCommandRegistrationCallback.EVENT.register(((dispatcher, registryAccess) -> dispatcher.register(ClientCommandManager.literal(SkyblockerMod.NAMESPACE).then(optionsLiteral("config")).then(optionsLiteral("options"))))); + @ConfigEntry + public String customMessage = "Playing Skyblock"; + } + + public static class ItemList { + @ConfigEntry + public boolean enableItemList = true; + } + + public enum Average { + ONE_DAY, THREE_DAY, BOTH; + + @Override + public String toString() { + return I18n.translate("text.autoconfig.skyblocker.option.general.itemTooltip.avg." + name()); + } + } + + public static class ItemTooltip { + @ConfigEntry + public boolean enableNPCPrice = true; + + @ConfigEntry + public boolean enableMotesPrice = true; + + @ConfigEntry + public boolean enableAvgBIN = true; + + @ConfigEntry + public Average avg = Average.THREE_DAY; + + @ConfigEntry + public boolean enableLowestBIN = true; + + @ConfigEntry + public boolean enableBazaarPrice = true; + + @ConfigEntry + public boolean enableMuseumDate = true; + } + + public static class ItemInfoDisplay { + @ConfigEntry + public boolean attributeShardInfo = true; } - public static void save() { - INSTANCE.save(); + public static class SpecialEffects { + @ConfigEntry + public boolean rareDungeonDropEffects = true; + } + + public static class Locations { + @ConfigEntry + public Barn barn = new Barn(); + + @ConfigEntry + public Dungeons dungeons = new Dungeons(); + + @ConfigEntry + public DwarvenMines dwarvenMines = new DwarvenMines(); + + @ConfigEntry + public Rift rift = new Rift(); + + @ConfigEntry + public SpidersDen spidersDen = new SpidersDen(); + } + + public static class Dungeons { + @ConfigEntry + public SecretWaypoints secretWaypoints = new SecretWaypoints(); + + @ConfigEntry + public DungeonChestProfit dungeonChestProfit = new DungeonChestProfit(); + + @ConfigEntry + public boolean croesusHelper = true; + + @ConfigEntry + public boolean enableMap = true; + + @ConfigEntry + public float mapScaling = 1f; + + @ConfigEntry + public int mapX = 2; + + @ConfigEntry + public int mapY = 2; + + @ConfigEntry + public boolean starredMobGlow = true; + + @ConfigEntry + public boolean solveThreeWeirdos = true; + + @ConfigEntry + public boolean blazesolver = true; + + @ConfigEntry + public boolean solveTrivia = true; + + @ConfigEntry + public boolean solveTicTacToe = true; + + @ConfigEntry + public LividColor lividColor = new LividColor(); + + @ConfigEntry + public Terminals terminals = new Terminals(); + } + + public static class SecretWaypoints { + @ConfigEntry + public boolean enableSecretWaypoints = true; + + @ConfigEntry + public boolean noInitSecretWaypoints = false; + + @ConfigEntry + public boolean enableEntranceWaypoints = true; + + @ConfigEntry + public boolean enableSuperboomWaypoints = true; + + @ConfigEntry + public boolean enableChestWaypoints = true; + + @ConfigEntry + public boolean enableItemWaypoints = true; + + @ConfigEntry + public boolean enableBatWaypoints = true; + + @ConfigEntry + public boolean enableWitherWaypoints = true; + + @ConfigEntry + public boolean enableLeverWaypoints = true; + + @ConfigEntry + public boolean enableFairySoulWaypoints = true; + + @ConfigEntry + public boolean enableStonkWaypoints = true; + + @ConfigEntry + public boolean enableDefaultWaypoints = true; } - public static Screen createGUI(Screen parent) { - return YetAnotherConfigLib.create(INSTANCE, (defaults, config, builder) -> { - return builder - .title(Text.literal("Skyblocker")) - .category(GeneralCategory.create(defaults, config)) - .category(DungeonsCategory.create(defaults, config)) - .category(DwarvenMinesCategory.create(defaults, config)) - .category(LocationsCategory.create(defaults, config)) - .category(SlayersCategory.create(defaults, config)) - .category(QuickNavigationCategory.create(defaults, config)) - .category(MessageFilterCategory.create(defaults, config)) - .category(DiscordRPCCategory.create(defaults, config)); - - }).generateScreen(parent); + public static class DungeonChestProfit { + @ConfigEntry + public boolean enableProfitCalculator = true; + + @ConfigEntry + public boolean includeKismet = false; + + @ConfigEntry + public boolean includeEssence = true; + + @ConfigEntry + public int neutralThreshold = 1000; + + @ConfigEntry + public FormattingOption neutralColor = FormattingOption.DARK_GRAY; + + @ConfigEntry + public FormattingOption profitColor = FormattingOption.DARK_GREEN; + + @ConfigEntry + public FormattingOption lossColor = FormattingOption.RED; + + @ConfigEntry + public FormattingOption incompleteColor = FormattingOption.BLUE; + } - /** - * Registers an options command with the given name. Used for registering both options and config as valid commands. - * - * @param name the name of the command node - * @return the command builder - */ - private static LiteralArgumentBuilder optionsLiteral(String name) { - // Don't immediately open the next screen as it will be closed by ChatScreen right after this command is executed - return ClientCommandManager.literal(name).executes(Scheduler.queueOpenScreenCommand(() -> createGUI(null))); + public enum FormattingOption { + BLACK(Formatting.BLACK), + DARK_BLUE(Formatting.DARK_BLUE), + DARK_GREEN(Formatting.DARK_GREEN), + DARK_AQUA(Formatting.DARK_AQUA), + DARK_RED(Formatting.DARK_RED), + DARK_PURPLE(Formatting.DARK_PURPLE), + GOLD(Formatting.GOLD), + GRAY(Formatting.GRAY), + DARK_GRAY(Formatting.DARK_GRAY), + BLUE(Formatting.BLUE), + GREEN(Formatting.GREEN), + AQUA(Formatting.AQUA), + RED(Formatting.RED), + LIGHT_PURPLE(Formatting.LIGHT_PURPLE), + YELLOW(Formatting.YELLOW), + WHITE(Formatting.WHITE), + OBFUSCATED(Formatting.OBFUSCATED), + BOLD(Formatting.BOLD), + STRIKETHROUGH(Formatting.STRIKETHROUGH), + UNDERLINE(Formatting.UNDERLINE), + ITALIC(Formatting.ITALIC), + RESET(Formatting.RESET); + + public final Formatting formatting; + + + FormattingOption(Formatting formatting) { + this.formatting = formatting; + } + + @Override + public String toString() { + return StringUtils.capitalize(formatting.getName().replaceAll("_", " ")); + } + } + + public static class LividColor { + @ConfigEntry + public boolean enableLividColor = true; + + @ConfigEntry + public String lividColorText = "The livid color is [color]"; + } + + public static class Terminals { + @ConfigEntry + public boolean solveColor = true; + + @ConfigEntry + public boolean solveOrder = true; + + @ConfigEntry + public boolean solveStartsWith = true; + } + + public static class DwarvenMines { + @ConfigEntry + public boolean enableDrillFuel = true; + + @ConfigEntry + public boolean solveFetchur = true; + + @ConfigEntry + public boolean solvePuzzler = true; + + @ConfigEntry + public DwarvenHud dwarvenHud = new DwarvenHud(); + } + + public static class DwarvenHud { + @ConfigEntry + public boolean enabled = true; + + @ConfigEntry + public DwarvenHudStyle style = DwarvenHudStyle.SIMPLE; + + @ConfigEntry + public boolean enableBackground = true; + + @ConfigEntry + public int x = 10; + + @ConfigEntry + public int y = 10; + } + + public enum DwarvenHudStyle { + SIMPLE, FANCY, CLASSIC; + + @Override + public String toString() { + return switch (this) { + case SIMPLE -> "Simple"; + case FANCY -> "Fancy"; + case CLASSIC -> "Classic"; + }; + } + } + + public static class Barn { + @ConfigEntry + public boolean solveHungryHiker = true; + + @ConfigEntry + public boolean solveTreasureHunter = true; + } + + public static class Rift { + @ConfigEntry + public boolean mirrorverseWaypoints = true; + + @ConfigEntry + public int mcGrubberStacks = 0; + } + + public static class SpidersDen { + @ConfigEntry + public Relics relics = new Relics(); + } + + public static class Relics { + @ConfigEntry + public boolean enableRelicsHelper = false; + + @ConfigEntry + public boolean highlightFoundRelics = true; + } + + public static class Slayer { + @ConfigEntry + public VampireSlayer vampireSlayer = new VampireSlayer(); + } + + public static class VampireSlayer { + @ConfigEntry + public boolean enableEffigyWaypoints = true; + + @ConfigEntry + public boolean compactEffigyWaypoints; + + @ConfigEntry + public int effigyUpdateFrequency = 5; + + @ConfigEntry + public boolean enableHolyIceIndicator = true; + + @ConfigEntry + public int holyIceIndicatorTickDelay = 10; + + @ConfigEntry + public int holyIceUpdateFrequency = 5; + + @ConfigEntry + public boolean enableHealingMelonIndicator = true; + + @ConfigEntry + public float healingMelonHealthThreshold = 4f; + + @ConfigEntry + public boolean enableSteakStakeIndicator = true; + + @ConfigEntry + public int steakStakeUpdateFrequency = 5; + + @ConfigEntry + public boolean enableManiaIndicator = true; + + @ConfigEntry + public int maniaUpdateFrequency = 5; + } + + public static class Messages { + @ConfigEntry + public ChatFilterResult hideAbility = ChatFilterResult.PASS; + + @ConfigEntry + public ChatFilterResult hideHeal = ChatFilterResult.PASS; + + @ConfigEntry + public ChatFilterResult hideAOTE = ChatFilterResult.PASS; + + @ConfigEntry + public ChatFilterResult hideImplosion = ChatFilterResult.PASS; + + @ConfigEntry + public ChatFilterResult hideMoltenWave = ChatFilterResult.PASS; + + @ConfigEntry + public ChatFilterResult hideAds = ChatFilterResult.PASS; + + @ConfigEntry + public ChatFilterResult hideTeleportPad = ChatFilterResult.PASS; + + @ConfigEntry + public ChatFilterResult hideCombo = ChatFilterResult.PASS; + + @ConfigEntry + public ChatFilterResult hideAutopet = ChatFilterResult.PASS; + + @ConfigEntry + public ChatFilterResult hideShowOff = ChatFilterResult.PASS; + + @ConfigEntry + public boolean hideMana = false; + } + + public enum Info { + PURSE, BITS, LOCATION; + + @Override + public String toString() { + return I18n.translate("text.autoconfig.skyblocker.option.richPresence.info." + name()); + } } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfigManager.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfigManager.java new file mode 100644 index 00000000..534dde6d --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfigManager.java @@ -0,0 +1,88 @@ +package me.xmrvizzy.skyblocker.config; + +import java.lang.StackWalker.Option; +import java.nio.file.Path; +import com.mojang.brigadier.builder.LiteralArgumentBuilder; + +import dev.isxander.yacl3.api.YetAnotherConfigLib; +import dev.isxander.yacl3.config.GsonConfigInstance; +import me.xmrvizzy.skyblocker.SkyblockerMod; +import me.xmrvizzy.skyblocker.config.categories.DiscordRPCCategory; +import me.xmrvizzy.skyblocker.config.categories.DungeonsCategory; +import me.xmrvizzy.skyblocker.config.categories.DwarvenMinesCategory; +import me.xmrvizzy.skyblocker.config.categories.GeneralCategory; +import me.xmrvizzy.skyblocker.config.categories.MessageFilterCategory; +import me.xmrvizzy.skyblocker.config.categories.LocationsCategory; +import me.xmrvizzy.skyblocker.config.categories.QuickNavigationCategory; +import me.xmrvizzy.skyblocker.config.categories.SlayersCategory; +import me.xmrvizzy.skyblocker.utils.scheduler.Scheduler; +import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; +import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; +import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.text.Text; + +@SuppressWarnings("deprecation") +public class SkyblockerConfigManager { + private static final Path PATH = FabricLoader.getInstance().getConfigDir().resolve("skyblocker.json"); + private static final GsonConfigInstance INSTANCE = GsonConfigInstance.createBuilder(SkyblockerConfig.class) + .setPath(PATH) + .overrideGsonBuilder(ConfigSerializer.INSTANCE) + .build(); + /*private static final ConfigClassHandler HANDLER = ConfigClassHandler.createBuilder(ConfigModel.class) + .serializer(config -> GsonConfigSerializerBuilder.create(config) + .setPath(PATH) + .setJson5(false) + .overrideGsonBuilder(ConfigSerializer.INSTANCE) + .build()) + .build();*/ + + public static SkyblockerConfig get() { + return INSTANCE.getConfig(); + } + + /** + * This method is caller sensitive and can only be called by the mod initializer, + * this is enforced. + */ + public static void init() { + if (StackWalker.getInstance(Option.RETAIN_CLASS_REFERENCE).getCallerClass() != SkyblockerMod.class) { + throw new RuntimeException("Skyblocker: Called config init from an illegal place!"); + } + + INSTANCE.load(); + ClientCommandRegistrationCallback.EVENT.register(((dispatcher, registryAccess) -> dispatcher.register(ClientCommandManager.literal(SkyblockerMod.NAMESPACE).then(optionsLiteral("config")).then(optionsLiteral("options"))))); + } + + public static void save() { + INSTANCE.save(); + } + + public static Screen createGUI(Screen parent) { + return YetAnotherConfigLib.create(INSTANCE, (defaults, config, builder) -> { + return builder + .title(Text.literal("Skyblocker")) + .category(GeneralCategory.create(defaults, config)) + .category(DungeonsCategory.create(defaults, config)) + .category(DwarvenMinesCategory.create(defaults, config)) + .category(LocationsCategory.create(defaults, config)) + .category(SlayersCategory.create(defaults, config)) + .category(QuickNavigationCategory.create(defaults, config)) + .category(MessageFilterCategory.create(defaults, config)) + .category(DiscordRPCCategory.create(defaults, config)); + + }).generateScreen(parent); + } + + /** + * Registers an options command with the given name. Used for registering both options and config as valid commands. + * + * @param name the name of the command node + * @return the command builder + */ + private static LiteralArgumentBuilder optionsLiteral(String name) { + // Don't immediately open the next screen as it will be closed by ChatScreen right after this command is executed + return ClientCommandManager.literal(name).executes(Scheduler.queueOpenScreenCommand(() -> createGUI(null))); + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DiscordRPCCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DiscordRPCCategory.java index 9f7d066b..4357c29c 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DiscordRPCCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DiscordRPCCategory.java @@ -5,13 +5,13 @@ import dev.isxander.yacl3.api.Option; import dev.isxander.yacl3.api.OptionDescription; import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; import dev.isxander.yacl3.api.controller.StringControllerBuilder; -import me.xmrvizzy.skyblocker.config.ConfigModel; +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.config.ConfigUtils; import net.minecraft.text.Text; public class DiscordRPCCategory { - public static ConfigCategory create(ConfigModel defaults, ConfigModel config) { + public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) { return ConfigCategory.createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.category.richPresence")) @@ -23,7 +23,7 @@ public class DiscordRPCCategory { newValue -> config.richPresence.enableRichPresence = newValue) .controller(BooleanControllerBuilder::create) .build()) - .option(Option.createBuilder() + .option(Option.createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.richPresence.info")) .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.richPresence.info.@Tooltip"))) .binding(defaults.richPresence.info, diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java index e26bbae6..0f6b1208 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java @@ -10,8 +10,8 @@ import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; import dev.isxander.yacl3.api.controller.FloatFieldControllerBuilder; import dev.isxander.yacl3.api.controller.IntegerFieldControllerBuilder; import dev.isxander.yacl3.api.controller.StringControllerBuilder; -import me.xmrvizzy.skyblocker.config.ConfigModel; -import me.xmrvizzy.skyblocker.config.ConfigModel.FormattingOption; +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfig.FormattingOption; import me.xmrvizzy.skyblocker.config.ConfigUtils; import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonMapConfigScreen; import net.minecraft.client.MinecraftClient; @@ -19,7 +19,7 @@ import net.minecraft.text.Text; public class DungeonsCategory { - public static ConfigCategory create(ConfigModel defaults, ConfigModel config) { + public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) { return ConfigCategory.createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons")) diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DwarvenMinesCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DwarvenMinesCategory.java index 540a04e4..c6b8b8bc 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DwarvenMinesCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DwarvenMinesCategory.java @@ -7,7 +7,7 @@ import dev.isxander.yacl3.api.OptionDescription; import dev.isxander.yacl3.api.OptionGroup; import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; import dev.isxander.yacl3.api.controller.IntegerFieldControllerBuilder; -import me.xmrvizzy.skyblocker.config.ConfigModel; +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.config.ConfigUtils; import me.xmrvizzy.skyblocker.skyblock.dwarven.DwarvenHudConfigScreen; import net.minecraft.client.MinecraftClient; @@ -15,7 +15,7 @@ import net.minecraft.text.Text; public class DwarvenMinesCategory { - public static ConfigCategory create(ConfigModel defaults, ConfigModel config) { + public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) { return ConfigCategory.createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines")) @@ -53,7 +53,7 @@ public class DwarvenMinesCategory { newValue -> config.locations.dwarvenMines.dwarvenHud.enabled = newValue) .controller(BooleanControllerBuilder::create) .build()) - .option(Option.createBuilder() + .option(Option.createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.style")) .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.style.@Tooltip[0]", Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.style.@Tooltip[1]"), diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/GeneralCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/GeneralCategory.java index 1019703c..e75dc331 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/GeneralCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/GeneralCategory.java @@ -9,7 +9,7 @@ import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; import dev.isxander.yacl3.api.controller.FloatFieldControllerBuilder; import dev.isxander.yacl3.api.controller.IntegerFieldControllerBuilder; import dev.isxander.yacl3.api.controller.IntegerSliderControllerBuilder; -import me.xmrvizzy.skyblocker.config.ConfigModel; +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.config.ConfigUtils; import me.xmrvizzy.skyblocker.skyblock.shortcut.ShortcutsConfigScreen; import me.xmrvizzy.skyblocker.utils.render.title.TitleContainerConfigScreen; @@ -18,7 +18,7 @@ import net.minecraft.text.Text; public class GeneralCategory { - public static ConfigCategory create(ConfigModel defaults, ConfigModel config) { + public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) { return ConfigCategory.createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.category.general")) @@ -86,7 +86,7 @@ public class GeneralCategory { newValue -> config.general.tabHud.plainPlayerNames = newValue) .controller(BooleanControllerBuilder::create) .build()) - .option(Option.createBuilder() + .option(Option.createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.tabHud.nameSorting")) .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.tabHud.nameSorting.@Tooltip"))) .binding(defaults.general.tabHud.nameSorting, @@ -107,28 +107,28 @@ public class GeneralCategory { newValue -> config.general.bars.enableBars = newValue) .controller(BooleanControllerBuilder::create) .build()) - .option(Option.createBuilder() + .option(Option.createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.bars.barpositions.healthBarPosition")) .binding(defaults.general.bars.barpositions.healthBarPosition, () -> config.general.bars.barpositions.healthBarPosition, newValue -> config.general.bars.barpositions.healthBarPosition = newValue) .controller(ConfigUtils::createCyclingListController4Enum) .build()) - .option(Option.createBuilder() + .option(Option.createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.bars.barpositions.manaBarPosition")) .binding(defaults.general.bars.barpositions.manaBarPosition, () -> config.general.bars.barpositions.manaBarPosition, newValue -> config.general.bars.barpositions.manaBarPosition = newValue) .controller(ConfigUtils::createCyclingListController4Enum) .build()) - .option(Option.createBuilder() + .option(Option.createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.bars.barpositions.defenceBarPosition")) .binding(defaults.general.bars.barpositions.defenceBarPosition, () -> config.general.bars.barpositions.defenceBarPosition, newValue -> config.general.bars.barpositions.defenceBarPosition = newValue) .controller(ConfigUtils::createCyclingListController4Enum) .build()) - .option(Option.createBuilder() + .option(Option.createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.bars.barpositions.experienceBarPosition")) .binding(defaults.general.bars.barpositions.experienceBarPosition, () -> config.general.bars.barpositions.experienceBarPosition, @@ -306,7 +306,7 @@ public class GeneralCategory { newValue -> config.general.itemTooltip.enableAvgBIN = newValue) .controller(BooleanControllerBuilder::create) .build()) - .option(Option.createBuilder() + .option(Option.createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.avg")) .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.avg.@Tooltip"))) .binding(defaults.general.itemTooltip.avg, @@ -411,14 +411,14 @@ public class GeneralCategory { newValue -> config.general.titleContainer.y = newValue) .controller(IntegerFieldControllerBuilder::create) .build()) - .option(Option.createBuilder() + .option(Option.createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.titleContainer.direction")) .binding(defaults.general.titleContainer.direction, () -> config.general.titleContainer.direction, newValue -> config.general.titleContainer.direction = newValue) .controller(ConfigUtils::createCyclingListController4Enum) .build()) - .option(Option.createBuilder() + .option(Option.createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.titleContainer.alignment")) .binding(defaults.general.titleContainer.alignment, () -> config.general.titleContainer.alignment, diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/LocationsCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/LocationsCategory.java index 640bc5e6..8c3189ee 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/LocationsCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/LocationsCategory.java @@ -6,12 +6,12 @@ import dev.isxander.yacl3.api.OptionDescription; import dev.isxander.yacl3.api.OptionGroup; import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; import dev.isxander.yacl3.api.controller.IntegerSliderControllerBuilder; -import me.xmrvizzy.skyblocker.config.ConfigModel; +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import net.minecraft.text.Text; public class LocationsCategory { - public static ConfigCategory create(ConfigModel defaults, ConfigModel config) { + public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) { return ConfigCategory.createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.category.locations")) diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/MessageFilterCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/MessageFilterCategory.java index d73a38ba..5fc5a808 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/MessageFilterCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/MessageFilterCategory.java @@ -5,13 +5,13 @@ import dev.isxander.yacl3.api.Option; import dev.isxander.yacl3.api.OptionDescription; import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; -import me.xmrvizzy.skyblocker.config.ConfigModel; +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.config.ConfigUtils; import net.minecraft.text.Text; public class MessageFilterCategory { - public static ConfigCategory create(ConfigModel defaults, ConfigModel config) { + public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) { return ConfigCategory.createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.category.messages")) diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/QuickNavigationCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/QuickNavigationCategory.java index 831efa07..4ca38375 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/QuickNavigationCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/QuickNavigationCategory.java @@ -6,12 +6,12 @@ import dev.isxander.yacl3.api.OptionGroup; import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; import dev.isxander.yacl3.api.controller.IntegerFieldControllerBuilder; import dev.isxander.yacl3.api.controller.StringControllerBuilder; -import me.xmrvizzy.skyblocker.config.ConfigModel; +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import net.minecraft.text.Text; public class QuickNavigationCategory { - public static ConfigCategory create(ConfigModel defaults, ConfigModel config) { + public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) { return ConfigCategory.createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.category.quickNav")) diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/SlayersCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/SlayersCategory.java index f7f1886b..bfb3c6ad 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/SlayersCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/SlayersCategory.java @@ -8,12 +8,12 @@ import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; import dev.isxander.yacl3.api.controller.FloatFieldControllerBuilder; import dev.isxander.yacl3.api.controller.IntegerFieldControllerBuilder; import dev.isxander.yacl3.api.controller.IntegerSliderControllerBuilder; -import me.xmrvizzy.skyblocker.config.ConfigModel; +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import net.minecraft.text.Text; public class SlayersCategory { - public static ConfigCategory create(ConfigModel defaults, ConfigModel config) { + public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) { return ConfigCategory.createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.category.slayer")) diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/AbstractInventoryScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/AbstractInventoryScreenMixin.java index db517411..df71396e 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/AbstractInventoryScreenMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/AbstractInventoryScreenMixin.java @@ -5,7 +5,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.Utils; import net.minecraft.client.gui.screen.ingame.AbstractInventoryScreen; @@ -14,6 +14,6 @@ public class AbstractInventoryScreenMixin { @Inject(method = "drawStatusEffects", at = @At("HEAD"), cancellable = true) private void skyblocker$dontDrawStatusEffects(CallbackInfo ci) { - if (Utils.isOnSkyblock() && SkyblockerConfig.get().general.hideStatusEffectOverlay) ci.cancel(); + if (Utils.isOnSkyblock() && SkyblockerConfigManager.get().general.hideStatusEffectOverlay) ci.cancel(); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ArmorTrimMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ArmorTrimMixin.java index a90cf4d4..1076332f 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ArmorTrimMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ArmorTrimMixin.java @@ -3,7 +3,7 @@ package me.xmrvizzy.skyblocker.mixin; import com.llamalad7.mixinextras.injector.ModifyReturnValue; import com.llamalad7.mixinextras.sugar.Local; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.skyblock.item.CustomArmorTrims; import me.xmrvizzy.skyblocker.utils.Utils; import net.minecraft.item.ItemStack; @@ -22,7 +22,7 @@ public class ArmorTrimMixin { NbtCompound nbt = stack.getNbt(); if (Utils.isOnSkyblock() && nbt != null && nbt.contains("ExtraAttributes")) { - Object2ObjectOpenHashMap customTrims = SkyblockerConfig.get().general.customArmorTrims; + Object2ObjectOpenHashMap customTrims = SkyblockerConfigManager.get().general.customArmorTrims; NbtCompound extraAttributes = nbt.getCompound("ExtraAttributes"); String itemUuid = extraAttributes.contains("uuid") ? extraAttributes.getString("uuid") : null; diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/DrawContextMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/DrawContextMixin.java index cfe979d0..356095ab 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/DrawContextMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/DrawContextMixin.java @@ -6,7 +6,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import dev.cbyrne.betterinject.annotations.Arg; import dev.cbyrne.betterinject.annotations.Inject; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.skyblock.item.AttributeShards; import me.xmrvizzy.skyblocker.utils.ItemUtils; import me.xmrvizzy.skyblocker.utils.Utils; @@ -42,7 +42,7 @@ public abstract class DrawContextMixin { @Inject(method = "drawItemInSlot(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V", at = @At("HEAD")) public void skyblocker$renderItemBar(@Arg ItemStack stack, @Arg(ordinal = 0) int x, @Arg(ordinal = 1) int y) { - if (!Utils.isOnSkyblock() || !SkyblockerConfig.get().locations.dwarvenMines.enableDrillFuel || stack.isEmpty()) { + if (!Utils.isOnSkyblock() || !SkyblockerConfigManager.get().locations.dwarvenMines.enableDrillFuel || stack.isEmpty()) { return; } @@ -99,7 +99,7 @@ public abstract class DrawContextMixin { @Inject(method = "drawItemInSlot(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V", at = @At("HEAD")) private void skyblocker$renderAttributeShardDisplay(@Arg TextRenderer textRenderer, @Arg ItemStack stack, @Arg(ordinal = 0) int x, @Arg(ordinal = 1) int y, @Local(argsOnly = true) LocalRef countOverride) { - if (!SkyblockerConfig.get().general.itemInfoDisplay.attributeShardInfo) return; + if (!SkyblockerConfigManager.get().general.itemInfoDisplay.attributeShardInfo) return; NbtCompound nbt = stack.getNbt(); diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/DyeableItemMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/DyeableItemMixin.java index f04c4cdd..bbe31472 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/DyeableItemMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/DyeableItemMixin.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.mixin; import com.llamalad7.mixinextras.injector.ModifyReturnValue; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.Utils; import net.minecraft.item.DyeableItem; import net.minecraft.item.ItemStack; @@ -19,7 +19,7 @@ public interface DyeableItemMixin { NbtCompound extraAttributes = nbt.getCompound("ExtraAttributes"); String itemUuid = extraAttributes.contains("uuid") ? extraAttributes.getString("uuid") : null; - return SkyblockerConfig.get().general.customDyeColors.getOrDefault(itemUuid, originalColor); + return SkyblockerConfigManager.get().general.customDyeColors.getOrDefault(itemUuid, originalColor); } return originalColor; diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java index b07390b7..94053381 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/FarmlandBlockMixin.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.mixin; import com.llamalad7.mixinextras.injector.ModifyReturnValue; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.Utils; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -27,7 +27,7 @@ public abstract class FarmlandBlockMixin extends Block { @ModifyReturnValue(method = "getOutlineShape", at = @At("RETURN")) private VoxelShape skyblocker$replaceOutlineShape(VoxelShape original) { - return Utils.isOnSkyblock() && SkyblockerConfig.get().general.hitbox.oldFarmlandHitbox ? VoxelShapes.fullCube() : original; + return Utils.isOnSkyblock() && SkyblockerConfigManager.get().general.hitbox.oldFarmlandHitbox ? VoxelShapes.fullCube() : original; } @SuppressWarnings("deprecation") diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java index 33532788..17497ded 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.mixin; import me.xmrvizzy.skyblocker.SkyblockerMod; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.skyblock.experiment.ChronomatronSolver; import me.xmrvizzy.skyblocker.skyblock.experiment.ExperimentSolver; import me.xmrvizzy.skyblocker.skyblock.experiment.SuperpairsSolver; @@ -59,18 +59,18 @@ public abstract class HandledScreenMixin extends Screen { if (!Utils.isOnSkyblock()) return; // Hide Empty Tooltips - if (SkyblockerConfig.get().general.hideEmptyTooltips && focusedSlot.getStack().getName().getString().equals(" ")) { + if (SkyblockerConfigManager.get().general.hideEmptyTooltips && focusedSlot.getStack().getName().getString().equals(" ")) { ci.cancel(); } // Backpack Preview - boolean shiftDown = SkyblockerConfig.get().general.backpackPreviewWithoutShift ^ Screen.hasShiftDown(); + boolean shiftDown = SkyblockerConfigManager.get().general.backpackPreviewWithoutShift ^ Screen.hasShiftDown(); if (shiftDown && getTitle().getString().equals("Storage") && focusedSlot.inventory != client.player.getInventory() && BackpackPreview.renderPreview(context, focusedSlot.getIndex(), x, y)) { ci.cancel(); } // Compactor Preview - if (SkyblockerConfig.get().general.compactorDeletorPreview) { + if (SkyblockerConfigManager.get().general.compactorDeletorPreview) { ItemStack stack = focusedSlot.getStack(); Matcher matcher = CompactorDeletorPreview.NAME.matcher(ItemRegistry.getInternalName(stack)); if (matcher.matches() && CompactorDeletorPreview.drawPreview(context, stack, matcher.group("type"), matcher.group("size"), x, y)) { diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java index 752b102a..c73ca2aa 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java @@ -2,7 +2,7 @@ package me.xmrvizzy.skyblocker.mixin; import com.llamalad7.mixinextras.sugar.Local; import me.xmrvizzy.skyblocker.SkyblockerMod; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.skyblock.FancyStatusBars; import me.xmrvizzy.skyblocker.skyblock.HotbarSlotLock; import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonMap; @@ -41,7 +41,7 @@ public abstract class InGameHudMixin { @Inject(method = "renderExperienceBar", at = @At("HEAD"), cancellable = true) private void skyblocker$renderExperienceBar(CallbackInfo ci) { - if (Utils.isOnSkyblock() && SkyblockerConfig.get().general.bars.enableBars && !Utils.isInTheRift()) + if (Utils.isOnSkyblock() && SkyblockerConfigManager.get().general.bars.enableBars && !Utils.isInTheRift()) ci.cancel(); } @@ -52,18 +52,18 @@ public abstract class InGameHudMixin { if (statusBars.render(context, scaledWidth, scaledHeight)) ci.cancel(); - if (Utils.isInDungeons() && SkyblockerConfig.get().locations.dungeons.enableMap) + if (Utils.isInDungeons() && SkyblockerConfigManager.get().locations.dungeons.enableMap) DungeonMap.render(context.getMatrices()); } @Inject(method = "renderMountHealth", at = @At("HEAD"), cancellable = true) private void skyblocker$renderMountHealth(CallbackInfo ci) { - if (Utils.isOnSkyblock() && SkyblockerConfig.get().general.bars.enableBars && !Utils.isInTheRift()) + if (Utils.isOnSkyblock() && SkyblockerConfigManager.get().general.bars.enableBars && !Utils.isInTheRift()) ci.cancel(); } @Inject(method = "renderStatusEffectOverlay", at = @At("HEAD"), cancellable = true) private void skyblocker$dontRenderStatusEffects(CallbackInfo ci) { - if (Utils.isOnSkyblock() && SkyblockerConfig.get().general.hideStatusEffectOverlay) ci.cancel(); + if (Utils.isOnSkyblock() && SkyblockerConfigManager.get().general.hideStatusEffectOverlay) ci.cancel(); } } \ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/InventoryScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/InventoryScreenMixin.java index 729124fd..596fa1f9 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/InventoryScreenMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/InventoryScreenMixin.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.mixin; import com.llamalad7.mixinextras.injector.ModifyExpressionValue; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.skyblock.itemlist.ItemListWidget; import me.xmrvizzy.skyblocker.utils.Utils; import net.minecraft.client.gui.screen.ingame.InventoryScreen; @@ -13,6 +13,6 @@ import org.spongepowered.asm.mixin.injection.At; public abstract class InventoryScreenMixin { @ModifyExpressionValue(method = "", at = @At(value = "NEW", target = "net/minecraft/client/gui/screen/recipebook/RecipeBookWidget")) private RecipeBookWidget skyblocker$replaceRecipeBook(RecipeBookWidget original) { - return SkyblockerConfig.get().general.itemList.enableItemList && Utils.isOnSkyblock() ? new ItemListWidget() : original; + return SkyblockerConfigManager.get().general.itemList.enableItemList && Utils.isOnSkyblock() ? new ItemListWidget() : original; } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemStackMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemStackMixin.java index 63dc6624..063c048e 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemStackMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ItemStackMixin.java @@ -7,7 +7,7 @@ import org.spongepowered.asm.mixin.injection.At; import com.llamalad7.mixinextras.injector.ModifyReturnValue; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.Utils; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; @@ -25,7 +25,7 @@ public abstract class ItemStackMixin { NbtCompound extraAttributes = nbt.getCompound("ExtraAttributes"); String itemUuid = extraAttributes.contains("uuid") ? extraAttributes.getString("uuid") : null; - return SkyblockerConfig.get().general.customItemNames.getOrDefault(itemUuid, original); + return SkyblockerConfigManager.get().general.customItemNames.getOrDefault(itemUuid, original); } return original; diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java index ec7b6ddd..903e8ee0 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerListHudMixin.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.mixin; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.skyblock.tabhud.TabHud; import me.xmrvizzy.skyblocker.skyblock.tabhud.screenbuilder.ScreenMaster; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr; @@ -28,7 +28,7 @@ public class PlayerListHudMixin { @Inject(at = @At("HEAD"), method = "render(Lnet/minecraft/client/gui/DrawContext;ILnet/minecraft/scoreboard/Scoreboard;Lnet/minecraft/scoreboard/ScoreboardObjective;)V", cancellable = true) public void skyblocker$renderTabHud(@Arg DrawContext context, @Arg int w, CallbackInfo info) { - if (!Utils.isOnSkyblock() || !SkyblockerConfig.get().general.tabHud.tabHudEnabled || TabHud.defaultTgl.isPressed()) { + if (!Utils.isOnSkyblock() || !SkyblockerConfigManager.get().general.tabHud.tabHudEnabled || TabHud.defaultTgl.isPressed()) { return; } @@ -38,7 +38,7 @@ public class PlayerListHudMixin { } int h = MinecraftClient.getInstance().getWindow().getScaledHeight(); - float scale = SkyblockerConfig.get().general.tabHud.tabHudScale / 100f; + float scale = SkyblockerConfigManager.get().general.tabHud.tabHudScale / 100f; w = (int) (w / scale); h = (int) (h / scale); diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/WorldRendererMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/WorldRendererMixin.java index 53dd57a7..8cf94c69 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/WorldRendererMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/WorldRendererMixin.java @@ -9,7 +9,7 @@ import com.llamalad7.mixinextras.sugar.Local; import com.llamalad7.mixinextras.sugar.Share; import com.llamalad7.mixinextras.sugar.ref.LocalBooleanRef; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.skyblock.dungeon.StarredMobGlow; import net.minecraft.client.render.WorldRenderer; import net.minecraft.entity.Entity; @@ -19,7 +19,7 @@ public class WorldRendererMixin { @ModifyExpressionValue(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/MinecraftClient;hasOutline(Lnet/minecraft/entity/Entity;)Z")) private boolean skyblocker$shouldStarredMobGlow(boolean original, @Local Entity entity, @Share("isGlowingStarredMob") LocalBooleanRef isGlowingStarredMob) { - boolean isAStarredMobThatShouldGlow = SkyblockerConfig.get().locations.dungeons.starredMobGlow && StarredMobGlow.shouldMobGlow(entity); + boolean isAStarredMobThatShouldGlow = SkyblockerConfigManager.get().locations.dungeons.starredMobGlow && StarredMobGlow.shouldMobGlow(entity); isGlowingStarredMob.set(isAStarredMobThatShouldGlow); diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FairySouls.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FairySouls.java index 1933184a..46454fb3 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FairySouls.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FairySouls.java @@ -7,8 +7,8 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.mojang.brigadier.CommandDispatcher; import me.xmrvizzy.skyblocker.SkyblockerMod; -import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.NEURepo; import me.xmrvizzy.skyblocker.utils.PosUtils; import me.xmrvizzy.skyblocker.utils.Utils; @@ -142,7 +142,7 @@ public class FairySouls { } private static void render(WorldRenderContext context) { - ConfigModel.FairySouls fairySoulsConfig = SkyblockerConfig.get().general.fairySouls; + SkyblockerConfig.FairySouls fairySoulsConfig = SkyblockerConfigManager.get().general.fairySouls; if (fairySoulsConfig.enableFairySoulsHelper && fairySoulsLoaded.isDone() && fairySouls.containsKey(Utils.getLocationRaw())) { for (BlockPos fairySoulPos : fairySouls.get(Utils.getLocationRaw())) { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java index 1a460f5b..56b6c7fe 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock; import me.xmrvizzy.skyblocker.SkyblockerMod; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.Utils; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; @@ -40,7 +40,7 @@ public class FancyStatusBars { public boolean render(DrawContext context, int scaledWidth, int scaledHeight) { var player = client.player; - if (!SkyblockerConfig.get().general.bars.enableBars || player == null || Utils.isInTheRift()) + if (!SkyblockerConfigManager.get().general.bars.enableBars || player == null || Utils.isInTheRift()) return false; anchorsX[0] = scaledWidth / 2 - 91; anchorsY[0] = scaledHeight - 33; @@ -60,10 +60,10 @@ public class FancyStatusBars { // Update positions of bars from config for (int i = 0; i < 4; i++) { int configAnchorNum = switch (i) { - case 0 -> SkyblockerConfig.get().general.bars.barpositions.healthBarPosition.toInt(); - case 1 -> SkyblockerConfig.get().general.bars.barpositions.manaBarPosition.toInt(); - case 2 -> SkyblockerConfig.get().general.bars.barpositions.defenceBarPosition.toInt(); - case 3 -> SkyblockerConfig.get().general.bars.barpositions.experienceBarPosition.toInt(); + case 0 -> SkyblockerConfigManager.get().general.bars.barpositions.healthBarPosition.toInt(); + case 1 -> SkyblockerConfigManager.get().general.bars.barpositions.manaBarPosition.toInt(); + case 2 -> SkyblockerConfigManager.get().general.bars.barpositions.defenceBarPosition.toInt(); + case 3 -> SkyblockerConfigManager.get().general.bars.barpositions.experienceBarPosition.toInt(); default -> 0; }; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FishingHelper.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FishingHelper.java index f039a79d..dca3f30b 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FishingHelper.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FishingHelper.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.render.RenderHelper; import me.xmrvizzy.skyblocker.utils.render.title.Title; import net.fabricmc.fabric.api.event.player.UseItemCallback; @@ -46,7 +46,7 @@ public class FishingHelper { public static void onSound(PlaySoundS2CPacket packet) { String path = packet.getSound().value().getId().getPath(); - if (SkyblockerConfig.get().general.fishing.enableFishingHelper && startTime != 0 && System.currentTimeMillis() >= startTime + 2000 && ("entity.generic.splash".equals(path) || "entity.player.splash".equals(path))) { + if (SkyblockerConfigManager.get().general.fishing.enableFishingHelper && startTime != 0 && System.currentTimeMillis() >= startTime + 2000 && ("entity.generic.splash".equals(path) || "entity.player.splash".equals(path))) { ClientPlayerEntity player = MinecraftClient.getInstance().player; if (player != null && player.fishHook != null) { Vec3d soundToFishHook = player.fishHook.getPos().subtract(packet.getX(), 0, packet.getZ()); diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/HotbarSlotLock.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/HotbarSlotLock.java index 9f38fe35..ab8ea882 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/HotbarSlotLock.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/HotbarSlotLock.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock; import me.shedaniel.autoconfig.AutoConfig; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.option.KeyBinding; @@ -22,7 +22,7 @@ public class HotbarSlotLock { } public static boolean isLocked(int slot) { - return SkyblockerConfig.get().general.lockedSlots.contains(slot); + return SkyblockerConfigManager.get().general.lockedSlots.contains(slot); } public static void handleDropSelectedItem(int slot, CallbackInfoReturnable cir) { @@ -31,11 +31,11 @@ public class HotbarSlotLock { public static void handleInputEvents(ClientPlayerEntity player) { while (hotbarSlotLock.wasPressed()) { - List lockedSlots = SkyblockerConfig.get().general.lockedSlots; + List lockedSlots = SkyblockerConfigManager.get().general.lockedSlots; int selected = player.getInventory().selectedSlot; if (!isLocked(player.getInventory().selectedSlot)) lockedSlots.add(selected); else lockedSlots.remove(Integer.valueOf(selected)); - SkyblockerConfig.save(); + SkyblockerConfigManager.save(); } } } \ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/QuiverWarning.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/QuiverWarning.java index 381bf94c..2d0715e4 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/QuiverWarning.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/QuiverWarning.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.Utils; import me.xmrvizzy.skyblocker.utils.scheduler.Scheduler; import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents; @@ -21,7 +21,7 @@ public class QuiverWarning { public static boolean onChatMessage(Text text, boolean overlay) { String message = text.getString(); - if (SkyblockerConfig.get().general.quiverWarning.enableQuiverWarning && message.endsWith("left in your Quiver!")) { + if (SkyblockerConfigManager.get().general.quiverWarning.enableQuiverWarning && message.endsWith("left in your Quiver!")) { MinecraftClient.getInstance().inGameHud.setDefaultTitleFade(); if (message.startsWith("You only have 50")) { onChatMessage(Type.FIFTY_LEFT); @@ -37,14 +37,14 @@ public class QuiverWarning { private static void onChatMessage(Type warning) { if (!Utils.isInDungeons()) { MinecraftClient.getInstance().inGameHud.setTitle(Text.translatable(warning.key).formatted(Formatting.RED)); - } else if (SkyblockerConfig.get().general.quiverWarning.enableQuiverWarningInDungeons) { + } else if (SkyblockerConfigManager.get().general.quiverWarning.enableQuiverWarningInDungeons) { MinecraftClient.getInstance().inGameHud.setTitle(Text.translatable(warning.key).formatted(Formatting.RED)); QuiverWarning.warning = warning; } } public static void update() { - if (warning != null && SkyblockerConfig.get().general.quiverWarning.enableQuiverWarning && SkyblockerConfig.get().general.quiverWarning.enableQuiverWarningAfterDungeon && !Utils.isInDungeons()) { + if (warning != null && SkyblockerConfigManager.get().general.quiverWarning.enableQuiverWarning && SkyblockerConfigManager.get().general.quiverWarning.enableQuiverWarningAfterDungeon && !Utils.isInDungeons()) { InGameHud inGameHud = MinecraftClient.getInstance().inGameHud; inGameHud.setDefaultTitleFade(); inGameHud.setTitle(Text.translatable(warning.key).formatted(Formatting.RED)); diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/StatusBarTracker.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/StatusBarTracker.java index aeee9978..ae5aff0b 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/StatusBarTracker.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/StatusBarTracker.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.Utils; import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents; import net.minecraft.client.MinecraftClient; @@ -66,10 +66,10 @@ public class StatusBarTracker { } private Text onOverlayMessage(Text text, boolean overlay) { - if (!overlay || !Utils.isOnSkyblock() || !SkyblockerConfig.get().general.bars.enableBars || Utils.isInTheRift()) { + if (!overlay || !Utils.isOnSkyblock() || !SkyblockerConfigManager.get().general.bars.enableBars || Utils.isInTheRift()) { return text; } - return Text.of(update(text.getString(), SkyblockerConfig.get().messages.hideMana)); + return Text.of(update(text.getString(), SkyblockerConfigManager.get().messages.hideMana)); } public String update(String actionBar, boolean filterManaUse) { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/TeleportOverlay.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/TeleportOverlay.java index c7ab926e..1aeeb6d3 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/TeleportOverlay.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/TeleportOverlay.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock; import com.mojang.blaze3d.systems.RenderSystem; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.skyblock.item.PriceInfoTooltip; import me.xmrvizzy.skyblocker.utils.Utils; import me.xmrvizzy.skyblocker.utils.render.RenderHelper; @@ -24,7 +24,7 @@ public class TeleportOverlay { } private static void render(WorldRenderContext wrc) { - if (Utils.isOnSkyblock() && SkyblockerConfig.get().general.teleportOverlay.enableTeleportOverlays && client.player != null && client.world != null) { + if (Utils.isOnSkyblock() && SkyblockerConfigManager.get().general.teleportOverlay.enableTeleportOverlays && client.player != null && client.world != null) { ItemStack heldItem = client.player.getMainHandStack(); String itemId = PriceInfoTooltip.getInternalNameFromNBT(heldItem, true); NbtCompound nbt = heldItem.getNbt(); @@ -32,34 +32,34 @@ public class TeleportOverlay { if (itemId != null) { switch (itemId) { case "ASPECT_OF_THE_LEECH_1" -> { - if (SkyblockerConfig.get().general.teleportOverlay.enableWeirdTransmission) { + if (SkyblockerConfigManager.get().general.teleportOverlay.enableWeirdTransmission) { render(wrc, 3); } } case "ASPECT_OF_THE_LEECH_2" -> { - if (SkyblockerConfig.get().general.teleportOverlay.enableWeirdTransmission) { + if (SkyblockerConfigManager.get().general.teleportOverlay.enableWeirdTransmission) { render(wrc, 4); } } case "ASPECT_OF_THE_END", "ASPECT_OF_THE_VOID" -> { - if (SkyblockerConfig.get().general.teleportOverlay.enableEtherTransmission && client.options.sneakKey.isPressed() && nbt != null && nbt.getCompound("ExtraAttributes").getInt("ethermerge") == 1) { + if (SkyblockerConfigManager.get().general.teleportOverlay.enableEtherTransmission && client.options.sneakKey.isPressed() && nbt != null && nbt.getCompound("ExtraAttributes").getInt("ethermerge") == 1) { render(wrc, nbt, 57); - } else if (SkyblockerConfig.get().general.teleportOverlay.enableInstantTransmission) { + } else if (SkyblockerConfigManager.get().general.teleportOverlay.enableInstantTransmission) { render(wrc, nbt, 8); } } case "ETHERWARP_CONDUIT" -> { - if (SkyblockerConfig.get().general.teleportOverlay.enableEtherTransmission) { + if (SkyblockerConfigManager.get().general.teleportOverlay.enableEtherTransmission) { render(wrc, nbt, 57); } } case "SINSEEKER_SCYTHE" -> { - if (SkyblockerConfig.get().general.teleportOverlay.enableSinrecallTransmission) { + if (SkyblockerConfigManager.get().general.teleportOverlay.enableSinrecallTransmission) { render(wrc, nbt, 4); } } case "NECRON_BLADE", "ASTRAEA", "HYPERION", "SCYLLA", "VALKYRIE" -> { - if (SkyblockerConfig.get().general.teleportOverlay.enableWitherImpact) { + if (SkyblockerConfigManager.get().general.teleportOverlay.enableWitherImpact) { render(wrc, 10); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/barn/HungryHiker.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/barn/HungryHiker.java index a5d02d93..91862622 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/barn/HungryHiker.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/barn/HungryHiker.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.barn; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.utils.chat.ChatPatternListener; import net.minecraft.client.MinecraftClient; @@ -18,7 +18,7 @@ public class HungryHiker extends ChatPatternListener { @Override public ChatFilterResult state() { - return SkyblockerConfig.get().locations.barn.solveHungryHiker ? ChatFilterResult.FILTER : ChatFilterResult.PASS; + return SkyblockerConfigManager.get().locations.barn.solveHungryHiker ? ChatFilterResult.FILTER : ChatFilterResult.PASS; } @Override diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/barn/TreasureHunter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/barn/TreasureHunter.java index ba42d2ba..385dc20b 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/barn/TreasureHunter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/barn/TreasureHunter.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.barn; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.utils.chat.ChatPatternListener; import net.minecraft.client.MinecraftClient; @@ -18,7 +18,7 @@ public class TreasureHunter extends ChatPatternListener { @Override public ChatFilterResult state() { - return SkyblockerConfig.get().locations.barn.solveTreasureHunter ? ChatFilterResult.FILTER : ChatFilterResult.PASS; + return SkyblockerConfigManager.get().locations.barn.solveTreasureHunter ? ChatFilterResult.FILTER : ChatFilterResult.PASS; } @Override diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/CroesusHelper.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/CroesusHelper.java index bf3cc36d..67e6d7f4 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/CroesusHelper.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/CroesusHelper.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.render.gui.ColorHighlight; import me.xmrvizzy.skyblocker.utils.render.gui.ContainerSolver; import net.minecraft.item.ItemStack; @@ -17,7 +17,7 @@ public class CroesusHelper extends ContainerSolver { @Override protected boolean isEnabled() { - return SkyblockerConfig.get().locations.dungeons.croesusHelper; + return SkyblockerConfigManager.get().locations.dungeons.croesusHelper; } @Override diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java index 8d676d0b..f39684eb 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; import it.unimi.dsi.fastutil.objects.ObjectIntPair; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.Utils; import me.xmrvizzy.skyblocker.utils.render.RenderHelper; import me.xmrvizzy.skyblocker.utils.scheduler.Scheduler; @@ -106,7 +106,7 @@ public class DungeonBlaze { */ public static void blazeRenderer(WorldRenderContext wrc) { try { - if (highestBlaze != null && lowestBlaze != null && highestBlaze.isAlive() && lowestBlaze.isAlive() && SkyblockerConfig.get().locations.dungeons.blazesolver) { + if (highestBlaze != null && lowestBlaze != null && highestBlaze.isAlive() && lowestBlaze.isAlive() && SkyblockerConfigManager.get().locations.dungeons.blazesolver) { if (highestBlaze.getY() < 69) { renderBlazeOutline(highestBlaze, nextHighestBlaze, wrc); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonChestProfit.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonChestProfit.java index f6fd5909..91be5248 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonChestProfit.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonChestProfit.java @@ -2,8 +2,8 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; import com.google.gson.JsonObject; import it.unimi.dsi.fastutil.ints.IntBooleanPair; -import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.mixin.accessor.ScreenAccessor; import me.xmrvizzy.skyblocker.skyblock.item.PriceInfoTooltip; import me.xmrvizzy.skyblocker.utils.Utils; @@ -41,7 +41,7 @@ public class DungeonChestProfit { public static Text getChestProfit(GenericContainerScreenHandler handler, Text title, MinecraftClient client) { try { - if (SkyblockerConfig.get().locations.dungeons.dungeonChestProfit.enableProfitCalculator && isDungeonChest(title.getString())) { + if (SkyblockerConfigManager.get().locations.dungeons.dungeonChestProfit.enableProfitCalculator && isDungeonChest(title.getString())) { int profit = 0; boolean hasIncompleteData = false, usedKismet = false; List slots = handler.slots.subList(0, handler.getRows() * 9); @@ -69,7 +69,7 @@ public class DungeonChestProfit { } //Essence price - if (name.contains("Essence") && SkyblockerConfig.get().locations.dungeons.dungeonChestProfit.includeEssence) { + if (name.contains("Essence") && SkyblockerConfigManager.get().locations.dungeons.dungeonChestProfit.includeEssence) { Matcher matcher = ESSENCE_PATTERN.matcher(name); if (matcher.matches()) { @@ -106,7 +106,7 @@ public class DungeonChestProfit { } } - if (SkyblockerConfig.get().locations.dungeons.dungeonChestProfit.includeKismet && usedKismet) { + if (SkyblockerConfigManager.get().locations.dungeons.dungeonChestProfit.includeKismet && usedKismet) { IntBooleanPair kismetPriceData = getItemPrice("KISMET_FEATHER"); if (!kismetPriceData.rightBoolean()) hasIncompleteData = true; @@ -159,7 +159,7 @@ public class DungeonChestProfit { } private static Text getProfitText(int profit, boolean hasIncompleteData) { - ConfigModel.DungeonChestProfit config = SkyblockerConfig.get().locations.dungeons.dungeonChestProfit; + SkyblockerConfig.DungeonChestProfit config = SkyblockerConfigManager.get().locations.dungeons.dungeonChestProfit; return getProfitText(profit, hasIncompleteData, config.neutralThreshold, config.neutralColor.formatting, config.profitColor.formatting, config.lossColor.formatting, config.incompleteColor.formatting); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMap.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMap.java index a70dd501..53cc4fac 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMap.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMap.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.scheduler.Scheduler; import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; @@ -32,9 +32,9 @@ public class DungeonMap { VertexConsumerProvider.Immediate vertices = client.getBufferBuilders().getEffectVertexConsumers(); MapRenderer map = client.gameRenderer.getMapRenderer(); MapState state = FilledMapItem.getMapState(mapid, client.world); - float scaling = SkyblockerConfig.get().locations.dungeons.mapScaling; - int x = SkyblockerConfig.get().locations.dungeons.mapX; - int y = SkyblockerConfig.get().locations.dungeons.mapY; + float scaling = SkyblockerConfigManager.get().locations.dungeons.mapScaling; + int x = SkyblockerConfigManager.get().locations.dungeons.mapX; + int y = SkyblockerConfigManager.get().locations.dungeons.mapY; if (state == null) return; matrices.push(); @@ -47,7 +47,7 @@ public class DungeonMap { } public static void renderHUDMap(DrawContext context, int x, int y) { - float scaling = SkyblockerConfig.get().locations.dungeons.mapScaling; + float scaling = SkyblockerConfigManager.get().locations.dungeons.mapScaling; int size = (int) (128 * scaling); context.drawTexture(MAP_BACKGROUND, x, y, 0, 0, size, size, size, size); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java index 88a9070e..94b05e86 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.render.RenderHelper; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; @@ -10,8 +10,8 @@ import java.awt.*; public class DungeonMapConfigScreen extends Screen { - private int hudX = SkyblockerConfig.get().locations.dungeons.mapX; - private int hudY = SkyblockerConfig.get().locations.dungeons.mapY; + private int hudX = SkyblockerConfigManager.get().locations.dungeons.mapX; + private int hudY = SkyblockerConfigManager.get().locations.dungeons.mapY; private final Screen parent; protected DungeonMapConfigScreen() { @@ -33,7 +33,7 @@ public class DungeonMapConfigScreen extends Screen { @Override public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) { - float scaling = SkyblockerConfig.get().locations.dungeons.mapScaling; + float scaling = SkyblockerConfigManager.get().locations.dungeons.mapScaling; int size = (int) (128 * scaling); if (RenderHelper.pointIsInArea(mouseX, mouseY, hudX, hudY, hudX + size, hudY + size) && button == 0) { hudX = (int) Math.max(Math.min(mouseX - (size >> 1), this.width - size), 0); @@ -54,9 +54,9 @@ public class DungeonMapConfigScreen extends Screen { @Override public void close() { - SkyblockerConfig.get().locations.dungeons.mapX = hudX; - SkyblockerConfig.get().locations.dungeons.mapY = hudY; - SkyblockerConfig.save(); + SkyblockerConfigManager.get().locations.dungeons.mapX = hudX; + SkyblockerConfigManager.get().locations.dungeons.mapY = hudY; + SkyblockerConfigManager.save(); this.client.setScreen(parent); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/LividColor.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/LividColor.java index e5d8a720..2df8192d 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/LividColor.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/LividColor.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.Utils; import me.xmrvizzy.skyblocker.utils.scheduler.MessageScheduler; import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents; @@ -12,7 +12,7 @@ public class LividColor { public static void init() { ClientReceiveMessageEvents.GAME.register((message, overlay) -> { - if (SkyblockerConfig.get().locations.dungeons.lividColor.enableLividColor && message.getString().equals("[BOSS] Livid: I respect you for making it to here, but I'll be your undoing.")) { + if (SkyblockerConfigManager.get().locations.dungeons.lividColor.enableLividColor && message.getString().equals("[BOSS] Livid: I respect you for making it to here, but I'll be your undoing.")) { tenTicks = 8; } }); @@ -21,15 +21,15 @@ public class LividColor { public static void update() { MinecraftClient client = MinecraftClient.getInstance(); if (tenTicks != 0) { - if (SkyblockerConfig.get().locations.dungeons.lividColor.enableLividColor && Utils.isInDungeons() && client.world != null) { + if (SkyblockerConfigManager.get().locations.dungeons.lividColor.enableLividColor && Utils.isInDungeons() && client.world != null) { if (tenTicks == 1) { - MessageScheduler.INSTANCE.sendMessageAfterCooldown(SkyblockerConfig.get().locations.dungeons.lividColor.lividColorText.replace("[color]", "red")); + MessageScheduler.INSTANCE.sendMessageAfterCooldown(SkyblockerConfigManager.get().locations.dungeons.lividColor.lividColorText.replace("[color]", "red")); tenTicks = 0; return; } String key = client.world.getBlockState(new BlockPos(5, 110, 42)).getBlock().getTranslationKey(); if (key.startsWith("block.minecraft.") && key.endsWith("wool") && !key.endsWith("red_wool")) { - MessageScheduler.INSTANCE.sendMessageAfterCooldown(SkyblockerConfig.get().locations.dungeons.lividColor.lividColorText.replace("[color]", key.substring(16, key.length() - 5))); + MessageScheduler.INSTANCE.sendMessageAfterCooldown(SkyblockerConfigManager.get().locations.dungeons.lividColor.lividColorText.replace("[color]", key.substring(16, key.length() - 5))); tenTicks = 0; return; } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/OldLever.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/OldLever.java index 91de7a1d..b9fba7be 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/OldLever.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/OldLever.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import net.minecraft.block.Block; import net.minecraft.block.enums.BlockFace; import net.minecraft.util.math.Direction; @@ -14,7 +14,7 @@ public class OldLever { protected static final VoxelShape WEST_SHAPE = Block.createCuboidShape(10.0D, 3.0D, 5.0D, 16.0D, 13.0D, 11.0D); public static VoxelShape getShape(BlockFace face, Direction direction) { - if (!SkyblockerConfig.get().general.hitbox.oldLeverHitbox) + if (!SkyblockerConfigManager.get().general.hitbox.oldLeverHitbox) return null; if (face == BlockFace.FLOOR) { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java index 8d8a840a..288a8b5a 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.Utils; import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.utils.chat.ChatPatternListener; @@ -43,7 +43,7 @@ public class Reparty extends ChatPatternListener { @Override public ChatFilterResult state() { - return (SkyblockerConfig.get().general.acceptReparty || this.repartying) ? ChatFilterResult.FILTER : ChatFilterResult.PASS; + return (SkyblockerConfigManager.get().general.acceptReparty || this.repartying) ? ChatFilterResult.FILTER : ChatFilterResult.PASS; } @Override diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdos.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdos.java index 9f522942..05ed4d94 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdos.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdos.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.utils.chat.ChatPatternListener; import net.minecraft.client.MinecraftClient; @@ -17,7 +17,7 @@ public class ThreeWeirdos extends ChatPatternListener { @Override public ChatFilterResult state() { - return SkyblockerConfig.get().locations.dungeons.solveThreeWeirdos ? null : ChatFilterResult.PASS; + return SkyblockerConfigManager.get().locations.dungeons.solveThreeWeirdos ? null : ChatFilterResult.PASS; } @Override diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/TicTacToe.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/TicTacToe.java index a97b6752..21493da7 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/TicTacToe.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/TicTacToe.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.Utils; import me.xmrvizzy.skyblocker.utils.render.RenderHelper; import me.xmrvizzy.skyblocker.utils.tictactoe.TicTacToeUtils; @@ -126,7 +126,7 @@ public class TicTacToe { private static void solutionRenderer(WorldRenderContext context) { try { - if (SkyblockerConfig.get().locations.dungeons.solveTicTacToe && nextBestMoveToMake != null) { + if (SkyblockerConfigManager.get().locations.dungeons.solveTicTacToe && nextBestMoveToMake != null) { RenderHelper.renderOutline(context, nextBestMoveToMake, RED_COLOR_COMPONENTS, 5); } } catch (Exception e) { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Trivia.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Trivia.java index 8497041b..b1e51aa6 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Trivia.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Trivia.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.utils.chat.ChatPatternListener; import me.xmrvizzy.skyblocker.skyblock.FairySouls; @@ -24,7 +24,7 @@ public class Trivia extends ChatPatternListener { @Override public ChatFilterResult state() { - return SkyblockerConfig.get().locations.dungeons.solveTrivia ? ChatFilterResult.FILTER : ChatFilterResult.PASS; + return SkyblockerConfigManager.get().locations.dungeons.solveTrivia ? ChatFilterResult.FILTER : ChatFilterResult.PASS; } @Override diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/DungeonSecrets.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/DungeonSecrets.java index ac389d34..4e4e9565 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/DungeonSecrets.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/DungeonSecrets.java @@ -11,7 +11,7 @@ import it.unimi.dsi.fastutil.objects.Object2ByteMap; import it.unimi.dsi.fastutil.objects.Object2ByteOpenHashMap; import it.unimi.dsi.fastutil.objects.ObjectIntPair; import me.xmrvizzy.skyblocker.SkyblockerMod; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.Utils; import me.xmrvizzy.skyblocker.utils.scheduler.Scheduler; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; @@ -133,7 +133,7 @@ public class DungeonSecrets { * Use {@link #isRoomsLoaded()} to check for completion of loading. */ public static void init() { - if (SkyblockerConfig.get().locations.dungeons.secretWaypoints.noInitSecretWaypoints) { + if (SkyblockerConfigManager.get().locations.dungeons.secretWaypoints.noInitSecretWaypoints) { return; } // Execute with MinecraftClient as executor since we need to wait for MinecraftClient#resourceManager to be set @@ -248,7 +248,7 @@ public class DungeonSecrets { */ @SuppressWarnings("JavadocReference") private static void update() { - if (!SkyblockerConfig.get().locations.dungeons.secretWaypoints.enableSecretWaypoints) { + if (!SkyblockerConfigManager.get().locations.dungeons.secretWaypoints.enableSecretWaypoints) { return; } if (!Utils.isInDungeons()) { @@ -430,12 +430,12 @@ public class DungeonSecrets { } /** - * Checks if the player is in a dungeon and {@link me.xmrvizzy.skyblocker.config.SkyblockerConfig.Dungeons#secretWaypoints Secret Waypoints} is enabled. + * Checks if the player is in a dungeon and {@link me.xmrvizzy.skyblocker.config.SkyblockerConfigManager.Dungeons#secretWaypoints Secret Waypoints} is enabled. * * @return whether dungeon secrets should be processed */ private static boolean shouldProcess() { - return SkyblockerConfig.get().locations.dungeons.secretWaypoints.enableSecretWaypoints && Utils.isInDungeons(); + return SkyblockerConfigManager.get().locations.dungeons.secretWaypoints.enableSecretWaypoints && Utils.isInDungeons(); } /** diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java index 13ea400a..73ac1883 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java @@ -2,8 +2,8 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon.secrets; import com.google.gson.JsonObject; -import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.render.RenderHelper; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.minecraft.client.MinecraftClient; @@ -93,10 +93,10 @@ public class SecretWaypoint { FAIRYSOUL(secretWaypoints -> secretWaypoints.enableFairySoulWaypoints, 255, 85, 255), STONK(secretWaypoints -> secretWaypoints.enableStonkWaypoints, 146, 52, 235), DEFAULT(secretWaypoints -> secretWaypoints.enableDefaultWaypoints, 190, 255, 252); - private final Predicate enabledPredicate; + private final Predicate enabledPredicate; private final float[] colorComponents; - Category(Predicate enabledPredicate, int... intColorComponents) { + Category(Predicate enabledPredicate, int... intColorComponents) { this.enabledPredicate = enabledPredicate; colorComponents = new float[intColorComponents.length]; for (int i = 0; i < intColorComponents.length; i++) { @@ -136,7 +136,7 @@ public class SecretWaypoint { } boolean isEnabled() { - return enabledPredicate.test(SkyblockerConfig.get().locations.dungeons.secretWaypoints); + return enabledPredicate.test(SkyblockerConfigManager.get().locations.dungeons.secretWaypoints); } } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/ColorTerminal.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/ColorTerminal.java index 7aac04b5..787d696e 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/ColorTerminal.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/ColorTerminal.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon.terminal; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.render.gui.ColorHighlight; import me.xmrvizzy.skyblocker.utils.render.gui.ContainerSolver; import net.minecraft.item.Item; @@ -28,7 +28,7 @@ public class ColorTerminal extends ContainerSolver { @Override protected boolean isEnabled() { targetColor = null; - return SkyblockerConfig.get().locations.dungeons.terminals.solveColor; + return SkyblockerConfigManager.get().locations.dungeons.terminals.solveColor; } @Override diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/OrderTerminal.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/OrderTerminal.java index 01437919..afb07b4b 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/OrderTerminal.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/OrderTerminal.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon.terminal; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.render.gui.ColorHighlight; import me.xmrvizzy.skyblocker.utils.render.gui.ContainerSolver; import net.minecraft.item.ItemStack; @@ -24,7 +24,7 @@ public class OrderTerminal extends ContainerSolver { protected boolean isEnabled() { orderedSlots = null; currentNum = 0; - return SkyblockerConfig.get().locations.dungeons.terminals.solveOrder; + return SkyblockerConfigManager.get().locations.dungeons.terminals.solveOrder; } @Override diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/StartsWithTerminal.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/StartsWithTerminal.java index 988b570e..fa9fa324 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/StartsWithTerminal.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/StartsWithTerminal.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon.terminal; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.render.gui.ColorHighlight; import me.xmrvizzy.skyblocker.utils.render.gui.ContainerSolver; import net.minecraft.item.ItemStack; @@ -16,7 +16,7 @@ public class StartsWithTerminal extends ContainerSolver { @Override protected boolean isEnabled() { - return SkyblockerConfig.get().locations.dungeons.terminals.solveStartsWith; + return SkyblockerConfigManager.get().locations.dungeons.terminals.solveStartsWith; } @Override diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java index 3563741c..3d8292a5 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHud.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.dwarven; import it.unimi.dsi.fastutil.ints.IntIntPair; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.hud.HudCommsWidget; import me.xmrvizzy.skyblocker.utils.scheduler.Scheduler; import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; @@ -46,19 +46,19 @@ public class DwarvenHud { .executes(Scheduler.queueOpenScreenCommand(DwarvenHudConfigScreen::new)))))); HudRenderCallback.EVENT.register((context, tickDelta) -> { - if (!SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enabled + if (!SkyblockerConfigManager.get().locations.dwarvenMines.dwarvenHud.enabled || client.options.playerListKey.isPressed() || client.player == null || commissionList.isEmpty()) { return; } - render(HudCommsWidget.INSTANCE, context, SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.x, - SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.y, commissionList); + render(HudCommsWidget.INSTANCE, context, SkyblockerConfigManager.get().locations.dwarvenMines.dwarvenHud.x, + SkyblockerConfigManager.get().locations.dwarvenMines.dwarvenHud.y, commissionList); }); } public static IntIntPair getDimForConfig(List commissions) { - return switch (SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.style) { + return switch (SkyblockerConfigManager.get().locations.dwarvenMines.dwarvenHud.style) { case SIMPLE -> { HudCommsWidget.INSTANCE_CFG.updateData(commissions, false); yield IntIntPair.of( @@ -77,7 +77,7 @@ public class DwarvenHud { public static void render(HudCommsWidget hcw, DrawContext context, int hudX, int hudY, List commissions) { - switch (SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.style) { + switch (SkyblockerConfigManager.get().locations.dwarvenMines.dwarvenHud.style) { case SIMPLE -> renderSimple(hcw, context, hudX, hudY, commissions); case FANCY -> renderFancy(hcw, context, hudX, hudY, commissions); case CLASSIC -> renderClassic(context, hudX, hudY, commissions); @@ -85,7 +85,7 @@ public class DwarvenHud { } public static void renderClassic(DrawContext context, int hudX, int hudY, List commissions) { - if (SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enableBackground) { + if (SkyblockerConfigManager.get().locations.dwarvenMines.dwarvenHud.enableBackground) { context.fill(hudX, hudY, hudX + 200, hudY + (20 * commissions.size()), 0x64000000); } @@ -108,7 +108,7 @@ public class DwarvenHud { hcw.setX(hudX); hcw.setY(hudY); hcw.render(context, - SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enableBackground); + SkyblockerConfigManager.get().locations.dwarvenMines.dwarvenHud.enableBackground); } public static void renderFancy(HudCommsWidget hcw, DrawContext context, int hudX, int hudY, List commissions) { @@ -117,12 +117,12 @@ public class DwarvenHud { hcw.setX(hudX); hcw.setY(hudY); hcw.render(context, - SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enableBackground); + SkyblockerConfigManager.get().locations.dwarvenMines.dwarvenHud.enableBackground); } public static void update() { commissionList = new ArrayList<>(); - if (client.player == null || client.getNetworkHandler() == null || !SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.enabled) + if (client.player == null || client.getNetworkHandler() == null || !SkyblockerConfigManager.get().locations.dwarvenMines.dwarvenHud.enabled) return; client.getNetworkHandler().getPlayerList().forEach(playerListEntry -> { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java index ee7c71a2..6e5784e3 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java @@ -2,7 +2,7 @@ package me.xmrvizzy.skyblocker.skyblock.dwarven; import it.unimi.dsi.fastutil.ints.IntIntPair; import me.shedaniel.autoconfig.AutoConfig; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.skyblock.dwarven.DwarvenHud.Commission; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.hud.HudCommsWidget; import me.xmrvizzy.skyblocker.utils.render.RenderHelper; @@ -17,8 +17,8 @@ public class DwarvenHudConfigScreen extends Screen { private static final List CFG_COMMS = List.of(new DwarvenHud.Commission("Test Commission 1", "1%"), new DwarvenHud.Commission("Test Commission 2", "2%")); - private int hudX = SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.x; - private int hudY = SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.y; + private int hudX = SkyblockerConfigManager.get().locations.dwarvenMines.dwarvenHud.x; + private int hudY = SkyblockerConfigManager.get().locations.dwarvenMines.dwarvenHud.y; private final Screen parent; protected DwarvenHudConfigScreen() { @@ -60,9 +60,9 @@ public class DwarvenHudConfigScreen extends Screen { @Override public void close() { - SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.x = hudX; - SkyblockerConfig.get().locations.dwarvenMines.dwarvenHud.y = hudY; - SkyblockerConfig.save(); + SkyblockerConfigManager.get().locations.dwarvenMines.dwarvenHud.x = hudX; + SkyblockerConfigManager.get().locations.dwarvenMines.dwarvenHud.y = hudY; + SkyblockerConfigManager.save(); client.setScreen(parent); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java index 5e284452..d5c18545 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.dwarven; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.utils.chat.ChatPatternListener; import net.minecraft.client.MinecraftClient; @@ -19,7 +19,7 @@ public class Fetchur extends ChatPatternListener { @Override public ChatFilterResult state() { - return SkyblockerConfig.get().locations.dwarvenMines.solveFetchur ? ChatFilterResult.FILTER : ChatFilterResult.PASS; + return SkyblockerConfigManager.get().locations.dwarvenMines.solveFetchur ? ChatFilterResult.FILTER : ChatFilterResult.PASS; } @Override diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java index 96ccdaf2..90a0e30f 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.dwarven; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.utils.chat.ChatPatternListener; import net.minecraft.block.Blocks; @@ -18,7 +18,7 @@ public class Puzzler extends ChatPatternListener { @Override public ChatFilterResult state() { - return SkyblockerConfig.get().locations.dwarvenMines.solvePuzzler ? null : ChatFilterResult.PASS; + return SkyblockerConfigManager.get().locations.dwarvenMines.solvePuzzler ? null : ChatFilterResult.PASS; } @Override diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ChronomatronSolver.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ChronomatronSolver.java index 84ef5698..1eef9722 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ChronomatronSolver.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ChronomatronSolver.java @@ -2,8 +2,8 @@ package me.xmrvizzy.skyblocker.skyblock.experiment; import com.google.common.collect.ImmutableMap; -import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.render.gui.ColorHighlight; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.GenericContainerScreen; @@ -53,7 +53,7 @@ public class ChronomatronSolver extends ExperimentSolver { } @Override - protected boolean isEnabled(ConfigModel.Experiments experimentsConfig) { + protected boolean isEnabled(SkyblockerConfig.Experiments experimentsConfig) { return experimentsConfig.enableChronomatronSolver; } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ExperimentSolver.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ExperimentSolver.java index aaf25577..9e25fa2a 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ExperimentSolver.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ExperimentSolver.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.experiment; -import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.render.gui.ContainerSolver; import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; import net.minecraft.client.gui.screen.Screen; @@ -37,10 +37,10 @@ public abstract class ExperimentSolver extends ContainerSolver { @Override protected final boolean isEnabled() { - return isEnabled(SkyblockerConfig.get().general.experiments); + return isEnabled(SkyblockerConfigManager.get().general.experiments); } - protected abstract boolean isEnabled(ConfigModel.Experiments experimentsConfig); + protected abstract boolean isEnabled(SkyblockerConfig.Experiments experimentsConfig); @Override protected void start(GenericContainerScreen screen) { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/SuperpairsSolver.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/SuperpairsSolver.java index 0ac15dfc..40f1ab1b 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/SuperpairsSolver.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/SuperpairsSolver.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.experiment; -import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.render.gui.ColorHighlight; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.GenericContainerScreen; @@ -28,7 +28,7 @@ public class SuperpairsSolver extends ExperimentSolver { } @Override - protected boolean isEnabled(ConfigModel.Experiments experimentsConfig) { + protected boolean isEnabled(SkyblockerConfig.Experiments experimentsConfig) { return experimentsConfig.enableSuperpairsSolver; } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/UltrasequencerSolver.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/UltrasequencerSolver.java index 6527231f..166fb8a9 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/UltrasequencerSolver.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/UltrasequencerSolver.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.experiment; -import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.render.gui.ColorHighlight; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.GenericContainerScreen; @@ -28,7 +28,7 @@ public class UltrasequencerSolver extends ExperimentSolver { } @Override - protected boolean isEnabled(ConfigModel.Experiments experimentsConfig) { + protected boolean isEnabled(SkyblockerConfig.Experiments experimentsConfig) { return experimentsConfig.enableUltrasequencerSolver; } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/AbilityFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/AbilityFilter.java index 97e5e8dd..addb1b05 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/AbilityFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/AbilityFilter.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.filters; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; public class AbilityFilter extends SimpleChatFilter { @@ -10,6 +10,6 @@ public class AbilityFilter extends SimpleChatFilter { @Override protected ChatFilterResult state() { - return SkyblockerConfig.get().messages.hideAbility; + return SkyblockerConfigManager.get().messages.hideAbility; } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/AdFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/AdFilter.java index 23caa180..e0493389 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/AdFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/AdFilter.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.filters; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.Constants; import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.utils.chat.ChatPatternListener; @@ -34,6 +34,6 @@ public class AdFilter extends ChatPatternListener { @Override protected ChatFilterResult state() { - return SkyblockerConfig.get().messages.hideAds; + return SkyblockerConfigManager.get().messages.hideAds; } } \ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/AoteFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/AoteFilter.java index 15c1ce6a..02e8867c 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/AoteFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/AoteFilter.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.filters; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; public class AoteFilter extends SimpleChatFilter { @@ -10,6 +10,6 @@ public class AoteFilter extends SimpleChatFilter { @Override public ChatFilterResult state() { - return SkyblockerConfig.get().messages.hideAOTE; + return SkyblockerConfigManager.get().messages.hideAOTE; } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/AutopetFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/AutopetFilter.java index 8c9ce9f6..65811a8a 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/AutopetFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/AutopetFilter.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.filters; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.utils.chat.ChatPatternListener; import net.minecraft.client.MinecraftClient; @@ -16,7 +16,7 @@ public class AutopetFilter extends ChatPatternListener { @Override public boolean onMatch(Text _message, Matcher matcher) { - if (SkyblockerConfig.get().messages.hideAutopet == ChatFilterResult.ACTION_BAR) { + if (SkyblockerConfigManager.get().messages.hideAutopet == ChatFilterResult.ACTION_BAR) { Objects.requireNonNull(MinecraftClient.getInstance().player).sendMessage( Text.literal( _message.getString().replace("§a§lVIEW RULE", "") @@ -27,9 +27,9 @@ public class AutopetFilter extends ChatPatternListener { @Override public ChatFilterResult state() { - if (SkyblockerConfig.get().messages.hideAutopet == ChatFilterResult.ACTION_BAR) + if (SkyblockerConfigManager.get().messages.hideAutopet == ChatFilterResult.ACTION_BAR) return ChatFilterResult.FILTER; else - return SkyblockerConfig.get().messages.hideAutopet; + return SkyblockerConfigManager.get().messages.hideAutopet; } } \ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/ComboFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/ComboFilter.java index 4a714e6d..d884bf37 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/ComboFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/ComboFilter.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.filters; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; public class ComboFilter extends SimpleChatFilter { @@ -11,6 +11,6 @@ public class ComboFilter extends SimpleChatFilter { @Override public ChatFilterResult state() { - return SkyblockerConfig.get().messages.hideCombo; + return SkyblockerConfigManager.get().messages.hideCombo; } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/HealFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/HealFilter.java index 652d47c7..938b1aaa 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/HealFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/HealFilter.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.filters; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; public class HealFilter extends SimpleChatFilter { @@ -10,6 +10,6 @@ public class HealFilter extends SimpleChatFilter { @Override public ChatFilterResult state() { - return SkyblockerConfig.get().messages.hideHeal; + return SkyblockerConfigManager.get().messages.hideHeal; } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/ImplosionFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/ImplosionFilter.java index d7748313..2cc89185 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/ImplosionFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/ImplosionFilter.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.filters; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; public class ImplosionFilter extends SimpleChatFilter { @@ -10,6 +10,6 @@ public class ImplosionFilter extends SimpleChatFilter { @Override public ChatFilterResult state() { - return SkyblockerConfig.get().messages.hideImplosion; + return SkyblockerConfigManager.get().messages.hideImplosion; } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/MoltenWaveFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/MoltenWaveFilter.java index 9f6138f0..9627dc13 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/MoltenWaveFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/MoltenWaveFilter.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.filters; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; public class MoltenWaveFilter extends SimpleChatFilter { @@ -10,6 +10,6 @@ public class MoltenWaveFilter extends SimpleChatFilter { @Override public ChatFilterResult state() { - return SkyblockerConfig.get().messages.hideMoltenWave; + return SkyblockerConfigManager.get().messages.hideMoltenWave; } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/ShowOffFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/ShowOffFilter.java index 85be9e2a..418e0f27 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/ShowOffFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/ShowOffFilter.java @@ -2,7 +2,7 @@ package me.xmrvizzy.skyblocker.skyblock.filters; import me.xmrvizzy.skyblocker.utils.Constants; import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; public class ShowOffFilter extends SimpleChatFilter { private static final String[] SHOW_TYPES = { "is holding", "is wearing", "is friends with a", "has" }; @@ -13,6 +13,6 @@ public class ShowOffFilter extends SimpleChatFilter { @Override protected ChatFilterResult state() { - return SkyblockerConfig.get().messages.hideShowOff; + return SkyblockerConfigManager.get().messages.hideShowOff; } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/TeleportPadFilter.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/TeleportPadFilter.java index 1961d78a..2035facb 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/TeleportPadFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/filters/TeleportPadFilter.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.filters; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; public class TeleportPadFilter extends SimpleChatFilter { @@ -11,6 +11,6 @@ public class TeleportPadFilter extends SimpleChatFilter { @Override public ChatFilterResult state() { - return SkyblockerConfig.get().messages.hideTeleportPad; + return SkyblockerConfigManager.get().messages.hideTeleportPad; } } \ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorDyeColors.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorDyeColors.java index 7c4ed423..88df1b40 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorDyeColors.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorDyeColors.java @@ -4,7 +4,7 @@ import com.mojang.brigadier.Command; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.arguments.StringArgumentType; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.Utils; import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; @@ -46,19 +46,19 @@ public class CustomArmorDyeColors { String itemUuid = extraAttributes.contains("uuid") ? extraAttributes.getString("uuid") : null; if (itemUuid != null) { - Object2IntOpenHashMap customDyeColors = SkyblockerConfig.get().general.customDyeColors; + Object2IntOpenHashMap customDyeColors = SkyblockerConfigManager.get().general.customDyeColors; if (hex == null) { if (customDyeColors.containsKey(itemUuid)) { customDyeColors.removeInt(itemUuid); - SkyblockerConfig.save(); + SkyblockerConfigManager.save(); source.sendFeedback(Text.translatable("skyblocker.customDyeColors.removed")); } else { source.sendFeedback(Text.translatable("skyblocker.customDyeColors.neverHad")); } } else { customDyeColors.put(itemUuid, Integer.decode("0x" + hex.replace("#", "")).intValue()); - SkyblockerConfig.save(); + SkyblockerConfigManager.save(); source.sendFeedback(Text.translatable("skyblocker.customDyeColors.added")); } } else { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorTrims.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorTrims.java index 443ad509..c7de9320 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorTrims.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorTrims.java @@ -7,7 +7,7 @@ import com.mojang.brigadier.suggestion.SuggestionProvider; import dev.isxander.yacl3.config.ConfigEntry; import it.unimi.dsi.fastutil.Pair; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.SkyblockEvents; import me.xmrvizzy.skyblocker.utils.Utils; import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; @@ -102,12 +102,12 @@ public class CustomArmorTrims { String itemUuid = extraAttributes.contains("uuid") ? extraAttributes.getString("uuid") : null; if (itemUuid != null) { - Object2ObjectOpenHashMap customArmorTrims = SkyblockerConfig.get().general.customArmorTrims; + Object2ObjectOpenHashMap customArmorTrims = SkyblockerConfigManager.get().general.customArmorTrims; if (material == null && pattern == null) { if (customArmorTrims.containsKey(itemUuid)) { customArmorTrims.remove(itemUuid); - SkyblockerConfig.save(); + SkyblockerConfigManager.save(); source.sendFeedback(Text.translatable("skyblocker.customArmorTrims.removed")); } else { source.sendFeedback(Text.translatable("skyblocker.customArmorTrims.neverHad")); @@ -122,7 +122,7 @@ public class CustomArmorTrims { } customArmorTrims.put(itemUuid, trimId); - SkyblockerConfig.save(); + SkyblockerConfigManager.save(); source.sendFeedback(Text.translatable("skyblocker.customArmorTrims.added")); } } else { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomItemNames.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomItemNames.java index 8c160456..76312461 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomItemNames.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomItemNames.java @@ -3,7 +3,7 @@ package me.xmrvizzy.skyblocker.skyblock.item; import com.mojang.brigadier.Command; import com.mojang.brigadier.CommandDispatcher; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.Utils; import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; @@ -40,13 +40,13 @@ public class CustomItemNames { String itemUuid = extraAttributes.contains("uuid") ? extraAttributes.getString("uuid") : null; if (itemUuid != null) { - Object2ObjectOpenHashMap customItemNames = SkyblockerConfig.get().general.customItemNames; + Object2ObjectOpenHashMap customItemNames = SkyblockerConfigManager.get().general.customItemNames; if (text == null) { if (customItemNames.containsKey(itemUuid)) { //Remove custom item name when the text argument isn't passed customItemNames.remove(itemUuid); - SkyblockerConfig.save(); + SkyblockerConfigManager.save(); source.sendFeedback(Text.translatable("skyblocker.customItemNames.removed")); } else { source.sendFeedback(Text.translatable("skyblocker.customItemNames.neverHad")); @@ -59,7 +59,7 @@ public class CustomItemNames { ((MutableText) text).setStyle(currentStyle.withItalic((currentStyle.isItalic() ? true : false))); customItemNames.put(itemUuid, text); - SkyblockerConfig.save(); + SkyblockerConfigManager.save(); source.sendFeedback(Text.translatable("skyblocker.customItemNames.added")); } } else { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java index f04e7029..16a4c596 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java @@ -3,8 +3,8 @@ package me.xmrvizzy.skyblocker.skyblock.item; import com.google.gson.Gson; import com.google.gson.JsonObject; -import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.Http; import me.xmrvizzy.skyblocker.utils.Utils; import me.xmrvizzy.skyblocker.utils.scheduler.Scheduler; @@ -63,7 +63,7 @@ public class PriceInfoTooltip { int count = stack.getCount(); boolean bazaarOpened = lines.stream().anyMatch(each -> each.getString().contains("Buy price:") || each.getString().contains("Sell price:")); - if (SkyblockerConfig.get().general.itemTooltip.enableNPCPrice) { + if (SkyblockerConfigManager.get().general.itemTooltip.enableNPCPrice) { if (npcPricesJson == null) { nullWarning(); } else if (npcPricesJson.has(internalID)) { @@ -73,7 +73,7 @@ public class PriceInfoTooltip { } } - if (SkyblockerConfig.get().general.itemTooltip.enableMotesPrice && Utils.isInTheRift()) { + if (SkyblockerConfigManager.get().general.itemTooltip.enableMotesPrice && Utils.isInTheRift()) { if (motesPricesJson == null) { nullWarning(); } else if (motesPricesJson.has(internalID)) { @@ -85,7 +85,7 @@ public class PriceInfoTooltip { boolean bazaarExist = false; - if (SkyblockerConfig.get().general.itemTooltip.enableBazaarPrice && !bazaarOpened) { + if (SkyblockerConfigManager.get().general.itemTooltip.enableBazaarPrice && !bazaarOpened) { if (bazaarPricesJson == null) { nullWarning(); } else if (bazaarPricesJson.has(name)) { @@ -106,7 +106,7 @@ public class PriceInfoTooltip { // bazaarOpened & bazaarExist check for lbin, because Skytils keeps some bazaar item data in lbin api boolean lbinExist = false; - if (SkyblockerConfig.get().general.itemTooltip.enableLowestBIN && !bazaarOpened && !bazaarExist) { + if (SkyblockerConfigManager.get().general.itemTooltip.enableLowestBIN && !bazaarOpened && !bazaarExist) { if (lowestPricesJson == null) { nullWarning(); } else if (lowestPricesJson.has(name)) { @@ -117,7 +117,7 @@ public class PriceInfoTooltip { } } - if (SkyblockerConfig.get().general.itemTooltip.enableAvgBIN) { + if (SkyblockerConfigManager.get().general.itemTooltip.enableAvgBIN) { if (threeDayAvgPricesJson == null || oneDayAvgPricesJson == null) { nullWarning(); } else { @@ -148,10 +148,10 @@ public class PriceInfoTooltip { } if (!neuName.isEmpty() && lbinExist) { - ConfigModel.Average type = SkyblockerConfig.get().general.itemTooltip.avg; + SkyblockerConfig.Average type = SkyblockerConfigManager.get().general.itemTooltip.avg; // "No data" line because of API not keeping old data, it causes NullPointerException - if (type == ConfigModel.Average.ONE_DAY || type == ConfigModel.Average.BOTH) { + if (type == SkyblockerConfig.Average.ONE_DAY || type == SkyblockerConfig.Average.BOTH) { lines.add( Text.literal(String.format("%-19s", "1 Day Avg. Price:")) .formatted(Formatting.GOLD) @@ -161,7 +161,7 @@ public class PriceInfoTooltip { ) ); } - if (type == ConfigModel.Average.THREE_DAY || type == ConfigModel.Average.BOTH) { + if (type == SkyblockerConfig.Average.THREE_DAY || type == SkyblockerConfig.Average.BOTH) { lines.add( Text.literal(String.format("%-19s", "3 Day Avg. Price:")) .formatted(Formatting.GOLD) @@ -175,7 +175,7 @@ public class PriceInfoTooltip { } } - if (SkyblockerConfig.get().general.itemTooltip.enableMuseumDate && !bazaarOpened) { + if (SkyblockerConfigManager.get().general.itemTooltip.enableMuseumDate && !bazaarOpened) { if (isMuseumJson == null) { nullWarning(); } else { @@ -332,7 +332,7 @@ public class PriceInfoTooltip { } private static Text getMotesMessage(int price, int count) { - float motesMultiplier = SkyblockerConfig.get().locations.rift.mcGrubberStacks * 0.05f + 1; + float motesMultiplier = SkyblockerConfigManager.get().locations.rift.mcGrubberStacks * 0.05f + 1; // Calculate the total price int totalPrice = price * count; @@ -363,33 +363,33 @@ public class PriceInfoTooltip { } List> futureList = new ArrayList<>(); - if (SkyblockerConfig.get().general.itemTooltip.enableAvgBIN) { - ConfigModel.Average type = SkyblockerConfig.get().general.itemTooltip.avg; + if (SkyblockerConfigManager.get().general.itemTooltip.enableAvgBIN) { + SkyblockerConfig.Average type = SkyblockerConfigManager.get().general.itemTooltip.avg; - if (type == ConfigModel.Average.BOTH || oneDayAvgPricesJson == null || threeDayAvgPricesJson == null || minute % 5 == 0) { + if (type == SkyblockerConfig.Average.BOTH || oneDayAvgPricesJson == null || threeDayAvgPricesJson == null || minute % 5 == 0) { futureList.add(CompletableFuture.runAsync(() -> { oneDayAvgPricesJson = downloadPrices("1 day avg"); threeDayAvgPricesJson = downloadPrices("3 day avg"); })); - } else if (type == ConfigModel.Average.ONE_DAY) { + } else if (type == SkyblockerConfig.Average.ONE_DAY) { futureList.add(CompletableFuture.runAsync(() -> oneDayAvgPricesJson = downloadPrices("1 day avg"))); - } else if (type == ConfigModel.Average.THREE_DAY) { + } else if (type == SkyblockerConfig.Average.THREE_DAY) { futureList.add(CompletableFuture.runAsync(() -> threeDayAvgPricesJson = downloadPrices("3 day avg"))); } } - if (SkyblockerConfig.get().general.itemTooltip.enableLowestBIN || SkyblockerConfig.get().locations.dungeons.dungeonChestProfit.enableProfitCalculator) + if (SkyblockerConfigManager.get().general.itemTooltip.enableLowestBIN || SkyblockerConfigManager.get().locations.dungeons.dungeonChestProfit.enableProfitCalculator) futureList.add(CompletableFuture.runAsync(() -> lowestPricesJson = downloadPrices("lowest bins"))); - if (SkyblockerConfig.get().general.itemTooltip.enableBazaarPrice || SkyblockerConfig.get().locations.dungeons.dungeonChestProfit.enableProfitCalculator) + if (SkyblockerConfigManager.get().general.itemTooltip.enableBazaarPrice || SkyblockerConfigManager.get().locations.dungeons.dungeonChestProfit.enableProfitCalculator) futureList.add(CompletableFuture.runAsync(() -> bazaarPricesJson = downloadPrices("bazaar"))); - if (SkyblockerConfig.get().general.itemTooltip.enableNPCPrice && npcPricesJson == null) + if (SkyblockerConfigManager.get().general.itemTooltip.enableNPCPrice && npcPricesJson == null) futureList.add(CompletableFuture.runAsync(() -> npcPricesJson = downloadPrices("npc"))); - if (SkyblockerConfig.get().general.itemTooltip.enableMuseumDate && isMuseumJson == null) + if (SkyblockerConfigManager.get().general.itemTooltip.enableMuseumDate && isMuseumJson == null) futureList.add(CompletableFuture.runAsync(() -> isMuseumJson = downloadPrices("museum"))); - if (SkyblockerConfig.get().general.itemTooltip.enableMotesPrice && motesPricesJson == null) + if (SkyblockerConfigManager.get().general.itemTooltip.enableMotesPrice && motesPricesJson == null) futureList.add(CompletableFuture.runAsync(() -> motesPricesJson = downloadPrices("motes"))); minute++; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java index 833a6917..aa933da4 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java @@ -2,8 +2,8 @@ package me.xmrvizzy.skyblocker.skyblock.quicknav; import com.mojang.brigadier.exceptions.CommandSyntaxException; -import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.Utils; import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; import net.fabricmc.fabric.api.client.screen.v1.Screens; @@ -26,7 +26,7 @@ public class QuickNav { public static void init() { ScreenEvents.AFTER_INIT.register((client, screen, scaledWidth, scaledHeight) -> { - if (Utils.isOnSkyblock() && SkyblockerConfig.get().quickNav.enableQuickNav && screen instanceof HandledScreen && client.player != null && !client.player.isCreative()) { + if (Utils.isOnSkyblock() && SkyblockerConfigManager.get().quickNav.enableQuickNav && screen instanceof HandledScreen && client.player != null && !client.player.isCreative()) { String screenTitle = screen.getTitle().getString().trim(); List buttons = QuickNav.init(screenTitle); for (QuickNavButton button : buttons) Screens.getButtons(screen).add(button); @@ -36,7 +36,7 @@ public class QuickNav { public static List init(String screenTitle) { List buttons = new ArrayList<>(); - ConfigModel.QuickNav data = SkyblockerConfig.get().quickNav; + SkyblockerConfig.QuickNav data = SkyblockerConfigManager.get().quickNav; try { if (data.button1.render) buttons.add(parseButton(data.button1, screenTitle, 0)); if (data.button2.render) buttons.add(parseButton(data.button2, screenTitle, 1)); @@ -56,8 +56,8 @@ public class QuickNav { return buttons; } - private static QuickNavButton parseButton(ConfigModel.QuickNavItem buttonInfo, String screenTitle, int id) throws CommandSyntaxException { - ConfigModel.ItemData itemData = buttonInfo.item; + private static QuickNavButton parseButton(SkyblockerConfig.QuickNavItem buttonInfo, String screenTitle, int id) throws CommandSyntaxException { + SkyblockerConfig.ItemData itemData = buttonInfo.item; String nbtString = "{id:\"minecraft:" + itemData.itemName.toLowerCase(Locale.ROOT) + "\",Count:1"; if (itemData.nbt.length() > 2) nbtString += "," + itemData.nbt; nbtString += "}"; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/EffigyWaypoints.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/EffigyWaypoints.java index 11f879b9..5548484e 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/EffigyWaypoints.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/EffigyWaypoints.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.rift; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.Utils; import me.xmrvizzy.skyblocker.utils.render.RenderHelper; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; @@ -34,7 +34,7 @@ public class EffigyWaypoints { private static final List unBrokenEffigies = new ArrayList<>(); protected static void updateEffigies() { - if (!SkyblockerConfig.get().slayer.vampireSlayer.enableEffigyWaypoints || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !Utils.getLocation().contains("Stillgore Château")) return; + if (!SkyblockerConfigManager.get().slayer.vampireSlayer.enableEffigyWaypoints || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !Utils.getLocation().contains("Stillgore Château")) return; unBrokenEffigies.clear(); try { @@ -63,10 +63,10 @@ public class EffigyWaypoints { } protected static void render(WorldRenderContext context) { - if (SkyblockerConfig.get().slayer.vampireSlayer.enableEffigyWaypoints && Utils.getLocation().contains("Stillgore Château")) { + if (SkyblockerConfigManager.get().slayer.vampireSlayer.enableEffigyWaypoints && Utils.getLocation().contains("Stillgore Château")) { for (BlockPos effigy : unBrokenEffigies) { float[] colorComponents = DyeColor.RED.getColorComponents(); - if (SkyblockerConfig.get().slayer.vampireSlayer.compactEffigyWaypoints) { + if (SkyblockerConfigManager.get().slayer.vampireSlayer.compactEffigyWaypoints) { RenderHelper.renderFilledThroughWallsWithBeaconBeam(context, effigy.down(6), colorComponents, 0.5F); } else { RenderHelper.renderFilledThroughWallsWithBeaconBeam(context, effigy, colorComponents, 0.5F); diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/HealingMelonIndicator.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/HealingMelonIndicator.java index b547ebb5..78fe8f6c 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/HealingMelonIndicator.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/HealingMelonIndicator.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.rift; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.Utils; import me.xmrvizzy.skyblocker.utils.render.RenderHelper; import me.xmrvizzy.skyblocker.utils.render.title.Title; @@ -13,12 +13,12 @@ public class HealingMelonIndicator { private static final Title title = new Title("skyblocker.rift.healNow", Formatting.DARK_RED); public static void updateHealth() { - if (!SkyblockerConfig.get().slayer.vampireSlayer.enableHealingMelonIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !Utils.getLocation().contains("Stillgore Château")) { + if (!SkyblockerConfigManager.get().slayer.vampireSlayer.enableHealingMelonIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !Utils.getLocation().contains("Stillgore Château")) { TitleContainer.removeTitle(title); return; } ClientPlayerEntity player = MinecraftClient.getInstance().player; - if (player != null && player.getHealth() <= SkyblockerConfig.get().slayer.vampireSlayer.healingMelonHealthThreshold * 2F) { + if (player != null && player.getHealth() <= SkyblockerConfigManager.get().slayer.vampireSlayer.healingMelonHealthThreshold * 2F) { RenderHelper.displayInTitleContainerAndPlaySound(title); } else { TitleContainer.removeTitle(title); diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/ManiaIndicator.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/ManiaIndicator.java index 16ab250a..1fca4559 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/ManiaIndicator.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/ManiaIndicator.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.rift; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.SlayerUtils; import me.xmrvizzy.skyblocker.utils.Utils; import me.xmrvizzy.skyblocker.utils.render.RenderHelper; @@ -17,7 +17,7 @@ public class ManiaIndicator { private static final Title title = new Title("skyblocker.rift.mania", Formatting.RED); protected static void updateMania() { - if (!SkyblockerConfig.get().slayer.vampireSlayer.enableManiaIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !(Utils.getLocation().contains("Stillgore Château")) || !SlayerUtils.isInSlayer()) { + if (!SkyblockerConfigManager.get().slayer.vampireSlayer.enableManiaIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !(Utils.getLocation().contains("Stillgore Château")) || !SlayerUtils.isInSlayer()) { TitleContainer.removeTitle(title); return; } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/MirrorverseWaypoints.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/MirrorverseWaypoints.java index d59745d8..3063f63c 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/MirrorverseWaypoints.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/MirrorverseWaypoints.java @@ -4,7 +4,7 @@ import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import me.xmrvizzy.skyblocker.SkyblockerMod; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.Utils; import me.xmrvizzy.skyblocker.utils.render.RenderHelper; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; @@ -71,7 +71,7 @@ public class MirrorverseWaypoints { protected static void render(WorldRenderContext wrc) { //I would also check for the mirrorverse location but the scoreboard stuff is not performant at all... - if (Utils.isInTheRift() && SkyblockerConfig.get().locations.rift.mirrorverseWaypoints) { + if (Utils.isInTheRift() && SkyblockerConfigManager.get().locations.rift.mirrorverseWaypoints) { for (BlockPos pos : LAVA_PATH_WAYPOINTS) { RenderHelper.renderFilledIfVisible(wrc, pos, COLOR_COMPONENTS, 0.5f); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/StakeIndicator.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/StakeIndicator.java index 1d969514..ff7298a3 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/StakeIndicator.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/StakeIndicator.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.rift; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.SlayerUtils; import me.xmrvizzy.skyblocker.utils.Utils; import me.xmrvizzy.skyblocker.utils.render.RenderHelper; @@ -13,7 +13,7 @@ public class StakeIndicator { private static final Title title = new Title("skyblocker.rift.stakeNow", Formatting.RED); protected static void updateStake() { - if (!SkyblockerConfig.get().slayer.vampireSlayer.enableSteakStakeIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !Utils.getLocation().contains("Stillgore Château") || !SlayerUtils.isInSlayer()) { + if (!SkyblockerConfigManager.get().slayer.vampireSlayer.enableSteakStakeIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !Utils.getLocation().contains("Stillgore Château") || !SlayerUtils.isInSlayer()) { TitleContainer.removeTitle(title); return; } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/TheRift.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/TheRift.java index 4b11fcb0..f3a35869 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/TheRift.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/TheRift.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.rift; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.scheduler.Scheduler; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents; @@ -13,9 +13,9 @@ public class TheRift { public static void init() { WorldRenderEvents.AFTER_TRANSLUCENT.register(MirrorverseWaypoints::render); WorldRenderEvents.AFTER_TRANSLUCENT.register(EffigyWaypoints::render); - Scheduler.INSTANCE.scheduleCyclic(EffigyWaypoints::updateEffigies, SkyblockerConfig.get().slayer.vampireSlayer.effigyUpdateFrequency); - Scheduler.INSTANCE.scheduleCyclic(TwinClawsIndicator::updateIce, SkyblockerConfig.get().slayer.vampireSlayer.holyIceUpdateFrequency); - Scheduler.INSTANCE.scheduleCyclic(ManiaIndicator::updateMania, SkyblockerConfig.get().slayer.vampireSlayer.maniaUpdateFrequency); - Scheduler.INSTANCE.scheduleCyclic(StakeIndicator::updateStake, SkyblockerConfig.get().slayer.vampireSlayer.steakStakeUpdateFrequency); + Scheduler.INSTANCE.scheduleCyclic(EffigyWaypoints::updateEffigies, SkyblockerConfigManager.get().slayer.vampireSlayer.effigyUpdateFrequency); + Scheduler.INSTANCE.scheduleCyclic(TwinClawsIndicator::updateIce, SkyblockerConfigManager.get().slayer.vampireSlayer.holyIceUpdateFrequency); + Scheduler.INSTANCE.scheduleCyclic(ManiaIndicator::updateMania, SkyblockerConfigManager.get().slayer.vampireSlayer.maniaUpdateFrequency); + Scheduler.INSTANCE.scheduleCyclic(StakeIndicator::updateStake, SkyblockerConfigManager.get().slayer.vampireSlayer.steakStakeUpdateFrequency); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/TwinClawsIndicator.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/TwinClawsIndicator.java index 6e6fad2d..2bd84106 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/TwinClawsIndicator.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/rift/TwinClawsIndicator.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.rift; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.SlayerUtils; import me.xmrvizzy.skyblocker.utils.Utils; import me.xmrvizzy.skyblocker.utils.render.RenderHelper; @@ -15,7 +15,7 @@ public class TwinClawsIndicator { private static boolean scheduled = false; protected static void updateIce() { - if (!SkyblockerConfig.get().slayer.vampireSlayer.enableHolyIceIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !(Utils.getLocation().contains("Stillgore Château")) || !SlayerUtils.isInSlayer()) { + if (!SkyblockerConfigManager.get().slayer.vampireSlayer.enableHolyIceIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !(Utils.getLocation().contains("Stillgore Château")) || !SlayerUtils.isInSlayer()) { TitleContainer.removeTitle(title); return; } @@ -32,7 +32,7 @@ public class TwinClawsIndicator { Scheduler.INSTANCE.schedule(() -> { RenderHelper.displayInTitleContainerAndPlaySound(title); scheduled = false; - }, SkyblockerConfig.get().slayer.vampireSlayer.holyIceIndicatorTickDelay); + }, SkyblockerConfigManager.get().slayer.vampireSlayer.holyIceIndicatorTickDelay); } } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/Shortcuts.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/Shortcuts.java index 14bc1db4..e9309706 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/Shortcuts.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/shortcut/Shortcuts.java @@ -6,7 +6,7 @@ import com.mojang.brigadier.Command; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.arguments.StringArgumentType; import me.xmrvizzy.skyblocker.SkyblockerMod; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.scheduler.Scheduler; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; @@ -161,14 +161,14 @@ public class Shortcuts { } dispatcher.register(literal(SkyblockerMod.NAMESPACE).then(literal("help").executes(context -> { FabricClientCommandSource source = context.getSource(); - String status = SkyblockerConfig.get().general.shortcuts.enableShortcuts && SkyblockerConfig.get().general.shortcuts.enableCommandShortcuts ? "§a§l (Enabled)" : "§c§l (Disabled)"; + String status = SkyblockerConfigManager.get().general.shortcuts.enableShortcuts && SkyblockerConfigManager.get().general.shortcuts.enableCommandShortcuts ? "§a§l (Enabled)" : "§c§l (Disabled)"; source.sendFeedback(Text.of("§e§lSkyblocker §fCommand Shortcuts" + status)); if (!isShortcutsLoaded()) { source.sendFeedback(Text.translatable("skyblocker.shortcuts.notLoaded")); } else for (Map.Entry command : commands.entrySet()) { source.sendFeedback(Text.of("§7" + command.getKey() + " §f→ §7" + command.getValue())); } - status = SkyblockerConfig.get().general.shortcuts.enableShortcuts && SkyblockerConfig.get().general.shortcuts.enableCommandArgShortcuts ? "§a§l (Enabled)" : "§c§l (Disabled)"; + status = SkyblockerConfigManager.get().general.shortcuts.enableShortcuts && SkyblockerConfigManager.get().general.shortcuts.enableCommandArgShortcuts ? "§a§l (Enabled)" : "§c§l (Disabled)"; source.sendFeedback(Text.of("§e§lSkyblocker §fCommand Argument Shortcuts" + status)); if (!isShortcutsLoaded()) { source.sendFeedback(Text.translatable("skyblocker.shortcuts.notLoaded")); @@ -185,16 +185,16 @@ public class Shortcuts { } private static String modifyCommand(String command) { - if (SkyblockerConfig.get().general.shortcuts.enableShortcuts) { + if (SkyblockerConfigManager.get().general.shortcuts.enableShortcuts) { if (!isShortcutsLoaded()) { LOGGER.warn("[Skyblocker] Shortcuts not loaded yet, skipping shortcut for command: {}", command); return command; } command = '/' + command; - if (SkyblockerConfig.get().general.shortcuts.enableCommandShortcuts) { + if (SkyblockerConfigManager.get().general.shortcuts.enableCommandShortcuts) { command = commands.getOrDefault(command, command); } - if (SkyblockerConfig.get().general.shortcuts.enableCommandArgShortcuts) { + if (SkyblockerConfigManager.get().general.shortcuts.enableCommandArgShortcuts) { String[] messageArgs = command.split(" "); for (int i = 0; i < messageArgs.length; i++) { messageArgs[i] = commandArgs.getOrDefault(messageArgs[i], messageArgs[i]); diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/special/SpecialEffects.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/special/SpecialEffects.java index a3d7e5c5..84af889c 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/special/SpecialEffects.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/special/SpecialEffects.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.special; import com.mojang.blaze3d.systems.RenderSystem; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.Utils; import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents; import net.minecraft.client.MinecraftClient; @@ -45,7 +45,7 @@ public class SpecialEffects { private static void displayRareDropEffect(Text message, boolean overlay) { //We don't check if we're in dungeons because that check doesn't work in m7 which defeats the point of this //It might also allow it to work with Croesus - if (Utils.isOnSkyblock() && SkyblockerConfig.get().general.specialEffects.rareDungeonDropEffects) { + if (Utils.isOnSkyblock() && SkyblockerConfigManager.get().general.specialEffects.rareDungeonDropEffects) { try { String stringForm = message.getString(); Matcher matcher = DROP_PATTERN.matcher(stringForm); diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/spidersden/Relics.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/spidersden/Relics.java index dd420fcf..994317f8 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/spidersden/Relics.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/spidersden/Relics.java @@ -6,8 +6,8 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.mojang.brigadier.CommandDispatcher; import me.xmrvizzy.skyblocker.SkyblockerMod; -import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.PosUtils; import me.xmrvizzy.skyblocker.utils.Utils; import me.xmrvizzy.skyblocker.utils.render.RenderHelper; @@ -116,7 +116,7 @@ public class Relics { } private static void render(WorldRenderContext context) { - ConfigModel.Relics config = SkyblockerConfig.get().locations.spidersDen.relics; + SkyblockerConfig.Relics config = SkyblockerConfigManager.get().locations.spidersDen.relics; if (config.enableRelicsHelper && relicsLoaded.isDone() && Utils.getLocationRaw().equals("combat_1")) { for (BlockPos fairySoulPos : relics) { diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/ScreenConst.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/ScreenConst.java index 42089e9e..c230548b 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/ScreenConst.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/ScreenConst.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.util; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; public class ScreenConst { public static final int WIDGET_PAD = 5; @@ -8,6 +8,6 @@ public class ScreenConst { private static final int SCREEN_PAD_BASE = 20; public static int getScreenPad() { - return (int) ((1f/((float)SkyblockerConfig.get().general.tabHud.tabHudScale/100f) * SCREEN_PAD_BASE)); + return (int) ((1f/((float)SkyblockerConfigManager.get().general.tabHud.tabHudScale/100f) * SCREEN_PAD_BASE)); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java index 068c9c5e..241cb2a2 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget; -import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.PlayerComponent; @@ -51,7 +51,7 @@ public class PlayerListWidget extends Widget { list.add(PlayerListMgr.getRaw(i)); } - if (SkyblockerConfig.get().general.tabHud.nameSorting == ConfigModel.NameSorting.ALPHABETICAL) { + if (SkyblockerConfigManager.get().general.tabHud.nameSorting == SkyblockerConfig.NameSorting.ALPHABETICAL) { list.sort(Comparator.comparing(o -> o.getProfile().getName().toLowerCase())); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/Widget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/Widget.java index bca67b70..97d31981 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/Widget.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/Widget.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import com.mojang.blaze3d.systems.RenderSystem; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerListMgr; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.Component; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; @@ -130,7 +130,7 @@ public abstract class Widget { RenderSystem.enableDepthTest(); ms.push(); - float scale = SkyblockerConfig.get().general.tabHud.tabHudScale / 100f; + float scale = SkyblockerConfigManager.get().general.tabHud.tabHudScale / 100f; ms.scale(scale, scale, 1); // move above other UI elements diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java index 4318a77d..cea8f6f0 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/widget/component/PlayerComponent.java @@ -1,6 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.tabhud.widget.component; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.PlayerSkinDrawer; import net.minecraft.client.network.PlayerListEntry; @@ -20,7 +20,7 @@ public class PlayerComponent extends Component { public PlayerComponent(PlayerListEntry ple) { - boolean plainNames = SkyblockerConfig.get().general.tabHud.plainPlayerNames; + boolean plainNames = SkyblockerConfigManager.get().general.tabHud.plainPlayerNames; Team team = ple.getScoreboardTeam(); String username = ple.getProfile().getName(); name = (team != null && !plainNames) ? Text.empty().append(team.getPrefix()).append(Text.literal(username).formatted(team.getColor())).append(team.getSuffix()) : Text.of(username); diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/discord/DiscordRPCManager.java b/src/main/java/me/xmrvizzy/skyblocker/utils/discord/DiscordRPCManager.java index 5360741d..39d91bba 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/discord/DiscordRPCManager.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/discord/DiscordRPCManager.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.utils.discord; -import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.SkyblockEvents; import me.xmrvizzy.skyblocker.utils.Utils; import meteordevelopment.discordipc.DiscordIPC; @@ -34,15 +34,15 @@ public class DiscordRPCManager { } /** - * Checks the {@link SkyblockerConfig.RichPresence#customMessage custom message}, updates {@link #cycleCount} if enabled, and updates rich presence. + * Checks the {@link SkyblockerConfigManager.RichPresence#customMessage custom message}, updates {@link #cycleCount} if enabled, and updates rich presence. */ public static void updateDataAndPresence() { // If the custom message is empty, discord will keep the last message, this is can serve as a default if the user doesn't want a custom message - if (SkyblockerConfig.get().richPresence.customMessage.isEmpty()) { - SkyblockerConfig.get().richPresence.customMessage = "Playing Skyblock"; - SkyblockerConfig.save(); + if (SkyblockerConfigManager.get().richPresence.customMessage.isEmpty()) { + SkyblockerConfigManager.get().richPresence.customMessage = "Playing Skyblock"; + SkyblockerConfigManager.save(); } - if (SkyblockerConfig.get().richPresence.cycleMode) cycleCount = (cycleCount + 1) % 3; + if (SkyblockerConfigManager.get().richPresence.cycleMode) cycleCount = (cycleCount + 1) % 3; initAndUpdatePresence(); } @@ -58,21 +58,21 @@ public class DiscordRPCManager { *

* When the {@link #updateTask previous update} does not exist or {@link CompletableFuture#isDone() has completed}: *

- * Connects to discord if {@link SkyblockerConfig.RichPresence#enableRichPresence rich presence is enabled}, + * Connects to discord if {@link SkyblockerConfigManager.RichPresence#enableRichPresence rich presence is enabled}, * the player {@link Utils#isOnSkyblock() is on Skyblock}, and {@link DiscordIPC#isConnected() discord is not already connected}. - * Updates the presence if {@link SkyblockerConfig.RichPresence#enableRichPresence rich presence is enabled} + * Updates the presence if {@link SkyblockerConfigManager.RichPresence#enableRichPresence rich presence is enabled} * and the player {@link Utils#isOnSkyblock() is on Skyblock}. - * Stops the connection if {@link SkyblockerConfig.RichPresence#enableRichPresence rich presence is disabled} + * Stops the connection if {@link SkyblockerConfigManager.RichPresence#enableRichPresence rich presence is disabled} * or the player {@link Utils#isOnSkyblock() is not on Skyblock} and {@link DiscordIPC#isConnected() discord is connected}. * Saves the update task in {@link #updateTask} * * @param initialization whether this is the first time the presence is being updates. If {@code true}, a message will be logged - * if {@link SkyblockerConfig.RichPresence#enableRichPresence rich presence is disabled}. + * if {@link SkyblockerConfigManager.RichPresence#enableRichPresence rich presence is disabled}. */ private static void initAndUpdatePresence(boolean initialization) { if (updateTask == null || updateTask.isDone()) { updateTask = CompletableFuture.runAsync(() -> { - if (SkyblockerConfig.get().richPresence.enableRichPresence && Utils.isOnSkyblock()) { + if (SkyblockerConfigManager.get().richPresence.enableRichPresence && Utils.isOnSkyblock()) { if (!DiscordIPC.isConnected()) { if (DiscordIPC.start(934607927837356052L, null)) { LOGGER.info("Discord RPC started successfully"); @@ -96,20 +96,20 @@ public class DiscordRPCManager { RichPresence presence = new RichPresence(); presence.setLargeImage("skyblocker-default", null); presence.setStart(startTimeStamp); - presence.setDetails(SkyblockerConfig.get().richPresence.customMessage); + presence.setDetails(SkyblockerConfigManager.get().richPresence.customMessage); presence.setState(getInfo()); return presence; } public static String getInfo() { String info = null; - if (!SkyblockerConfig.get().richPresence.cycleMode) { - switch (SkyblockerConfig.get().richPresence.info) { + if (!SkyblockerConfigManager.get().richPresence.cycleMode) { + switch (SkyblockerConfigManager.get().richPresence.info) { case BITS -> info = "Bits: " + DECIMAL_FORMAT.format(Utils.getBits()); case PURSE -> info = "Purse: " + DECIMAL_FORMAT.format(Utils.getPurse()); case LOCATION -> info = Utils.getLocation(); } - } else if (SkyblockerConfig.get().richPresence.cycleMode) { + } else if (SkyblockerConfigManager.get().richPresence.cycleMode) { switch (cycleCount) { case 0 -> info = "Bits: " + DECIMAL_FORMAT.format(Utils.getBits()); case 1 -> info = "Purse: " + DECIMAL_FORMAT.format(Utils.getPurse()); diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/TitleContainer.java b/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/TitleContainer.java index 5044b814..a55965dc 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/TitleContainer.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/TitleContainer.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.utils.render.title; -import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.scheduler.Scheduler; import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; @@ -82,7 +82,7 @@ public class TitleContainer { } private static void render(DrawContext context, float tickDelta) { - render(context, titles, SkyblockerConfig.get().general.titleContainer.x, SkyblockerConfig.get().general.titleContainer.y, tickDelta); + render(context, titles, SkyblockerConfigManager.get().general.titleContainer.x, SkyblockerConfigManager.get().general.titleContainer.y, tickDelta); } protected static void render(DrawContext context, Set titles, int xPos, int yPos, float tickDelta) { @@ -90,11 +90,11 @@ public class TitleContainer { TextRenderer textRenderer = client.textRenderer; // Calculate Scale to use - float scale = 3F * (SkyblockerConfig.get().general.titleContainer.titleContainerScale / 100F); + float scale = 3F * (SkyblockerConfigManager.get().general.titleContainer.titleContainerScale / 100F); // Grab direction and alignment values - ConfigModel.Direction direction = SkyblockerConfig.get().general.titleContainer.direction; - ConfigModel.Alignment alignment = SkyblockerConfig.get().general.titleContainer.alignment; + SkyblockerConfig.Direction direction = SkyblockerConfigManager.get().general.titleContainer.direction; + SkyblockerConfig.Alignment alignment = SkyblockerConfigManager.get().general.titleContainer.alignment; // x/y refer to the starting position for the text // y always starts at yPos float x = 0; @@ -106,8 +106,8 @@ public class TitleContainer { width += textRenderer.getWidth(title.getText()) * scale + 10; } - if (alignment == ConfigModel.Alignment.MIDDLE) { - if (direction == ConfigModel.Direction.HORIZONTAL) { + if (alignment == SkyblockerConfig.Alignment.MIDDLE) { + if (direction == SkyblockerConfig.Direction.HORIZONTAL) { //If middle aligned horizontally, start the xPosition at half of the width to the left. x = xPos - (width / 2); } else { @@ -115,7 +115,7 @@ public class TitleContainer { x = xPos; } } - if (alignment == ConfigModel.Alignment.LEFT || alignment == ConfigModel.Alignment.RIGHT) { + if (alignment == SkyblockerConfig.Alignment.LEFT || alignment == SkyblockerConfig.Alignment.RIGHT) { //If left or right aligned, start at xPos, we will shift each text later x = xPos; } @@ -124,14 +124,14 @@ public class TitleContainer { //Calculate which x the text should use float xToUse; - if (direction == ConfigModel.Direction.HORIZONTAL) { - xToUse = alignment == ConfigModel.Alignment.RIGHT ? + if (direction == SkyblockerConfig.Direction.HORIZONTAL) { + xToUse = alignment == SkyblockerConfig.Alignment.RIGHT ? x - (textRenderer.getWidth(title.getText()) * scale) : //if right aligned we need the text position to be aligned on the right side. x; } else { - xToUse = alignment == ConfigModel.Alignment.MIDDLE ? + xToUse = alignment == SkyblockerConfig.Alignment.MIDDLE ? x - (textRenderer.getWidth(title.getText()) * scale) / 2 : //if middle aligned we need the text position to be aligned in the middle. - alignment == ConfigModel.Alignment.RIGHT ? + alignment == SkyblockerConfig.Alignment.RIGHT ? x - (textRenderer.getWidth(title.getText()) * scale) : //if right aligned we need the text position to be aligned on the right side. x; } @@ -156,13 +156,13 @@ public class TitleContainer { context.getMatrices().pop(); //Calculate the x and y positions for the next title - if (direction == ConfigModel.Direction.HORIZONTAL) { - if (alignment == ConfigModel.Alignment.MIDDLE || alignment == ConfigModel.Alignment.LEFT) { + if (direction == SkyblockerConfig.Direction.HORIZONTAL) { + if (alignment == SkyblockerConfig.Alignment.MIDDLE || alignment == SkyblockerConfig.Alignment.LEFT) { //Move to the right if middle or left aligned x += textRenderer.getWidth(title.getText()) * scale + 10; } - if (alignment == ConfigModel.Alignment.RIGHT) { + if (alignment == SkyblockerConfig.Alignment.RIGHT) { //Move to the left if right aligned x -= textRenderer.getWidth(title.getText()) * scale + 10; } diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/TitleContainerConfigScreen.java b/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/TitleContainerConfigScreen.java index d8e3b43c..caf9fbf0 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/TitleContainerConfigScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/render/title/TitleContainerConfigScreen.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.utils.render.title; -import me.xmrvizzy.skyblocker.config.ConfigModel; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.render.RenderHelper; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; @@ -18,8 +18,8 @@ public class TitleContainerConfigScreen extends Screen { private final Title example1 = new Title(Text.literal("Test1").formatted(Formatting.RED)); private final Title example2 = new Title(Text.literal("Test23").formatted(Formatting.AQUA)); private final Title example3 = new Title(Text.literal("Testing1234").formatted(Formatting.DARK_GREEN)); - private float hudX = SkyblockerConfig.get().general.titleContainer.x; - private float hudY = SkyblockerConfig.get().general.titleContainer.y; + private float hudX = SkyblockerConfigManager.get().general.titleContainer.x; + private float hudY = SkyblockerConfigManager.get().general.titleContainer.y; private final Screen parent; protected TitleContainerConfigScreen() { @@ -36,8 +36,8 @@ public class TitleContainerConfigScreen extends Screen { super.render(context, mouseX, mouseY, delta); renderBackground(context, mouseX, mouseY, delta); TitleContainer.render(context, Set.of(example1, example2, example3), (int) hudX, (int) hudY, delta); - ConfigModel.Direction direction = SkyblockerConfig.get().general.titleContainer.direction; - ConfigModel.Alignment alignment = SkyblockerConfig.get().general.titleContainer.alignment; + SkyblockerConfig.Direction direction = SkyblockerConfigManager.get().general.titleContainer.direction; + SkyblockerConfig.Alignment alignment = SkyblockerConfigManager.get().general.titleContainer.alignment; context.drawCenteredTextWithShadow(textRenderer, "Press Q/E to change Alignment: " + alignment, width / 2, textRenderer.fontHeight * 2, Color.WHITE.getRGB()); context.drawCenteredTextWithShadow(textRenderer, "Press R to change Direction: " + direction, width / 2, textRenderer.fontHeight * 3 + 5, Color.WHITE.getRGB()); context.drawCenteredTextWithShadow(textRenderer, "Press +/- to change Scale", width / 2, textRenderer.fontHeight * 4 + 10, Color.WHITE.getRGB()); @@ -56,7 +56,7 @@ public class TitleContainerConfigScreen extends Screen { } private Pair<Vector2f, Vector2f> getSelectionBoundingBox() { - ConfigModel.Alignment alignment = SkyblockerConfig.get().general.titleContainer.alignment; + SkyblockerConfig.Alignment alignment = SkyblockerConfigManager.get().general.titleContainer.alignment; float midWidth = getSelectionWidth() / 2F; float x1 = 0; @@ -81,15 +81,15 @@ public class TitleContainerConfigScreen extends Screen { } private float getSelectionHeight() { - float scale = (3F * (SkyblockerConfig.get().general.titleContainer.titleContainerScale / 100F)); - return SkyblockerConfig.get().general.titleContainer.direction == ConfigModel.Direction.HORIZONTAL ? + float scale = (3F * (SkyblockerConfigManager.get().general.titleContainer.titleContainerScale / 100F)); + return SkyblockerConfigManager.get().general.titleContainer.direction == SkyblockerConfig.Direction.HORIZONTAL ? (textRenderer.fontHeight * scale) : (textRenderer.fontHeight + 10F) * 3F * scale; } private float getSelectionWidth() { - float scale = (3F * (SkyblockerConfig.get().general.titleContainer.titleContainerScale / 100F)); - return SkyblockerConfig.get().general.titleContainer.direction == ConfigModel.Direction.HORIZONTAL ? + float scale = (3F * (SkyblockerConfigManager.get().general.titleContainer.titleContainerScale / 100F)); + return SkyblockerConfigManager.get().general.titleContainer.direction == SkyblockerConfig.Direction.HORIZONTAL ? (textRenderer.getWidth("Test1") + 10 + textRenderer.getWidth("Test23") + 10 + textRenderer.getWidth("Testing1234")) * scale : textRenderer.getWidth("Testing1234") * scale; } @@ -98,7 +98,7 @@ public class TitleContainerConfigScreen extends Screen { public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) { float midWidth = getSelectionWidth() / 2; float midHeight = getSelectionHeight() / 2; - var alignment = SkyblockerConfig.get().general.titleContainer.alignment; + var alignment = SkyblockerConfigManager.get().general.titleContainer.alignment; Pair<Vector2f, Vector2f> boundingBox = getSelectionBoundingBox(); float x1 = boundingBox.getLeft().getX(); @@ -129,42 +129,42 @@ public class TitleContainerConfigScreen extends Screen { @Override public boolean keyPressed(int keyCode, int scanCode, int modifiers) { if (keyCode == GLFW.GLFW_KEY_Q) { - ConfigModel.Alignment current = SkyblockerConfig.get().general.titleContainer.alignment; - SkyblockerConfig.get().general.titleContainer.alignment = switch (current) { - case LEFT -> ConfigModel.Alignment.MIDDLE; - case MIDDLE -> ConfigModel.Alignment.RIGHT; - case RIGHT -> ConfigModel.Alignment.LEFT; + SkyblockerConfig.Alignment current = SkyblockerConfigManager.get().general.titleContainer.alignment; + SkyblockerConfigManager.get().general.titleContainer.alignment = switch (current) { + case LEFT -> SkyblockerConfig.Alignment.MIDDLE; + case MIDDLE -> SkyblockerConfig.Alignment.RIGHT; + case RIGHT -> SkyblockerConfig.Alignment.LEFT; }; } if (keyCode == GLFW.GLFW_KEY_E) { - ConfigModel.Alignment current = SkyblockerConfig.get().general.titleContainer.alignment; - SkyblockerConfig.get().general.titleContainer.alignment = switch (current) { - case LEFT -> ConfigModel.Alignment.RIGHT; - case MIDDLE -> ConfigModel.Alignment.LEFT; - case RIGHT -> ConfigModel.Alignment.MIDDLE; + SkyblockerConfig.Alignment current = SkyblockerConfigManager.get().general.titleContainer.alignment; + SkyblockerConfigManager.get().general.titleContainer.alignment = switch (current) { + case LEFT -> SkyblockerConfig.Alignment.RIGHT; + case MIDDLE -> SkyblockerConfig.Alignment.LEFT; + case RIGHT -> SkyblockerConfig.Alignment.MIDDLE; }; } if (keyCode == GLFW.GLFW_KEY_R) { - ConfigModel.Direction current = SkyblockerConfig.get().general.titleContainer.direction; - SkyblockerConfig.get().general.titleContainer.direction = switch (current) { - case HORIZONTAL -> ConfigModel.Direction.VERTICAL; - case VERTICAL -> ConfigModel.Direction.HORIZONTAL; + SkyblockerConfig.Direction current = SkyblockerConfigManager.get().general.titleContainer.direction; + SkyblockerConfigManager.get().general.titleContainer.direction = switch (current) { + case HORIZONTAL -> SkyblockerConfig.Direction.VERTICAL; + case VERTICAL -> SkyblockerConfig.Direction.HORIZONTAL; }; } if (keyCode == GLFW.GLFW_KEY_EQUAL) { - SkyblockerConfig.get().general.titleContainer.titleContainerScale += 10; + SkyblockerConfigManager.get().general.titleContainer.titleContainerScale += 10; } if (keyCode == GLFW.GLFW_KEY_MINUS) { - SkyblockerConfig.get().general.titleContainer.titleContainerScale -= 10; + SkyblockerConfigManager.get().general.titleContainer.titleContainerScale -= 10; } return super.keyPressed(keyCode, scanCode, modifiers); } @Override public void close() { - SkyblockerConfig.get().general.titleContainer.x = (int) hudX; - SkyblockerConfig.get().general.titleContainer.y = (int) hudY; - SkyblockerConfig.save(); + SkyblockerConfigManager.get().general.titleContainer.x = (int) hudX; + SkyblockerConfigManager.get().general.titleContainer.y = (int) hudY; + SkyblockerConfigManager.save(); this.client.setScreen(parent); } } diff --git a/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonChestProfitTest.java b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonChestProfitTest.java index e375d3a0..b0e09481 100644 --- a/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonChestProfitTest.java +++ b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonChestProfitTest.java @@ -1,13 +1,13 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; -import me.xmrvizzy.skyblocker.config.ConfigModel; +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; public class DungeonChestProfitTest { @Test void testProfitText() { - ConfigModel.DungeonChestProfit config = new ConfigModel.DungeonChestProfit(); + SkyblockerConfig.DungeonChestProfit config = new SkyblockerConfig.DungeonChestProfit(); Assertions.assertEquals("literal{ 0}[style={color=dark_gray}]", DungeonChestProfit.getProfitText(0, false, config.neutralThreshold, config.neutralColor.formatting, config.profitColor.formatting, config.lossColor.formatting, config.incompleteColor.formatting).toString()); Assertions.assertEquals("literal{ 0}[style={color=blue}]", DungeonChestProfit.getProfitText(0, true, config.neutralThreshold, config.neutralColor.formatting, config.profitColor.formatting, config.lossColor.formatting, config.incompleteColor.formatting).toString()); Assertions.assertEquals("literal{ +10}[style={color=dark_gray}]", DungeonChestProfit.getProfitText(10, false, config.neutralThreshold, config.neutralColor.formatting, config.profitColor.formatting, config.lossColor.formatting, config.incompleteColor.formatting).toString()); -- cgit From 8317119d923eef16033c6139c602d5f987d3f137 Mon Sep 17 00:00:00 2001 From: Aaron <51387595+AzureAaron@users.noreply.github.com> Date: Tue, 26 Sep 2023 15:37:57 -0400 Subject: I forgot to swap out this string --- .../java/me/xmrvizzy/skyblocker/config/SkyblockerConfigManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main/java/me/xmrvizzy') diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfigManager.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfigManager.java index 534dde6d..111df7c4 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfigManager.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfigManager.java @@ -62,7 +62,7 @@ public class SkyblockerConfigManager { public static Screen createGUI(Screen parent) { return YetAnotherConfigLib.create(INSTANCE, (defaults, config, builder) -> { return builder - .title(Text.literal("Skyblocker")) + .title(Text.translatable("text.autoconfig.skyblocker.title")) .category(GeneralCategory.create(defaults, config)) .category(DungeonsCategory.create(defaults, config)) .category(DwarvenMinesCategory.create(defaults, config)) -- cgit From ad909938171f17cc53dbf9f5d402246e3c7138fe Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Wed, 27 Sep 2023 11:21:51 -0400 Subject: Refactor config --- .../compatibility/modmenu/ModMenuEntry.java | 2 +- .../skyblocker/config/SkyblockerConfig.java | 2 +- .../skyblocker/config/SkyblockerConfigManager.java | 23 +++++++++------------ .../config/categories/GeneralCategory.java | 24 +++++++++++----------- .../skyblocker/skyblock/FancyStatusBars.java | 8 ++++---- .../skyblocker/skyblock/HotbarSlotLock.java | 1 - .../skyblock/dwarven/DwarvenHudConfigScreen.java | 1 - .../skyblock/experiment/ChronomatronSolver.java | 1 - .../skyblock/experiment/SuperpairsSolver.java | 1 - .../skyblock/experiment/UltrasequencerSolver.java | 1 - .../resources/assets/skyblocker/lang/en_us.json | 8 ++++---- .../skyblock/dungeon/DungeonChestProfitTest.java | 2 +- 12 files changed, 33 insertions(+), 41 deletions(-) (limited to 'src/main/java/me/xmrvizzy') diff --git a/src/main/java/me/xmrvizzy/skyblocker/compatibility/modmenu/ModMenuEntry.java b/src/main/java/me/xmrvizzy/skyblocker/compatibility/modmenu/ModMenuEntry.java index 65287cc9..5a3f4504 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/compatibility/modmenu/ModMenuEntry.java +++ b/src/main/java/me/xmrvizzy/skyblocker/compatibility/modmenu/ModMenuEntry.java @@ -10,6 +10,6 @@ import net.fabricmc.api.Environment; public class ModMenuEntry implements ModMenuApi { @Override public ConfigScreenFactory<?> getModConfigScreenFactory() { - return parent -> SkyblockerConfigManager.createGUI(parent); + return SkyblockerConfigManager::createGUI; } } \ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index 4207b495..ce268978 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -249,7 +249,7 @@ public class SkyblockerConfig { public boolean enableBars = true; @ConfigEntry - public BarPositions barpositions = new BarPositions(); + public BarPositions barPositions = new BarPositions(); } public static class BarPositions { diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfigManager.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfigManager.java index 111df7c4..fdc323b5 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfigManager.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfigManager.java @@ -60,19 +60,16 @@ public class SkyblockerConfigManager { } public static Screen createGUI(Screen parent) { - return YetAnotherConfigLib.create(INSTANCE, (defaults, config, builder) -> { - return builder - .title(Text.translatable("text.autoconfig.skyblocker.title")) - .category(GeneralCategory.create(defaults, config)) - .category(DungeonsCategory.create(defaults, config)) - .category(DwarvenMinesCategory.create(defaults, config)) - .category(LocationsCategory.create(defaults, config)) - .category(SlayersCategory.create(defaults, config)) - .category(QuickNavigationCategory.create(defaults, config)) - .category(MessageFilterCategory.create(defaults, config)) - .category(DiscordRPCCategory.create(defaults, config)); - - }).generateScreen(parent); + return YetAnotherConfigLib.create(INSTANCE, (defaults, config, builder) -> builder + .title(Text.translatable("text.autoconfig.skyblocker.title")) + .category(GeneralCategory.create(defaults, config)) + .category(DungeonsCategory.create(defaults, config)) + .category(DwarvenMinesCategory.create(defaults, config)) + .category(LocationsCategory.create(defaults, config)) + .category(SlayersCategory.create(defaults, config)) + .category(QuickNavigationCategory.create(defaults, config)) + .category(MessageFilterCategory.create(defaults, config)) + .category(DiscordRPCCategory.create(defaults, config))).generateScreen(parent); } /** diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/GeneralCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/GeneralCategory.java index e75dc331..842f0894 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/GeneralCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/GeneralCategory.java @@ -109,30 +109,30 @@ public class GeneralCategory { .build()) .option(Option.<SkyblockerConfig.BarPosition>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.bars.barpositions.healthBarPosition")) - .binding(defaults.general.bars.barpositions.healthBarPosition, - () -> config.general.bars.barpositions.healthBarPosition, - newValue -> config.general.bars.barpositions.healthBarPosition = newValue) + .binding(defaults.general.bars.barPositions.healthBarPosition, + () -> config.general.bars.barPositions.healthBarPosition, + newValue -> config.general.bars.barPositions.healthBarPosition = newValue) .controller(ConfigUtils::createCyclingListController4Enum) .build()) .option(Option.<SkyblockerConfig.BarPosition>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.bars.barpositions.manaBarPosition")) - .binding(defaults.general.bars.barpositions.manaBarPosition, - () -> config.general.bars.barpositions.manaBarPosition, - newValue -> config.general.bars.barpositions.manaBarPosition = newValue) + .binding(defaults.general.bars.barPositions.manaBarPosition, + () -> config.general.bars.barPositions.manaBarPosition, + newValue -> config.general.bars.barPositions.manaBarPosition = newValue) .controller(ConfigUtils::createCyclingListController4Enum) .build()) .option(Option.<SkyblockerConfig.BarPosition>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.bars.barpositions.defenceBarPosition")) - .binding(defaults.general.bars.barpositions.defenceBarPosition, - () -> config.general.bars.barpositions.defenceBarPosition, - newValue -> config.general.bars.barpositions.defenceBarPosition = newValue) + .binding(defaults.general.bars.barPositions.defenceBarPosition, + () -> config.general.bars.barPositions.defenceBarPosition, + newValue -> config.general.bars.barPositions.defenceBarPosition = newValue) .controller(ConfigUtils::createCyclingListController4Enum) .build()) .option(Option.<SkyblockerConfig.BarPosition>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.bars.barpositions.experienceBarPosition")) - .binding(defaults.general.bars.barpositions.experienceBarPosition, - () -> config.general.bars.barpositions.experienceBarPosition, - newValue -> config.general.bars.barpositions.experienceBarPosition = newValue) + .binding(defaults.general.bars.barPositions.experienceBarPosition, + () -> config.general.bars.barPositions.experienceBarPosition, + newValue -> config.general.bars.barPositions.experienceBarPosition = newValue) .controller(ConfigUtils::createCyclingListController4Enum) .build()) .build()) diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java index 56b6c7fe..a7428056 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java @@ -60,10 +60,10 @@ public class FancyStatusBars { // Update positions of bars from config for (int i = 0; i < 4; i++) { int configAnchorNum = switch (i) { - case 0 -> SkyblockerConfigManager.get().general.bars.barpositions.healthBarPosition.toInt(); - case 1 -> SkyblockerConfigManager.get().general.bars.barpositions.manaBarPosition.toInt(); - case 2 -> SkyblockerConfigManager.get().general.bars.barpositions.defenceBarPosition.toInt(); - case 3 -> SkyblockerConfigManager.get().general.bars.barpositions.experienceBarPosition.toInt(); + case 0 -> SkyblockerConfigManager.get().general.bars.barPositions.healthBarPosition.toInt(); + case 1 -> SkyblockerConfigManager.get().general.bars.barPositions.manaBarPosition.toInt(); + case 2 -> SkyblockerConfigManager.get().general.bars.barPositions.defenceBarPosition.toInt(); + case 3 -> SkyblockerConfigManager.get().general.bars.barPositions.experienceBarPosition.toInt(); default -> 0; }; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/HotbarSlotLock.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/HotbarSlotLock.java index ab8ea882..30dd1270 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/HotbarSlotLock.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/HotbarSlotLock.java @@ -1,6 +1,5 @@ package me.xmrvizzy.skyblocker.skyblock; -import me.shedaniel.autoconfig.AutoConfig; import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; import net.minecraft.client.network.ClientPlayerEntity; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java index 6e5784e3..232817bb 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/DwarvenHudConfigScreen.java @@ -1,7 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.dwarven; import it.unimi.dsi.fastutil.ints.IntIntPair; -import me.shedaniel.autoconfig.AutoConfig; import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.skyblock.dwarven.DwarvenHud.Commission; import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.hud.HudCommsWidget; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ChronomatronSolver.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ChronomatronSolver.java index 1eef9722..02d612a6 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ChronomatronSolver.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/ChronomatronSolver.java @@ -3,7 +3,6 @@ package me.xmrvizzy.skyblocker.skyblock.experiment; import com.google.common.collect.ImmutableMap; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.render.gui.ColorHighlight; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.GenericContainerScreen; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/SuperpairsSolver.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/SuperpairsSolver.java index 40f1ab1b..f329a395 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/SuperpairsSolver.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/SuperpairsSolver.java @@ -1,7 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.experiment; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.render.gui.ColorHighlight; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.GenericContainerScreen; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/UltrasequencerSolver.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/UltrasequencerSolver.java index 166fb8a9..d4d80ee6 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/UltrasequencerSolver.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/experiment/UltrasequencerSolver.java @@ -1,7 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.experiment; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; import me.xmrvizzy.skyblocker.utils.render.gui.ColorHighlight; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.GenericContainerScreen; diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index fe246fe6..d4b6551a 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -5,11 +5,11 @@ "key.skyblocker.defaultTgl": "Switch tab HUD to default view", "key.skyblocker.toggleA": "Toggle tab HUD to screen A", "key.wikiLookup": "Wiki Lookup", - + "text.skyblocker.open": "Open", "text.skyblocker.quit_config": "Changes Not Saved", - "text.skyblocker.quit_config_sure":"Are you sure you want to quit editing the config? Changes will not be saved!", - "text.skyblocker.quit_discard":"Quit & Discard Changes", + "text.skyblocker.quit_config_sure": "Are you sure you want to quit editing the config? Changes will not be saved!", + "text.skyblocker.quit_discard": "Quit & Discard Changes", "text.autoconfig.skyblocker.title": "Skyblocker Settings", @@ -290,7 +290,7 @@ "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.enableBackground": "Enable Background", "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.x": "X", "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.y": "Y", - + "text.autoconfig.skyblocker.option.locations.rift": "The Rift", "text.autoconfig.skyblocker.option.locations.rift.mirrorverseWaypoints": "Enable Mirrorverse Waypoints", "text.autoconfig.skyblocker.option.locations.rift.mcGrubberStacks": "McGrubber Stacks", diff --git a/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonChestProfitTest.java b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonChestProfitTest.java index b0e09481..7a130b5a 100644 --- a/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonChestProfitTest.java +++ b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonChestProfitTest.java @@ -7,7 +7,7 @@ import org.junit.jupiter.api.Test; public class DungeonChestProfitTest { @Test void testProfitText() { - SkyblockerConfig.DungeonChestProfit config = new SkyblockerConfig.DungeonChestProfit(); + SkyblockerConfig.DungeonChestProfit config = new SkyblockerConfig.DungeonChestProfit(); Assertions.assertEquals("literal{ 0}[style={color=dark_gray}]", DungeonChestProfit.getProfitText(0, false, config.neutralThreshold, config.neutralColor.formatting, config.profitColor.formatting, config.lossColor.formatting, config.incompleteColor.formatting).toString()); Assertions.assertEquals("literal{ 0}[style={color=blue}]", DungeonChestProfit.getProfitText(0, true, config.neutralThreshold, config.neutralColor.formatting, config.profitColor.formatting, config.lossColor.formatting, config.incompleteColor.formatting).toString()); Assertions.assertEquals("literal{ +10}[style={color=dark_gray}]", DungeonChestProfit.getProfitText(10, false, config.neutralThreshold, config.neutralColor.formatting, config.profitColor.formatting, config.lossColor.formatting, config.incompleteColor.formatting).toString()); -- cgit From 73241aa860e775d45c70b8c089485d112a82b0ab Mon Sep 17 00:00:00 2001 From: Aaron <51387595+AzureAaron@users.noreply.github.com> Date: Fri, 29 Sep 2023 00:46:17 -0400 Subject: YACL 3.2.1 --- gradle.properties | 2 +- .../skyblocker/config/ConfigSerializer.java | 29 -- .../skyblocker/config/SkyblockerConfig.java | 373 ++++++++++----------- .../skyblocker/config/SkyblockerConfigManager.java | 29 +- .../skyblocker/skyblock/item/CustomArmorTrims.java | 5 +- 5 files changed, 204 insertions(+), 234 deletions(-) delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/config/ConfigSerializer.java (limited to 'src/main/java/me/xmrvizzy') diff --git a/gradle.properties b/gradle.properties index 3c2a112b..44dbbc41 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,7 +13,7 @@ fabric_api_version=0.89.1+1.20.2 # Dependencies ## YACL (https://github.com/isXander/YetAnotherConfigLib) -yacl_version=3.2.0+1.20.2 +yacl_version=3.2.1+1.20.2 ## Mod Menu (https://modrinth.com/mod/modmenu/versions) mod_menu_version = 8.0.0 ## REI (https://modrinth.com/mod/rei/versions?l=fabric) diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/ConfigSerializer.java b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigSerializer.java deleted file mode 100644 index 2d63fc76..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/config/ConfigSerializer.java +++ /dev/null @@ -1,29 +0,0 @@ -package me.xmrvizzy.skyblocker.config; - -import java.awt.Color; - -import com.google.gson.FieldNamingPolicy; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; - -import dev.isxander.yacl3.config.v2.impl.serializer.GsonConfigSerializer; -import net.minecraft.item.Item; -import net.minecraft.text.Style; -import net.minecraft.text.Text; -import net.minecraft.util.Identifier; - -/** - * Note: The type hierarchy adapters are copied from YACL's code - */ -class ConfigSerializer { - static final Gson INSTANCE = new GsonBuilder() - .setFieldNamingPolicy(FieldNamingPolicy.IDENTITY) - .registerTypeHierarchyAdapter(Text.class, new Text.Serializer()) - .registerTypeHierarchyAdapter(Style.class, new Style.Serializer()) - .registerTypeHierarchyAdapter(Identifier.class, new Identifier.Serializer()) - .registerTypeHierarchyAdapter(Color.class, new GsonConfigSerializer.ColorTypeAdapter()) - .registerTypeHierarchyAdapter(Item.class, new GsonConfigSerializer.ItemTypeAdapter()) - .serializeNulls() - .setPrettyPrinting() - .create(); -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index ce268978..4b707e9a 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -5,65 +5,64 @@ import java.util.List; import org.apache.commons.lang3.StringUtils; -import dev.isxander.yacl3.config.ConfigEntry; +import dev.isxander.yacl3.config.v2.api.SerialEntry; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; -import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.skyblock.item.CustomArmorTrims; +import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; import net.minecraft.client.resource.language.I18n; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -@SuppressWarnings("deprecation") public class SkyblockerConfig { - @ConfigEntry + @SerialEntry public int version = 1; - @ConfigEntry + @SerialEntry public General general = new General(); - @ConfigEntry + @SerialEntry public Locations locations = new Locations(); - @ConfigEntry + @SerialEntry public Slayer slayer = new Slayer(); - @ConfigEntry + @SerialEntry public QuickNav quickNav = new QuickNav(); - @ConfigEntry + @SerialEntry public Messages messages = new Messages(); - @ConfigEntry + @SerialEntry public RichPresence richPresence = new RichPresence(); public static class QuickNav { - @ConfigEntry + @SerialEntry public boolean enableQuickNav = true; - @ConfigEntry + @SerialEntry public QuickNavItem button1 = new QuickNavItem(true, new ItemData("diamond_sword"), "Your Skills", "/skills"); - @ConfigEntry + @SerialEntry public QuickNavItem button2 = new QuickNavItem(true, new ItemData("painting"), "Collections", "/collection"); /* REGEX Explanation * "Pets" : simple match on letters * "(?: \\(\\d+\\/\\d+\\))?" : optional match on the non-capturing group for the page in the format " ($number/$number)" */ - @ConfigEntry + @SerialEntry public QuickNavItem button3 = new QuickNavItem(true, new ItemData("bone"), "Pets(:? \\(\\d+\\/\\d+\\))?", "/pets"); /* REGEX Explanation * "Wardrobe" : simple match on letters * " \\([12]\\/2\\)" : match on the page either " (1/2)" or " (2/2)" */ - @ConfigEntry + @SerialEntry public QuickNavItem button4 = new QuickNavItem(true, new ItemData("leather_chestplate", 1, "tag:{display:{color:8991416}}"), "Wardrobe \\([12]/2\\)", "/wardrobe"); - @ConfigEntry + @SerialEntry public QuickNavItem button5 = new QuickNavItem(true, new ItemData("player_head", 1, "tag:{SkullOwner:{Id:[I;-2081424676,-57521078,-2073572414,158072763],Properties:{textures:[{Value:\"ewogICJ0aW1lc3RhbXAiIDogMTU5MTMxMDU4NTYwOSwKICAicHJvZmlsZUlkIiA6ICI0MWQzYWJjMmQ3NDk0MDBjOTA5MGQ1NDM0ZDAzODMxYiIsCiAgInByb2ZpbGVOYW1lIiA6ICJNZWdha2xvb24iLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODBhMDc3ZTI0OGQxNDI3NzJlYTgwMDg2NGY4YzU3OGI5ZDM2ODg1YjI5ZGFmODM2YjY0YTcwNjg4MmI2ZWMxMCIKICAgIH0KICB9Cn0=\"}]}}}"), "Sack of Sacks", "/sacks"); @@ -73,33 +72,33 @@ public class SkyblockerConfig { * "Storage" : simple match on letters * "(?: \\([12]\\/2\\))?" : optional match on the non-capturing group " (1/2)" or " (2/2)" */ - @ConfigEntry + @SerialEntry public QuickNavItem button6 = new QuickNavItem(true, new ItemData("ender_chest"), "(?:Rift )?Storage(?: \\(1/2\\))?", "/storage"); - @ConfigEntry + @SerialEntry public QuickNavItem button7 = new QuickNavItem(true, new ItemData("player_head", 1, "tag:{SkullOwner:{Id:[I;-300151517,-631415889,-1193921967,-1821784279],Properties:{textures:[{Value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDdjYzY2ODc0MjNkMDU3MGQ1NTZhYzUzZTA2NzZjYjU2M2JiZGQ5NzE3Y2Q4MjY5YmRlYmVkNmY2ZDRlN2JmOCJ9fX0=\"}]}}}"), "none", "/hub"); - @ConfigEntry + @SerialEntry public QuickNavItem button8 = new QuickNavItem(true, new ItemData("player_head", 1, "tag:{SkullOwner:{Id:[I;1605800870,415127827,-1236127084,15358548],Properties:{textures:[{Value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzg5MWQ1YjI3M2ZmMGJjNTBjOTYwYjJjZDg2ZWVmMWM0MGExYjk0MDMyYWU3MWU3NTQ3NWE1NjhhODI1NzQyMSJ9fX0=\"}]}}}"), "none", "/warp dungeon_hub"); - @ConfigEntry + @SerialEntry public QuickNavItem button9 = new QuickNavItem(true, new ItemData("player_head", 1, "tag:{SkullOwner:{Id:[I;-562285948,532499670,-1705302742,775653035],Properties:{textures:[{Value:\"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjVkZjU1NTkyNjQzMGQ1ZDc1YWRlZDIxZGQ5NjE5Yjc2YzViN2NhMmM3ZjU0MDE0NDA1MjNkNTNhOGJjZmFhYiJ9fX0=\"}]}}}"), "Visit prtl", "/visit prtl"); - @ConfigEntry + @SerialEntry public QuickNavItem button10 = new QuickNavItem(true, new ItemData("enchanting_table"), "Enchant Item", "/etable"); - @ConfigEntry + @SerialEntry public QuickNavItem button11 = new QuickNavItem(true, new ItemData("anvil"), "Anvil", "/anvil"); - @ConfigEntry + @SerialEntry public QuickNavItem button12 = new QuickNavItem(true, new ItemData("crafting_table"), "Craft Item", "/craft"); } @@ -111,16 +110,16 @@ public class SkyblockerConfig { this.uiTitle = uiTitle; } - @ConfigEntry + @SerialEntry public Boolean render; - @ConfigEntry + @SerialEntry public ItemData item; - @ConfigEntry + @SerialEntry public String uiTitle; - @ConfigEntry + @SerialEntry public String clickEvent; } @@ -137,98 +136,98 @@ public class SkyblockerConfig { this.nbt = ""; } - @ConfigEntry + @SerialEntry public String itemName; - @ConfigEntry + @SerialEntry public int count; - @ConfigEntry + @SerialEntry public String nbt; } public static class General { - @ConfigEntry + @SerialEntry public boolean acceptReparty = true; - @ConfigEntry + @SerialEntry public boolean backpackPreviewWithoutShift = false; - @ConfigEntry + @SerialEntry public boolean compactorDeletorPreview = true; - @ConfigEntry + @SerialEntry public boolean hideEmptyTooltips = true; - @ConfigEntry + @SerialEntry public boolean hideStatusEffectOverlay = false; - @ConfigEntry + @SerialEntry public TabHudConf tabHud = new TabHudConf(); - @ConfigEntry + @SerialEntry public Bars bars = new Bars(); - @ConfigEntry + @SerialEntry public Experiments experiments = new Experiments(); - @ConfigEntry + @SerialEntry public Fishing fishing = new Fishing(); - @ConfigEntry + @SerialEntry public FairySouls fairySouls = new FairySouls(); - @ConfigEntry + @SerialEntry public Shortcuts shortcuts = new Shortcuts(); - @ConfigEntry + @SerialEntry public QuiverWarning quiverWarning = new QuiverWarning(); - @ConfigEntry + @SerialEntry public ItemList itemList = new ItemList(); - @ConfigEntry + @SerialEntry public ItemTooltip itemTooltip = new ItemTooltip(); - @ConfigEntry + @SerialEntry public ItemInfoDisplay itemInfoDisplay = new ItemInfoDisplay(); - @ConfigEntry + @SerialEntry public SpecialEffects specialEffects = new SpecialEffects(); - @ConfigEntry + @SerialEntry public Hitbox hitbox = new Hitbox(); - @ConfigEntry + @SerialEntry public TitleContainer titleContainer = new TitleContainer(); - @ConfigEntry + @SerialEntry public TeleportOverlay teleportOverlay = new TeleportOverlay(); - @ConfigEntry + @SerialEntry public List<Integer> lockedSlots = new ArrayList<>(); - @ConfigEntry + @SerialEntry public Object2ObjectOpenHashMap<String, Text> customItemNames = new Object2ObjectOpenHashMap<>(); - @ConfigEntry + @SerialEntry public Object2IntOpenHashMap<String> customDyeColors = new Object2IntOpenHashMap<>(); - @ConfigEntry + @SerialEntry public Object2ObjectOpenHashMap<String, CustomArmorTrims.ArmorTrimId> customArmorTrims = new Object2ObjectOpenHashMap<>(); } public static class TabHudConf { - @ConfigEntry + @SerialEntry public boolean tabHudEnabled = true; - @ConfigEntry + @SerialEntry public int tabHudScale = 100; - @ConfigEntry + @SerialEntry public boolean plainPlayerNames = false; - @ConfigEntry + @SerialEntry public NameSorting nameSorting = NameSorting.DEFAULT; } @@ -245,24 +244,24 @@ public class SkyblockerConfig { } public static class Bars { - @ConfigEntry + @SerialEntry public boolean enableBars = true; - @ConfigEntry + @SerialEntry public BarPositions barPositions = new BarPositions(); } public static class BarPositions { - @ConfigEntry + @SerialEntry public BarPosition healthBarPosition = BarPosition.LAYER1; - @ConfigEntry + @SerialEntry public BarPosition manaBarPosition = BarPosition.LAYER1; - @ConfigEntry + @SerialEntry public BarPosition defenceBarPosition = BarPosition.LAYER1; - @ConfigEntry + @SerialEntry public BarPosition experienceBarPosition = BarPosition.LAYER1; } @@ -286,96 +285,96 @@ public class SkyblockerConfig { } public static class Experiments { - @ConfigEntry + @SerialEntry public boolean enableChronomatronSolver = true; - @ConfigEntry + @SerialEntry public boolean enableSuperpairsSolver = true; - @ConfigEntry + @SerialEntry public boolean enableUltrasequencerSolver = true; } public static class Fishing { - @ConfigEntry + @SerialEntry public boolean enableFishingHelper = true; } public static class FairySouls { - @ConfigEntry + @SerialEntry public boolean enableFairySoulsHelper = false; - @ConfigEntry + @SerialEntry public boolean highlightFoundSouls = true; - @ConfigEntry + @SerialEntry public boolean highlightOnlyNearbySouls = false; } public static class Shortcuts { - @ConfigEntry + @SerialEntry public boolean enableShortcuts = true; - @ConfigEntry + @SerialEntry public boolean enableCommandShortcuts = true; - @ConfigEntry + @SerialEntry public boolean enableCommandArgShortcuts = true; } public static class QuiverWarning { - @ConfigEntry + @SerialEntry public boolean enableQuiverWarning = true; - @ConfigEntry + @SerialEntry public boolean enableQuiverWarningInDungeons = true; - @ConfigEntry + @SerialEntry public boolean enableQuiverWarningAfterDungeon = true; } public static class Hitbox { - @ConfigEntry + @SerialEntry public boolean oldFarmlandHitbox = true; - @ConfigEntry + @SerialEntry public boolean oldLeverHitbox = false; } public static class TitleContainer { - @ConfigEntry + @SerialEntry public float titleContainerScale = 100; - @ConfigEntry + @SerialEntry public int x = 540; - @ConfigEntry + @SerialEntry public int y = 10; - @ConfigEntry + @SerialEntry public Direction direction = Direction.HORIZONTAL; - @ConfigEntry + @SerialEntry public Alignment alignment = Alignment.MIDDLE; } public static class TeleportOverlay { - @ConfigEntry + @SerialEntry public boolean enableTeleportOverlays = true; - @ConfigEntry + @SerialEntry public boolean enableWeirdTransmission = true; - @ConfigEntry + @SerialEntry public boolean enableInstantTransmission = true; - @ConfigEntry + @SerialEntry public boolean enableEtherTransmission = true; - @ConfigEntry + @SerialEntry public boolean enableSinrecallTransmission = true; - @ConfigEntry + @SerialEntry public boolean enableWitherImpact = true; } @@ -405,21 +404,21 @@ public class SkyblockerConfig { } public static class RichPresence { - @ConfigEntry + @SerialEntry public boolean enableRichPresence = false; - @ConfigEntry + @SerialEntry public Info info = Info.LOCATION; - @ConfigEntry + @SerialEntry public boolean cycleMode = false; - @ConfigEntry + @SerialEntry public String customMessage = "Playing Skyblock"; } public static class ItemList { - @ConfigEntry + @SerialEntry public boolean enableItemList = true; } @@ -433,160 +432,160 @@ public class SkyblockerConfig { } public static class ItemTooltip { - @ConfigEntry + @SerialEntry public boolean enableNPCPrice = true; - @ConfigEntry + @SerialEntry public boolean enableMotesPrice = true; - @ConfigEntry + @SerialEntry public boolean enableAvgBIN = true; - @ConfigEntry + @SerialEntry public Average avg = Average.THREE_DAY; - @ConfigEntry + @SerialEntry public boolean enableLowestBIN = true; - @ConfigEntry + @SerialEntry public boolean enableBazaarPrice = true; - @ConfigEntry + @SerialEntry public boolean enableMuseumDate = true; } public static class ItemInfoDisplay { - @ConfigEntry + @SerialEntry public boolean attributeShardInfo = true; } public static class SpecialEffects { - @ConfigEntry + @SerialEntry public boolean rareDungeonDropEffects = true; } public static class Locations { - @ConfigEntry + @SerialEntry public Barn barn = new Barn(); - @ConfigEntry + @SerialEntry public Dungeons dungeons = new Dungeons(); - @ConfigEntry + @SerialEntry public DwarvenMines dwarvenMines = new DwarvenMines(); - @ConfigEntry + @SerialEntry public Rift rift = new Rift(); - @ConfigEntry + @SerialEntry public SpidersDen spidersDen = new SpidersDen(); } public static class Dungeons { - @ConfigEntry + @SerialEntry public SecretWaypoints secretWaypoints = new SecretWaypoints(); - @ConfigEntry + @SerialEntry public DungeonChestProfit dungeonChestProfit = new DungeonChestProfit(); - @ConfigEntry + @SerialEntry public boolean croesusHelper = true; - @ConfigEntry + @SerialEntry public boolean enableMap = true; - @ConfigEntry + @SerialEntry public float mapScaling = 1f; - @ConfigEntry + @SerialEntry public int mapX = 2; - @ConfigEntry + @SerialEntry public int mapY = 2; - @ConfigEntry + @SerialEntry public boolean starredMobGlow = true; - @ConfigEntry + @SerialEntry public boolean solveThreeWeirdos = true; - @ConfigEntry + @SerialEntry public boolean blazesolver = true; - @ConfigEntry + @SerialEntry public boolean solveTrivia = true; - @ConfigEntry + @SerialEntry public boolean solveTicTacToe = true; - @ConfigEntry + @SerialEntry public LividColor lividColor = new LividColor(); - @ConfigEntry + @SerialEntry public Terminals terminals = new Terminals(); } public static class SecretWaypoints { - @ConfigEntry + @SerialEntry public boolean enableSecretWaypoints = true; - @ConfigEntry + @SerialEntry public boolean noInitSecretWaypoints = false; - @ConfigEntry + @SerialEntry public boolean enableEntranceWaypoints = true; - @ConfigEntry + @SerialEntry public boolean enableSuperboomWaypoints = true; - @ConfigEntry + @SerialEntry public boolean enableChestWaypoints = true; - @ConfigEntry + @SerialEntry public boolean enableItemWaypoints = true; - @ConfigEntry + @SerialEntry public boolean enableBatWaypoints = true; - @ConfigEntry + @SerialEntry public boolean enableWitherWaypoints = true; - @ConfigEntry + @SerialEntry public boolean enableLeverWaypoints = true; - @ConfigEntry + @SerialEntry public boolean enableFairySoulWaypoints = true; - @ConfigEntry + @SerialEntry public boolean enableStonkWaypoints = true; - @ConfigEntry + @SerialEntry public boolean enableDefaultWaypoints = true; } public static class DungeonChestProfit { - @ConfigEntry + @SerialEntry public boolean enableProfitCalculator = true; - @ConfigEntry + @SerialEntry public boolean includeKismet = false; - @ConfigEntry + @SerialEntry public boolean includeEssence = true; - @ConfigEntry + @SerialEntry public int neutralThreshold = 1000; - @ConfigEntry + @SerialEntry public FormattingOption neutralColor = FormattingOption.DARK_GRAY; - @ConfigEntry + @SerialEntry public FormattingOption profitColor = FormattingOption.DARK_GREEN; - @ConfigEntry + @SerialEntry public FormattingOption lossColor = FormattingOption.RED; - @ConfigEntry + @SerialEntry public FormattingOption incompleteColor = FormattingOption.BLUE; } @@ -629,52 +628,52 @@ public class SkyblockerConfig { } public static class LividColor { - @ConfigEntry + @SerialEntry public boolean enableLividColor = true; - @ConfigEntry + @SerialEntry public String lividColorText = "The livid color is [color]"; } public static class Terminals { - @ConfigEntry + @SerialEntry public boolean solveColor = true; - @ConfigEntry + @SerialEntry public boolean solveOrder = true; - @ConfigEntry + @SerialEntry public boolean solveStartsWith = true; } public static class DwarvenMines { - @ConfigEntry + @SerialEntry public boolean enableDrillFuel = true; - @ConfigEntry + @SerialEntry public boolean solveFetchur = true; - @ConfigEntry + @SerialEntry public boolean solvePuzzler = true; - @ConfigEntry + @SerialEntry public DwarvenHud dwarvenHud = new DwarvenHud(); } public static class DwarvenHud { - @ConfigEntry + @SerialEntry public boolean enabled = true; - @ConfigEntry + @SerialEntry public DwarvenHudStyle style = DwarvenHudStyle.SIMPLE; - @ConfigEntry + @SerialEntry public boolean enableBackground = true; - @ConfigEntry + @SerialEntry public int x = 10; - @ConfigEntry + @SerialEntry public int y = 10; } @@ -692,109 +691,109 @@ public class SkyblockerConfig { } public static class Barn { - @ConfigEntry + @SerialEntry public boolean solveHungryHiker = true; - @ConfigEntry + @SerialEntry public boolean solveTreasureHunter = true; } public static class Rift { - @ConfigEntry + @SerialEntry public boolean mirrorverseWaypoints = true; - @ConfigEntry + @SerialEntry public int mcGrubberStacks = 0; } public static class SpidersDen { - @ConfigEntry + @SerialEntry public Relics relics = new Relics(); } public static class Relics { - @ConfigEntry + @SerialEntry public boolean enableRelicsHelper = false; - @ConfigEntry + @SerialEntry public boolean highlightFoundRelics = true; } public static class Slayer { - @ConfigEntry + @SerialEntry public VampireSlayer vampireSlayer = new VampireSlayer(); } public static class VampireSlayer { - @ConfigEntry + @SerialEntry public boolean enableEffigyWaypoints = true; - @ConfigEntry + @SerialEntry public boolean compactEffigyWaypoints; - @ConfigEntry + @SerialEntry public int effigyUpdateFrequency = 5; - @ConfigEntry + @SerialEntry public boolean enableHolyIceIndicator = true; - @ConfigEntry + @SerialEntry public int holyIceIndicatorTickDelay = 10; - @ConfigEntry + @SerialEntry public int holyIceUpdateFrequency = 5; - @ConfigEntry + @SerialEntry public boolean enableHealingMelonIndicator = true; - @ConfigEntry + @SerialEntry public float healingMelonHealthThreshold = 4f; - @ConfigEntry + @SerialEntry public boolean enableSteakStakeIndicator = true; - @ConfigEntry + @SerialEntry public int steakStakeUpdateFrequency = 5; - @ConfigEntry + @SerialEntry public boolean enableManiaIndicator = true; - @ConfigEntry + @SerialEntry public int maniaUpdateFrequency = 5; } public static class Messages { - @ConfigEntry + @SerialEntry public ChatFilterResult hideAbility = ChatFilterResult.PASS; - @ConfigEntry + @SerialEntry public ChatFilterResult hideHeal = ChatFilterResult.PASS; - @ConfigEntry + @SerialEntry public ChatFilterResult hideAOTE = ChatFilterResult.PASS; - @ConfigEntry + @SerialEntry public ChatFilterResult hideImplosion = ChatFilterResult.PASS; - @ConfigEntry + @SerialEntry public ChatFilterResult hideMoltenWave = ChatFilterResult.PASS; - @ConfigEntry + @SerialEntry public ChatFilterResult hideAds = ChatFilterResult.PASS; - @ConfigEntry + @SerialEntry public ChatFilterResult hideTeleportPad = ChatFilterResult.PASS; - @ConfigEntry + @SerialEntry public ChatFilterResult hideCombo = ChatFilterResult.PASS; - @ConfigEntry + @SerialEntry public ChatFilterResult hideAutopet = ChatFilterResult.PASS; - @ConfigEntry + @SerialEntry public ChatFilterResult hideShowOff = ChatFilterResult.PASS; - @ConfigEntry + @SerialEntry public boolean hideMana = false; } diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfigManager.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfigManager.java index fdc323b5..eb756641 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfigManager.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfigManager.java @@ -2,17 +2,20 @@ package me.xmrvizzy.skyblocker.config; import java.lang.StackWalker.Option; import java.nio.file.Path; + +import com.google.gson.FieldNamingPolicy; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import dev.isxander.yacl3.api.YetAnotherConfigLib; -import dev.isxander.yacl3.config.GsonConfigInstance; +import dev.isxander.yacl3.config.v2.api.ConfigClassHandler; +import dev.isxander.yacl3.config.v2.api.serializer.GsonConfigSerializerBuilder; import me.xmrvizzy.skyblocker.SkyblockerMod; import me.xmrvizzy.skyblocker.config.categories.DiscordRPCCategory; import me.xmrvizzy.skyblocker.config.categories.DungeonsCategory; import me.xmrvizzy.skyblocker.config.categories.DwarvenMinesCategory; import me.xmrvizzy.skyblocker.config.categories.GeneralCategory; -import me.xmrvizzy.skyblocker.config.categories.MessageFilterCategory; import me.xmrvizzy.skyblocker.config.categories.LocationsCategory; +import me.xmrvizzy.skyblocker.config.categories.MessageFilterCategory; import me.xmrvizzy.skyblocker.config.categories.QuickNavigationCategory; import me.xmrvizzy.skyblocker.config.categories.SlayersCategory; import me.xmrvizzy.skyblocker.utils.scheduler.Scheduler; @@ -22,24 +25,22 @@ import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.gui.screen.Screen; import net.minecraft.text.Text; +import net.minecraft.util.Identifier; -@SuppressWarnings("deprecation") public class SkyblockerConfigManager { private static final Path PATH = FabricLoader.getInstance().getConfigDir().resolve("skyblocker.json"); - private static final GsonConfigInstance<SkyblockerConfig> INSTANCE = GsonConfigInstance.createBuilder(SkyblockerConfig.class) - .setPath(PATH) - .overrideGsonBuilder(ConfigSerializer.INSTANCE) - .build(); - /*private static final ConfigClassHandler<ConfigModel> HANDLER = ConfigClassHandler.createBuilder(ConfigModel.class) + private static final ConfigClassHandler<SkyblockerConfig> HANDLER = ConfigClassHandler.createBuilder(SkyblockerConfig.class) .serializer(config -> GsonConfigSerializerBuilder.create(config) .setPath(PATH) .setJson5(false) - .overrideGsonBuilder(ConfigSerializer.INSTANCE) + .appendGsonBuilder(builder -> builder + .setFieldNamingPolicy(FieldNamingPolicy.IDENTITY) + .registerTypeHierarchyAdapter(Identifier.class, new Identifier.Serializer())) .build()) - .build();*/ + .build(); public static SkyblockerConfig get() { - return INSTANCE.getConfig(); + return HANDLER.instance(); } /** @@ -51,16 +52,16 @@ public class SkyblockerConfigManager { throw new RuntimeException("Skyblocker: Called config init from an illegal place!"); } - INSTANCE.load(); + HANDLER.load(); ClientCommandRegistrationCallback.EVENT.register(((dispatcher, registryAccess) -> dispatcher.register(ClientCommandManager.literal(SkyblockerMod.NAMESPACE).then(optionsLiteral("config")).then(optionsLiteral("options"))))); } public static void save() { - INSTANCE.save(); + HANDLER.save(); } public static Screen createGUI(Screen parent) { - return YetAnotherConfigLib.create(INSTANCE, (defaults, config, builder) -> builder + return YetAnotherConfigLib.create(HANDLER, (defaults, config, builder) -> builder .title(Text.translatable("text.autoconfig.skyblocker.title")) .category(GeneralCategory.create(defaults, config)) .category(DungeonsCategory.create(defaults, config)) diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorTrims.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorTrims.java index c7de9320..dba066a5 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorTrims.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/CustomArmorTrims.java @@ -4,7 +4,7 @@ import com.mojang.brigadier.Command; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.suggestion.SuggestionProvider; -import dev.isxander.yacl3.config.ConfigEntry; +import dev.isxander.yacl3.config.v2.api.SerialEntry; import it.unimi.dsi.fastutil.Pair; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager; @@ -140,8 +140,7 @@ public class CustomArmorTrims { return Command.SINGLE_SUCCESS; } - @SuppressWarnings("deprecation") - public record ArmorTrimId(@ConfigEntry Identifier material, @ConfigEntry Identifier pattern) implements Pair<Identifier, Identifier> { + public record ArmorTrimId(@SerialEntry Identifier material, @SerialEntry Identifier pattern) implements Pair<Identifier, Identifier> { @Override public Identifier left() { return material(); -- cgit From be8e307391d95e0bdc981411f94626978a88b0a5 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Sat, 30 Sep 2023 23:08:21 -0400 Subject: Update enum cycling list controller --- .../me/xmrvizzy/skyblocker/config/ConfigUtils.java | 14 +++++--------- .../config/categories/DiscordRPCCategory.java | 2 +- .../config/categories/DungeonsCategory.java | 8 ++++---- .../config/categories/DwarvenMinesCategory.java | 2 +- .../config/categories/GeneralCategory.java | 16 ++++++++-------- .../config/categories/MessageFilterCategory.java | 20 ++++++++++---------- 6 files changed, 29 insertions(+), 33 deletions(-) (limited to 'src/main/java/me/xmrvizzy') diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java index f5605342..4a615ecc 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java @@ -1,15 +1,11 @@ package me.xmrvizzy.skyblocker.config; import dev.isxander.yacl3.api.Option; -import dev.isxander.yacl3.api.controller.CyclingListControllerBuilder; -import net.minecraft.text.Text; +import dev.isxander.yacl3.api.controller.EnumControllerBuilder; public class ConfigUtils { - - @SuppressWarnings("unchecked") - public static <E extends Enum<?>> CyclingListControllerBuilder<E> createCyclingListController4Enum(Option<E> opt) { - E[] constants = (E[]) opt.binding().defaultValue().getClass().getEnumConstants(); - - return CyclingListControllerBuilder.create(opt).values(constants).formatValue(formatter -> Text.of(formatter.toString())); - } + @SuppressWarnings("unchecked") + public static <E extends Enum<E>> EnumControllerBuilder<E> createEnumCyclingListController(Option<E> opt) { + return EnumControllerBuilder.create(opt).enumClass((Class<E>) opt.binding().defaultValue().getClass()); + } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DiscordRPCCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DiscordRPCCategory.java index 4357c29c..2fe1f775 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DiscordRPCCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DiscordRPCCategory.java @@ -29,7 +29,7 @@ public class DiscordRPCCategory { .binding(defaults.richPresence.info, () -> config.richPresence.info, newValue -> config.richPresence.info = newValue) - .controller(ConfigUtils::createCyclingListController4Enum) + .controller(ConfigUtils::createEnumCyclingListController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.richPresence.cycleMode")) diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java index 0f6b1208..92a7ddec 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java @@ -156,21 +156,21 @@ public class DungeonsCategory { .binding(defaults.locations.dungeons.dungeonChestProfit.neutralColor, () -> config.locations.dungeons.dungeonChestProfit.neutralColor, newValue -> config.locations.dungeons.dungeonChestProfit.neutralColor = newValue) - .controller(ConfigUtils::createCyclingListController4Enum) + .controller(ConfigUtils::createEnumCyclingListController) .build()) .option(Option.<FormattingOption>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.profitColor")) .binding(defaults.locations.dungeons.dungeonChestProfit.profitColor, () -> config.locations.dungeons.dungeonChestProfit.profitColor, newValue -> config.locations.dungeons.dungeonChestProfit.profitColor = newValue) - .controller(ConfigUtils::createCyclingListController4Enum) + .controller(ConfigUtils::createEnumCyclingListController) .build()) .option(Option.<FormattingOption>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.lossColor")) .binding(defaults.locations.dungeons.dungeonChestProfit.lossColor, () -> config.locations.dungeons.dungeonChestProfit.lossColor, newValue -> config.locations.dungeons.dungeonChestProfit.lossColor = newValue) - .controller(ConfigUtils::createCyclingListController4Enum) + .controller(ConfigUtils::createEnumCyclingListController) .build()) .option(Option.<FormattingOption>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.incompleteColor")) @@ -178,7 +178,7 @@ public class DungeonsCategory { .binding(defaults.locations.dungeons.dungeonChestProfit.incompleteColor, () -> config.locations.dungeons.dungeonChestProfit.incompleteColor, newValue -> config.locations.dungeons.dungeonChestProfit.incompleteColor = newValue) - .controller(ConfigUtils::createCyclingListController4Enum) + .controller(ConfigUtils::createEnumCyclingListController) .build()) .build()) diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DwarvenMinesCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DwarvenMinesCategory.java index c6b8b8bc..42d623ac 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DwarvenMinesCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DwarvenMinesCategory.java @@ -61,7 +61,7 @@ public class DwarvenMinesCategory { .binding(defaults.locations.dwarvenMines.dwarvenHud.style, () -> config.locations.dwarvenMines.dwarvenHud.style, newValue -> config.locations.dwarvenMines.dwarvenHud.style = newValue) - .controller(ConfigUtils::createCyclingListController4Enum) + .controller(ConfigUtils::createEnumCyclingListController) .build()) .option(ButtonOption.createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.screen")) diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/GeneralCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/GeneralCategory.java index 842f0894..95b01dfd 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/GeneralCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/GeneralCategory.java @@ -92,7 +92,7 @@ public class GeneralCategory { .binding(defaults.general.tabHud.nameSorting, () -> config.general.tabHud.nameSorting, newValue -> config.general.tabHud.nameSorting = newValue) - .controller(ConfigUtils::createCyclingListController4Enum) + .controller(ConfigUtils::createEnumCyclingListController) .build()) .build()) @@ -112,28 +112,28 @@ public class GeneralCategory { .binding(defaults.general.bars.barPositions.healthBarPosition, () -> config.general.bars.barPositions.healthBarPosition, newValue -> config.general.bars.barPositions.healthBarPosition = newValue) - .controller(ConfigUtils::createCyclingListController4Enum) + .controller(ConfigUtils::createEnumCyclingListController) .build()) .option(Option.<SkyblockerConfig.BarPosition>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.bars.barpositions.manaBarPosition")) .binding(defaults.general.bars.barPositions.manaBarPosition, () -> config.general.bars.barPositions.manaBarPosition, newValue -> config.general.bars.barPositions.manaBarPosition = newValue) - .controller(ConfigUtils::createCyclingListController4Enum) + .controller(ConfigUtils::createEnumCyclingListController) .build()) .option(Option.<SkyblockerConfig.BarPosition>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.bars.barpositions.defenceBarPosition")) .binding(defaults.general.bars.barPositions.defenceBarPosition, () -> config.general.bars.barPositions.defenceBarPosition, newValue -> config.general.bars.barPositions.defenceBarPosition = newValue) - .controller(ConfigUtils::createCyclingListController4Enum) + .controller(ConfigUtils::createEnumCyclingListController) .build()) .option(Option.<SkyblockerConfig.BarPosition>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.bars.barpositions.experienceBarPosition")) .binding(defaults.general.bars.barPositions.experienceBarPosition, () -> config.general.bars.barPositions.experienceBarPosition, newValue -> config.general.bars.barPositions.experienceBarPosition = newValue) - .controller(ConfigUtils::createCyclingListController4Enum) + .controller(ConfigUtils::createEnumCyclingListController) .build()) .build()) @@ -312,7 +312,7 @@ public class GeneralCategory { .binding(defaults.general.itemTooltip.avg, () -> config.general.itemTooltip.avg, newValue -> config.general.itemTooltip.avg = newValue) - .controller(ConfigUtils::createCyclingListController4Enum) + .controller(ConfigUtils::createEnumCyclingListController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.enableLowestBIN")) @@ -416,14 +416,14 @@ public class GeneralCategory { .binding(defaults.general.titleContainer.direction, () -> config.general.titleContainer.direction, newValue -> config.general.titleContainer.direction = newValue) - .controller(ConfigUtils::createCyclingListController4Enum) + .controller(ConfigUtils::createEnumCyclingListController) .build()) .option(Option.<SkyblockerConfig.Alignment>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.titleContainer.alignment")) .binding(defaults.general.titleContainer.alignment, () -> config.general.titleContainer.alignment, newValue -> config.general.titleContainer.alignment = newValue) - .controller(ConfigUtils::createCyclingListController4Enum) + .controller(ConfigUtils::createEnumCyclingListController) .build()) .option(ButtonOption.createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.titleContainer.config")) diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/MessageFilterCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/MessageFilterCategory.java index 5fc5a808..5adec834 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/MessageFilterCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/MessageFilterCategory.java @@ -21,63 +21,63 @@ public class MessageFilterCategory { .binding(defaults.messages.hideAbility, () -> config.messages.hideAbility, newValue -> config.messages.hideAbility = newValue) - .controller(ConfigUtils::createCyclingListController4Enum) + .controller(ConfigUtils::createEnumCyclingListController) .build()) .option(Option.<ChatFilterResult>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideHeal")) .binding(defaults.messages.hideHeal, () -> config.messages.hideHeal, newValue -> config.messages.hideHeal = newValue) - .controller(ConfigUtils::createCyclingListController4Enum) + .controller(ConfigUtils::createEnumCyclingListController) .build()) .option(Option.<ChatFilterResult>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideAOTE")) .binding(defaults.messages.hideAOTE, () -> config.messages.hideAOTE, newValue -> config.messages.hideAOTE = newValue) - .controller(ConfigUtils::createCyclingListController4Enum) + .controller(ConfigUtils::createEnumCyclingListController) .build()) .option(Option.<ChatFilterResult>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideImplosion")) .binding(defaults.messages.hideImplosion, () -> config.messages.hideImplosion, newValue -> config.messages.hideImplosion = newValue) - .controller(ConfigUtils::createCyclingListController4Enum) + .controller(ConfigUtils::createEnumCyclingListController) .build()) .option(Option.<ChatFilterResult>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideMoltenWave")) .binding(defaults.messages.hideMoltenWave, () -> config.messages.hideMoltenWave, newValue -> config.messages.hideMoltenWave = newValue) - .controller(ConfigUtils::createCyclingListController4Enum) + .controller(ConfigUtils::createEnumCyclingListController) .build()) .option(Option.<ChatFilterResult>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideAds")) .binding(defaults.messages.hideAds, () -> config.messages.hideAds, newValue -> config.messages.hideAds = newValue) - .controller(ConfigUtils::createCyclingListController4Enum) + .controller(ConfigUtils::createEnumCyclingListController) .build()) .option(Option.<ChatFilterResult>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideTeleportPad")) .binding(defaults.messages.hideTeleportPad, () -> config.messages.hideTeleportPad, newValue -> config.messages.hideTeleportPad = newValue) - .controller(ConfigUtils::createCyclingListController4Enum) + .controller(ConfigUtils::createEnumCyclingListController) .build()) .option(Option.<ChatFilterResult>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideCombo")) .binding(defaults.messages.hideCombo, () -> config.messages.hideCombo, newValue -> config.messages.hideCombo = newValue) - .controller(ConfigUtils::createCyclingListController4Enum) + .controller(ConfigUtils::createEnumCyclingListController) .build()) .option(Option.<ChatFilterResult>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideAutopet")) .binding(defaults.messages.hideAutopet, () -> config.messages.hideAutopet, newValue -> config.messages.hideAutopet = newValue) - .controller(ConfigUtils::createCyclingListController4Enum) + .controller(ConfigUtils::createEnumCyclingListController) .build()) .option(Option.<ChatFilterResult>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideShowOff")) @@ -85,7 +85,7 @@ public class MessageFilterCategory { .binding(defaults.messages.hideShowOff, () -> config.messages.hideShowOff, newValue -> config.messages.hideShowOff = newValue) - .controller(ConfigUtils::createCyclingListController4Enum) + .controller(ConfigUtils::createEnumCyclingListController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideMana")) -- cgit From cb7100cbd8b4ee1187cfd91712c3403a8860d70c Mon Sep 17 00:00:00 2001 From: Aaron <51387595+AzureAaron@users.noreply.github.com> Date: Sun, 1 Oct 2023 01:48:46 -0400 Subject: Config Tweaks --- .../me/xmrvizzy/skyblocker/config/ConfigUtils.java | 36 ++++++++++++++++--- .../config/categories/DungeonsCategory.java | 40 +++++++++++----------- .../config/categories/QuickNavigationCategory.java | 9 +++++ .../resources/assets/skyblocker/lang/en_us.json | 2 -- 4 files changed, 61 insertions(+), 26 deletions(-) (limited to 'src/main/java/me/xmrvizzy') diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java index 4a615ecc..475e9055 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java @@ -1,11 +1,39 @@ package me.xmrvizzy.skyblocker.config; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.DropdownStringControllerBuilder; import dev.isxander.yacl3.api.controller.EnumControllerBuilder; public class ConfigUtils { - @SuppressWarnings("unchecked") - public static <E extends Enum<E>> EnumControllerBuilder<E> createEnumCyclingListController(Option<E> opt) { - return EnumControllerBuilder.create(opt).enumClass((Class<E>) opt.binding().defaultValue().getClass()); - } + @SuppressWarnings("unchecked") + public static <E extends Enum<E>> EnumControllerBuilder<E> createEnumCyclingListController(Option<E> opt) { + return EnumControllerBuilder.create(opt).enumClass((Class<E>) opt.binding().defaultValue().getClass()); + } + + /** + * Searches through enum constants in {@code enumClass} for one whose {@link Enum#toString()} result equals {@code expectedValue} + * + * @return The enum constant associated with the {@code expectedValue} + * @throws IllegalStateException Thrown when a constant couldn't be found + * + * @implNote The return value of {@link Enum#toString()} on each enum constant should be unique in order to ensure accuracy + */ + public static <E extends Enum<E>> E enumConstantFromToString(Class<E> enumClass, String expectedValue) { + for (E constant : enumClass.getEnumConstants()) { + if (constant.toString().equals(expectedValue)) + return constant; + } + + throw new IllegalStateException("Didn't find an enum constant matching: " + expectedValue); + } + + public static <E extends Enum<E>> DropdownStringControllerBuilder createDropdownControllerFromEnum(Option<String> opt, Class<E> enumClass) { + List<String> stringifiedConstants = Arrays.stream(enumClass.getEnumConstants()).map(Enum::toString).collect(Collectors.toList()); + + return DropdownStringControllerBuilder.create(opt).allowAnyValue(false).allowEmptyValue(false).values(stringifiedConstants); + } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java index 92a7ddec..f48c8344 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java @@ -151,34 +151,34 @@ public class DungeonsCategory { newValue -> config.locations.dungeons.dungeonChestProfit.neutralThreshold = newValue) .controller(IntegerFieldControllerBuilder::create) .build()) - .option(Option.<FormattingOption>createBuilder() + .option(Option.<String>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.neutralColor")) - .binding(defaults.locations.dungeons.dungeonChestProfit.neutralColor, - () -> config.locations.dungeons.dungeonChestProfit.neutralColor, - newValue -> config.locations.dungeons.dungeonChestProfit.neutralColor = newValue) - .controller(ConfigUtils::createEnumCyclingListController) + .binding(defaults.locations.dungeons.dungeonChestProfit.neutralColor.toString(), + () -> config.locations.dungeons.dungeonChestProfit.neutralColor.toString(), + newValue -> config.locations.dungeons.dungeonChestProfit.neutralColor = ConfigUtils.enumConstantFromToString(FormattingOption.class, newValue)) + .controller(opt -> ConfigUtils.createDropdownControllerFromEnum(opt, FormattingOption.class)) .build()) - .option(Option.<FormattingOption>createBuilder() + .option(Option.<String>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.profitColor")) - .binding(defaults.locations.dungeons.dungeonChestProfit.profitColor, - () -> config.locations.dungeons.dungeonChestProfit.profitColor, - newValue -> config.locations.dungeons.dungeonChestProfit.profitColor = newValue) - .controller(ConfigUtils::createEnumCyclingListController) + .binding(defaults.locations.dungeons.dungeonChestProfit.profitColor.toString(), + () -> config.locations.dungeons.dungeonChestProfit.profitColor.toString(), + newValue -> config.locations.dungeons.dungeonChestProfit.profitColor = ConfigUtils.enumConstantFromToString(FormattingOption.class, newValue)) + .controller(opt -> ConfigUtils.createDropdownControllerFromEnum(opt, FormattingOption.class)) .build()) - .option(Option.<FormattingOption>createBuilder() + .option(Option.<String>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.lossColor")) - .binding(defaults.locations.dungeons.dungeonChestProfit.lossColor, - () -> config.locations.dungeons.dungeonChestProfit.lossColor, - newValue -> config.locations.dungeons.dungeonChestProfit.lossColor = newValue) - .controller(ConfigUtils::createEnumCyclingListController) + .binding(defaults.locations.dungeons.dungeonChestProfit.lossColor.toString(), + () -> config.locations.dungeons.dungeonChestProfit.lossColor.toString(), + newValue -> config.locations.dungeons.dungeonChestProfit.lossColor = ConfigUtils.enumConstantFromToString(FormattingOption.class, newValue)) + .controller(opt -> ConfigUtils.createDropdownControllerFromEnum(opt, FormattingOption.class)) .build()) - .option(Option.<FormattingOption>createBuilder() + .option(Option.<String>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.incompleteColor")) .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.incompleteColor.@Tooltip"))) - .binding(defaults.locations.dungeons.dungeonChestProfit.incompleteColor, - () -> config.locations.dungeons.dungeonChestProfit.incompleteColor, - newValue -> config.locations.dungeons.dungeonChestProfit.incompleteColor = newValue) - .controller(ConfigUtils::createEnumCyclingListController) + .binding(defaults.locations.dungeons.dungeonChestProfit.incompleteColor.toString(), + () -> config.locations.dungeons.dungeonChestProfit.incompleteColor.toString(), + newValue -> config.locations.dungeons.dungeonChestProfit.incompleteColor = ConfigUtils.enumConstantFromToString(FormattingOption.class, newValue)) + .controller(opt -> ConfigUtils.createDropdownControllerFromEnum(opt, FormattingOption.class)) .build()) .build()) diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/QuickNavigationCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/QuickNavigationCategory.java index 4ca38375..4f360d3b 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/QuickNavigationCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/QuickNavigationCategory.java @@ -15,6 +15,15 @@ public class QuickNavigationCategory { return ConfigCategory.createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.category.quickNav")) + //Toggle + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.enableQuickNav")) + .binding(defaults.quickNav.enableQuickNav, + () -> config.quickNav.enableQuickNav, + newValue -> config.quickNav.enableQuickNav = newValue) + .controller(BooleanControllerBuilder::create) + .build()) + //Button 1 .group(OptionGroup.createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1")) diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index d4b6551a..87ff04af 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -50,8 +50,6 @@ "text.autoconfig.skyblocker.option.general.quiverWarning.enableQuiverWarning": "Enable Quiver Warning", "text.autoconfig.skyblocker.option.general.quiverWarning.enableQuiverWarningInDungeons": "Enable Quiver Warning In Dungeons", "text.autoconfig.skyblocker.option.general.quiverWarning.enableQuiverWarningAfterDungeon": "Enable Quiver Warning After a Dungeon", - "text.autoconfig.skyblocker.option.general.quicknav": "Quicknav", - "text.autoconfig.skyblocker.option.general.quicknav.enableQuicknav": "Enable Quicknav", "text.autoconfig.skyblocker.option.general.backpackPreviewWithoutShift": "View backpack preview without holding Shift", "text.autoconfig.skyblocker.option.general.compactorDeletorPreview": "Enable Compactor/Deletor Preview", "text.autoconfig.skyblocker.option.general.tabHud": "Fancy tab HUD", -- cgit From 6fb8cada3927d9bc741bd673179de48731165df8 Mon Sep 17 00:00:00 2001 From: Aaron <51387595+AzureAaron@users.noreply.github.com> Date: Sun, 1 Oct 2023 01:58:55 -0400 Subject: Fix misplaced bracket --- .../xmrvizzy/skyblocker/config/categories/DwarvenMinesCategory.java | 4 ++-- src/main/resources/assets/skyblocker/lang/en_us.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'src/main/java/me/xmrvizzy') diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DwarvenMinesCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DwarvenMinesCategory.java index 42d623ac..c975c710 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DwarvenMinesCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DwarvenMinesCategory.java @@ -55,9 +55,9 @@ public class DwarvenMinesCategory { .build()) .option(Option.<SkyblockerConfig.DwarvenHudStyle>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.style")) - .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.style.@Tooltip[0]", + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.style.@Tooltip[0]"), Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.style.@Tooltip[1]"), - Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.style.@Tooltip[2]")))) + Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.style.@Tooltip[2]"))) .binding(defaults.locations.dwarvenMines.dwarvenHud.style, () -> config.locations.dwarvenMines.dwarvenHud.style, newValue -> config.locations.dwarvenMines.dwarvenHud.style = newValue) diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index 87ff04af..11a14d95 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -282,8 +282,8 @@ "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.enabled": "Enabled", "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.style": "Style for HUD", "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.style.@Tooltip[0]": "Simple: Shows name and percentage.", - "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.style.@Tooltip[1]": "Fancy: Shows name, percentage, progress bar and an icon.", - "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.style.@Tooltip[2]": "Classic: Shows name and percentage in a very simple box.", + "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.style.@Tooltip[1]": "\nFancy: Shows name, percentage, progress bar and an icon.", + "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.style.@Tooltip[2]": "\nClassic: Shows name and percentage in a very simple box.", "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.screen": "Dwarven HUD Config...", "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.enableBackground": "Enable Background", "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.x": "X", -- cgit From 3a94710d8f5c7d1f674b53e719daf8b0cf59bcd4 Mon Sep 17 00:00:00 2001 From: Aaron <51387595+AzureAaron@users.noreply.github.com> Date: Sun, 1 Oct 2023 02:12:25 -0400 Subject: Change Boolean Controller Formatting --- .../me/xmrvizzy/skyblocker/config/ConfigUtils.java | 5 ++ .../config/categories/DiscordRPCCategory.java | 5 +- .../config/categories/DungeonsCategory.java | 53 ++++++++------- .../config/categories/DwarvenMinesCategory.java | 11 ++-- .../config/categories/GeneralCategory.java | 77 +++++++++++----------- .../config/categories/LocationsCategory.java | 12 ++-- .../config/categories/MessageFilterCategory.java | 3 +- .../config/categories/QuickNavigationCategory.java | 28 ++++---- .../config/categories/SlayersCategory.java | 14 ++-- 9 files changed, 104 insertions(+), 104 deletions(-) (limited to 'src/main/java/me/xmrvizzy') diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java index 475e9055..651f7aa9 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.stream.Collectors; import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; import dev.isxander.yacl3.api.controller.DropdownStringControllerBuilder; import dev.isxander.yacl3.api.controller.EnumControllerBuilder; @@ -13,6 +14,10 @@ public class ConfigUtils { public static <E extends Enum<E>> EnumControllerBuilder<E> createEnumCyclingListController(Option<E> opt) { return EnumControllerBuilder.create(opt).enumClass((Class<E>) opt.binding().defaultValue().getClass()); } + + public static BooleanControllerBuilder createBooleanController(Option<Boolean> opt) { + return BooleanControllerBuilder.create(opt).yesNoFormatter().coloured(true); + } /** * Searches through enum constants in {@code enumClass} for one whose {@link Enum#toString()} result equals {@code expectedValue} diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DiscordRPCCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DiscordRPCCategory.java index 2fe1f775..1e35bc32 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DiscordRPCCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DiscordRPCCategory.java @@ -3,7 +3,6 @@ package me.xmrvizzy.skyblocker.config.categories; import dev.isxander.yacl3.api.ConfigCategory; import dev.isxander.yacl3.api.Option; import dev.isxander.yacl3.api.OptionDescription; -import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; import dev.isxander.yacl3.api.controller.StringControllerBuilder; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.config.ConfigUtils; @@ -21,7 +20,7 @@ public class DiscordRPCCategory { .binding(defaults.richPresence.enableRichPresence, () -> config.richPresence.enableRichPresence, newValue -> config.richPresence.enableRichPresence = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<SkyblockerConfig.Info>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.richPresence.info")) @@ -36,7 +35,7 @@ public class DiscordRPCCategory { .binding(defaults.richPresence.cycleMode, () -> config.richPresence.cycleMode, newValue -> config.richPresence.cycleMode = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<String>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.richPresence.customMessage")) diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java index f48c8344..1478500b 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java @@ -6,7 +6,6 @@ import dev.isxander.yacl3.api.Option; import dev.isxander.yacl3.api.OptionDescription; import dev.isxander.yacl3.api.OptionFlag; import dev.isxander.yacl3.api.OptionGroup; -import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; import dev.isxander.yacl3.api.controller.FloatFieldControllerBuilder; import dev.isxander.yacl3.api.controller.IntegerFieldControllerBuilder; import dev.isxander.yacl3.api.controller.StringControllerBuilder; @@ -32,7 +31,7 @@ public class DungeonsCategory { .binding(defaults.locations.dungeons.secretWaypoints.enableSecretWaypoints, () -> config.locations.dungeons.secretWaypoints.enableSecretWaypoints, newValue -> config.locations.dungeons.secretWaypoints.enableSecretWaypoints = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.noInitSecretWaypoints")) @@ -40,7 +39,7 @@ public class DungeonsCategory { .binding(defaults.locations.dungeons.secretWaypoints.noInitSecretWaypoints, () -> config.locations.dungeons.secretWaypoints.noInitSecretWaypoints, newValue -> config.locations.dungeons.secretWaypoints.noInitSecretWaypoints = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .flag(OptionFlag.GAME_RESTART) .build()) .option(Option.<Boolean>createBuilder() @@ -48,63 +47,63 @@ public class DungeonsCategory { .binding(defaults.locations.dungeons.secretWaypoints.enableEntranceWaypoints, () -> config.locations.dungeons.secretWaypoints.enableEntranceWaypoints, newValue -> config.locations.dungeons.secretWaypoints.enableEntranceWaypoints = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enableSuperboomWaypoints")) .binding(defaults.locations.dungeons.secretWaypoints.enableSuperboomWaypoints, () -> config.locations.dungeons.secretWaypoints.enableSuperboomWaypoints, newValue -> config.locations.dungeons.secretWaypoints.enableSuperboomWaypoints = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enableChestWaypoints")) .binding(defaults.locations.dungeons.secretWaypoints.enableChestWaypoints, () -> config.locations.dungeons.secretWaypoints.enableChestWaypoints, newValue -> config.locations.dungeons.secretWaypoints.enableChestWaypoints = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enableItemWaypoints")) .binding(defaults.locations.dungeons.secretWaypoints.enableItemWaypoints, () -> config.locations.dungeons.secretWaypoints.enableItemWaypoints, newValue -> config.locations.dungeons.secretWaypoints.enableItemWaypoints = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enableBatWaypoints")) .binding(defaults.locations.dungeons.secretWaypoints.enableBatWaypoints, () -> config.locations.dungeons.secretWaypoints.enableBatWaypoints, newValue -> config.locations.dungeons.secretWaypoints.enableBatWaypoints = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enableWitherWaypoints")) .binding(defaults.locations.dungeons.secretWaypoints.enableWitherWaypoints, () -> config.locations.dungeons.secretWaypoints.enableWitherWaypoints, newValue -> config.locations.dungeons.secretWaypoints.enableWitherWaypoints = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enableLeverWaypoints")) .binding(defaults.locations.dungeons.secretWaypoints.enableLeverWaypoints, () -> config.locations.dungeons.secretWaypoints.enableLeverWaypoints, newValue -> config.locations.dungeons.secretWaypoints.enableLeverWaypoints = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enableFairySoulWaypoints")) .binding(defaults.locations.dungeons.secretWaypoints.enableFairySoulWaypoints, () -> config.locations.dungeons.secretWaypoints.enableFairySoulWaypoints, newValue -> config.locations.dungeons.secretWaypoints.enableFairySoulWaypoints = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enableStonkWaypoints")) .binding(defaults.locations.dungeons.secretWaypoints.enableStonkWaypoints, () -> config.locations.dungeons.secretWaypoints.enableStonkWaypoints, newValue -> config.locations.dungeons.secretWaypoints.enableStonkWaypoints = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enableDefaultWaypoints")) @@ -112,7 +111,7 @@ public class DungeonsCategory { .binding(defaults.locations.dungeons.secretWaypoints.enableDefaultWaypoints, () -> config.locations.dungeons.secretWaypoints.enableDefaultWaypoints, newValue -> config.locations.dungeons.secretWaypoints.enableDefaultWaypoints = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .build()) @@ -125,7 +124,7 @@ public class DungeonsCategory { .binding(defaults.locations.dungeons.dungeonChestProfit.enableProfitCalculator, () -> config.locations.dungeons.dungeonChestProfit.enableProfitCalculator, newValue -> config.locations.dungeons.dungeonChestProfit.enableProfitCalculator = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.includeKismet")) @@ -133,7 +132,7 @@ public class DungeonsCategory { .binding(defaults.locations.dungeons.dungeonChestProfit.includeKismet, () -> config.locations.dungeons.dungeonChestProfit.includeKismet, newValue -> config.locations.dungeons.dungeonChestProfit.includeKismet = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.includeEssence")) @@ -141,7 +140,7 @@ public class DungeonsCategory { .binding(defaults.locations.dungeons.dungeonChestProfit.includeEssence, () -> config.locations.dungeons.dungeonChestProfit.includeEssence, newValue -> config.locations.dungeons.dungeonChestProfit.includeEssence = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Integer>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.neutralThreshold")) @@ -189,14 +188,14 @@ public class DungeonsCategory { .binding(defaults.locations.dungeons.croesusHelper, () -> config.locations.dungeons.croesusHelper, newValue -> config.locations.dungeons.croesusHelper = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.enableMap")) .binding(defaults.locations.dungeons.enableMap, () -> config.locations.dungeons.enableMap, newValue -> config.locations.dungeons.enableMap = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(ButtonOption.createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.mapScreen")) @@ -230,14 +229,14 @@ public class DungeonsCategory { .binding(defaults.locations.dungeons.starredMobGlow, () -> config.locations.dungeons.starredMobGlow, newValue -> config.locations.dungeons.starredMobGlow = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.solveThreeWeirdos")) .binding(defaults.locations.dungeons.solveThreeWeirdos, () -> config.locations.dungeons.solveThreeWeirdos, newValue -> config.locations.dungeons.solveThreeWeirdos = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.blazesolver")) @@ -245,14 +244,14 @@ public class DungeonsCategory { .binding(defaults.locations.dungeons.blazesolver, () -> config.locations.dungeons.blazesolver, newValue -> config.locations.dungeons.blazesolver = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.solveTrivia")) .binding(defaults.locations.dungeons.solveTrivia, () -> config.locations.dungeons.solveTrivia, newValue -> config.locations.dungeons.solveTrivia = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.solveTicTacToe")) @@ -260,7 +259,7 @@ public class DungeonsCategory { .binding(defaults.locations.dungeons.solveTicTacToe, () -> config.locations.dungeons.solveTicTacToe, newValue -> config.locations.dungeons.solveTicTacToe = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) //Livid Color @@ -273,7 +272,7 @@ public class DungeonsCategory { .binding(defaults.locations.dungeons.lividColor.enableLividColor, () -> config.locations.dungeons.lividColor.enableLividColor, newValue -> config.locations.dungeons.lividColor.enableLividColor = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<String>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.lividColor.lividColorText")) @@ -294,21 +293,21 @@ public class DungeonsCategory { .binding(defaults.locations.dungeons.terminals.solveColor, () -> config.locations.dungeons.terminals.solveColor, newValue -> config.locations.dungeons.terminals.solveColor = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.terminals.solveOrder")) .binding(defaults.locations.dungeons.terminals.solveOrder, () -> config.locations.dungeons.terminals.solveOrder, newValue -> config.locations.dungeons.terminals.solveOrder = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.terminals.solveStartsWith")) .binding(defaults.locations.dungeons.terminals.solveStartsWith, () -> config.locations.dungeons.terminals.solveStartsWith, newValue -> config.locations.dungeons.terminals.solveStartsWith = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .build()) .build(); diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DwarvenMinesCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DwarvenMinesCategory.java index c975c710..8330ba2a 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DwarvenMinesCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DwarvenMinesCategory.java @@ -5,7 +5,6 @@ import dev.isxander.yacl3.api.ConfigCategory; import dev.isxander.yacl3.api.Option; import dev.isxander.yacl3.api.OptionDescription; import dev.isxander.yacl3.api.OptionGroup; -import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; import dev.isxander.yacl3.api.controller.IntegerFieldControllerBuilder; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.config.ConfigUtils; @@ -25,21 +24,21 @@ public class DwarvenMinesCategory { .binding(defaults.locations.dwarvenMines.enableDrillFuel, () -> config.locations.dwarvenMines.enableDrillFuel, newValue -> config.locations.dwarvenMines.enableDrillFuel = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.solveFetchur")) .binding(defaults.locations.dwarvenMines.solveFetchur, () -> config.locations.dwarvenMines.solveFetchur, newValue -> config.locations.dwarvenMines.solveFetchur = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.solvePuzzler")) .binding(defaults.locations.dwarvenMines.solvePuzzler, () -> config.locations.dwarvenMines.solvePuzzler, newValue -> config.locations.dwarvenMines.solvePuzzler = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) //Dwarven HUD @@ -51,7 +50,7 @@ public class DwarvenMinesCategory { .binding(defaults.locations.dwarvenMines.dwarvenHud.enabled, () -> config.locations.dwarvenMines.dwarvenHud.enabled, newValue -> config.locations.dwarvenMines.dwarvenHud.enabled = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<SkyblockerConfig.DwarvenHudStyle>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.style")) @@ -73,7 +72,7 @@ public class DwarvenMinesCategory { .binding(defaults.locations.dwarvenMines.dwarvenHud.enableBackground, () -> config.locations.dwarvenMines.dwarvenHud.enableBackground, newValue -> config.locations.dwarvenMines.dwarvenHud.enableBackground = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Integer>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.x")) diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/GeneralCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/GeneralCategory.java index 95b01dfd..c5e2d34c 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/GeneralCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/GeneralCategory.java @@ -5,7 +5,6 @@ import dev.isxander.yacl3.api.ConfigCategory; import dev.isxander.yacl3.api.Option; import dev.isxander.yacl3.api.OptionDescription; import dev.isxander.yacl3.api.OptionGroup; -import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; import dev.isxander.yacl3.api.controller.FloatFieldControllerBuilder; import dev.isxander.yacl3.api.controller.IntegerFieldControllerBuilder; import dev.isxander.yacl3.api.controller.IntegerSliderControllerBuilder; @@ -28,35 +27,35 @@ public class GeneralCategory { .binding(defaults.general.acceptReparty, () -> config.general.acceptReparty, newValue -> config.general.acceptReparty = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.backpackPreviewWithoutShift")) .binding(defaults.general.backpackPreviewWithoutShift, () -> config.general.backpackPreviewWithoutShift, newValue -> config.general.backpackPreviewWithoutShift = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.compactorDeletorPreview")) .binding(defaults.general.compactorDeletorPreview, () -> config.general.compactorDeletorPreview, newValue -> config.general.compactorDeletorPreview = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.hideEmptyTooltips")) .binding(defaults.general.hideEmptyTooltips, () -> config.general.hideEmptyTooltips, newValue -> config.general.hideEmptyTooltips = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.hideStatusEffectOverlay")) .binding(defaults.general.hideStatusEffectOverlay, () -> config.general.hideStatusEffectOverlay, newValue -> config.general.hideStatusEffectOverlay = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) //Tab Hud @@ -68,7 +67,7 @@ public class GeneralCategory { .binding(defaults.general.tabHud.tabHudEnabled, () -> config.general.tabHud.tabHudEnabled, newValue -> config.general.tabHud.tabHudEnabled = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Integer>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.tabHud.tabHudScale")) @@ -84,7 +83,7 @@ public class GeneralCategory { .binding(defaults.general.tabHud.plainPlayerNames, () -> config.general.tabHud.plainPlayerNames, newValue -> config.general.tabHud.plainPlayerNames = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<SkyblockerConfig.NameSorting>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.tabHud.nameSorting")) @@ -105,7 +104,7 @@ public class GeneralCategory { .binding(defaults.general.bars.enableBars, () -> config.general.bars.enableBars, newValue -> config.general.bars.enableBars = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<SkyblockerConfig.BarPosition>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.bars.barpositions.healthBarPosition")) @@ -146,21 +145,21 @@ public class GeneralCategory { .binding(defaults.general.experiments.enableChronomatronSolver, () -> config.general.experiments.enableChronomatronSolver, newValue -> config.general.experiments.enableChronomatronSolver = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.experiments.enableSuperpairsSolver")) .binding(defaults.general.experiments.enableSuperpairsSolver, () -> config.general.experiments.enableSuperpairsSolver, newValue -> config.general.experiments.enableSuperpairsSolver = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.experiments.enableUltrasequencerSolver")) .binding(defaults.general.experiments.enableUltrasequencerSolver, () -> config.general.experiments.enableUltrasequencerSolver, newValue -> config.general.experiments.enableUltrasequencerSolver = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .build()) @@ -173,7 +172,7 @@ public class GeneralCategory { .binding(defaults.general.fishing.enableFishingHelper, () -> config.general.fishing.enableFishingHelper, newValue -> config.general.fishing.enableFishingHelper = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .build()) @@ -186,14 +185,14 @@ public class GeneralCategory { .binding(defaults.general.fairySouls.enableFairySoulsHelper, () -> config.general.fairySouls.enableFairySoulsHelper, newValue -> config.general.fairySouls.enableFairySoulsHelper = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.fairySouls.highlightFoundSouls")) .binding(defaults.general.fairySouls.highlightFoundSouls, () -> config.general.fairySouls.highlightFoundSouls, newValue -> config.general.fairySouls.highlightFoundSouls = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.fairySouls.highlightOnlyNearbySouls")) @@ -201,7 +200,7 @@ public class GeneralCategory { .binding(defaults.general.fairySouls.highlightOnlyNearbySouls, () -> config.general.fairySouls.highlightOnlyNearbySouls, newValue -> config.general.fairySouls.highlightOnlyNearbySouls = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .build()) @@ -215,7 +214,7 @@ public class GeneralCategory { .binding(defaults.general.shortcuts.enableShortcuts, () -> config.general.shortcuts.enableShortcuts, newValue -> config.general.shortcuts.enableShortcuts = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.shortcuts.enableCommandShortcuts")) @@ -223,7 +222,7 @@ public class GeneralCategory { .binding(defaults.general.shortcuts.enableCommandShortcuts, () -> config.general.shortcuts.enableCommandShortcuts, newValue -> config.general.shortcuts.enableCommandShortcuts = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.shortcuts.enableCommandArgShortcuts")) @@ -231,7 +230,7 @@ public class GeneralCategory { .binding(defaults.general.shortcuts.enableCommandArgShortcuts, () -> config.general.shortcuts.enableCommandArgShortcuts, newValue -> config.general.shortcuts.enableCommandArgShortcuts = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(ButtonOption.createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.shortcuts.config")) @@ -249,21 +248,21 @@ public class GeneralCategory { .binding(defaults.general.quiverWarning.enableQuiverWarning, () -> config.general.quiverWarning.enableQuiverWarning, newValue -> config.general.quiverWarning.enableQuiverWarning = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.quiverWarning.enableQuiverWarningInDungeons")) .binding(defaults.general.quiverWarning.enableQuiverWarningInDungeons, () -> config.general.quiverWarning.enableQuiverWarningInDungeons, newValue -> config.general.quiverWarning.enableQuiverWarningInDungeons = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.quiverWarning.enableQuiverWarningAfterDungeon")) .binding(defaults.general.quiverWarning.enableQuiverWarningAfterDungeon, () -> config.general.quiverWarning.enableQuiverWarningAfterDungeon, newValue -> config.general.quiverWarning.enableQuiverWarningAfterDungeon = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .build()) @@ -276,7 +275,7 @@ public class GeneralCategory { .binding(defaults.general.itemList.enableItemList, () -> config.general.itemList.enableItemList, newValue -> config.general.itemList.enableItemList = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .build()) @@ -289,7 +288,7 @@ public class GeneralCategory { .binding(defaults.general.itemTooltip.enableNPCPrice, () -> config.general.itemTooltip.enableNPCPrice, newValue -> config.general.itemTooltip.enableNPCPrice = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.enableMotesPrice")) @@ -297,14 +296,14 @@ public class GeneralCategory { .binding(defaults.general.itemTooltip.enableMotesPrice, () -> config.general.itemTooltip.enableMotesPrice, newValue -> config.general.itemTooltip.enableMotesPrice = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.enableAvgBIN")) .binding(defaults.general.itemTooltip.enableAvgBIN, () -> config.general.itemTooltip.enableAvgBIN, newValue -> config.general.itemTooltip.enableAvgBIN = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<SkyblockerConfig.Average>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.avg")) @@ -319,21 +318,21 @@ public class GeneralCategory { .binding(defaults.general.itemTooltip.enableLowestBIN, () -> config.general.itemTooltip.enableLowestBIN, newValue -> config.general.itemTooltip.enableLowestBIN = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.enableBazaarPrice")) .binding(defaults.general.itemTooltip.enableBazaarPrice, () -> config.general.itemTooltip.enableBazaarPrice, newValue -> config.general.itemTooltip.enableBazaarPrice = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.enableMuseumDate")) .binding(defaults.general.itemTooltip.enableMuseumDate, () -> config.general.itemTooltip.enableMuseumDate, newValue -> config.general.itemTooltip.enableMuseumDate = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .build()) @@ -347,7 +346,7 @@ public class GeneralCategory { .binding(defaults.general.itemInfoDisplay.attributeShardInfo, () -> config.general.itemInfoDisplay.attributeShardInfo, newValue -> config.general.itemInfoDisplay.attributeShardInfo = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .build()) @@ -361,7 +360,7 @@ public class GeneralCategory { .binding(defaults.general.specialEffects.rareDungeonDropEffects, () -> config.general.specialEffects.rareDungeonDropEffects, newValue -> config.general.specialEffects.rareDungeonDropEffects = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .build()) @@ -374,14 +373,14 @@ public class GeneralCategory { .binding(defaults.general.hitbox.oldFarmlandHitbox, () -> config.general.hitbox.oldFarmlandHitbox, newValue -> config.general.hitbox.oldFarmlandHitbox = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.hitbox.oldLeverHitbox")) .binding(defaults.general.hitbox.oldLeverHitbox, () -> config.general.hitbox.oldLeverHitbox, newValue -> config.general.hitbox.oldLeverHitbox = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .build()) @@ -441,42 +440,42 @@ public class GeneralCategory { .binding(defaults.general.teleportOverlay.enableTeleportOverlays, () -> config.general.teleportOverlay.enableTeleportOverlays, newValue -> config.general.teleportOverlay.enableTeleportOverlays = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.teleportOverlay.enableWeirdTransmission")) .binding(defaults.general.teleportOverlay.enableWeirdTransmission, () -> config.general.teleportOverlay.enableWeirdTransmission, newValue -> config.general.teleportOverlay.enableWeirdTransmission = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.teleportOverlay.enableInstantTransmission")) .binding(defaults.general.teleportOverlay.enableInstantTransmission, () -> config.general.teleportOverlay.enableInstantTransmission, newValue -> config.general.teleportOverlay.enableInstantTransmission = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.teleportOverlay.enableEtherTransmission")) .binding(defaults.general.teleportOverlay.enableEtherTransmission, () -> config.general.teleportOverlay.enableEtherTransmission, newValue -> config.general.teleportOverlay.enableEtherTransmission = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.teleportOverlay.enableSinrecallTransmission")) .binding(defaults.general.teleportOverlay.enableSinrecallTransmission, () -> config.general.teleportOverlay.enableSinrecallTransmission, newValue -> config.general.teleportOverlay.enableSinrecallTransmission = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.general.teleportOverlay.enableWitherImpact")) .binding(defaults.general.teleportOverlay.enableWitherImpact, () -> config.general.teleportOverlay.enableWitherImpact, newValue -> config.general.teleportOverlay.enableWitherImpact = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .build()) .build(); diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/LocationsCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/LocationsCategory.java index 8c3189ee..099c917c 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/LocationsCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/LocationsCategory.java @@ -4,8 +4,8 @@ import dev.isxander.yacl3.api.ConfigCategory; import dev.isxander.yacl3.api.Option; import dev.isxander.yacl3.api.OptionDescription; import dev.isxander.yacl3.api.OptionGroup; -import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; import dev.isxander.yacl3.api.controller.IntegerSliderControllerBuilder; +import me.xmrvizzy.skyblocker.config.ConfigUtils; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import net.minecraft.text.Text; @@ -24,14 +24,14 @@ public class LocationsCategory { .binding(defaults.locations.barn.solveHungryHiker, () -> config.locations.barn.solveHungryHiker, newValue -> config.locations.barn.solveHungryHiker = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.barn.solveTreasureHunter")) .binding(defaults.locations.barn.solveTreasureHunter, () -> config.locations.barn.solveTreasureHunter, newValue -> config.locations.barn.solveTreasureHunter = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .build()) @@ -44,7 +44,7 @@ public class LocationsCategory { .binding(defaults.locations.rift.mirrorverseWaypoints, () -> config.locations.rift.mirrorverseWaypoints, newValue -> config.locations.rift.mirrorverseWaypoints = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Integer>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.rift.mcGrubberStacks")) @@ -65,14 +65,14 @@ public class LocationsCategory { .binding(defaults.locations.spidersDen.relics.enableRelicsHelper, () -> config.locations.spidersDen.relics.enableRelicsHelper, newValue -> config.locations.spidersDen.relics.enableRelicsHelper = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.spidersDen.relics.highlightFoundRelics")) .binding(defaults.locations.spidersDen.relics.highlightFoundRelics, () -> config.locations.spidersDen.relics.highlightFoundRelics, newValue -> config.locations.spidersDen.relics.highlightFoundRelics = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .build()) .build(); diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/MessageFilterCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/MessageFilterCategory.java index 5adec834..268dc9b9 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/MessageFilterCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/MessageFilterCategory.java @@ -3,7 +3,6 @@ package me.xmrvizzy.skyblocker.config.categories; import dev.isxander.yacl3.api.ConfigCategory; import dev.isxander.yacl3.api.Option; import dev.isxander.yacl3.api.OptionDescription; -import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.config.ConfigUtils; @@ -92,7 +91,7 @@ public class MessageFilterCategory { .binding(defaults.messages.hideMana, () -> config.messages.hideMana, newValue -> config.messages.hideMana = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .build(); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/QuickNavigationCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/QuickNavigationCategory.java index 4f360d3b..3189a1f3 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/QuickNavigationCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/QuickNavigationCategory.java @@ -3,9 +3,9 @@ package me.xmrvizzy.skyblocker.config.categories; import dev.isxander.yacl3.api.ConfigCategory; import dev.isxander.yacl3.api.Option; import dev.isxander.yacl3.api.OptionGroup; -import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; import dev.isxander.yacl3.api.controller.IntegerFieldControllerBuilder; import dev.isxander.yacl3.api.controller.StringControllerBuilder; +import me.xmrvizzy.skyblocker.config.ConfigUtils; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import net.minecraft.text.Text; @@ -21,7 +21,7 @@ public class QuickNavigationCategory { .binding(defaults.quickNav.enableQuickNav, () -> config.quickNav.enableQuickNav, newValue -> config.quickNav.enableQuickNav = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) //Button 1 @@ -33,7 +33,7 @@ public class QuickNavigationCategory { .binding(defaults.quickNav.button1.render, () -> config.quickNav.button1.render, newValue -> config.quickNav.button1.render = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<String>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.itemName")) @@ -81,7 +81,7 @@ public class QuickNavigationCategory { .binding(defaults.quickNav.button2.render, () -> config.quickNav.button2.render, newValue -> config.quickNav.button2.render = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<String>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.itemName")) @@ -129,7 +129,7 @@ public class QuickNavigationCategory { .binding(defaults.quickNav.button3.render, () -> config.quickNav.button3.render, newValue -> config.quickNav.button3.render = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<String>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.itemName")) @@ -177,7 +177,7 @@ public class QuickNavigationCategory { .binding(defaults.quickNav.button4.render, () -> config.quickNav.button4.render, newValue -> config.quickNav.button4.render = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<String>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.itemName")) @@ -225,7 +225,7 @@ public class QuickNavigationCategory { .binding(defaults.quickNav.button5.render, () -> config.quickNav.button5.render, newValue -> config.quickNav.button5.render = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<String>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.itemName")) @@ -273,7 +273,7 @@ public class QuickNavigationCategory { .binding(defaults.quickNav.button6.render, () -> config.quickNav.button6.render, newValue -> config.quickNav.button6.render = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<String>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.itemName")) @@ -321,7 +321,7 @@ public class QuickNavigationCategory { .binding(defaults.quickNav.button7.render, () -> config.quickNav.button7.render, newValue -> config.quickNav.button7.render = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<String>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.itemName")) @@ -369,7 +369,7 @@ public class QuickNavigationCategory { .binding(defaults.quickNav.button8.render, () -> config.quickNav.button8.render, newValue -> config.quickNav.button8.render = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<String>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.itemName")) @@ -417,7 +417,7 @@ public class QuickNavigationCategory { .binding(defaults.quickNav.button9.render, () -> config.quickNav.button9.render, newValue -> config.quickNav.button9.render = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<String>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.itemName")) @@ -465,7 +465,7 @@ public class QuickNavigationCategory { .binding(defaults.quickNav.button10.render, () -> config.quickNav.button10.render, newValue -> config.quickNav.button10.render = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<String>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.itemName")) @@ -513,7 +513,7 @@ public class QuickNavigationCategory { .binding(defaults.quickNav.button11.render, () -> config.quickNav.button11.render, newValue -> config.quickNav.button11.render = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<String>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.itemName")) @@ -561,7 +561,7 @@ public class QuickNavigationCategory { .binding(defaults.quickNav.button12.render, () -> config.quickNav.button12.render, newValue -> config.quickNav.button12.render = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<String>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1.item.itemName")) diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/SlayersCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/SlayersCategory.java index bfb3c6ad..febca720 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/SlayersCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/SlayersCategory.java @@ -4,10 +4,10 @@ import dev.isxander.yacl3.api.ConfigCategory; import dev.isxander.yacl3.api.Option; import dev.isxander.yacl3.api.OptionDescription; import dev.isxander.yacl3.api.OptionGroup; -import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; import dev.isxander.yacl3.api.controller.FloatFieldControllerBuilder; import dev.isxander.yacl3.api.controller.IntegerFieldControllerBuilder; import dev.isxander.yacl3.api.controller.IntegerSliderControllerBuilder; +import me.xmrvizzy.skyblocker.config.ConfigUtils; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import net.minecraft.text.Text; @@ -26,14 +26,14 @@ public class SlayersCategory { .binding(defaults.slayer.vampireSlayer.enableEffigyWaypoints, () -> config.slayer.vampireSlayer.enableEffigyWaypoints, newValue -> config.slayer.vampireSlayer.enableEffigyWaypoints = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.vampireSlayer.compactEffigyWaypoints")) .binding(defaults.slayer.vampireSlayer.compactEffigyWaypoints, () -> config.slayer.vampireSlayer.compactEffigyWaypoints, newValue -> config.slayer.vampireSlayer.compactEffigyWaypoints = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Integer>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.vampireSlayer.effigyUpdateFrequency")) @@ -48,7 +48,7 @@ public class SlayersCategory { .binding(defaults.slayer.vampireSlayer.enableHolyIceIndicator, () -> config.slayer.vampireSlayer.enableHolyIceIndicator, newValue -> config.slayer.vampireSlayer.enableHolyIceIndicator = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Integer>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.vampireSlayer.holyIceIndicatorTickDelay")) @@ -70,7 +70,7 @@ public class SlayersCategory { .binding(defaults.slayer.vampireSlayer.enableHealingMelonIndicator, () -> config.slayer.vampireSlayer.enableHealingMelonIndicator, newValue -> config.slayer.vampireSlayer.enableHealingMelonIndicator = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Float>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.vampireSlayer.healingMelonHealthThreshold")) @@ -84,7 +84,7 @@ public class SlayersCategory { .binding(defaults.slayer.vampireSlayer.enableSteakStakeIndicator, () -> config.slayer.vampireSlayer.enableSteakStakeIndicator, newValue -> config.slayer.vampireSlayer.enableSteakStakeIndicator = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Integer>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.vampireSlayer.steakStakeUpdateFrequency")) @@ -99,7 +99,7 @@ public class SlayersCategory { .binding(defaults.slayer.vampireSlayer.enableManiaIndicator, () -> config.slayer.vampireSlayer.enableManiaIndicator, newValue -> config.slayer.vampireSlayer.enableManiaIndicator = newValue) - .controller(BooleanControllerBuilder::create) + .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Integer>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.vampireSlayer.maniaUpdateFrequency")) -- cgit From 80d2141ed345fd3be54ab06530aa2cac3a6fd08c Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Mon, 2 Oct 2023 22:39:07 -0400 Subject: Add Enum Dropdown Controller --- .../me/xmrvizzy/skyblocker/config/ConfigUtils.java | 35 ++------- .../config/categories/DungeonsCategory.java | 40 +++++----- .../config/controllers/EnumDropdownController.java | 86 ++++++++++++++++++++++ .../controllers/EnumDropdownControllerBuilder.java | 10 +++ .../EnumDropdownControllerBuilderImpl.java | 17 +++++ .../controllers/EnumDropdownControllerElement.java | 26 +++++++ 6 files changed, 165 insertions(+), 49 deletions(-) create mode 100644 src/main/java/me/xmrvizzy/skyblocker/config/controllers/EnumDropdownController.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/config/controllers/EnumDropdownControllerBuilder.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/config/controllers/EnumDropdownControllerBuilderImpl.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/config/controllers/EnumDropdownControllerElement.java (limited to 'src/main/java/me/xmrvizzy') diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java index 651f7aa9..28ed704b 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java @@ -1,44 +1,21 @@ package me.xmrvizzy.skyblocker.config; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - import dev.isxander.yacl3.api.Option; import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; -import dev.isxander.yacl3.api.controller.DropdownStringControllerBuilder; import dev.isxander.yacl3.api.controller.EnumControllerBuilder; +import me.xmrvizzy.skyblocker.config.controllers.EnumDropdownControllerBuilder; public class ConfigUtils { - @SuppressWarnings("unchecked") - public static <E extends Enum<E>> EnumControllerBuilder<E> createEnumCyclingListController(Option<E> opt) { - return EnumControllerBuilder.create(opt).enumClass((Class<E>) opt.binding().defaultValue().getClass()); - } - public static BooleanControllerBuilder createBooleanController(Option<Boolean> opt) { return BooleanControllerBuilder.create(opt).yesNoFormatter().coloured(true); } - /** - * Searches through enum constants in {@code enumClass} for one whose {@link Enum#toString()} result equals {@code expectedValue} - * - * @return The enum constant associated with the {@code expectedValue} - * @throws IllegalStateException Thrown when a constant couldn't be found - * - * @implNote The return value of {@link Enum#toString()} on each enum constant should be unique in order to ensure accuracy - */ - public static <E extends Enum<E>> E enumConstantFromToString(Class<E> enumClass, String expectedValue) { - for (E constant : enumClass.getEnumConstants()) { - if (constant.toString().equals(expectedValue)) - return constant; - } - - throw new IllegalStateException("Didn't find an enum constant matching: " + expectedValue); + @SuppressWarnings("unchecked") + public static <E extends Enum<E>> EnumControllerBuilder<E> createEnumCyclingListController(Option<E> opt) { + return EnumControllerBuilder.create(opt).enumClass((Class<E>) opt.binding().defaultValue().getClass()); } - public static <E extends Enum<E>> DropdownStringControllerBuilder createDropdownControllerFromEnum(Option<String> opt, Class<E> enumClass) { - List<String> stringifiedConstants = Arrays.stream(enumClass.getEnumConstants()).map(Enum::toString).collect(Collectors.toList()); - - return DropdownStringControllerBuilder.create(opt).allowAnyValue(false).allowEmptyValue(false).values(stringifiedConstants); + public static <E extends Enum<E>> EnumDropdownControllerBuilder<E> createEnumDropdownController(Option<E> opt) { + return EnumDropdownControllerBuilder.create(opt); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java index 1478500b..16439cb5 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java @@ -150,34 +150,34 @@ public class DungeonsCategory { newValue -> config.locations.dungeons.dungeonChestProfit.neutralThreshold = newValue) .controller(IntegerFieldControllerBuilder::create) .build()) - .option(Option.<String>createBuilder() + .option(Option.<FormattingOption>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.neutralColor")) - .binding(defaults.locations.dungeons.dungeonChestProfit.neutralColor.toString(), - () -> config.locations.dungeons.dungeonChestProfit.neutralColor.toString(), - newValue -> config.locations.dungeons.dungeonChestProfit.neutralColor = ConfigUtils.enumConstantFromToString(FormattingOption.class, newValue)) - .controller(opt -> ConfigUtils.createDropdownControllerFromEnum(opt, FormattingOption.class)) + .binding(defaults.locations.dungeons.dungeonChestProfit.neutralColor, + () -> config.locations.dungeons.dungeonChestProfit.neutralColor, + newValue -> config.locations.dungeons.dungeonChestProfit.neutralColor = newValue) + .controller(ConfigUtils::createEnumDropdownController) .build()) - .option(Option.<String>createBuilder() + .option(Option.<FormattingOption>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.profitColor")) - .binding(defaults.locations.dungeons.dungeonChestProfit.profitColor.toString(), - () -> config.locations.dungeons.dungeonChestProfit.profitColor.toString(), - newValue -> config.locations.dungeons.dungeonChestProfit.profitColor = ConfigUtils.enumConstantFromToString(FormattingOption.class, newValue)) - .controller(opt -> ConfigUtils.createDropdownControllerFromEnum(opt, FormattingOption.class)) + .binding(defaults.locations.dungeons.dungeonChestProfit.profitColor, + () -> config.locations.dungeons.dungeonChestProfit.profitColor, + newValue -> config.locations.dungeons.dungeonChestProfit.profitColor = newValue) + .controller(ConfigUtils::createEnumDropdownController) .build()) - .option(Option.<String>createBuilder() + .option(Option.<FormattingOption>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.lossColor")) - .binding(defaults.locations.dungeons.dungeonChestProfit.lossColor.toString(), - () -> config.locations.dungeons.dungeonChestProfit.lossColor.toString(), - newValue -> config.locations.dungeons.dungeonChestProfit.lossColor = ConfigUtils.enumConstantFromToString(FormattingOption.class, newValue)) - .controller(opt -> ConfigUtils.createDropdownControllerFromEnum(opt, FormattingOption.class)) + .binding(defaults.locations.dungeons.dungeonChestProfit.lossColor, + () -> config.locations.dungeons.dungeonChestProfit.lossColor, + newValue -> config.locations.dungeons.dungeonChestProfit.lossColor = newValue) + .controller(ConfigUtils::createEnumDropdownController) .build()) - .option(Option.<String>createBuilder() + .option(Option.<FormattingOption>createBuilder() .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.incompleteColor")) .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.incompleteColor.@Tooltip"))) - .binding(defaults.locations.dungeons.dungeonChestProfit.incompleteColor.toString(), - () -> config.locations.dungeons.dungeonChestProfit.incompleteColor.toString(), - newValue -> config.locations.dungeons.dungeonChestProfit.incompleteColor = ConfigUtils.enumConstantFromToString(FormattingOption.class, newValue)) - .controller(opt -> ConfigUtils.createDropdownControllerFromEnum(opt, FormattingOption.class)) + .binding(defaults.locations.dungeons.dungeonChestProfit.incompleteColor, + () -> config.locations.dungeons.dungeonChestProfit.incompleteColor, + newValue -> config.locations.dungeons.dungeonChestProfit.incompleteColor = newValue) + .controller(ConfigUtils::createEnumDropdownController) .build()) .build()) diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/controllers/EnumDropdownController.java b/src/main/java/me/xmrvizzy/skyblocker/config/controllers/EnumDropdownController.java new file mode 100644 index 00000000..cf40c7d5 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/config/controllers/EnumDropdownController.java @@ -0,0 +1,86 @@ +package me.xmrvizzy.skyblocker.config.controllers; + +import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.utils.Dimension; +import dev.isxander.yacl3.gui.AbstractWidget; +import dev.isxander.yacl3.gui.YACLScreen; +import dev.isxander.yacl3.gui.controllers.dropdown.AbstractDropdownController; +import org.jetbrains.annotations.NotNull; + +import java.util.Arrays; +import java.util.stream.Stream; + +public class EnumDropdownController<E extends Enum<E>> extends AbstractDropdownController<E> { + protected EnumDropdownController(Option<E> option) { + super(option); + } + + @Override + public String getString() { + return option().pendingValue().toString(); + } + + @Override + public void setFromString(String value) { + option().requestSet(getEnumFromString(value)); + } + + /** + * Searches through enum constants for one whose {@link Enum#toString()} result equals {@code value} + * + * @return The enum constant associated with the {@code value} or the pending value if none are found + * @implNote The return value of {@link Enum#toString()} on each enum constant should be unique in order to ensure accuracy + */ + private E getEnumFromString(String value) { + value = value.toLowerCase(); + for (E constant : option().pendingValue().getDeclaringClass().getEnumConstants()) { + if (constant.toString().toLowerCase().equals(value)) return constant; + } + + return option().pendingValue(); + } + + @Override + public boolean isValueValid(String value) { + value = value.toLowerCase(); + for (E constant : option().pendingValue().getDeclaringClass().getEnumConstants()) { + if (constant.toString().equals(value)) return true; + } + + return false; + } + + @Override + protected String getValidValue(String value, int offset) { + return getValidEnumConstants(value) + .skip(offset) + .findFirst() + .orElseGet(this::getString); + } + + /** + * Filters and sorts through enum constants for those whose {@link Enum#toString()} result equals {@code value} + * + * @return a sorted stream containing enum constants associated with the {@code value} + * @implNote The return value of {@link Enum#toString()} on each enum constant should be unique in order to ensure accuracy + */ + @NotNull + protected Stream<String> getValidEnumConstants(String value) { + String valueLowerCase = value.toLowerCase(); + return Arrays.stream(option().pendingValue().getDeclaringClass().getEnumConstants()) + .map(Enum::toString) + .filter(constant -> constant.toLowerCase().contains(valueLowerCase)) + .sorted((s1, s2) -> { + String s1LowerCase = s1.toLowerCase(); + String s2LowerCase = s2.toLowerCase(); + if (s1LowerCase.startsWith(valueLowerCase) && !s2LowerCase.startsWith(valueLowerCase)) return -1; + if (!s1LowerCase.startsWith(valueLowerCase) && s2LowerCase.startsWith(valueLowerCase)) return 1; + return s1.compareTo(s2); + }); + } + + @Override + public AbstractWidget provideWidget(YACLScreen screen, Dimension<Integer> widgetDimension) { + return new EnumDropdownControllerElement<>(this, screen, widgetDimension); + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/controllers/EnumDropdownControllerBuilder.java b/src/main/java/me/xmrvizzy/skyblocker/config/controllers/EnumDropdownControllerBuilder.java new file mode 100644 index 00000000..baadb8b3 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/config/controllers/EnumDropdownControllerBuilder.java @@ -0,0 +1,10 @@ +package me.xmrvizzy.skyblocker.config.controllers; + +import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.api.controller.ControllerBuilder; + +public interface EnumDropdownControllerBuilder<E extends Enum<E>> extends ControllerBuilder<E> { + static <E extends Enum<E>> EnumDropdownControllerBuilder<E> create(Option<E> option) { + return new EnumDropdownControllerBuilderImpl<>(option); + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/controllers/EnumDropdownControllerBuilderImpl.java b/src/main/java/me/xmrvizzy/skyblocker/config/controllers/EnumDropdownControllerBuilderImpl.java new file mode 100644 index 00000000..ea30d1da --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/config/controllers/EnumDropdownControllerBuilderImpl.java @@ -0,0 +1,17 @@ +package me.xmrvizzy.skyblocker.config.controllers; + +import dev.isxander.yacl3.api.Controller; +import dev.isxander.yacl3.api.Option; +import dev.isxander.yacl3.impl.controller.AbstractControllerBuilderImpl; + +public class EnumDropdownControllerBuilderImpl<E extends Enum<E>> extends AbstractControllerBuilderImpl<E> implements EnumDropdownControllerBuilder<E> { + public EnumDropdownControllerBuilderImpl(Option<E> option) { + super(option); + } + + @SuppressWarnings("UnstableApiUsage") + @Override + public Controller<E> build() { + return new EnumDropdownController<>(option); + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/controllers/EnumDropdownControllerElement.java b/src/main/java/me/xmrvizzy/skyblocker/config/controllers/EnumDropdownControllerElement.java new file mode 100644 index 00000000..6c5a0097 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/config/controllers/EnumDropdownControllerElement.java @@ -0,0 +1,26 @@ +package me.xmrvizzy.skyblocker.config.controllers; + +import dev.isxander.yacl3.api.utils.Dimension; +import dev.isxander.yacl3.gui.YACLScreen; +import dev.isxander.yacl3.gui.controllers.dropdown.AbstractDropdownControllerElement; + +import java.util.List; + +public class EnumDropdownControllerElement<E extends Enum<E>> extends AbstractDropdownControllerElement<E, String> { + private final EnumDropdownController<E> controller; + + public EnumDropdownControllerElement(EnumDropdownController<E> control, YACLScreen screen, Dimension<Integer> dim) { + super(control, screen, dim); + this.controller = control; + } + + @Override + public List<String> computeMatchingValues() { + return controller.getValidEnumConstants(inputField).toList(); + } + + @Override + public String getString(String object) { + return object; + } +} -- cgit