aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/config/configs
diff options
context:
space:
mode:
authorYasin <a.piri@hotmail.de>2024-05-08 00:07:04 +0200
committerYasin <a.piri@hotmail.de>2024-05-08 00:07:04 +0200
commit15bf2503e0147aeb06ebae2922ecede237983d5c (patch)
tree827bb279c18a6394959008a661290c94d3d0e7a7 /src/main/java/de/hysky/skyblocker/config/configs
parent9807bacfb9b2d7ef6a84e158ec21efea343128a7 (diff)
downloadSkyblocker-15bf2503e0147aeb06ebae2922ecede237983d5c.tar.gz
Skyblocker-15bf2503e0147aeb06ebae2922ecede237983d5c.tar.bz2
Skyblocker-15bf2503e0147aeb06ebae2922ecede237983d5c.zip
debloat SkyblockerConfig.java + translate change
removed text.autoconfig. prefix new way is skyblocker.option.
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/config/configs')
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/CrimsonIsleConfig.java35
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/DungeonsConfig.java292
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/FarmingConfig.java37
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/GeneralConfig.java220
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java65
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/MessagesConfig.java61
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/MiningConfig.java100
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/MiscConfig.java35
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/OtherLocationsConfig.java79
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/QuickNavConfig.java181
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/SlayerConfig.java60
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/UiAndVisualsConfig.java244
12 files changed, 1409 insertions, 0 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/configs/CrimsonIsleConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/CrimsonIsleConfig.java
new file mode 100644
index 00000000..8dd93aee
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/config/configs/CrimsonIsleConfig.java
@@ -0,0 +1,35 @@
+package de.hysky.skyblocker.config.configs;
+
+import de.hysky.skyblocker.utils.waypoint.Waypoint;
+import dev.isxander.yacl3.config.v2.api.SerialEntry;
+
+public class CrimsonIsleConfig {
+ @SerialEntry
+ public Kuudra kuudra = new Kuudra();
+
+ public static class Kuudra {
+ @SerialEntry
+ public boolean supplyWaypoints = true;
+
+ @SerialEntry
+ public boolean fuelWaypoints = true;
+
+ @SerialEntry
+ public Waypoint.Type suppliesAndFuelWaypointType = Waypoint.Type.WAYPOINT;
+
+ @SerialEntry
+ public boolean ballistaBuildWaypoints = true;
+
+ @SerialEntry
+ public boolean safeSpotWaypoints = true;
+
+ @SerialEntry
+ public boolean pearlWaypoints = true;
+
+ @SerialEntry
+ public boolean noArrowPoisonWarning = true;
+
+ @SerialEntry
+ public int arrowPoisonThreshold = 32;
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/config/configs/DungeonsConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/DungeonsConfig.java
new file mode 100644
index 00000000..4bf90435
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/config/configs/DungeonsConfig.java
@@ -0,0 +1,292 @@
+package de.hysky.skyblocker.config.configs;
+
+import de.hysky.skyblocker.utils.waypoint.Waypoint;
+import dev.isxander.yacl3.config.v2.api.SerialEntry;
+import net.minecraft.util.Formatting;
+
+public class DungeonsConfig {
+ @SerialEntry
+ public boolean fancyPartyFinder = true;
+
+ @SerialEntry
+ public boolean croesusHelper = true;
+
+ @SerialEntry
+ public boolean playerSecretsTracker = false;
+
+ @SerialEntry
+ public boolean starredMobGlow = false;
+
+ @SerialEntry
+ public boolean starredMobBoundingBoxes = true;
+
+ @SerialEntry
+ public boolean allowDroppingProtectedItems = false;
+
+ @SerialEntry
+ public boolean acceptReparty = true;
+
+ @SerialEntry
+ public DungeonMap dungeonMap = new DungeonMap();
+
+ @SerialEntry
+ public PuzzleSolver puzzleSolver = new PuzzleSolver();
+
+ @SerialEntry
+ public TheProfessor theProfessor = new TheProfessor();
+
+ @SerialEntry
+ public Livid livid = new Livid();
+
+ @SerialEntry
+ public Terminals terminals = new Terminals();
+
+ @SerialEntry
+ public SecretWaypoints secretWaypoints = new SecretWaypoints();
+
+ @SerialEntry
+ public MimicMessage mimicMessage = new MimicMessage();
+
+ @SerialEntry
+ public DoorHighlight doorHighlight = new DoorHighlight();
+
+ @SerialEntry
+ public DungeonScore dungeonScore = new DungeonScore();
+
+ @SerialEntry
+ public DungeonChestProfit dungeonChestProfit = new DungeonChestProfit();
+
+ public static class DungeonMap {
+ @SerialEntry
+ public boolean enableMap = true;
+
+ @SerialEntry
+ public float mapScaling = 1f;
+
+ @SerialEntry
+ public int mapX = 2;
+
+ @SerialEntry
+ public int mapY = 2;
+ }
+
+ public static class PuzzleSolver {
+ @SerialEntry
+ public boolean solveTicTacToe = true;
+
+ @SerialEntry
+ public boolean solveThreeWeirdos = true;
+
+ @SerialEntry
+ public boolean creeperSolver = true;
+
+ @SerialEntry
+ public boolean solveWaterboard = true;
+
+ @SerialEntry
+ public boolean blazeSolver = true;
+
+ @SerialEntry
+ public boolean solveBoulder = true;
+
+ @SerialEntry
+ public boolean solveIceFill = true;
+
+ @SerialEntry
+ public boolean solveSilverfish = true;
+
+ @SerialEntry
+ public boolean solveTrivia = true;
+ }
+
+ public static class TheProfessor {
+ @SerialEntry
+ public boolean fireFreezeStaffTimer = true;
+
+ @SerialEntry
+ public boolean floor3GuardianHealthDisplay = true;
+ }
+
+ public static class Livid {
+ @SerialEntry
+ public boolean enableLividColorGlow = true;
+
+ @SerialEntry
+ public boolean enableLividColorText = true;
+
+ @SerialEntry
+ public boolean enableLividColorTitle = true;
+
+ @SerialEntry
+ public String lividColorText = "The livid color is [color]";
+ }
+
+ public static class Terminals {
+ @SerialEntry
+ public boolean solveColor = true;
+
+ @SerialEntry
+ public boolean solveOrder = true;
+
+ @SerialEntry
+ public boolean solveStartsWith = true;
+ }
+
+ public static class SecretWaypoints {
+ @SerialEntry
+ public boolean enableRoomMatching = true;
+
+ @SerialEntry
+ public boolean enableSecretWaypoints = true;
+
+ @SerialEntry
+ public Waypoint.Type waypointType = Waypoint.Type.WAYPOINT;
+
+ @SerialEntry
+ public boolean showSecretText = true;
+
+ @SerialEntry
+ public boolean enableEntranceWaypoints = true;
+
+ @SerialEntry
+ public boolean enableSuperboomWaypoints = true;
+
+ @SerialEntry
+ public boolean enableChestWaypoints = true;
+
+ @SerialEntry
+ public boolean enableItemWaypoints = true;
+
+ @SerialEntry
+ public boolean enableBatWaypoints = true;
+
+ @SerialEntry
+ public boolean enableWitherWaypoints = true;
+
+ @SerialEntry
+ public boolean enableLeverWaypoints = true;
+
+ @SerialEntry
+ public boolean enableFairySoulWaypoints = true;
+
+ @SerialEntry
+ public boolean enableStonkWaypoints = true;
+
+ @SerialEntry
+ public boolean enableAotvWaypoints = true;
+
+ @SerialEntry
+ public boolean enablePearlWaypoints = true;
+
+ @SerialEntry
+ public boolean enableDefaultWaypoints = true;
+ }
+
+ public static class MimicMessage {
+ @SerialEntry
+ public boolean sendMimicMessage = true;
+
+ @SerialEntry
+ public String mimicMessage = "Mimic dead!";
+ }
+
+ public static class DoorHighlight {
+ @SerialEntry
+ public boolean enableDoorHighlight = true;
+
+ @SerialEntry
+ public Type doorHighlightType = Type.OUTLINED_HIGHLIGHT;
+
+ public enum Type {
+ HIGHLIGHT,
+ OUTLINED_HIGHLIGHT,
+ OUTLINE;
+
+ @Override
+ public String toString() {
+ return switch (this) {
+ case HIGHLIGHT -> "Highlight";
+ case OUTLINED_HIGHLIGHT -> "Outlined Highlight";
+ case OUTLINE -> "Outline";
+ };
+ }
+ }
+ }
+
+ public static class DungeonScore {
+ @SerialEntry
+ public boolean enableDungeonScore270Message = false;
+
+ @SerialEntry
+ public boolean enableDungeonScore270Title = false;
+
+ @SerialEntry
+ public boolean enableDungeonScore270Sound = false;
+
+ @SerialEntry
+ public String dungeonScore270Message = "270 Score Reached!";
+
+ @SerialEntry
+ public boolean enableDungeonScore300Message = true;
+
+ @SerialEntry
+ public boolean enableDungeonScore300Title = true;
+
+ @SerialEntry
+ public boolean enableDungeonScore300Sound = true;
+
+ @SerialEntry
+ public String dungeonScore300Message = "300 Score Reached!";
+
+ @SerialEntry
+ public boolean enableDungeonCryptsMessage = true;
+
+ @SerialEntry
+ public int dungeonCryptsMessageThreshold = 250;
+
+ @SerialEntry
+ public String dungeonCryptsMessage = "We only have [crypts] crypts out of 5, we need more!";
+
+ @SerialEntry
+ public boolean enableScoreHUD = true;
+
+ @SerialEntry
+ public int scoreX = 29;
+
+ @SerialEntry
+ public int scoreY = 134;
+
+ @SerialEntry
+ public float scoreScaling = 1f;
+ }
+
+ public static class DungeonChestProfit {
+ @SerialEntry
+ public boolean enableProfitCalculator = true;
+
+ @SerialEntry
+ public boolean includeKismet = false;
+
+ @SerialEntry
+ public boolean includeEssence = true;
+
+ @SerialEntry
+ public boolean croesusProfit = true;
+
+ @SerialEntry
+ public int neutralThreshold = 1000;
+
+ @SerialEntry
+ public Formatting neutralColor = Formatting.DARK_GRAY;
+
+ @SerialEntry
+ public Formatting profitColor = Formatting.DARK_GREEN;
+
+ @SerialEntry
+ public Formatting lossColor = Formatting.RED;
+
+ @SerialEntry
+ public Formatting incompleteColor = Formatting.BLUE;
+ }
+
+}
diff --git a/src/main/java/de/hysky/skyblocker/config/configs/FarmingConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/FarmingConfig.java
new file mode 100644
index 00000000..b2faf005
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/config/configs/FarmingConfig.java
@@ -0,0 +1,37 @@
+package de.hysky.skyblocker.config.configs;
+
+import dev.isxander.yacl3.config.v2.api.SerialEntry;
+
+public class FarmingConfig {
+
+ @SerialEntry
+ public Garden garden = new Garden();
+
+ public static class Garden {
+ @SerialEntry
+ public FarmingHud farmingHud = new FarmingHud();
+
+ @SerialEntry
+ public boolean dicerTitlePrevent = true;
+
+ @SerialEntry
+ public boolean visitorHelper = true;
+
+ @SerialEntry
+ public boolean lockMouseTool = false;
+
+ @SerialEntry
+ public boolean lockMouseGroundOnly = false;
+ }
+
+ public static class FarmingHud {
+ @SerialEntry
+ public boolean enableHud = true;
+
+ @SerialEntry
+ public int x;
+
+ @SerialEntry
+ public int y;
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/config/configs/GeneralConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/GeneralConfig.java
new file mode 100644
index 00000000..f4e65e36
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/config/configs/GeneralConfig.java
@@ -0,0 +1,220 @@
+package de.hysky.skyblocker.config.configs;
+
+import de.hysky.skyblocker.SkyblockerMod;
+import de.hysky.skyblocker.skyblock.item.CustomArmorAnimatedDyes;
+import de.hysky.skyblocker.skyblock.item.CustomArmorTrims;
+import dev.isxander.yacl3.config.v2.api.SerialEntry;
+import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
+import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
+import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet;
+import net.minecraft.client.resource.language.I18n;
+import net.minecraft.text.Text;
+import net.minecraft.util.Identifier;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class GeneralConfig {
+ @SerialEntry
+ public boolean enableTips = true;
+
+ @SerialEntry
+ public boolean hideEmptyTooltips = true;
+
+ @SerialEntry
+ public Shortcuts shortcuts = new Shortcuts();
+
+ @SerialEntry
+ public QuiverWarning quiverWarning = new QuiverWarning();
+
+ @SerialEntry
+ public ItemList itemList = new ItemList();
+
+ @SerialEntry
+ public ItemTooltip itemTooltip = new ItemTooltip();
+
+ @SerialEntry
+ public ItemInfoDisplay itemInfoDisplay = new ItemInfoDisplay();
+
+ @SerialEntry
+ public ItemProtection itemProtection = new ItemProtection();
+
+ @SerialEntry
+ public WikiLookup wikiLookup = new WikiLookup();
+
+ @SerialEntry
+ public SpecialEffects specialEffects = new SpecialEffects();
+
+ @SerialEntry
+ public Hitbox hitbox = new Hitbox();
+
+ @SerialEntry
+ public List<Integer> lockedSlots = new ArrayList<>();
+
+ //maybe put this 5 somewhere else
+ @SerialEntry
+ public ObjectOpenHashSet<String> protectedItems = new ObjectOpenHashSet<>();
+
+ @SerialEntry
+ public Object2ObjectOpenHashMap<String, Text> customItemNames = new Object2ObjectOpenHashMap<>();
+
+ @SerialEntry
+ public Object2IntOpenHashMap<String> customDyeColors = new Object2IntOpenHashMap<>();
+
+ @SerialEntry
+ public Object2ObjectOpenHashMap<String, CustomArmorTrims.ArmorTrimId> customArmorTrims = new Object2ObjectOpenHashMap<>();
+
+ @SerialEntry
+ public Object2ObjectOpenHashMap<String, CustomArmorAnimatedDyes.AnimatedDye> customAnimatedDyes = new Object2ObjectOpenHashMap<>();
+
+ public static class Shortcuts {
+ @SerialEntry
+ public boolean enableShortcuts = true;
+
+ @SerialEntry
+ public boolean enableCommandShortcuts = true;
+
+ @SerialEntry
+ public boolean enableCommandArgShortcuts = true;
+ }
+
+
+ public static class QuiverWarning {
+ @SerialEntry
+ public boolean enableQuiverWarning = true;
+
+ @SerialEntry
+ public boolean enableQuiverWarningInDungeons = true;
+
+ @SerialEntry
+ public boolean enableQuiverWarningAfterDungeon = true;
+ }
+
+ public static class ItemList {
+ @SerialEntry
+ public boolean enableItemList = true;
+ }
+
+ public static class ItemTooltip {
+ @SerialEntry
+ public boolean enableNPCPrice = true;
+
+ @SerialEntry
+ public boolean enableMotesPrice = true;
+
+ @SerialEntry
+ public boolean enableAvgBIN = true;
+
+ @SerialEntry
+ public Average avg = Average.THREE_DAY;
+
+ @SerialEntry
+ public boolean enableLowestBIN = true;
+
+ @SerialEntry
+ public boolean enableBazaarPrice = true;
+
+ @SerialEntry
+ public boolean enableObtainedDate = true;
+
+ @SerialEntry
+ public boolean enableMuseumInfo = true;
+
+ @SerialEntry
+ public boolean enableExoticTooltip = true;
+
+ @SerialEntry
+ public boolean enableAccessoriesHelper = true;
+
+ @SerialEntry
+ public boolean dungeonQuality = true;
+ }
+
+ public enum Average {
+ ONE_DAY, THREE_DAY, BOTH;
+
+ @Override
+ public String toString() {
+ return I18n.translate("skyblocker.option.general.itemTooltip.avg." + name());
+ }
+ }
+
+ public static class ItemInfoDisplay {
+ @SerialEntry
+ public boolean attributeShardInfo = true;
+
+ @SerialEntry
+ public boolean itemRarityBackgrounds = false;
+
+ @SerialEntry
+ public RarityBackgroundStyle itemRarityBackgroundStyle = RarityBackgroundStyle.CIRCULAR;
+
+ @SerialEntry
+ public float itemRarityBackgroundsOpacity = 1f;
+ }
+
+ public enum RarityBackgroundStyle {
+ CIRCULAR(new Identifier(SkyblockerMod.NAMESPACE, "item_rarity_background_circular")),
+ SQUARE(new Identifier(SkyblockerMod.NAMESPACE, "item_rarity_background_square"));
+
+ public final Identifier tex;
+
+ RarityBackgroundStyle(Identifier tex) {
+ this.tex = tex;
+ }
+
+ @Override
+ public String toString() {
+ return switch (this) {
+ case CIRCULAR -> "Circular";
+ case SQUARE -> "Square";
+ };
+ }
+ }
+
+ public static class ItemProtection {
+ @SerialEntry
+ public SlotLockStyle slotLockStyle = SlotLockStyle.FANCY;
+ }
+
+ public enum SlotLockStyle {
+ CLASSIC(new Identifier(SkyblockerMod.NAMESPACE, "textures/gui/slot_lock.png")),
+ FANCY(new Identifier(SkyblockerMod.NAMESPACE, "textures/gui/fancy_slot_lock.png"));
+
+ public final Identifier tex;
+
+ SlotLockStyle(Identifier tex) {
+ this.tex = tex;
+ }
+
+ @Override
+ public String toString() {
+ return switch (this) {
+ case CLASSIC -> "Classic";
+ case FANCY -> "FANCY";
+ };
+ }
+ }
+
+ public static class WikiLookup {
+ @SerialEntry
+ public boolean enableWikiLookup = true;
+
+ @SerialEntry
+ public boolean officialWiki = true;
+ }
+
+ public static class SpecialEffects {
+ @SerialEntry
+ public boolean rareDungeonDropEffects = true;
+ }
+
+ public static class Hitbox {
+ @SerialEntry
+ public boolean oldFarmlandHitbox = false;
+
+ @SerialEntry
+ public boolean oldLeverHitbox = false;
+ }
+
+}
diff --git a/src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java
new file mode 100644
index 00000000..2abff6ac
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java
@@ -0,0 +1,65 @@
+package de.hysky.skyblocker.config.configs;
+
+import dev.isxander.yacl3.config.v2.api.SerialEntry;
+
+public class HelperConfig {
+
+ @SerialEntry
+ public boolean enableNewYearCakesHelper = true;
+
+ @SerialEntry
+ public MythologicalRitual mythologicalRitual = new MythologicalRitual();
+
+ @SerialEntry
+ public Experiments experiments = new Experiments();
+
+ @SerialEntry
+ public Fishing fishing = new Fishing();
+
+ @SerialEntry
+ public FairySouls fairySouls = new FairySouls();
+
+ public static class MythologicalRitual {
+ @SerialEntry
+ public boolean enableMythologicalRitualHelper = true;
+ }
+
+ public static class Experiments {
+ @SerialEntry
+ public boolean enableChronomatronSolver = true;
+
+ @SerialEntry
+ public boolean enableSuperpairsSolver = true;
+
+ @SerialEntry
+ public boolean enableUltrasequencerSolver = true;
+ }
+
+ public static class Fishing {
+ @SerialEntry
+ public boolean enableFishingHelper = true;
+
+ @SerialEntry
+ public boolean enableFishingTimer = false;
+
+ @SerialEntry
+ public boolean changeTimerColor = true;
+
+ @SerialEntry
+ public float fishingTimerScale = 1f;
+
+ @SerialEntry
+ public boolean hideOtherPlayersRods = false;
+ }
+
+ public static class FairySouls {
+ @SerialEntry
+ public boolean enableFairySoulsHelper = false;
+
+ @SerialEntry
+ public boolean highlightFoundSouls = true;
+
+ @SerialEntry
+ public boolean highlightOnlyNearbySouls = false;
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/config/configs/MessagesConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/MessagesConfig.java
new file mode 100644
index 00000000..8fdf1422
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/config/configs/MessagesConfig.java
@@ -0,0 +1,61 @@
+package de.hysky.skyblocker.config.configs;
+
+import de.hysky.skyblocker.utils.chat.ChatFilterResult;
+import dev.isxander.yacl3.config.v2.api.SerialEntry;
+
+public class MessagesConfig {
+ @SerialEntry
+ public ChatFilterResult hideAbility = ChatFilterResult.PASS;
+
+ @SerialEntry
+ public ChatFilterResult hideHeal = ChatFilterResult.PASS;
+
+ @SerialEntry
+ public ChatFilterResult hideAOTE = ChatFilterResult.PASS;
+
+ @SerialEntry
+ public ChatFilterResult hideImplosion = ChatFilterResult.PASS;
+
+ @SerialEntry
+ public ChatFilterResult hideMoltenWave = ChatFilterResult.PASS;
+
+ @SerialEntry
+ public ChatFilterResult hideAds = ChatFilterResult.PASS;
+
+ @SerialEntry
+ public ChatFilterResult hideTeleportPad = ChatFilterResult.PASS;
+
+ @SerialEntry
+ public ChatFilterResult hideCombo = ChatFilterResult.PASS;
+
+ @SerialEntry
+ public ChatFilterResult hideAutopet = ChatFilterResult.PASS;
+
+ @SerialEntry
+ public ChatFilterResult hideShowOff = ChatFilterResult.PASS;
+
+ @SerialEntry
+ public ChatFilterResult hideToggleSkyMall = ChatFilterResult.PASS;
+
+ @SerialEntry
+ public ChatFilterResult hideMimicKill = ChatFilterResult.PASS;
+
+ @SerialEntry
+ public ChatFilterResult hideDeath = ChatFilterResult.PASS;
+
+ @SerialEntry
+ public boolean hideMana = false;
+
+ @SerialEntry
+ public ChatFilterResult hideDicer = ChatFilterResult.PASS;
+
+ @SerialEntry
+ public ChatRuleConfig chatRuleConfig = new ChatRuleConfig();
+
+ public static class ChatRuleConfig {
+ @SerialEntry
+ public int announcementLength = 60;
+ @SerialEntry
+ public int announcementScale = 3;
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/config/configs/MiningConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/MiningConfig.java
new file mode 100644
index 00000000..0964a7f8
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/config/configs/MiningConfig.java
@@ -0,0 +1,100 @@
+package de.hysky.skyblocker.config.configs;
+
+import dev.isxander.yacl3.config.v2.api.SerialEntry;
+
+public class MiningConfig {
+ @SerialEntry
+ public boolean enableDrillFuel = true;
+
+ @SerialEntry
+ public DwarvenMines dwarvenMines = new DwarvenMines();
+
+ @SerialEntry
+ public DwarvenHud dwarvenHud = new DwarvenHud();
+
+ @SerialEntry
+ public CrystalHollows crystalHollows = new CrystalHollows();
+
+ @SerialEntry
+ public CrystalsHud crystalsHud = new CrystalsHud();
+
+ @SerialEntry
+ public CrystalsWaypoints crystalsWaypoints = new CrystalsWaypoints();
+
+ public static class DwarvenMines {
+ @SerialEntry
+ public boolean solveFetchur = true;
+
+ @SerialEntry
+ public boolean solvePuzzler = true;
+ }
+
+ public static class DwarvenHud {
+ @SerialEntry
+ public boolean enabledCommissions = true;
+
+ @SerialEntry
+ public boolean enabledPowder = true;
+
+ @SerialEntry
+ public DwarvenHudStyle style = DwarvenHudStyle.SIMPLE;
+
+ @SerialEntry
+ public int x = 10;
+
+ @SerialEntry
+ public int y = 10;
+
+ @SerialEntry
+ public int powderX = 10;
+
+ @SerialEntry
+ public int powderY = 70;
+ }
+
+ public static class CrystalHollows {
+ @SerialEntry
+ public boolean metalDetectorHelper = true;
+ }
+
+ public static class CrystalsHud {
+ @SerialEntry
+ public boolean enabled = true;
+
+ @SerialEntry
+ public boolean showLocations = true;
+
+ @SerialEntry
+ public int locationSize = 8;
+
+ @SerialEntry
+ public int x = 10;
+
+ @SerialEntry
+ public int y = 130;
+
+ @SerialEntry
+ public float mapScaling = 1f;
+ }
+
+ public static class CrystalsWaypoints {
+ @SerialEntry
+ public boolean enabled = true;
+
+ @SerialEntry
+ public boolean findInChat = true;
+ }
+
+ public enum DwarvenHudStyle {
+ SIMPLE, FANCY, CLASSIC;
+
+ @Override
+ public String toString() {
+ return switch (this) {
+ case SIMPLE -> "Simple";
+ case FANCY -> "Fancy";
+ case CLASSIC -> "Classic";
+ };
+ }
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/config/configs/MiscConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/MiscConfig.java
new file mode 100644
index 00000000..de321431
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/config/configs/MiscConfig.java
@@ -0,0 +1,35 @@
+package de.hysky.skyblocker.config.configs;
+
+import dev.isxander.yacl3.config.v2.api.SerialEntry;
+import net.minecraft.client.resource.language.I18n;
+
+public class MiscConfig {
+ @SerialEntry
+ public boolean hideStatusEffectOverlay = false;
+
+ @SerialEntry
+ public RichPresence richPresence = new RichPresence();
+
+ public static class RichPresence {
+ @SerialEntry
+ public boolean enableRichPresence = false;
+
+ @SerialEntry
+ public Info info = Info.LOCATION;
+
+ @SerialEntry
+ public boolean cycleMode = false;
+
+ @SerialEntry
+ public String customMessage = "Playing Skyblock";
+ }
+
+ public enum Info {
+ PURSE, BITS, LOCATION;
+
+ @Override
+ public String toString() {
+ return I18n.translate("skyblocker.option.richPresence.info." + name());
+ }
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/config/configs/OtherLocationsConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/OtherLocationsConfig.java
new file mode 100644
index 00000000..5bc1c4b7
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/config/configs/OtherLocationsConfig.java
@@ -0,0 +1,79 @@
+package de.hysky.skyblocker.config.configs;
+
+import dev.isxander.yacl3.config.v2.api.SerialEntry;
+
+public class OtherLocationsConfig {
+
+ @SerialEntry
+ public Barn barn = new Barn();
+
+ @SerialEntry
+ public Rift rift = new Rift();
+
+ @SerialEntry
+ public TheEnd end = new TheEnd();
+
+ @SerialEntry
+ public SpidersDen spidersDen = new SpidersDen();
+
+ public static class Barn {
+ @SerialEntry
+ public boolean solveHungryHiker = true;
+
+ @SerialEntry
+ public boolean solveTreasureHunter = true;
+ }
+
+ public static class Rift {
+ @SerialEntry
+ public boolean mirrorverseWaypoints = true;
+
+ @SerialEntry
+ public boolean blobbercystGlow = true;
+
+ @SerialEntry
+ public boolean enigmaSoulWaypoints = false;
+
+ @SerialEntry
+ public boolean highlightFoundEnigmaSouls = true;
+
+ @SerialEntry
+ public int mcGrubberStacks = 0;
+ }
+
+ public static class TheEnd {
+ @SerialEntry
+ public boolean enableEnderNodeHelper = true;
+
+ @SerialEntry
+ public boolean hudEnabled = true;
+
+ @SerialEntry
+ public boolean zealotKillsEnabled = true;
+
+ @SerialEntry
+ public boolean protectorLocationEnabled = true;
+
+ @SerialEntry
+ public boolean waypoint = true;
+
+ @SerialEntry
+ public int x = 10;
+
+ @SerialEntry
+ public int y = 10;
+ }
+
+ public static class SpidersDen {
+ @SerialEntry
+ public Relics relics = new Relics();
+ }
+
+ public static class Relics {
+ @SerialEntry
+ public boolean enableRelicsHelper = false;
+
+ @SerialEntry
+ public boolean highlightFoundRelics = true;
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/config/configs/QuickNavConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/QuickNavConfig.java
new file mode 100644
index 00000000..6927be08
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/config/configs/QuickNavConfig.java
@@ -0,0 +1,181 @@
+package de.hysky.skyblocker.config.configs;
+
+import dev.isxander.yacl3.config.v2.api.SerialEntry;
+
+public class QuickNavConfig {
+ @SerialEntry
+ public boolean enableQuickNav = true;
+
+ @SerialEntry
+ public QuickNavItem button1 = new QuickNavItem(true, new ItemData("diamond_sword"), "Your Skills", "/skills");
+
+ @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)"
+ */
+ @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)"
+ */
+ @SerialEntry
+ public QuickNavItem button4 = new QuickNavItem(true,
+ new ItemData("leather_chestplate", 1, "tag:{display:{color:8991416}}"), "Wardrobe \\([12]/2\\)",
+ "/wardrobe");
+
+ @SerialEntry
+ public QuickNavItem button5 = new QuickNavItem(true, new ItemData("player_head", 1,
+