aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/config
diff options
context:
space:
mode:
authorYasin <LifeIsAParadox@users.noreply.github.com>2024-05-09 22:28:47 +0200
committerGitHub <noreply@github.com>2024-05-09 22:28:47 +0200
commit21253c3b4e37ce07198a6e736a2b8a403d9661af (patch)
tree6cf569e6c1be5a1fa622115a4a422ddbd3d43d58 /src/main/java/de/hysky/skyblocker/config
parent4a4234d7c9d4f038d4fa418fb15ef24ce3fcc501 (diff)
parent14302bb348aff30c33a27f43a8b6c017f2fb829e (diff)
downloadSkyblocker-21253c3b4e37ce07198a6e736a2b8a403d9661af.tar.gz
Skyblocker-21253c3b4e37ce07198a6e736a2b8a403d9661af.tar.bz2
Skyblocker-21253c3b4e37ce07198a6e736a2b8a403d9661af.zip
Merge pull request #697 from LifeIsAParadox/ultimate-config-reconfiguration
Ultimate config reconfiguration
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/config')
-rw-r--r--src/main/java/de/hysky/skyblocker/config/HudConfigScreen.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java1299
-rw-r--r--src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java121
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/ChatCategory.java163
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/CrimsonIsleCategory.java139
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/DiscordRPCCategory.java49
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/DungeonsCategory.java1154
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/DwarvenMinesCategory.java151
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/FarmingCategory.java66
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java1042
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java142
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/LocationsCategory.java214
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/MessageFilterCategory.java159
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/MiningCategory.java165
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/MiscCategory.java56
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/OtherLocationsCategory.java166
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/QuickNavigationCategory.java1178
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/SlayersCategory.java248
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java360
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/ChatConfig.java61
-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.java289
-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/MiningConfig.java100
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/MiscConfig.java33
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/OtherLocationsConfig.java79
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/QuickNavigationConfig.java181
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/SlayersConfig.java60
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java250
31 files changed, 4287 insertions, 3997 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/HudConfigScreen.java b/src/main/java/de/hysky/skyblocker/config/HudConfigScreen.java
index 41511732..328cbe18 100644
--- a/src/main/java/de/hysky/skyblocker/config/HudConfigScreen.java
+++ b/src/main/java/de/hysky/skyblocker/config/HudConfigScreen.java
@@ -62,7 +62,7 @@ public abstract class HudConfigScreen extends Screen {
*/
protected void renderWidget(DrawContext context, List<Widget> widgets) {
for (Widget widget : widgets) {
- widget.render(context, SkyblockerConfigManager.get().general.tabHud.enableHudBackground);
+ widget.render(context, SkyblockerConfigManager.get().uiAndVisuals.tabHud.enableHudBackground);
}
}
diff --git a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java
index 2d113361..c591ba14 100644
--- a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java
+++ b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java
@@ -1,1290 +1,45 @@
package de.hysky.skyblocker.config;
-import de.hysky.skyblocker.SkyblockerMod;
-import de.hysky.skyblocker.skyblock.item.CustomArmorAnimatedDyes;
-import de.hysky.skyblocker.skyblock.item.CustomArmorTrims;
-import de.hysky.skyblocker.utils.chat.ChatFilterResult;
-import de.hysky.skyblocker.utils.waypoint.Waypoint;
+import de.hysky.skyblocker.config.configs.*;
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.Formatting;
-import net.minecraft.util.Identifier;
-
-import java.util.ArrayList;
-import java.util.List;
public class SkyblockerConfig {
- @SerialEntry
- public int version = 1;
-
- @SerialEntry
- public General general = new General();
-
- @SerialEntry
- public Locations locations = new Locations();
-
- @SerialEntry
- public Slayer slayer = new Slayer();
-
- @SerialEntry
- public QuickNav quickNav = new QuickNav();
-
- @SerialEntry
- public Messages messages = new Messages();
-
- @SerialEntry
- public RichPresence richPresence = new RichPresence();
-
- public static class QuickNav {
- @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,
- "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)"
- */
- @SerialEntry
- public QuickNavItem button6 = new QuickNavItem(true, new ItemData("ender_chest"),
- "(?:Rift )?Storage(?: \\(1/2\\))?", "/storage");
-
- @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");
-
- @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");
-
- @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");
-
- @SerialEntry
- public QuickNavItem button10 = new QuickNavItem(true, new ItemData("enchanting_table"), "Enchant Item",
- "/etable");
-
-
- @SerialEntry
- public QuickNavItem button11 = new QuickNavItem(true, new ItemData("anvil"), "Anvil", "/anvil");
-
- @SerialEntry
- 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;
- }
-
- @SerialEntry
- public Boolean render;
-
- @SerialEntry
- public ItemData item;
-
- @SerialEntry
- public String uiTitle;
-
- @SerialEntry
- 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 = "";
- }
-
- @SerialEntry
- public String itemName;
-
- @SerialEntry
- public int count;
-
- @SerialEntry
- public String nbt;
- }
-
- public static class General {
- @SerialEntry
- public boolean enableTips = true;
-
- @SerialEntry
- public boolean acceptReparty = true;
-
- @SerialEntry
- public boolean betterPartyFinder = true;
-
- @SerialEntry
- public boolean fancyCraftingTable = true;
-
- @SerialEntry
- public boolean backpackPreviewWithoutShift = false;
-
- @SerialEntry
- public boolean compactorDeletorPreview = true;
-
- @SerialEntry
- public boolean hideEmptyTooltips = true;
-
- @SerialEntry
- public boolean hideStatusEffectOverlay = false;
-
- @SerialEntry
- public boolean dontStripSkinAlphaValues = true;
-
- @SerialEntry
- public boolean dungeonQuality = true;
-
- @SerialEntry
- public boolean enableNewYearCakesHelper = true;
-
- @SerialEntry
- public TabHudConf tabHud = new TabHudConf();
-
- @SerialEntry
- public Bars bars = new Bars();
-
- @SerialEntry
- public Experiments experiments = new Experiments();
-
- @SerialEntry
- public Fishing fishing = new Fishing();
-
- @SerialEntry
- public FairySouls fairySouls = new FairySouls();
-
- @SerialEntry
- public MythologicalRitual mythologicalRitual = new MythologicalRitual();
-
- @SerialEntry
- public ItemCooldown itemCooldown = new ItemCooldown();
-
- @SerialEntry
- public Shortcuts shortcuts = new Shortcuts();
-
- @SerialEntry
- public Waypoints waypoints = new Waypoints();
-
- @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 ChestValue chestValue = new ChestValue();
-
- @SerialEntry
- public SpecialEffects specialEffects = new SpecialEffects();
-
- @SerialEntry
- public Hitbox hitbox = new Hitbox();
-
- @SerialEntry
- public TitleContainer titleContainer = new TitleContainer();
-
- @SerialEntry
- public TeleportOverlay teleportOverlay = new TeleportOverlay();
-
- @SerialEntry
- public FlameOverlay flameOverlay = new FlameOverlay();
-
- @SerialEntry
- public SearchOverlay searchOverlay = new SearchOverlay();
-
- @SerialEntry
- public FancyAuctionHouse fancyAuctionHouse = new FancyAuctionHouse();
-
- @SerialEntry
- public List<Integer> lockedSlots = new ArrayList<>();
-
- @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 TabHudConf {
- @SerialEntry
- public boolean tabHudEnabled = true;
-
- @SerialEntry
- public int tabHudScale = 100;
-
- @SerialEntry
- public boolean enableHudBackground = true;
-
- @SerialEntry
- public boolean plainPlayerNames = false;
-
- @SerialEntry
- 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 {
- @SerialEntry
- public boolean enableBars = true;
-
- // Kept in for backwards compatibility, remove if needed
- @SerialEntry
- public OldBarPositions barPositions = new OldBarPositions();
- }
-
- /**
- * Backwards compat
- */
- public static class OldBarPositions {
- @SerialEntry
- public OldBarPosition healthBarPosition = OldBarPosition.LAYER1;
-
- @SerialEntry
- public OldBarPosition manaBarPosition = OldBarPosition.LAYER1;
-
- @SerialEntry
- public OldBarPosition defenceBarPosition = OldBarPosition.LAYER1;
-
- @SerialEntry
- public OldBarPosition experienceBarPosition = OldBarPosition.LAYER1;
-
- }
-
- /**
- * Backwards compat
- */
- public enum OldBarPosition {
- LAYER1, LAYER2, RIGHT, NONE
- }
-
- 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;
- }
-
- public static class MythologicalRitual {
- @SerialEntry
- public boolean enableMythologicalRitualHelper = true;
- }
-
- public static class ItemCooldown {
- @SerialEntry
- public boolean enableItemCooldowns = true;
- }
-
- public static class Shortcuts {
- @SerialEntry
- public boolean enableShortcuts = true;
-
- @SerialEntry
- public boolean enableCommandShortcuts = true;
-
- @SerialEntry
- public boolean enableCommandArgShortcuts = true;
- }
-
- public static class Waypoints {
- @SerialEntry
- public boolean enableWaypoints = true;
-
- @SerialEntry
- public Waypoint.Type waypointType = Waypoint.Type.WAYPOINT;
- }
-
- 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;
- }
-
- 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 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 ChestValue {
- @SerialEntry
- public boolean enableChestValue = true;
-
- @SerialEntry
- public Formatting color = Formatting.DARK_GREEN;
-
- @SerialEntry
- public Formatting incompleteColor = Formatting.BLUE;
- }
-
- public static class SpecialEffects {
- @SerialEntry
- public boolean rareDungeonDropEffects = true;
- }
-
- public static class Hitbox {
- @SerialEntry
- public boolean oldFarmlandHitbox = false;
-
- @SerialEntry
- public boolean oldLeverHitbox = false;
- }
-
- public static class TitleContainer {
- @SerialEntry
- public float titleContainerScale = 100;
-
- @SerialEntry
- public int x = 540;
-
- @SerialEntry
- public int y = 10;
-
- @SerialEntry
- public Direction direction = Direction.HORIZONTAL;
-
- @SerialEntry
- public Alignment alignment = Alignment.MIDDLE;
- }
-
- 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 TeleportOverlay {
- @SerialEntry
- public boolean enableTeleportOverlays = true;
-
- @SerialEntry
- public boolean enableWeirdTransmission = true;
-
- @SerialEntry
- public boolean enableInstantTransmission = true;
-
- @SerialEntry
- public boolean enableEtherTransmission = true;
-
- @SerialEntry
- public boolean enableSinrecallTransmission = true;
-
- @SerialEntry
- public boolean enableWitherImpact = true;
- }
-
- public static class FlameOverlay {
- @SerialEntry
- public int flameHeight = 100;
-
- @SerialEntry
- public int flameOpacity = 100;
- }
-
- public static class SearchOverlay {
- @SerialEntry
- public boolean enableBazaar = true;
-
- @SerialEntry
- public boolean enableAuctionHouse = true;
-
- @SerialEntry
- public boolean keepPreviousSearches = false;
-
- @SerialEntry
- public int maxSuggestions = 3;
-
- @SerialEntry
- public int historyLength = 3;
-
- @SerialEntry
- public boolean enableCommands = false;
-
- @SerialEntry
- public List<String> bazaarHistory = new ArrayList<>();
-
- @SerialEntry
- public List<String> auctionHistory = new ArrayList<>();
- }
-
- public static class FancyAuctionHouse {
- @SerialEntry
- public boolean enabled = true;
-
- @SerialEntry
- public boolean highlightCheapBIN = true;
- }
-
- public static class Locations {
- @SerialEntry
- public Barn barn = new Barn();
-
- @SerialEntry
- public CrimsonIsle crimsonIsle = new CrimsonIsle();
-
- @SerialEntry
- public Dungeons dungeons = new Dungeons();
-
- @SerialEntry
- public DwarvenMines dwarvenMines = new DwarvenMines();
-
- @SerialEntry
- public Rift rift = new Rift();
-
- @SerialEntry
- public TheEnd end = new TheEnd();
-
- @SerialEntry
- public SpidersDen spidersDen = new SpidersDen();
-
- @SerialEntry
- public Garden garden = new Garden();
- }
-
- public static class Dungeons {
- @SerialEntry
- public SecretWaypoints secretWaypoints = new SecretWaypoints();
-
- @SerialEntry
- public DoorHighlight doorHighlight = new DoorHighlight();
-
- @SerialEntry
- public DungeonScore dungeonScore = new DungeonScore();
-
- @SerialEntry
- public DungeonChestProfit dungeonChestProfit = new DungeonChestProfit();
-
- @SerialEntry
- public MimicMessage mimicMessage = new MimicMessage();
-
- @SerialEntry
- public boolean croesusHelper = true;
-
- @SerialEntry
- public boolean enableMap = true;
-
- @SerialEntry
- public float mapScaling = 1f;
-
- @SerialEntry
- public int mapX = 2;
-
- @SerialEntry
- public int mapY = 2;
-
- @SerialEntry
- public boolean playerSecretsTracker = false;
-
- @SerialEntry
- public boolean starredMobGlow = false;
-
- @SerialEntry
- public boolean starredMobBoundingBoxes = true;
-
- @SerialEntry
- public boolean solveThreeWeirdos = true;
-
- @SerialEntry
- public boolean blazeSolver = true;
-
- @SerialEntry
- public boolean creeperSolver = true;
-
- @SerialEntry
- public boolean solveTrivia = true;
-
- @SerialEntry
- public boolean solveTicTacToe = true;
-
- @SerialEntry
- public boolean solveWaterboard = true;
-
- @SerialEntry
- public boolean solveBoulder = true;
-
- @SerialEntry
- public boolean solveIceFill = true;
-
- @SerialEntry
- public boolean solveSilverfish = true;
-
- @SerialEntry
- public boolean fireFreezeStaffTimer = true;
-
- @SerialEntry
- public boolean floor3GuardianHealthDisplay = true;
-
- @SerialEntry
- public boolean allowDroppingProtectedItems = false;
-
- @SerialEntry
- public LividColor lividColor = new LividColor();
-
- @SerialEntry
- public Terminals terminals = new Terminals();
- }
-
- 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 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;
- }
-
- public static class MimicMessage {
- @SerialEntry
- public boolean sendMimicMessage = true;
-
- @SerialEntry
- public String mimicMessage = "Mimic dead!";
- }
-
- public static class LividColor {
- @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 DwarvenMines {
- @SerialEntry
- public boolean enableDrillFuel = true;
-
- @SerialEntry
- public boolean solveFetchur = true;
-
- @SerialEntry
- public boolean solvePuzzler = true;
-
- @SerialEntry
- public boolean metalDetectorHelper = true;
-
- @SerialEntry
- public DwarvenHud dwarvenHud = new DwarvenHud();
-
- @SerialEntry
- public CrystalsHud crystalsHud = new CrystalsHud();
-
- @SerialEntry
- public CrystalsWaypoints crystalsWaypoints = new CrystalsWaypoints();
- }
-
- 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 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";
- };
- }
- }
-
- public static class Barn {
- @SerialEntry
- public boolean solveHungryHiker = true;
-
- @SerialEntry
- public boolean solveTreasureHunter = true;
- }
-
- public static class CrimsonIsle {
- @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;
- }
-
- 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;
- }
-
- 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;
- }
-
- public static class Slayer {
- @SerialEntry
- public EndermanSlayer endermanSlayer = new EndermanSlayer();
-
- @SerialEntry
- public VampireSlayer vampireSlayer = new VampireSlayer();
- }
-
- public static class EndermanSlayer {
- @SerialEntry
- public boolean enableYangGlyphsNotification = true;
-
- @SerialEntry
- public boolean highlightBeacons = true;
-
- @SerialEntry
- public boolean highlightNukekubiHeads = true;
- }
-
- public static class VampireSlayer {
- @SerialEntry
- public boolean enableEffigyWaypoints = true;
-
- @SerialEntry
- public boolean compactEffigyWaypoints;
-
- @SerialEntry
- public int effigyUpdateFrequency = 5;
-
- @SerialEntry
- public boolean enableHolyIceIndicator = true;
-
- @SerialEntry
- public int holyIceIndicatorTickDelay = 10;
-
- @SerialEntry
- public int holyIceUpdateFrequency = 5;
-
- @SerialEntry
- public boolean enableHealingMelonIndicator = true;
-
- @SerialEntry
- public float healingMelonHealthThreshold = 4f;
-
- @SerialEntry
- public boolean enableSteakStakeIndicator = true;
-
- @SerialEntry
- public int steakStakeUpdateFrequency = 5;
-
- @SerialEntry
- public boolean enableManiaIndicator = true;
-
- @SerialEntry
- public int maniaUpdateFrequency = 5;
- }
-
- public static class Messages {
- @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 int version = 2;
- @SerialEntry
- public ChatFilterResult hideMimicKill = ChatFilterResult.PASS;
+ @SerialEntry
+ public GeneralConfig general = new GeneralConfig();
- @SerialEntry
- public ChatFilterResult hideDeath = ChatFilterResult.PASS;
+ @SerialEntry
+ public UIAndVisualsConfig uiAndVisuals = new UIAndVisualsConfig();
- @SerialEntry
- public boolean hideMana = false;
+ @SerialEntry
+ public HelperConfig helpers = new HelperConfig();
- @SerialEntry
- public ChatFilterResult hideDicer = ChatFilterResult.PASS;
+ @SerialEntry
+ public DungeonsConfig dungeons = new DungeonsConfig();
- @SerialEntry
- public ChatRuleConfig chatRuleConfig = new ChatRuleConfig();
- }
+ @SerialEntry
+ public CrimsonIsleConfig crimsonIsle = new CrimsonIsleConfig();
- public static class ChatRuleConfig {
- @SerialEntry
- public int announcementLength = 60;
- @SerialEntry
- public int announcementScale = 3;
- }
+ @SerialEntry
+ public MiningConfig mining = new MiningConfig();
- public static class RichPresence {
- @SerialEntry
- public boolean enableRichPresence = false;
+ @SerialEntry
+ public FarmingConfig farming = new FarmingConfig();
- @SerialEntry
- public Info info = Info.LOCATION;
+ @SerialEntry
+ public OtherLocationsConfig otherLocations = new OtherLocationsConfig();
- @SerialEntry
- public boolean cycleMode = false;
+ @SerialEntry
+ public SlayersConfig slayers = new SlayersConfig();
- @SerialEntry
- public String customMessage = "Playing Skyblock";
- }
+ @SerialEntry
+ public ChatConfig chat = new ChatConfig();
- public enum Info {
- PURSE, BITS, LOCATION;
+ @SerialEntry
+ public QuickNavigationConfig quickNav = new QuickNavigationConfig();
- @Override
- public String toString() {
- return I18n.translate("text.autoconfig.skyblocker.option.richPresence.info." + name());
- }
- }
+ @SerialEntry
+ public MiscConfig misc = new MiscConfig();
}
diff --git a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java
index 31f1357d..4b8e56df 100644
--- a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java
+++ b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java
@@ -26,69 +26,72 @@ import java.lang.StackWalker.Option;
import java.nio.file.Path;
public class SkyblockerConfigManager {
- private static final Path PATH = FabricLoader.getInstance().getConfigDir().resolve("skyblocker.json");
- private static final ConfigClassHandler<SkyblockerConfig> HANDLER = ConfigClassHandler.createBuilder(SkyblockerConfig.class)
- .serializer(config -> GsonConfigSerializerBuilder.create(config)
- .setPath(PATH)
- .setJson5(false)
- .appendGsonBuilder(builder -> builder
- .setFieldNamingPolicy(FieldNamingPolicy.IDENTITY)
- .registerTypeHierarchyAdapter(Identifier.class, new Identifier.Serializer()))
- .build())
- .build();
+ private static final Path PATH = FabricLoader.getInstance().getConfigDir().resolve("skyblocker-2.json");
+ private static final ConfigClassHandler<SkyblockerConfig> HANDLER = ConfigClassHandler.createBuilder(SkyblockerConfig.class)
+ .serializer(config -> GsonConfigSerializerBuilder.create(config)
+ .setPath(PATH)
+ .setJson5(false)
+ .appendGsonBuilder(builder -> builder
+ .setFieldNamingPolicy(FieldNamingPolicy.IDENTITY)
+ .registerTypeHierarchyAdapter(Identifier.class, new Identifier.Serializer()))
+ .build())
+ .build();
- public static SkyblockerConfig get() {
- return HANDLER.instance();
- }
+ public static SkyblockerConfig get() {
+ return HANDLER.instance();
+ }
- /**
- * 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!");
- }
+ /**
+ * 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!");
+ }
- HANDLER.load();
- ClientCommandRegistrationCallback.EVENT.register(((dispatcher, registryAccess) -> dispatcher.register(ClientCommandManager.literal(SkyblockerMod.NAMESPACE).then(optionsLiteral("config")).then(optionsLiteral("options")))));
- ScreenEvents.AFTER_INIT.register((client, screen, scaledWidth, scaledHeight) -> {
- if (screen instanceof GenericContainerScreen genericContainerScreen && screen.getTitle().getString().equals("SkyBlock Menu")) {
- Screens.getButtons(screen).add(ButtonWidget
- .builder(Text.literal("\uD83D\uDD27"), buttonWidget -> client.setScreen(createGUI(screen)))
- .dimensions(((HandledScreenAccessor) genericContainerScreen).getX() + ((HandledScreenAccessor) genericContainerScreen).getBackgroundWidth() - 16, ((HandledScreenAccessor) genericContainerScreen).getY() + 4, 12, 12)
- .tooltip(Tooltip.of(Text.translatable("text.autoconfig.skyblocker.title")))
- .build());
- }
- });
- }
+ HANDLER.load();
+ ClientCommandRegistrationCallback.EVENT.register(((dispatcher, registryAccess) -> dispatcher.register(ClientCommandManager.literal(SkyblockerMod.NAMESPACE).then(optionsLiteral("config")).then(optionsLiteral("options")))));
+ ScreenEvents.AFTER_INIT.register((client, screen, scaledWidth, scaledHeight) -> {
+ if (screen instanceof GenericContainerScreen genericContainerScreen && screen.getTitle().getString().equals("SkyBlock Menu")) {
+ Screens.getButtons(screen).add(ButtonWidget
+ .builder(Text.literal("\uD83D\uDD27"), buttonWidget -> client.setScreen(createGUI(screen)))
+ .dimensions(((HandledScreenAccessor) genericContainerScreen).getX() + ((HandledScreenAccessor) genericContainerScreen).getBackgroundWidth() - 16, ((HandledScreenAccessor) genericContainerScreen).getY() + 4, 12, 12)
+ .tooltip(Tooltip.of(Text.translatable("skyblocker.config.title")))
+ .build());
+ }
+ });
+ }
- public static void save() {
- HANDLER.save();
- }
+ public static void save() {
+ HANDLER.save();
+ }
- public static Screen createGUI(Screen parent) {
- 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))
- .category(DwarvenMinesCategory.create(defaults, config))
- .category(CrimsonIsleCategory.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 Screen createGUI(Screen parent) {
+ return YetAnotherConfigLib.create(HANDLER, (defaults, config, builder) -> builder
+ .title(Text.translatable("skyblocker.config.title"))
+ .category(GeneralCategory.create(defaults, config))
+ .category(UIAndVisualsCategory.create(defaults, config))
+ .category(HelperCategory.create(defaults, config))
+ .category(DungeonsCategory.create(defaults, config))
+ .category(CrimsonIsleCategory.create(defaults, config))
+ .category(MiningCategory.create(defaults, config))
+ .category(FarmingCategory.create(defaults, config))
+ .category(OtherLocationsCategory.create(defaults, config))
+ .category(SlayersCategory.create(defaults, config))
+ .category(ChatCategory.create(defaults, config))
+ .category(QuickNavigationCategory.create(defaults, config))
+ .category(MiscCategory.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<FabricClientCommandSource> 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)));
- }
+ /**
+ * 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<FabricClientCommandSource> 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/de/hysky/skyblocker/config/categories/ChatCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/ChatCategory.java
new file mode 100644
index 00000000..993b07e4
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/config/categories/ChatCategory.java
@@ -0,0 +1,163 @@
+package de.hysky.skyblocker.config.categories;
+
+import de.hysky.skyblocker.config.ConfigUtils;
+import de.hysky.skyblocker.config.SkyblockerConfig;
+import de.hysky.skyblocker.skyblock.chat.ChatRulesConfigScreen;
+import de.hysky.skyblocker.utils.chat.ChatFilterResult;
+import dev.isxander.yacl3.api.*;
+import dev.isxander.yacl3.api.controller.IntegerSliderControllerBuilder;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.text.Text;
+
+public class ChatCategory {
+
+ public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) {
+ return ConfigCategory.createBuilder()
+ .name(Text.translatable("skyblocker.config.chat"))
+
+ //Uncategorized Options
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.chat.filter"))
+ .option(Option.<ChatFilterResult>createBuilder()
+ .name(Text.translatable("skyblocker.config.chat.filter.hideAbility"))
+ .binding(defaults.chat.hideAbility,
+ () -> config.chat.hideAbility,
+ newValue -> config.chat.hideAbility = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .option(Option.<ChatFilterResult>createBuilder()
+ .name(Text.translatable("skyblocker.config.chat.filter.hideHeal"))
+ .binding(defaults.chat.hideHeal,
+ () -> config.chat.hideHeal,
+ newValue -> config.chat.hideHeal = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .option(Option.<ChatFilterResult>createBuilder()
+ .name(Text.translatable("skyblocker.config.chat.filter.hideAOTE"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.chat.filter.hideAOTE.@Tooltip")))
+ .binding(defaults.chat.hideAOTE,
+ () -> config.chat.hideAOTE,
+ newValue -> config.chat.hideAOTE = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .option(Option.<ChatFilterResult>createBuilder()
+ .name(Text.translatable("skyblocker.config.chat.filter.hideImplosion"))
+ .binding(defaults.chat.hideImplosion,
+ () -> config.chat.hideImplosion,
+ newValue -> config.chat.hideImplosion = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .option(Option.<ChatFilterResult>createBuilder()
+ .name(Text.translatable("skyblocker.config.chat.filter.hideMoltenWave"))
+ .binding(defaults.chat.hideMoltenWave,
+ () -> config.chat.hideMoltenWave,
+ newValue -> config.chat.hideMoltenWave = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .option(Option.<ChatFilterResult>createBuilder()
+ .name(Text.translatable("skyblocker.config.chat.filter.hideAds"))
+ .binding(defaults.chat.hideAds,
+ () -> config.chat.hideAds,
+ newValue -> config.chat.hideAds = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .option(Option.<ChatFilterResult>createBuilder()
+ .name(Text.translatable("skyblocker.config.chat.filter.hideTeleportPad"))
+ .binding(defaults.chat.hideTeleportPad,
+ () -> config.chat.hideTeleportPad,
+ newValue -> config.chat.hideTeleportPad = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .option(Option.<ChatFilterResult>createBuilder()
+ .name(Text.translatable("skyblocker.config.chat.filter.hideCombo"))
+ .binding(defaults.chat.hideCombo,
+ () -> config.chat.hideCombo,
+ newValue -> config.chat.hideCombo = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .option(Option.<ChatFilterResult>createBuilder()
+ .name(Text.translatable("skyblocker.config.chat.filter.hideAutopet"))
+ .binding(defaults.chat.hideAutopet,
+ () -> config.chat.hideAutopet,
+ newValue -> config.chat.hideAutopet = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .option(Option.<ChatFilterResult>createBuilder()
+ .name(Text.translatable("skyblocker.config.chat.filter.hideShowOff"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.chat.filter.hideShowOff.@Tooltip")))
+ .binding(defaults.chat.hideShowOff,
+ () -> config.chat.hideShowOff,
+ newValue -> config.chat.hideShowOff = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .option(Option.<ChatFilterResult>createBuilder()
+ .name(Text.translatable("skyblocker.config.chat.filter.hideToggleSkyMall"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.chat.filter.hideToggleSkyMall.@Tooltip")))
+ .binding(defaults.chat.hideToggleSkyMall,
+ () -> config.chat.hideToggleSkyMall,
+ newValue -> config.chat.hideToggleSkyMall = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.chat.filter.hideMana"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.chat.filter.hideMana.@Tooltip")))
+ .binding(defaults.chat.hideMana,
+ () -> config.chat.hideMana,
+ newValue -> config.chat.hideMana = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<ChatFilterResult>createBuilder()
+ .name(Text.translatable("skyblocker.config.chat.filter.hideMimicKill"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.chat.filter.hideMimicKill.@Tooltip")))
+ .binding(defaults.chat.hideMimicKill,
+ () -> config.chat.hideMimicKill,
+ newValue -> config.chat.hideMimicKill = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .option(Option.<ChatFilterResult>createBuilder()
+ .name(Text.translatable("skyblocker.config.chat.filter.hideDeath"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.chat.filter.hideDeath.@Tooltip")))
+ .binding(defaults.chat.hideDeath,
+ () -> config.chat.hideDeath,
+ newValue -> config.chat.hideDeath = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .option(Option.<ChatFilterResult>createBuilder()
+ .name(Text.translatable("skyblocker.config.chat.filter.hideDicer"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.chat.filter.hideDicer.@Tooltip")))
+ .binding(defaults.chat.hideDicer,
+ () -> config.chat.hideDicer,
+ newValue -> config.chat.hideDicer = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .build())
+
+ //chat rules options
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.chat.chatRules"))
+ .collapsed(false)
+ .option(ButtonOption.createBuilder()
+ .name(Text.translatable("skyblocker.config.chat.chatRules.screen"))
+ .text(Text.translatable("text.skyblocker.open"))
+ .action((screen, opt) -> MinecraftClient.getInstance().setScreen(new ChatRulesConfigScreen(screen)))
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.chat.chatRules.announcementLength"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.chat.chatRules.announcementLength.@Tooltip")))
+ .binding(defaults.chat.chatRuleConfig.announcementLength,
+ () -> config.chat.chatRuleConfig.announcementLength,
+ newValue -> config.chat.chatRuleConfig.announcementLength = newValue)
+ .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(5, 200).step(1))
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.chat.chatRules.announcementScale"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.chat.chatRules.announcementScale.@Tooltip")))
+ .binding(defaults.chat.chatRuleConfig.announcementScale,
+ () -> config.chat.chatRuleConfig.announcementScale,
+ newValue -> config.chat.chatRuleConfig.announcementScale = newValue)
+ .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(1, 8).step(1))
+ .build())
+ .build())
+ .build();
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/CrimsonIsleCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/CrimsonIsleCategory.java
index 3c2dc3b6..fed8fa96 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/CrimsonIsleCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/CrimsonIsleCategory.java
@@ -12,74 +12,75 @@ import net.minecraft.text.Text;
public class CrimsonIsleCategory {
- public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) {
- return ConfigCategory.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.category.crimsonIsle"))
+ public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) {
+ return ConfigCategory.createBuilder()
+ .name(Text.translatable("skyblocker.config.crimsonIsle"))
- //Kuudra
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra"))
- .collapsed(false)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra.supplyWaypoints"))
- .binding(defaults.locations.crimsonIsle.kuudra.supplyWaypoints,
- () -> config.locations.crimsonIsle.kuudra.supplyWaypoints,
- newValue -> config.locations.crimsonIsle.kuudra.supplyWaypoints = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra.fuelWaypoints"))
- .binding(defaults.locations.crimsonIsle.kuudra.fuelWaypoints,
- () -> config.locations.crimsonIsle.kuudra.fuelWaypoints,
- newValue -> config.locations.crimsonIsle.kuudra.fuelWaypoints = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Waypoint.Type>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra.suppliesAndFuelWaypointType"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.waypoints.waypointType.@Tooltip")))
- .binding(defaults.locations.crimsonIsle.kuudra.suppliesAndFuelWaypointType,
- () -> config.locations.crimsonIsle.kuudra.suppliesAndFuelWaypointType,
- newValue -> config.locations.crimsonIsle.kuudra.suppliesAndFuelWaypointType = newValue)
- .controller(ConfigUtils::createEnumCyclingListController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra.ballistaBuildWaypoints"))
- .binding(defaults.locations.crimsonIsle.kuudra.ballistaBuildWaypoints,
- () -> config.locations.crimsonIsle.kuudra.ballistaBuildWaypoints,
- newValue -> config.locations.crimsonIsle.kuudra.ballistaBuildWaypoints = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra.safeSpotWaypoints"))
- .binding(defaults.locations.crimsonIsle.kuudra.safeSpotWaypoints,
- () -> config.locations.crimsonIsle.kuudra.safeSpotWaypoints,
- newValue -> config.locations.crimsonIsle.kuudra.safeSpotWaypoints = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra.pearlWaypoints"))
- .binding(defaults.locations.crimsonIsle.kuudra.pearlWaypoints,
- () -> config.locations.crimsonIsle.kuudra.pearlWaypoints,
- newValue -> config.locations.crimsonIsle.kuudra.pearlWaypoints = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra.noArrowPoisonWarning"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra.noArrowPoisonWarning.@Tooltip")))
- .binding(defaults.locations.crimsonIsle.kuudra.noArrowPoisonWarning,
- () -> config.locations.crimsonIsle.kuudra.noArrowPoisonWarning,
- newValue -> config.locations.crimsonIsle.kuudra.noArrowPoisonWarning = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Integer>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra.arrowPoisonThreshold"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.crimsonIsle.kuudra.arrowPoisonThreshold.@Tooltip")))
- .binding(defaults.locations.crimsonIsle.kuudra.arrowPoisonThreshold,
- () -> config.locations.crimsonIsle.kuudra.arrowPoisonThreshold,
- newValue -> config.locations.crimsonIsle.kuudra.arrowPoisonThreshold = newValue)
- .controller(IntegerFieldControllerBuilder::create)
- .build())
- .build())
- .build();
- }
+ //Kuudra
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.crimsonIsle.kuudra"))
+ .collapsed(false)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.crimsonIsle.kuudra.supplyWaypoints"))
+ .binding(defaults.crimsonIsle.kuudra.supplyWaypoints,
+ () -> config.crimsonIsle.kuudra.supplyWaypoints,
+ newValue -> config.crimsonIsle.kuudra.supplyWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.crimsonIsle.kuudra.fuelWaypoints"))
+ .binding(defaults.crimsonIsle.kuudra.fuelWaypoints,
+ () -> config.crimsonIsle.kuudra.fuelWaypoints,
+ newValue -> config.crimsonIsle.kuudra.fuelWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Waypoint.Type>createBuilder()
+ .name(Text.translatable("skyblocker.config.crimsonIsle.kuudra.suppliesAndFuelWaypointType"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.secretWaypoints.waypointType.@Tooltip"),
+ Text.translatable("skyblocker.config.dungeons.secretWaypoints.waypointType.generalNote")))
+ .binding(defaults.crimsonIsle.kuudra.suppliesAndFuelWaypointType,
+ () -> config.crimsonIsle.kuudra.suppliesAndFuelWaypointType,
+ newValue -> config.crimsonIsle.kuudra.suppliesAndFuelWaypointType = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.crimsonIsle.kuudra.ballistaBuildWaypoints"))
+ .binding(defaults.crimsonIsle.kuudra.ballistaBuildWaypoints,
+ () -> config.crimsonIsle.kuudra.ballistaBuildWaypoints,
+ newValue -> config.crimsonIsle.kuudra.ballistaBuildWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.crimsonIsle.kuudra.safeSpotWaypoints"))
+ .binding(defaults.crimsonIsle.kuudra.safeSpotWaypoints,
+ () -> config.crimsonIsle.kuudra.safeSpotWaypoints,
+ newValue -> config.crimsonIsle.kuudra.safeSpotWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.crimsonIsle.kuudra.pearlWaypoints"))
+ .binding(defaults.crimsonIsle.kuudra.pearlWaypoints,
+ () -> config.crimsonIsle.kuudra.pearlWaypoints,
+ newValue -> config.crimsonIsle.kuudra.pearlWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.crimsonIsle.kuudra.noArrowPoisonWarning"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.crimsonIsle.kuudra.noArrowPoisonWarning.@Tooltip")))
+ .binding(defaults.crimsonIsle.kuudra.noArrowPoisonWarning,
+ () -> config.crimsonIsle.kuudra.noArrowPoisonWarning,
+ newValue -> config.crimsonIsle.kuudra.noArrowPoisonWarning = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.crimsonIsle.kuudra.arrowPoisonThreshold"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.crimsonIsle.kuudra.arrowPoisonThreshold.@Tooltip")))
+ .binding(defaults.crimsonIsle.kuudra.arrowPoisonThreshold,
+ () -> config.crimsonIsle.kuudra.arrowPoisonThreshold,
+ newValue -> config.crimsonIsle.kuudra.arrowPoisonThreshold = newValue)
+ .controller(IntegerFieldControllerBuilder::create)
+ .build())
+ .build())
+ .build();
+ }
}
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/DiscordRPCCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/DiscordRPCCategory.java
deleted file mode 100644
index 907291ca..00000000
--- a/src/main/java/de/hysky/skyblocker/config/categories/DiscordRPCCategory.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package de.hysky.skyblocker.config.categories;
-
-import de.hysky.skyblocker.config.ConfigUtils;
-import de.hysky.skyblocker.config.SkyblockerConfig;
-import dev.isxander.yacl3.api.ConfigCategory;
-import dev.isxander.yacl3.api.Option;
-import dev.isxander.yacl3.api.OptionDescription;
-import dev.isxander.yacl3.api.controller.StringControllerBuilder;
-import net.minecraft.text.Text;
-
-public class DiscordRPCCategory {
-
- public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) {
- return ConfigCategory.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.category.richPresence"))
-
- //Uncategorized Options
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.richPresence.enableRichPresence"))
- .binding(defaults.richPresence.enableRichPresence,
- () -> config.richPresence.enableRichPresence,
- newValue -> config.richPresence.enableRichPresence = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<SkyblockerConfig.Info>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::createEnumCyclingListController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.richPresence.cycleMode"))
- .binding(defaults.richPresence.cycleMode,
- () -> config.richPresence.cycleMode,
- newValue -> config.richPresence.cycleMode = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<String>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/de/hysky/skyblocker/config/categories/DungeonsCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/DungeonsCategory.java
index 77d2da6d..d44ab490 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/DungeonsCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/DungeonsCategory.java
@@ -2,6 +2,7 @@ package de.hysky.skyblocker.config.categories;
import de.hysky.skyblocker.config.ConfigUtils;
import de.hysky.skyblocker.config.SkyblockerConfig;
+import de.hysky.skyblocker.config.configs.DungeonsConfig;
import de.hysky.skyblocker.skyblock.dungeon.DungeonMapConfigScreen;
import de.hysky.skyblocker.utils.waypoint.Waypoint.Type;
import dev.isxander.yacl3.api.*;
@@ -14,573 +15,604 @@ import net.minecraft.util.Formatting;
public class DungeonsCategory {
- public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) {
- return ConfigCategory.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons"))
+ public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) {
+ return ConfigCategory.createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons"))
- //Dungeon Secret Waypoints
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints"))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enableRoomMatching"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enableRoomMatching.@Tooltip")))
- .binding(defaults.locations.dungeons.secretWaypoints.enableRoomMatching,
- () -> config.locations.dungeons.secretWaypoints.enableRoomMatching,
- newValue -> config.locations.dungeons.secretWaypoints.enableRoomMatching = newValue)
- .controller(ConfigUtils::createBooleanController)
- .flag(OptionFlag.GAME_RESTART)
- .build())
- .option(Option.<Boolean>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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Type>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.waypoints.waypointType"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.waypoints.waypointType.@Tooltip")))
- .binding(defaults.locations.dungeons.secretWaypoints.waypointType,
- () -> config.locations.dungeons.secretWaypoints.waypointType,
- newValue -> config.locations.dungeons.secretWaypoints.waypointType = newValue)
- .controller(ConfigUtils::createEnumCyclingListController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.showSecretText"))
- .binding(defaults.locations.dungeons.secretWaypoints.showSecretText,
- () -> config.locations.dungeons.secretWaypoints.showSecretText,
- newValue -> config.locations.dungeons.secretWaypoints.showSecretText = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>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(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(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(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(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(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(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(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(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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enableAotvWaypoints"))
- .binding(defaults.locations.dungeons.secretWaypoints.enableAotvWaypoints,
- () -> config.locations.dungeons.secretWaypoints.enableAotvWaypoints,
- newValue -> config.locations.dungeons.secretWaypoints.enableAotvWaypoints = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enablePearlWaypoints"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.secretWaypoints.enablePearlWaypoints.@Tooltip")))
- .binding(defaults.locations.dungeons.secretWaypoints.enablePearlWaypoints,
- () -> config.locations.dungeons.secretWaypoints.enablePearlWaypoints,
- newValue -> config.locations.dungeons.secretWaypoints.enablePearlWaypoints = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>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(ConfigUtils::createBooleanController)
- .build())
- .build())
+ //Ungrouped Options
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.fancyPartyFinder"))
+ .binding(defaults.dungeons.fancyPartyFinder,
+ () -> config.dungeons.fancyPartyFinder,
+ newValue -> config.dungeons.fancyPartyFinder = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.croesusHelper"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.croesusHelper.@Tooltip")))
+ .binding(defaults.dungeons.croesusHelper,
+ () -> config.dungeons.croesusHelper,
+ newValue -> config.dungeons.croesusHelper = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.playerSecretsTracker"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.playerSecretsTracker.@Tooltip")))
+ .binding(defaults.dungeons.playerSecretsTracker,
+ () -> config.dungeons.playerSecretsTracker,
+ newValue -> config.dungeons.playerSecretsTracker = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.starredMobGlow"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.starredMobGlow.@Tooltip")))
+ .binding(defaults.dungeons.starredMobGlow,
+ () -> config.dungeons.starredMobGlow,
+ newValue -> config.dungeons.starredMobGlow = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.starredMobBoundingBoxes"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.starredMobBoundingBoxes.@Tooltip")))
+ .binding(defaults.dungeons.starredMobBoundingBoxes,
+ () -> config.dungeons.starredMobBoundingBoxes,
+ newValue -> config.dungeons.starredMobBoundingBoxes = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.allowDroppingProtectedItems"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.allowDroppingProtectedItems.@Tooltip")))
+ .binding(defaults.dungeons.allowDroppingProtectedItems,
+ () -> config.dungeons.allowDroppingProtectedItems,
+ newValue -> config.dungeons.allowDroppingProtectedItems = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
- //Dungeon Door Highlight
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.doorHighlight"))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.doorHighlight.enableDoorHighlight"))
- .binding(defaults.locations.dungeons.doorHighlight.enableDoorHighlight,
- () -> config.locations.dungeons.doorHighlight.enableDoorHighlight,
- newValue -> config.locations.dungeons.doorHighlight.enableDoorHighlight = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<SkyblockerConfig.DoorHighlight.Type>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.doorHighlight.doorHighlightType"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.doorHighlight.doorHighlightType.@Tooltip"), Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.doorHighlight.doorHighlightType.secretWaypointsNote")))
- .binding(defaults.locations.dungeons.doorHighlight.doorHighlightType,
- () -> config.locations.dungeons.doorHighlight.doorHighlightType,
- newValue -> config.locations.dungeons.doorHighlight.doorHighlightType = newValue)
- .controller(ConfigUtils::createEnumCyclingListController)
- .build())
- .build())
+ // Map
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.map"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.map.enableMap"))
+ .binding(defaults.dungeons.dungeonMap.enableMap,
+ () -> config.dungeons.dungeonMap.enableMap,
+ newValue -> config.dungeons.dungeonMap.enableMap = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Float>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.map.mapScaling"))
+ .binding(defaults.dungeons.dungeonMap.mapScaling,
+ () -> config.dungeons.dungeonMap.mapScaling,
+ newValue -> config.dungeons.dungeonMap.mapScaling = newValue)
+ .controller(FloatFieldControllerBuilder::create)
+ .build())
+ .option(ButtonOption.createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.map.mapScreen"))
+ .text(Text.translatable("text.skyblocker.open"))
+ .action((screen, opt) -> MinecraftClient.getInstance().setScreen(new DungeonMapConfigScreen(screen)))
+ .build())
+ .build())
- //Dungeon Score
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore"))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.enableDungeonScoreMessage", 270))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.enableDungeonScoreMessage.@Tooltip", 270)))
- .binding(defaults.locations.dungeons.dungeonScore.enableDungeonScore270Message,
- () -> config.locations.dungeons.dungeonScore.enableDungeonScore270Message,
- newValue -> config.locations.dungeons.dungeonScore.enableDungeonScore270Message = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.enableDungeonScoreTitle", 270))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.enableDungeonScoreTitle.@Tooltip", 270)))
- .binding(defaults.locations.dungeons.dungeonScore.enableDungeonScore270Title,
- () -> config.locations.dungeons.dungeonScore.enableDungeonScore270Title,
- newValue -> config.locations.dungeons.dungeonScore.enableDungeonScore270Title = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.enableDungeonScoreSound", 270))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.enableDungeonScoreSound.@Tooltip", 270)))
- .binding(defaults.locations.dungeons.dungeonScore.enableDungeonScore270Sound,
- () -> config.locations.dungeons.dungeonScore.enableDungeonScore270Sound,
- newValue -> config.locations.dungeons.dungeonScore.enableDungeonScore270Sound = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.dungeonScoreMessage", 270))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.dungeonScoreMessage.@Tooltip", 270, 270)))
- .binding(defaults.locations.dungeons.dungeonScore.dungeonScore270Message,
- () -> config.locations.dungeons.dungeonScore.dungeonScore270Message,
- newValue -> config.locations.dungeons.dungeonScore.dungeonScore270Message = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.enableDungeonScoreMessage", 300))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.enableDungeonScoreMessage.@Tooltip", 300)))
- .binding(defaults.locations.dungeons.dungeonScore.enableDungeonScore300Message,
- () -> config.locations.dungeons.dungeonScore.enableDungeonScore300Message,
- newValue -> config.locations.dungeons.dungeonScore.enableDungeonScore300Message = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.enableDungeonScoreTitle", 300))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.enableDungeonScoreTitle.@Tooltip", 300)))
- .binding(defaults.locations.dungeons.dungeonScore.enableDungeonScore300Title,
- () -> config.locations.dungeons.dungeonScore.enableDungeonScore300Title,
- newValue -> config.locations.dungeons.dungeonScore.enableDungeonScore300Title = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.enableDungeonScoreSound", 300))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.enableDungeonScoreSound.@Tooltip", 300)))
- .binding(defaults.locations.dungeons.dungeonScore.enableDungeonScore300Sound,
- () -> config.locations.dungeons.dungeonScore.enableDungeonScore300Sound,
- newValue -> config.locations.dungeons.dungeonScore.enableDungeonScore300Sound = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.dungeonScoreMessage", 300))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.dungeonScoreMessage.@Tooltip", 300, 300)))
- .binding(defaults.locations.dungeons.dungeonScore.dungeonScore300Message,
- () -> config.locations.dungeons.dungeonScore.dungeonScore300Message,
- newValue -> config.locations.dungeons.dungeonScore.dungeonScore300Message = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.enableDungeonCryptsMessage"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.enableDungeonCryptsMessage.@Tooltip")))
- .binding(defaults.locations.dungeons.dungeonScore.enableDungeonCryptsMessage,
- () -> config.locations.dungeons.dungeonScore.enableDungeonCryptsMessage,
- newValue -> config.locations.dungeons.dungeonScore.enableDungeonCryptsMessage = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Integer>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.dungeonCryptsMessageThreshold"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.dungeonCryptsMessageThreshold.@Tooltip")))
- .binding(defaults.locations.dungeons.dungeonScore.dungeonCryptsMessageThreshold,
- () -> config.locations.dungeons.dungeonScore.dungeonCryptsMessageThreshold,
- newValue -> config.locations.dungeons.dungeonScore.dungeonCryptsMessageThreshold = newValue)
- .controller(IntegerFieldControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.dungeonCryptsMessage"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.dungeonCryptsMessage.@Tooltip")))
- .binding(defaults.locations.dungeons.dungeonScore.dungeonCryptsMessage,
- () -> config.locations.dungeons.dungeonScore.dungeonCryptsMessage,
- newValue -> config.locations.dungeons.dungeonScore.dungeonCryptsMessage = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.enableScoreHUD"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.enableScoreHUD.@Tooltip"), Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.enableScoreHUD.deathMessagesNote")))
- .binding(defaults.locations.dungeons.dungeonScore.enableScoreHUD,
- () -> config.locations.dungeons.dungeonScore.enableScoreHUD,
- newValue -> config.locations.dungeons.dungeonScore.enableScoreHUD = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Float>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonScore.scoreScaling"))
- .binding(defaults.locations.dungeons.dungeonScore.scoreScaling,
- () -> config.locations.dungeons.dungeonScore.scoreScaling,
- newValue -> {
- config.locations.dungeons.dungeonScore.scoreX = config.locations.dungeons.dungeonScore.scoreX + (int) ((config.locations.dungeons.dungeonScore.scoreScaling - newValue) * 38.0);
- config.locations.dungeons.dungeonScore.scoreY = config.locations.dungeons.dungeonScore.scoreY + (int) ((config.locations.dungeons.dungeonScore.scoreScaling - newValue) * MinecraftClient.getInstance().textRenderer.fontHeight / 2.0);
- config.locations.dungeons.dungeonScore.scoreScaling = newValue;
- })
- .controller(FloatFieldControllerBuilder::create)
- .build())
- .build())
+ // Puzzle Solver
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.puzzle"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.puzzle.solveTicTacToe"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.puzzle.solveTicTacToe.@Tooltip")))
+ .binding(defaults.dungeons.puzzleSolvers.solveTicTacToe,
+ () -> config.dungeons.puzzleSolvers.solveTicTacToe,
+ newValue -> config.dungeons.puzzleSolvers.solveTicTacToe = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.puzzle.solveThreeWeirdos"))
+ .binding(defaults.dungeons.puzzleSolvers.solveThreeWeirdos,
+ () -> config.dungeons.puzzleSolvers.solveThreeWeirdos,
+ newValue -> config.dungeons.puzzleSolvers.solveThreeWeirdos = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.puzzle.creeperSolver"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.puzzle.creeperSolver.@Tooltip")))
+ .binding(defaults.dungeons.puzzleSolvers.creeperSolver,
+ () -> config.dungeons.puzzleSolvers.creeperSolver,
+ newValue -> config.dungeons.puzzleSolvers.creeperSolver = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.puzzle.solveWaterboard"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.puzzle.solveWaterboard.@Tooltip")))
+ .binding(defaults.dungeons.puzzleSolvers.solveWaterboard,
+ () -> config.dungeons.puzzleSolvers.solveWaterboard,
+ newValue -> config.dungeons.puzzleSolvers.solveWaterboard = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.puzzle.blazeSolver"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.puzzle.blazeSolver.@Tooltip")))
+ .binding(defaults.dungeons.puzzleSolvers.blazeSolver,
+ () -> config.dungeons.puzzleSolvers.blazeSolver,
+ newValue -> config.dungeons.puzzleSolvers.blazeSolver = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.puzzle.solveBoulder"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.puzzle.solveBoulder.@Tooltip")))
+ .binding(defaults.dungeons.puzzleSolvers.solveBoulder,
+ () -> config.dungeons.puzzleSolvers.solveBoulder,
+ newValue -> config.dungeons.puzzleSolvers.solveBoulder = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.puzzle.solveIceFill"))
+ .binding(defaults.dungeons.puzzleSolvers.solveIceFill,
+ () -> config.dungeons.puzzleSolvers.solveIceFill,
+ newValue -> config.dungeons.puzzleSolvers.solveIceFill = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.puzzle.solveSilverfish"))
+ .binding(defaults.dungeons.puzzleSolvers.solveSilverfish,
+ () -> config.dungeons.puzzleSolvers.solveSilverfish,
+ newValue -> config.dungeons.puzzleSolvers.solveSilverfish = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.puzzle.solveTrivia"))
+ .binding(defaults.dungeons.puzzleSolvers.solveTrivia,
+ () -> config.dungeons.puzzleSolvers.solveTrivia,
+ newValue -> config.dungeons.puzzleSolvers.solveTrivia = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
- //Dungeon Chest Profit
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit"))
- .collapsed(true)
- .option(Option.<Boolean>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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.croesusProfit"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.croesusProfit.@Tooltip")))
- .binding(defaults.locations.dungeons.dungeonChestProfit.croesusProfit,
- () -> config.locations.dungeons.dungeonChestProfit.croesusProfit,
- newValue -> config.locations.dungeons.dungeonChestProfit.croesusProfit = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Integer>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.<Formatting>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.getEnumDropdownControllerFactory(ConfigUtils.FORMATTING_FORMATTER))
- .build())
- .option(Option.<Formatting>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.getEnumDropdownControllerFactory(ConfigUtils.FORMATTING_FORMATTER))
- .build())
- .option(Option.<Formatting>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.getEnumDropdownControllerFactory(ConfigUtils.FORMATTING_FORMATTER))
- .build())
- .option(Option.<Formatting>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.chestValue.incompleteColor"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.chestValue.incompleteColor.@Tooltip")))
- .binding(defaults.locations.dungeons.dungeonChestProfit.incompleteColor,
- () -> config.locations.dungeons.dungeonChestProfit.incompleteColor,
- newValue -> config.locations.dungeons.dungeonChestProfit.incompleteColor = newValue)
- .controller(ConfigUtils.getEnumDropdownControllerFactory(ConfigUtils.FORMATTING_FORMATTER))
- .build())
- .build())
+ // The Professor (F3/M3)
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.professor"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.professor.fireFreezeStaffTimer"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.professor.fireFreezeStaffTimer.@Tooltip")))
+ .binding(defaults.dungeons.theProfessor.fireFreezeStaffTimer,
+ () -> config.dungeons.theProfessor.fireFreezeStaffTimer,
+ newValue -> config.dungeons.theProfessor.fireFreezeStaffTimer = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.professor.floor3GuardianHealthDisplay"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.professor.floor3GuardianHealthDisplay.@Tooltip")))
+ .binding(defaults.dungeons.theProfessor.floor3GuardianHealthDisplay,
+ () -> config.dungeons.theProfessor.floor3GuardianHealthDisplay,
+ newValue -> config.dungeons.theProfessor.floor3GuardianHealthDisplay = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
- //Others
- .option(Option.<Boolean>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(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(ConfigUtils::createBooleanController)
- .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.<Float>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.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.playerSecretsTracker"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.playerSecretsTracker.@Tooltip")))
- .binding(defaults.locations.dungeons.playerSecretsTracker,
- () -> config.locations.dungeons.playerSecretsTracker,
- newValue -> config.locations.dungeons.playerSecretsTracker = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.starredMobBoundingBoxes"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.starredMobBoundingBoxes.@Tooltip")))
- .binding(defaults.locations.dungeons.starredMobBoundingBoxes,
- () -> config.locations.dungeons.starredMobBoundingBoxes,
- newValue -> config.locations.dungeons.starredMobBoundingBoxes = newValue)
- .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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.creeperSolver"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.creeperSolver.@Tooltip")))
- .binding(defaults.locations.dungeons.creeperSolver,
- () -> config.locations.dungeons.creeperSolver,
- newValue -> config.locations.dungeons.creeperSolver = newValue)
- .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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.solveWaterboard"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.solveWaterboard.@Tooltip")))
- .binding(defaults.locations.dungeons.solveWaterboard,
- () -> config.locations.dungeons.solveWaterboard,
- newValue -> config.locations.dungeons.solveWaterboard = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.solveBoulder"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.solveBoulder.@Tooltip")))
- .binding(defaults.locations.dungeons.solveBoulder,
- () -> config.locations.dungeons.solveBoulder,
- newValue -> config.locations.dungeons.solveBoulder = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.solveIceFill"))
- .binding(defaults.locations.dungeons.solveIceFill,
- () -> config.locations.dungeons.solveIceFill,
- newValue -> config.locations.dungeons.solveIceFill = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.solveSilverfish"))
- .binding(defaults.locations.dungeons.solveSilverfish,
- () -> config.locations.dungeons.solveSilverfish,
- newValue -> config.locations.dungeons.solveSilverfish = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.fireFreezeStaffTimer"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.fireFreezeStaffTimer.@Tooltip")))
- .binding(defaults.locations.dungeons.fireFreezeStaffTimer,
- () -> config.locations.dungeons.fireFreezeStaffTimer,
- newValue -> config.locations.dungeons.fireFreezeStaffTimer = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.floor3GuardianHealthDisplay"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.floor3GuardianHealthDisplay.@Tooltip")))
- .binding(defaults.locations.dungeons.floor3GuardianHealthDisplay,
- () -> config.locations.dungeons.floor3GuardianHealthDisplay,
- newValue -> config.locations.dungeons.floor3GuardianHealthDisplay = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.allowDroppingProtectedItems"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.allowDroppingProtectedItems.@Tooltip")))
- .binding(defaults.locations.dungeons.allowDroppingProtectedItems,
- () -> config.locations.dungeons.allowDroppingProtectedItems,
- newValue -> config.locations.dungeons.allowDroppingProtectedItems = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
+ // Livid (F5/M5)
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.livid"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.livid.enableLividColorGlow"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.livid.enableLividColorGlow.@Tooltip")))
+ .binding(defaults.dungeons.livid.enableLividColorGlow,
+ () -> config.dungeons.livid.enableLividColorGlow,
+ newValue -> config.dungeons.livid.enableLividColorGlow = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.livid.enableLividColorText"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.livid.enableLividColorText.@Tooltip")))
+ .binding(defaults.dungeons.livid.enableLividColorText,
+ () -> config.dungeons.livid.enableLividColorText,
+ newValue -> config.dungeons.livid.enableLividColorText = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.livid.enableLividColorTitle"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.livid.enableLividColorTitle.@Tooltip")))
+ .binding(defaults.dungeons.livid.enableLividColorTitle,
+ () -> config.dungeons.livid.enableLividColorTitle,
+ newValue -> config.dungeons.livid.enableLividColorTitle = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.livid.lividColorText"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.livid.lividColorText.@Tooltip")))
+ .binding(defaults.dungeons.livid.lividColorText,
+ () -> config.dungeons.livid.lividColorText,
+ newValue -> config.dungeons.livid.lividColorText = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .build())
- //Mimic Message
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.mimicMessage"))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.mimicMessage.sendMimicMessage"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.mimicMessage.sendMimicMessage.@Tooltip")))
- .binding(defaults.locations.dungeons.mimicMessage.sendMimicMessage,
- () -> config.locations.dungeons.mimicMessage.sendMimicMessage,
- newValue -> config.locations.dungeons.mimicMessage.sendMimicMessage = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.mimicMessage.mimicMessage"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.mimicMessage.mimicMessage.@Tooltip")))
- .binding(defaults.locations.dungeons.mimicMessage.mimicMessage,
- () -> config.locations.dungeons.mimicMessage.mimicMessage,
- newValue -> config.locations.dungeons.mimicMessage.mimicMessage = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .build())
+ // Terminal (F7/M7)
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.terminals"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.terminals.solveColor"))
+ .binding(defaults.dungeons.terminals.solveColor,
+ () -> config.dungeons.terminals.solveColor,
+ newValue -> config.dungeons.terminals.solveColor = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.terminals.solveOrder"))
+ .binding(defaults.dungeons.terminals.solveOrder,
+ () -> config.dungeons.terminals.solveOrder,
+ newValue -> config.dungeons.terminals.solveOrder = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.terminals.solveStartsWith"))
+ .binding(defaults.dungeons.terminals.solveStartsWith,
+ () -> config.dungeons.terminals.solveStartsWith,
+ newValue -> config.dungeons.terminals.solveStartsWith = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
- //Livid Color
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.lividColor"))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.lividColor.enableLividColorGlow"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.lividColor.enableLividColorGlow.@Tooltip")))
- .binding(defaults.locations.dungeons.lividColor.enableLividColorGlow,
- () -> config.locations.dungeons.lividColor.enableLividColorGlow,
- newValue -> config.locations.dungeons.lividColor.enableLividColorGlow = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.lividColor.enableLividColorText"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.lividColor.enableLividColorText.@Tooltip")))
- .binding(defaults.locations.dungeons.lividColor.enableLividColorText,
- () -> config.locations.dungeons.lividColor.enableLividColorText,
- newValue -> config.locations.dungeons.lividColor.enableLividColorText = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.lividColor.enableLividColorTitle"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.lividColor.enableLividColorTitle.@Tooltip")))
- .binding(defaults.locations.dungeons.lividColor.enableLividColorTitle,
- () -> config.locations.dungeons.lividColor.enableLividColorTitle,
- newValue -> config.locations.dungeons.lividColor.enableLividColorTitle = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<String>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())
+ // Dungeon Secret Waypoints
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableRoomMatching"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableRoomMatching.@Tooltip")))
+ .binding(defaults.dungeons.secretWaypoints.enableRoomMatching,
+ () -> config.dungeons.secretWaypoints.enableRoomMatching,
+ newValue -> config.dungeons.secretWaypoints.enableRoomMatching = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .flag(OptionFlag.GAME_RESTART)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableSecretWaypoints"))
+ .binding(defaults.dungeons.secretWaypoints.enableSecretWaypoints,
+ () -> config.dungeons.secretWaypoints.enableSecretWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enableSecretWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Type>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.waypointType"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.secretWaypoints.waypointType.@Tooltip"),
+ Text.translatable("skyblocker.config.dungeons.secretWaypoints.waypointType.generalNote")))
+ .binding(defaults.dungeons.secretWaypoints.waypointType,
+ () -> config.dungeons.secretWaypoints.waypointType,
+ newValue -> config.dungeons.secretWaypoints.waypointType = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.showSecretText"))
+ .binding(defaults.dungeons.secretWaypoints.showSecretText,
+ () -> config.dungeons.secretWaypoints.showSecretText,
+ newValue -> config.dungeons.secretWaypoints.showSecretText = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableEntranceWaypoints"))
+ .binding(defaults.dungeons.secretWaypoints.enableEntranceWaypoints,
+ () -> config.dungeons.secretWaypoints.enableEntranceWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enableEntranceWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableSuperboomWaypoints"))
+ .binding(defaults.dungeons.secretWaypoints.enableSuperboomWaypoints,
+ () -> config.dungeons.secretWaypoints.enableSuperboomWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enableSuperboomWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableChestWaypoints"))
+ .binding(defaults.dungeons.secretWaypoints.enableChestWaypoints,
+ () -> config.dungeons.secretWaypoints.enableChestWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enableChestWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableItemWaypoints"))
+ .binding(defaults.dungeons.secretWaypoints.enableItemWaypoints,
+ () -> config.dungeons.secretWaypoints.enableItemWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enableItemWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableBatWaypoints"))
+ .binding(defaults.dungeons.secretWaypoints.enableBatWaypoints,
+ () -> config.dungeons.secretWaypoints.enableBatWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enableBatWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableWitherWaypoints"))
+ .binding(defaults.dungeons.secretWaypoints.enableWitherWaypoints,
+ () -> config.dungeons.secretWaypoints.enableWitherWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enableWitherWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableLeverWaypoints"))
+ .binding(defaults.dungeons.secretWaypoints.enableLeverWaypoints,
+ () -> config.dungeons.secretWaypoints.enableLeverWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enableLeverWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableFairySoulWaypoints"))
+ .binding(defaults.dungeons.secretWaypoints.enableFairySoulWaypoints,
+ () -> config.dungeons.secretWaypoints.enableFairySoulWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enableFairySoulWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableStonkWaypoints"))
+ .binding(defaults.dungeons.secretWaypoints.enableStonkWaypoints,
+ () -> config.dungeons.secretWaypoints.enableStonkWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enableStonkWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableAotvWaypoints"))
+ .binding(defaults.dungeons.secretWaypoints.enableAotvWaypoints,
+ () -> config.dungeons.secretWaypoints.enableAotvWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enableAotvWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enablePearlWaypoints"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enablePearlWaypoints.@Tooltip")))
+ .binding(defaults.dungeons.secretWaypoints.enablePearlWaypoints,
+ () -> config.dungeons.secretWaypoints.enablePearlWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enablePearlWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableDefaultWaypoints"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableDefaultWaypoints.@Tooltip")))
+ .binding(defaults.dungeons.secretWaypoints.enableDefaultWaypoints,
+ () -> config.dungeons.secretWaypoints.enableDefaultWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enableDefaultWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
- //Terminal Solvers
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.terminals"))
- .collapsed(true)
- .option(Option.<Boolean>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(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(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(ConfigUtils::createBooleanController)
- .build())
- .build())
- .build();
- }
+ // Mimic Message
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.mimicMessage"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.mimicMessage.sendMimicMessage"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.mimicMessage.sendMimicMessage.@Tooltip")))
+ .binding(defaults.dungeons.mimicMessage.sendMimicMessage,
+ () -> config.dungeons.mimicMessage.sendMimicMessage,
+ newValue -> config.dungeons.mimicMessage.sendMimicMessage = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.mimicMessage.mimicMessage"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.mimicMessage.mimicMessage.@Tooltip")))
+ .binding(defaults.dungeons.mimicMessage.mimicMessage,
+ () -> config.dungeons.mimicMessage.mimicMessage,
+ newValue -> config.dungeons.mimicMessage.mimicMessage = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .build())
+
+ // Door Highlight
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.doorHighlight"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.doorHighlight.enableDoorHighlight"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.doorHighlight.enableDoorHighlight.@Tooltip")))
+ .binding(defaults.dungeons.doorHighlight.enableDoorHighlight,
+ () -> config.dungeons.doorHighlight.enableDoorHighlight,
+ newValue -> config.dungeons.doorHighlight.enableDoorHighlight = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<DungeonsConfig.DoorHighlight.Type>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.doorHighlight.doorHighlightType"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.doorHighlight.doorHighlightType.@Tooltip"),
+ Text.translatable("skyblocker.config.dungeons.doorHighlight.doorHighlightType.secretWaypointsNote")))
+ .binding(defaults.dungeons.doorHighlight.doorHighlightType,
+ () -> config.dungeons.doorHighlight.doorHighlightType,
+ newValue -> config.dungeons.doorHighlight.doorHighlightType = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .build())
+
+ // Dungeon Score
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreMessage", 270))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreMessage.@Tooltip", 270)))
+ .binding(defaults.dungeons.dungeonScore.enableDungeonScore270Message,
+ () -> config.dungeons.dungeonScore.enableDungeonScore270Message,
+ newValue -> config.dungeons.dungeonScore.enableDungeonScore270Message = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreTitle", 270))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreTitle.@Tooltip", 270)))
+ .binding(defaults.dungeons.dungeonScore.enableDungeonScore270Title,
+ () -> config.dungeons.dungeonScore.enableDungeonScore270Title,
+ newValue -> config.dungeons.dungeonScore.enableDungeonScore270Title = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreSound", 270))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreSound.@Tooltip", 270)))
+ .binding(defaults.dungeons.dungeonScore.enableDungeonScore270Sound,
+ () -> config.dungeons.dungeonScore.enableDungeonScore270Sound,
+ newValue -> config.dungeons.dungeonScore.enableDungeonScore270Sound = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.dungeonScoreMessage", 270))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.dungeonScoreMessage.@Tooltip", 270, 270)))
+ .binding(defaults.dungeons.dungeonScore.dungeonScore270Message,
+ () -> config.dungeons.dungeonScore.dungeonScore270Message,
+ newValue -> config.dungeons.dungeonScore.dungeonScore270Message = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreMessage", 300))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreMessage.@Tooltip", 300)))
+ .binding(defaults.dungeons.dungeonScore.enableDungeonScore300Message,
+ () -> config.dungeons.dungeonScore.enableDungeonScore300Message,
+ newValue -> config.dungeons.dungeonScore.enableDungeonScore300Message = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreTitle", 300))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreTitle.@Tooltip", 300)))
+ .binding(defaults.dungeons.dungeonScore.enableDungeonScore300Title,
+ () -> config.dungeons.dungeonScore.enableDungeonScore300Title,
+ newValue -> config.dungeons.dungeonScore.enableDungeonScore300Title = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreSound", 300))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreSound.@Tooltip", 300)))
+ .binding(defaults.dungeons.dungeonScore.enableDungeonScore300Sound,
+ () -> config.dungeons.dungeonScore.enableDungeonScore300Sound,
+ newValue -> config.dungeons.dungeonScore.enableDungeonScore300Sound = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.dungeonScoreMessage", 300))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.dungeonScoreMessage.@Tooltip", 300, 300)))
+ .binding(defaults.dungeons.dungeonScore.dungeonScore300Message,
+ () -> config.dungeons.dungeonScore.dungeonScore300Message,
+ newValue -> config.dungeons.dungeonScore.dungeonScore300Message = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonCryptsMessage"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonCryptsMessage.@Tooltip")))
+ .binding(defaults.dungeons.dungeonScore.enableDungeonCryptsMessage,
+ () -> config.dungeons.dungeonScore.enableDungeonCryptsMessage,
+ newValue -> config.dungeons.dungeonScore.enableDungeonCryptsMessage = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.dungeonCryptsMessageThreshold"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.dungeonCryptsMessageThreshold.@Tooltip")))
+ .binding(defaults.dungeons.dungeonScore.dungeonCryptsMessageThreshold,
+ () -> config.dungeons.dungeonScore.dungeonCryptsMessageThreshold,
+ newValue -> config.dungeons.dungeonScore.dungeonCryptsMessageThreshold = newValue)
+ .controller(IntegerFieldControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.dungeonCryptsMessage"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.dungeonCryptsMessage.@Tooltip")))
+ .binding(defaults.dungeons.dungeonScore.dungeonCryptsMessage,
+ () -> config.dungeons.dungeonScore.dungeonCryptsMessage,
+ newValue -> config.dungeons.dungeonScore.dungeonCryptsMessage = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableScoreHUD"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableScoreHUD.@Tooltip"),
+ Text.translatable("skyblocker.config.dungeons.dungeonScore.enableScoreHUD.deathMessagesNote")))
+ .binding(defaults.dungeons.dungeonScore.enableScoreHUD,
+ () -> config.dungeons.dungeonScore.enableScoreHUD,
+ newValue -> config.dungeons.dungeonScore.enableScoreHUD = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Float>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.scoreScaling"))
+ .binding(defaults.dungeons.dungeonScore.scoreScaling,
+ () -> config.dungeons.dungeonScore.scoreScaling,
+ newValue -> {
+ config.dungeons.dungeonScore.scoreX = config.dungeons.dungeonScore.scoreX + (int) ((config.dungeons.dungeonScore.scoreScaling - newValue) * 38.0);
+ config.dungeons.dungeonScore.scoreY = config.dungeons.dungeonScore.scoreY + (int) ((config.dungeons.dungeonScore.scoreScaling - newValue) * MinecraftClient.getInstance().textRenderer.fontHeight / 2.0);
+ config.dungeons.dungeonScore.scoreScaling = newValue;
+ })
+ .controller(FloatFieldControllerBuilder::create)
+ .build())
+ .build())
+
+ // Dungeon Chest Profit Calculator
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.enableProfitCalculator"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.enableProfitCalculator.@Tooltip")))
+ .binding(defaults.dungeons.dungeonChestProfit.enableProfitCalculator,
+ () -> config.dungeons.dungeonChestProfit.enableProfitCalculator,
+ newValue -> config.dungeons.dungeonChestProfit.enableProfitCalculator = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.croesusProfit"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.croesusProfit.@Tooltip")))
+ .binding(defaults.dungeons.dungeonChestProfit.croesusProfit,
+ () -> config.dungeons.dungeonChestProfit.croesusProfit,
+ newValue -> config.dungeons.dungeonChestProfit.croesusProfit = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.includeKismet"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.includeKismet.@Tooltip")))
+ .binding(defaults.dungeons.dungeonChestProfit.includeKismet,
+ () -> config.dungeons.dungeonChestProfit.includeKismet,
+ newValue -> config.dungeons.dungeonChestProfit.includeKismet = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.includeEssence"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.includeEssence.@Tooltip")))
+ .binding(defaults.dungeons.dungeonChestProfit.includeEssence,
+ () -> config.dungeons.dungeonChestProfit.includeEssence,
+ newValue -> config.dungeons.dungeonChestProfit.includeEssence = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ //FIXME maybe use color controller
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.neutralThreshold"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.neutralThreshold.@Tooltip")))
+ .binding(defaults.dungeons.dungeonChestProfit.neutralThreshold,
+ () -> config.dungeons.dungeonChestProfit.neutralThreshold,
+ newValue -> config.dungeons.dungeonChestProfit.neutralThreshold = newValue)
+ .controller(IntegerFieldControllerBuilder::create)
+ .build())
+ .option(Option.<Formatting>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.neutralColor"))
+ .binding(defaults.dungeons.dungeonChestProfit.neutralColor,
+ () -> config.dungeons.dungeonChestProfit.neutralColor,
+ newValue -> config.dungeons.dungeonChestProfit.neutralColor = newValue)
+ .controller(ConfigUtils.getEnumDropdownControllerFactory(ConfigUtils.FORMATTING_FORMATTER))
+ .build())
+ .option(Option.<Formatting>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.profitColor"))
+ .binding(defaults.dungeons.dungeonChestProfit.profitColor,
+ () -> config.dungeons.dungeonChestProfit.profitColor,
+ newValue -> config.dungeons.dungeonChestProfit.profitColor = newValue)
+ .controller(ConfigUtils.getEnumDropdownControllerFactory(ConfigUtils.FORMATTING_FORMATTER))
+ .build())
+ .option(Option.<Formatting>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.lossColor"))
+ .binding(defaults.dungeons.dungeonChestProfit.lossColor,
+ () -> config.dungeons.dungeonChestProfit.lossColor,
+ newValue -> config.dungeons.dungeonChestProfit.lossColor = newValue)
+ .controller(ConfigUtils.getEnumDropdownControllerFactory(ConfigUtils.FORMATTING_FORMATTER))
+ .build())
+ .option(Option.<Formatting>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.incompleteColor"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.incompleteColor.@Tooltip")))
+ .binding(defaults.dungeons.dungeonChestProfit.incompleteColor,
+ () -> config.dungeons.dungeonChestProfit.incompleteColor,
+ newValue -> config.dungeons.dungeonChestProfit.incompleteColor = newValue)
+ .controller(ConfigUtils.getEnumDropdownControllerFactory(ConfigUtils.FORMATTING_FORMATTER))
+ .build())
+ .build())
+
+ .build();
+ }
}
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/DwarvenMinesCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/DwarvenMinesCategory.java
deleted file mode 100644
index 43ea8a22..00000000
--- a/src/main/java/de/hysky/skyblocker/config/categories/DwarvenMinesCategory.java
+++ /dev/null
@@ -1,151 +0,0 @@
-package de.hysky.skyblocker.config.categories;
-
-import de.hysky.skyblocker.config.ConfigUtils;
-import de.hysky.skyblocker.config.SkyblockerConfig;
-import de.hysky.skyblocker.skyblock.dwarven.CrystalsHudConfigScreen;
-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 de.hysky.skyblocker.skyblock.dwarven.DwarvenHudConfigScreen;
-import dev.isxander.yacl3.api.controller.FloatFieldControllerBuilder;
-import dev.isxander.yacl3.api.controller.IntegerSliderControllerBuilder;
-import net.minecraft.client.MinecraftClient;
-import net.minecraft.text.Text;
-
-public class DwarvenMinesCategory {
-
- public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) {
- return ConfigCategory.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines"))
-
- //Uncategorized Options
- .option(Option.<Boolean>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(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(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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.metalDetectorHelper"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.metalDetectorHelper.@Tooltip"))) .binding(defaults.locations.dwarvenMines.metalDetectorHelper,
- () -> config.locations.dwarvenMines.metalDetectorHelper,
- newValue -> config.locations.dwarvenMines.metalDetectorHelper = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
-
- //Dwarven HUD
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud"))
- .collapsed(false)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.enabledCommissions"))
- .binding(defaults.locations.dwarvenMines.dwarvenHud.enabledCommissions,
- () -> config.locations.dwarvenMines.dwarvenHud.enabledCommissions,
- newValue -> config.locations.dwarvenMines.dwarvenHud.enabledCommissions = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.enabledPowder"))
- .binding(defaults.locations.dwarvenMines.dwarvenHud.enabledPowder,
- () -> config.locations.dwarvenMines.dwarvenHud.enabledPowder,
- newValue -> config.locations.dwarvenMines.dwarvenHud.enabledPowder = newValue)
- .controller(ConfigUtils::createBooleanController)
- .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]"),
- 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::createEnumCyclingListController)
- .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())
- .build())
- //crystal HUD
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.crystalsHud"))
- .collapsed(false)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.crystalsHud.enabled"))
- .binding(defaults.locations.dwarvenMines.crystalsHud.enabled,
- () -> config.locations.dwarvenMines.crystalsHud.enabled,
- newValue -> config.locations.dwarvenMines.crystalsHud.enabled = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(ButtonOption.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.crystalsHud.screen"))
- .text(Text.translatable("text.skyblocker.open"))
- .action((screen, opt) -> MinecraftClient.getInstance().setScreen(new CrystalsHudConfigScreen(screen)))
- .build())
- .option(Option.<Float>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.crystalsHud.mapScaling"))
- .binding(defaults.locations.dwarvenMines.crystalsHud.mapScaling,
- () -> config.locations.dwarvenMines.crystalsHud.mapScaling,
- newValue -> config.locations.dwarvenMines.crystalsHud.mapScaling = newValue)
- .controller(FloatFieldControllerBuilder::create)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.crystalsHud.showLocations"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.crystalsHud.showLocations.@Tooltip")))
- .binding(defaults.locations.dwarvenMines.crystalsHud.showLocations,
- () -> config.locations.dwarvenMines.crystalsHud.showLocations,
- newValue -> config.locations.dwarvenMines.crystalsHud.showLocations = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Integer>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.crystalsHud.showLocations.locationSize"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.crystalsHud.showLocations.locationSize.@Tooltip")))
- .binding(defaults.locations.dwarvenMines.crystalsHud.locationSize,
- () -> config.locations.dwarvenMines.crystalsHud.locationSize,
- newValue -> config.locations.dwarvenMines.crystalsHud.locationSize = newValue)
- .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(4, 12).step(2))
- .build())
- .build())
- //crystals waypoints
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.crystalsWaypoints"))
- .collapsed(false)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.crystalsWaypoints.enabled"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.crystalsWaypoints.enabled.@Tooltip")))
- .binding(defaults.locations.dwarvenMines.crystalsWaypoints.enabled,
- () -> config.locations.dwarvenMines.crystalsWaypoints.enabled,
- newValue -> config.locations.dwarvenMines.crystalsWaypoints.enabled = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.crystalsWaypoints.findInChat"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dwarvenMines.crystalsWaypoints.findInChat.@Tooltip")))
- .binding(defaults.locations.dwarvenMines.crystalsWaypoints.findInChat,
- () -> config.locations.dwarvenMines.crystalsWaypoints.findInChat,
- newValue -> config.locations.dwarvenMines.crystalsWaypoints.findInChat = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
-
- .build())
- .build();
- }
-}
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/FarmingCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/FarmingCategory.java
new file mode 100644
index 00000000..90b36c72
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/config/categories/FarmingCategory.java
@@ -0,0 +1,66 @@
+package de.hysky.skyblocker.config.categories;
+
+import de.hysky.skyblocker.config.ConfigUtils;
+import de.hysky.skyblocker.config.SkyblockerConfig;
+import de.hysky.skyblocker.skyblock.garden.FarmingHudConfigScreen;
+import dev.isxander.yacl3.api.ButtonOption;
+import dev.isxander.yacl3.api.ConfigCategory;
+import dev.isxander.yacl3.api.Option;
+import dev.isxander.yacl3.api.OptionGroup;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.text.Text;
+
+public class FarmingCategory {
+
+ public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) {
+ return ConfigCategory.createBuilder()
+ .name(Text.translatable("skyblocker.config.farming"))
+
+ //Garden
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.farming.garden"))
+ .collapsed(false)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.farming.garden.enableHud"))
+ .binding(defaults.farming.garden.farmingHud.enableHud,
+ () -> config.farming.garden.farmingHud.enableHud,
+ newValue -> config.farming.garden.farmingHud.enableHud = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(ButtonOption.createBuilder()
+ .name(Text.translatable("skyblocker.config.farming.garden.farmingHud"))
+ .text(Text.translatable("text.skyblocker.open"))
+ .action((screen, opt) -> MinecraftClient.getInstance().setScreen(new FarmingHudConfigScreen(screen)))
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.farming.garden.dicerTitlePrevent"))
+ .binding(defaults.farming.garden.dicerTitlePrevent,
+ () -> config.farming.garden.dicerTitlePrevent,
+ newValue -> config.farming.garden.dicerTitlePrevent = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.farming.garden.visitorHelper"))
+ .binding(defaults.farming.garden.visitorHelper,
+ () -> config.farming.garden.visitorHelper,
+ newValue -> config.farming.garden.visitorHelper = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.farming.garden.lockMouseTool"))
+ .binding(defaults.farming.garden.lockMouseTool,
+ () -> config.farming.garden.lockMouseTool,
+ newValue -> config.farming.garden.lockMouseTool = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.farming.garden.lockMouseGround"))
+ .binding(defaults.farming.garden.lockMouseGroundOnly,
+ () -> config.farming.garden.lockMouseGroundOnly,
+ newValue -> config.farming.garden.lockMouseGroundOnly = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
+ .build();
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java
index 77627242..1477d669 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java
@@ -2,773 +2,317 @@ package de.hysky.skyblocker.config.categories;
import de.hysky.skyblocker.config.ConfigUtils;
import de.hysky.skyblocker.config.SkyblockerConfig;
-import de.hysky.skyblocker.skyblock.fancybars.StatusBarsConfigScreen;
+import de.hysky.skyblocker.config.configs.GeneralConfig;
import de.hysky.skyblocker.skyblock.shortcut.ShortcutsConfigScreen;
-import de.hysky.skyblocker.utils.render.title.TitleContainerConfigScreen;
-import de.hysky.skyblocker.utils.waypoint.Waypoint;
import dev.isxander.yacl3.api.*;
-import dev.isxander.yacl3.api.controller.FloatFieldControllerBuilder;
import dev.isxander.yacl3.api.controller.FloatSliderControllerBuilder;
-import dev.isxander.yacl3.api.controller.IntegerSliderControllerBuilder;
import net.minecraft.client.MinecraftClient;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
public class GeneralCategory {
- public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) {
- return ConfigCategory.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.category.general"))
+ public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) {
+ return ConfigCategory.createBuilder()
+ .name(Text.translatable("skyblocker.config.general"))
- //Ungrouped Options
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.enableTips"))
- .binding(defaults.general.enableTips,
- () -> config.general.enableTips,
- newValue -> config.general.enableTips = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.acceptReparty"))
- .binding(defaults.general.acceptReparty,
- () -> config.general.acceptReparty,
- newValue -> config.general.acceptReparty = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.betterPartyFinder"))
- .binding(defaults.general.betterPartyFinder,
- () -> config.general.betterPartyFinder,
- newValue -> config.general.betterPartyFinder = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.fancyCraftingTable"))
- .binding(defaults.general.fancyCraftingTable,
- () -> config.general.fancyCraftingTable,
- newValue -> config.general.fancyCraftingTable = newValue)
- .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(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(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(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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.dontStripSkinAlphaValues"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.dontStripSkinAlphaValues.@Tooltip")))
- .binding(defaults.general.dontStripSkinAlphaValues,
- () -> config.general.dontStripSkinAlphaValues,
- newValue -> config.general.dontStripSkinAlphaValues = newValue)
- .controller(ConfigUtils::createBooleanController)
- .flag(OptionFlag.ASSET_RELOAD)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.dungeonQuality"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.dungeonQuality.@Tooltip")))
- .binding(defaults.general.dungeonQuality,
- () -> config.general.dungeonQuality,
- newValue -> config.general.dungeonQuality = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.enableNewYearCakesHelper"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.enableNewYearCakesHelper.@Tooltip")))
- .binding(defaults.general.enableNewYearCakesHelper,
- () -> config.general.enableNewYearCakesHelper,
- newValue -> config.general.enableNewYearCakesHelper = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
+ //Ungrouped Options
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.enableTips"))
+ .binding(defaults.general.enableTips,
+ () -> config.general.enableTips,
+ newValue -> config.general.enableTips = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.acceptReparty"))
+ .binding(defaults.general.acceptReparty,
+ () -> config.general.acceptReparty,
+ newValue -> config.general.acceptReparty = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
- //Tab Hud
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.tabHud"))
- .collapsed(true)
- .option(Option.<Boolean>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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Integer>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.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.tabHud.enableHudBackground"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.tabHud.enableHudBackground.@Tooltip")))
- .binding(defaults.general.tabHud.enableHudBackground,
- () -> config.general.tabHud.enableHudBackground,
- newValue -> config.general.tabHud.enableHudBackground = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<SkyblockerConfig.NameSorting>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::createEnumCyclingListController)
- .build())
- .build())
+ //Shortcuts
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.general.shortcuts"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.shortcuts.enableShortcuts"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.general.shortcuts.enableShortcuts.@Tooltip")))
+ .binding(defaults.general.shortcuts.enableShortcuts,
+ () -> config.general.shortcuts.enableShortcuts,
+ newValue -> config.general.shortcuts.enableShortcuts = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.shortcuts.enableCommandShortcuts"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.general.shortcuts.enableCommandShortcuts.@Tooltip")))
+ .binding(defaults.general.shortcuts.enableCommandShortcuts,
+ () -> config.general.shortcuts.enableCommandShortcuts,
+ newValue -> config.general.shortcuts.enableCommandShortcuts = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.shortcuts.enableCommandArgShortcuts"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.general.shortcuts.enableCommandArgShortcuts.@Tooltip")))
+ .binding(defaults.general.shortcuts.enableCommandArgShortcuts,
+ () -> config.general.shortcuts.enableCommandArgShortcuts,
+ newValue -> config.general.shortcuts.enableCommandArgShortcuts = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(ButtonOption.createBuilder()
+ .name(Text.translatable("skyblocker.config.general.shortcuts.config"))
+ .text(Text.translatable("text.skyblocker.open"))
+ .action((screen, opt) -> MinecraftClient.getInstance().setScreen(new ShortcutsConfigScreen(screen)))
+ .build())
+ .build())
- //Fancy Bars
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.bars"))
- .collapsed(true)
- .option(Option.<Boolean>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(ConfigUtils::createBooleanController)
- .build())
- .option(ButtonOption.createBuilder()
- .name(Text.translatable("skyblocker.bars.config.openScreen"))
- .text(Text.translatable("text.skyblocker.open"))
- .action((screen, opt) -> MinecraftClient.getInstance().setScreen(new StatusBarsConfigScreen()))
- .build())
- .build())
+ //Quiver Warning
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.general.quiverWarning"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.quiverWarning.enableQuiverWarning"))
+ .binding(defaults.general.quiverWarning.enableQuiverWarning,
+ () -> config.general.quiverWarning.enableQuiverWarning,
+ newValue -> config.general.quiverWarning.enableQuiverWarning = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.quiverWarning.enableQuiverWarningInDungeons"))
+ .binding(defaults.general.quiverWarning.enableQuiverWarningInDungeons,
+ () -> config.general.quiverWarning.enableQuiverWarningInDungeons,
+ newValue -> config.general.quiverWarning.enableQuiverWarningInDungeons = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.quiverWarning.enableQuiverWarningAfterDungeon"))
+ .binding(defaults.general.quiverWarning.enableQuiverWarningAfterDungeon,
+ () -> config.general.quiverWarning.enableQuiverWarningAfterDungeon,
+ newValue -> config.general.quiverWarning.enableQuiverWarningAfterDungeon = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
- //Experiments Solver
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.experiments"))
- .collapsed(true)
- .option(Option.<Boolean>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(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(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(ConfigUtils::createBooleanController)
- .build())
- .build())
+ //Item List
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.general.itemList"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.itemList.enableItemList"))
+ .binding(defaults.general.itemList.enableItemList,
+ () -> config.general.itemList.enableItemList,
+ newValue -> config.general.itemList.enableItemList = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
- //Fishing Helper
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.fishing"))
- .collapsed(true)
- .option(Option.<Boolean>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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.fishing.enableFishingTimer"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.fishing.enableFishingTimer.@Tooltip")))
- .binding(defaults.general.fishing.enableFishingTimer,
- () -> config.general.fishing.enableFishingTimer,
- newValue -> config.general.fishing.enableFishingTimer = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.fishing.changeTimerColor"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.fishing.changeTimerColor.@Tooltip")))
- .binding(defaults.general.fishing.changeTimerColor,
- () -> config.general.fishing.changeTimerColor,
- newValue -> config.general.fishing.changeTimerColor = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Float>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.fishing.fishingTimerScale"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.fishing.fishingTimerScale.@Tooltip")))
- .binding(defaults.general.fishing.fishingTimerScale,
- () -> config.general.fishing.fishingTimerScale,
- newValue -> config.general.fishing.fishingTimerScale = newValue)
- .controller(FloatFieldControllerBuilder::create)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.fishing.hideOtherPlayers"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.fishing.hideOtherPlayers.@Tooltip")))
- .binding(defaults.general.fishing.hideOtherPlayersRods,
- () -> config.general.fishing.hideOtherPlayersRods,
- newValue -> config.general.fishing.hideOtherPlayersRods = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .build())
+ //Item Tooltip
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.general.itemTooltip"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.itemTooltip.enableNPCPrice"))
+ .binding(defaults.general.itemTooltip.enableNPCPrice,
+ () -> config.general.itemTooltip.enableNPCPrice,
+ newValue -> config.general.itemTooltip.enableNPCPrice = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.itemTooltip.enableMotesPrice"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.general.itemTooltip.enableMotesPrice.@Tooltip")))
+ .binding(defaults.general.itemTooltip.enableMotesPrice,
+ () -> config.general.itemTooltip.enableMotesPrice,
+ newValue -> config.general.itemTooltip.enableMotesPrice = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.itemTooltip.enableAvgBIN"))
+ .binding(defaults.general.itemTooltip.enableAvgBIN,
+ () -> config.general.itemTooltip.enableAvgBIN,
+ newValue -> config.general.itemTooltip.enableAvgBIN = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<GeneralConfig.Average>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.itemTooltip.avg"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.general.itemTooltip.avg.@Tooltip")))
+ .binding(defaults.general.itemTooltip.avg,
+ () -> config.general.itemTooltip.avg,
+ newValue -> config.general.itemTooltip.avg = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.itemTooltip.enableLowestBIN"))
+ .binding(defaults.general.itemTooltip.enableLowestBIN,
+ () -> config.general.itemTooltip.enableLowestBIN,
+ newValue -> config.general.itemTooltip.enableLowestBIN = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.itemTooltip.enableBazaarPrice"))
+ .binding(defaults.general.itemTooltip.enableBazaarPrice,
+ () -> config.general.itemTooltip.enableBazaarPrice,
+ newValue -> config.general.itemTooltip.enableBazaarPrice = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.itemTooltip.enableObtainedDate"))
+ .binding(defaults.general.itemTooltip.enableObtainedDate,
+ () -> config.general.itemTooltip.enableObtainedDate,
+ newValue -> config.general.itemTooltip.enableObtainedDate = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.itemTooltip.enableMuseumInfo"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.general.itemTooltip.enableMuseumInfo.@Tooltip")))
+ .binding(defaults.general.itemTooltip.enableMuseumInfo,
+ () -> config.general.itemTooltip.enableMuseumInfo,
+ newValue -> config.general.itemTooltip.enableMuseumInfo = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.itemTooltip.enableExoticTooltip"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.general.itemTooltip.enableExoticTooltip.@Tooltip")))
+ .binding(defaults.general.itemTooltip.enableExoticTooltip,
+ () -> config.general.itemTooltip.enableExoticTooltip,
+ newValue -> config.general.itemTooltip.enableExoticTooltip = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.itemTooltip.enableAccessoriesHelper"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.general.itemTooltip.enableAccessoriesHelper.@Tooltip[0]"),
+ Text.literal("\n\n✔ Collected").formatted(Formatting.GREEN),
+ Text.translatable("skyblocker.config.general.itemTooltip.enableAccessoriesHelper.@Tooltip[1]"),
+ Text.literal("\n✦ Upgrade").withColor(0x218bff),
+ Text.translatable("skyblocker.config.general.itemTooltip.enableAccessoriesHelper.@Tooltip[2]"),
+ Text.literal("\n↑ Upgradable").withColor(0xf8d048),
+ Text.translatable("skyblocker.config.general.itemTooltip.enableAccessoriesHelper.@Tooltip[3]"),
+ Text.literal("\n↓ Downgrade").formatted(Formatting.GRAY),
+ Text.translatable("skyblocker.config.general.itemTooltip.enableAccessoriesHelper.@Tooltip[4]"),
+ Text.literal("\n✖ Missing").formatted(Formatting.RED),
+ Text.translatable("skyblocker.config.general.itemTooltip.enableAccessoriesHelper.@Tooltip[5]")))
+ .binding(defaults.general.itemTooltip.enableAccessoriesHelper,
+ () -> config.general.itemTooltip.enableAccessoriesHelper,
+ newValue -> config.general.itemTooltip.enableAccessoriesHelper = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.itemTooltip.dungeonQuality"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.general.itemTooltip.dungeonQuality.@Tooltip")))
+ .binding(defaults.general.itemTooltip.dungeonQuality,
+ () -> config.general.itemTooltip.dungeonQuality,
+ newValue -> config.general.itemTooltip.dungeonQuality = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
- //Fairy Souls Helper
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.fairySouls"))
- .collapsed(true)
- .option(Option.<Boolean>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(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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>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(ConfigUtils::createBooleanController)
- .build())
- .build())
+ //Item Info Display
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.general.itemInfoDisplay"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.itemInfoDisplay.attributeShardInfo"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.general.itemInfoDisplay.attributeShardInfo.@Tooltip")))
+ .binding(defaults.general.itemInfoDisplay.attributeShardInfo,
+ () -> config.general.itemInfoDisplay.attributeShardInfo,
+ newValue -> config.general.itemInfoDisplay.attributeShardInfo = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.itemInfoDisplay.itemRarityBackgrounds"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.general.itemInfoDisplay.itemRarityBackgrounds.@Tooltip")))
+ .binding(defaults.general.itemInfoDisplay.itemRarityBackgrounds,
+ () -> config.general.itemInfoDisplay.itemRarityBackgrounds,
+ newValue -> config.general.itemInfoDisplay.itemRarityBackgrounds = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<GeneralConfig.RarityBackgroundStyle>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.itemInfoDisplay.itemRarityBackgroundStyle"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.general.itemInfoDisplay.itemRarityBackgroundStyle.@Tooltip")))
+ .binding(defaults.general.itemInfoDisplay.itemRarityBackgroundStyle,
+ () -> config.general.itemInfoDisplay.itemRarityBackgroundStyle,
+ newValue -> config.general.itemInfoDisplay.itemRarityBackgroundStyle = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .option(Option.<Float>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.itemInfoDisplay.itemRarityBackgroundsOpacity"))
+ .binding(defaults.general.itemInfoDisplay.itemRarityBackgroundsOpacity,
+ () -> config.general.itemInfoDisplay.itemRarityBackgroundsOpacity,
+ newValue -> config.general.itemInfoDisplay.itemRarityBackgroundsOpacity = newValue)
+ .controller(opt -> FloatSliderControllerBuilder.create(opt).range(0f, 1f).step(0.05f).formatValue(ConfigUtils.FLOAT_TWO_FORMATTER))
+ .build())
+ .build())
- //Mythological Ritual
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.mythologicalRitual"))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.mythologicalRitual.enableMythologicalRitualHelper"))
- .binding(defaults.general.mythologicalRitual.enableMythologicalRitualHelper,
- () -> config.general.mythologicalRitual.enableMythologicalRitualHelper,
- newValue -> config.general.mythologicalRitual.enableMythologicalRitualHelper = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .build())
+ //Item Protection
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.general.itemProtection"))
+ .collapsed(true)
+ .option(Option.<GeneralConfig.SlotLockStyle>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.itemProtection.slotLockStyle"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.general.itemProtection.slotLockStyle.@Tooltip")))
+ .binding(defaults.general.itemProtection.slotLockStyle,
+ () -> config.general.itemProtection.slotLockStyle,
+ newValue -> config.general.itemProtection.slotLockStyle = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .build())
- //Item Cooldown
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemCooldown"))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemCooldown.enableItemCooldowns"))
- .binding(defaults.general.itemCooldown.enableItemCooldowns,
- () -> config.general.itemCooldown.enableItemCooldowns,
- newValue -> config.general.itemCooldown.enableItemCooldowns = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .build())
+ //Wiki Lookup
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.general.wikiLookup"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.wikiLookup.enableWikiLookup"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.general.wikiLookup.enableWikiLookup.@Tooltip")))
+ .binding(defaults.general.wikiLookup.enableWikiLookup,
+ () -> config.general.wikiLookup.enableWikiLookup,
+ newValue -> config.general.wikiLookup.enableWikiLookup = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.wikiLookup.officialWiki"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.general.wikiLookup.officialWiki.@Tooltip")))
+ .binding(defaults.general.wikiLookup.officialWiki,
+ () -> config.general.wikiLookup.officialWiki,
+ newValue -> config.general.wikiLookup.officialWiki = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
- //Shortcuts
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.shortcuts"))
- .collapsed(true)
- .option(Option.<Boolean>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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>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(ConfigUtils::createBooleanController)
- .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())
+ //Special Effects
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.general.specialEffects"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.specialEffects.rareDungeonDropEffects"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.general.specialEffects.rareDungeonDropEffects.@Tooltip")))
+ .binding(defaults.general.specialEffects.rareDungeonDropEffects,
+ () -> config.general.specialEffects.rareDungeonDropEffects,
+ newValue -> config.general.specialEffects.rareDungeonDropEffects = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
- //Waypoints
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.waypoints"))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.waypoints.enableWaypoints"))
- .binding(defaults.general.waypoints.enableWaypoints,
- () -> config.general.waypoints.enableWaypoints,
- newValue -> config.general.waypoints.enableWaypoints = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Waypoint.Type>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.waypoints.waypointType"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.waypoints.waypointType.@Tooltip"), Text.translatable("text.autoconfig.skyblocker.option.general.waypoints.waypointType.generalNote")))
- .binding(defaults.general.waypoints.waypointType,
- () -> config.general.waypoints.waypointType,
- newValue -> config.general.waypoints.waypointType = newValue)
- .controller(ConfigUtils::createEnumCyclingListController)
- .build())
- .build())
+ //Hitboxes
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.general.hitbox"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.hitbox.oldFarmlandHitbox"))
+ .binding(defaults.general.hitbox.oldFarmlandHitbox,
+ () -> config.general.hitbox.oldFarmlandHitbox,
+ newValue -> config.general.hitbox.oldFarmlandHitbox = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.hitbox.oldLeverHitbox"))
+ .binding(defaults.general.hitbox.oldLeverHitbox,
+ () -> config.general.hitbox.oldLeverHitbox,
+ newValue -> config.general.hitbox.oldLeverHitbox = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
- //Quiver Warning
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.quiverWarning"))
- .collapsed(true)
- .option(Option.<Boolean>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(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(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(ConfigUtils::createBooleanController)
- .build())
- .build())
-
- //Item List
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemList"))
- .collapsed(true)
- .option(Option.<Boolean>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(ConfigUtils::createBooleanController)
- .build())
- .build())
-
- //Item Tooltip
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip"))
- .collapsed(true)
- .option(Option.<Boolean>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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>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(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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<SkyblockerConfig.Average>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::createEnumCyclingListController)
- .build())
- .option(Option.<Boolean>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(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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.enableObtainedDate"))
- .binding(defaults.general.itemTooltip.enableObtainedDate,
- () -> config.general.itemTooltip.enableObtainedDate,
- newValue -> config.general.itemTooltip.enableObtainedDate = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.enableMuseumInfo"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.enableMuseumInfo.@Tooltip")))
- .binding(defaults.general.itemTooltip.enableMuseumInfo,
- () -> config.general.itemTooltip.enableMuseumInfo,
- newValue -> config.general.itemTooltip.enableMuseumInfo = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.enableExoticTooltip"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.enableExoticTooltip.@Tooltip")))
- .binding(defaults.general.itemTooltip.enableExoticTooltip,
- () -> config.general.itemTooltip.enableExoticTooltip,
- newValue -> config.general.itemTooltip.enableExoticTooltip = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.enableAccessoriesHelper"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.enableAccessoriesHelper.@Tooltip[0]"), Text.literal("\n\n✔ Collected").formatted(Formatting.GREEN), Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.enableAccessoriesHelper.@Tooltip[1]"),
- Text.literal("\n✦ Upgrade").withColor(0x218bff), Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.enableAccessoriesHelper.@Tooltip[2]"), Text.literal("\n↑ Upgradable").withColor(0xf8d048), Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.enableAccessoriesHelper.@Tooltip[3]"),
- Text.literal("\n↓ Downgrade").formatted(Formatting.GRAY), Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.enableAccessoriesHelper.@Tooltip[4]"), Text.literal("\n✖ Missing").formatted(Formatting.RED), Text.translatable("text.autoconfig.skyblocker.option.general.itemTooltip.enableAccessoriesHelper.@Tooltip[5]")))
- .binding(defaults.general.itemTooltip.enableAccessoriesHelper,
- () -> config.general.itemTooltip.enableAccessoriesHelper,
- newValue -> config.general.itemTooltip.enableAccessoriesHelper = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .build())
-
- //Item Info Display
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemInfoDisplay"))
- .collapsed(true)
- .option(Option.<Boolean>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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemInfoDisplay.itemRarityBackgrounds"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.itemInfoDisplay.itemRarityBackgrounds.@Tooltip")))
- .binding(defaults.general.itemInfoDisplay.itemRarityBackgrounds,
- () -> config.general.itemInfoDisplay.itemRarityBackgrounds,
- newValue -> config.general.itemInfoDisplay.itemRarityBackgrounds = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<SkyblockerConfig.RarityBackgroundStyle>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemInfoDisplay.itemRarityBackgroundStyle"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.itemInfoDisplay.itemRarityBackgroundStyle.@Tooltip")))
- .binding(defaults.general.itemInfoDisplay.itemRarityBackgroundStyle,
- () -> config.general.itemInfoDisplay.itemRarityBackgroundStyle,
- newValue -> config.general.itemInfoDisplay.itemRarityBackgroundStyle = newValue)
- .controller(ConfigUtils::createEnumCyclingListController)
- .build())
- .option(Option.<Float>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemInfoDisplay.itemRarityBackgroundsOpacity"))
- .binding(defaults.general.itemInfoDisplay.itemRarityBackgroundsOpacity,
- () -> config.general.itemInfoDisplay.itemRarityBackgroundsOpacity,
- newValue -> config.general.itemInfoDisplay.itemRarityBackgroundsOpacity = newValue)
- .controller(opt -> FloatSliderControllerBuilder.create(opt).range(0f, 1f).step(0.05f).formatValue(ConfigUtils.FLOAT_TWO_FORMATTER))
- .build())
- .build())
-
- //Item Protection
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemProtection"))
- .collapsed(true)
- .option(Option.<SkyblockerConfig.SlotLockStyle>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.itemProtection.slotLockStyle"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.itemProtection.slotLockStyle.@Tooltip")))
- .binding(defaults.general.itemProtection.slotLockStyle,
- () -> config.general.itemProtection.slotLockStyle,
- newValue -> config.general.itemProtection.slotLockStyle = newValue)
- .controller(ConfigUtils::createEnumCyclingListController)
- .build())
- .build())
-
- //Wiki Lookup
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.wikiLookup"))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.wikiLookup.enableWikiLookup"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.wikiLookup.enableWikiLookup.@Tooltip")))
- .binding(defaults.general.wikiLookup.enableWikiLookup,
- () -> config.general.wikiLookup.enableWikiLookup,
- newValue -> config.general.wikiLookup.enableWikiLookup = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.wikiLookup.officialWiki"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.wikiLookup.officialWiki.@Tooltip")))
- .binding(defaults.general.wikiLookup.officialWiki,
- () -> config.general.wikiLookup.officialWiki,
- newValue -> config.general.wikiLookup.officialWiki = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .build())
-
- //Chest Value
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.chestValue"))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.chestValue.enableChestValue"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.chestValue.enableChestValue.@Tooltip")))
- .binding(defaults.general.chestValue.enableChestValue,
- () -> config.general.chestValue.enableChestValue,
- newValue -> config.general.chestValue.enableChestValue = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Formatting>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.chestValue.color"))
- .binding(defaults.general.chestValue.color,
- () -> config.general.chestValue.color,
- newValue -> config.general.chestValue.color = newValue)
- .controller(ConfigUtils.getEnumDropdownControllerFactory(ConfigUtils.FORMATTING_FORMATTER))
- .build())
- .option(Option.<Formatting>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.chestValue.incompleteColor"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.chestValue.incompleteColor.@Tooltip")))
- .binding(defaults.general.chestValue.incompleteColor,
- () -> config.general.chestValue.incompleteColor,
- newValue -> config.general.chestValue.incompleteColor = newValue)
- .controller(ConfigUtils.getEnumDropdownControllerFactory(ConfigUtils.FORMATTING_FORMATTER))
- .build())
- .build())
-
- //Special Effects
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.specialEffects"))
- .collapsed(true)
- .option(Option.<Boolean>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(ConfigUtils::createBooleanController)
- .build())
- .build())
-
- //Hitboxes
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.hitbox"))
- .collapsed(true)
- .option(Option.<Boolean>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(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(ConfigUtils::createBooleanController)
- .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.<Float>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(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
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.teleportOverlay"))
- .collapsed(true)
- .option(Option.<Boolean>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(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(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(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(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(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(ConfigUtils::createBooleanController)
- .build())
- .build())
-
- //Flame Overlay
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.flameOverlay"))
- .collapsed(true)
- .option(Option.<Integer>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.flameOverlay.flameHeight"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.flameOverlay.flameHeight.@Tooltip")))
- .binding(defaults.general.flameOverlay.flameHeight,
- () -> config.general.flameOverlay.flameHeight,
- newValue -> config.general.flameOverlay.flameHeight = newValue)
- .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(0, 100).step(1))
- .build())
- .option(Option.<Integer>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.flameOverlay.flameOpacity"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.flameOverlay.flameOpacity.@Tooltip")))
- .binding(defaults.general.flameOverlay.flameOpacity,
- () -> config.general.flameOverlay.flameOpacity,
- newValue -> config.general.flameOverlay.flameOpacity = newValue)
- .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(0, 100).step(1))
- .build())
- .build())
-
- //Search overlay
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.searchOverlay"))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.searchOverlay.enableBazaar"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.searchOverlay.enableBazaar.@Tooltip")))
- .binding(defaults.general.searchOverlay.enableBazaar,
- () -> config.general.searchOverlay.enableBazaar,
- newValue -> config.general.searchOverlay.enableBazaar = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.searchOverlay.enableAuctionHouse"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.searchOverlay.enableAuctionHouse.@Tooltip")))
- .binding(defaults.general.searchOverlay.enableAuctionHouse,
- () -> config.general.searchOverlay.enableAuctionHouse,
- newValue -> config.general.searchOverlay.enableAuctionHouse = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.searchOverlay.keepPreviousSearches"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.searchOverlay.keepPreviousSearches.@Tooltip")))
- .binding(defaults.general.searchOverlay.keepPreviousSearches,
- () -> config.general.searchOverlay.keepPreviousSearches,
- newValue -> config.general.searchOverlay.keepPreviousSearches = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Integer>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.searchOverlay.maxSuggestions"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.searchOverlay.maxSuggestions.@Tooltip")))
- .binding(defaults.general.searchOverlay.maxSuggestions,
- () -> config.general.searchOverlay.maxSuggestions,
- newValue -> config.general.searchOverlay.maxSuggestions = newValue)
- .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(0, 5).step(1))
- .build())
- .option(Option.<Integer>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.searchOverlay.historyLength"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.searchOverlay.historyLength.@Tooltip")))
- .binding(defaults.general.searchOverlay.historyLength,
- () -> config.general.searchOverlay.historyLength,
- newValue -> config.general.searchOverlay.historyLength = newValue)
- .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(0, 5).step(1))
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.searchOverlay.enableCommands"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.searchOverlay.enableCommands.@Tooltip")))
- .binding(defaults.general.searchOverlay.enableCommands,
- () -> config.general.searchOverlay.enableCommands,
- newValue -> config.general.searchOverlay.enableCommands = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .build())
-
- // Fancy Auction House
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.betterAuctionHouse"))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.betterAuctionHouse.enabled"))
- .binding(defaults.general.fancyAuctionHouse.enabled,
- () -> config.general.fancyAuctionHouse.enabled,
- newValue -> config.general.fancyAuctionHouse.enabled = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.general.betterAuctionHouse.highlightUnderAvgPrice"))
- .binding(defaults.general.fancyAuctionHouse.highlightCheapBIN,
- () -> config.general.fancyAuctionHouse.highlightCheapBIN,
- newValue -> config.general.fancyAuctionHouse.highlightCheapBIN = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .build())
- .build();
- }
+ .build();
+ }
}
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java
new file mode 100644
index 00000000..1528f853
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java
@@ -0,0 +1,142 @@
+package de.hysky.skyblocker.config.categories;
+
+import de.hysky.skyblocker.config.ConfigUtils;
+import de.hysky.skyblocker.config.SkyblockerConfig;
+import dev.isxander.yacl3.api.*;
+import dev.isxander.yacl3.api.ConfigCategory;
+import dev.isxander.yacl3.api.Option;
+import dev.isxander.yacl3.api.OptionDescription;
+import dev.isxander.yacl3.api.controller.FloatFieldControllerBuilder;
+import net.minecraft.text.Text;
+
+public class HelperCategory {
+ public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) {
+ return ConfigCategory.createBuilder()
+ .name(Text.translatable("skyblocker.config.helpers"))
+
+ //Ungrouped Options
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.helpers.enableNewYearCakesHelper"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.helpers.enableNewYearCakesHelper.@Tooltip")))
+ .binding(defaults.helpers.enableNewYearCakesHelper,
+ () -> config.helpers.enableNewYearCakesHelper,
+ newValue -> config.helpers.enableNewYearCakesHelper = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+
+ //Mythological Ritual
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.helpers.mythologicalRitual"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.helpers.mythologicalRitual.enableMythologicalRitualHelper"))
+ .binding(defaults.helpers.mythologicalRitual.enableMythologicalRitualHelper,
+ () -> config.helpers.mythologicalRitual.enableMythologicalRitualHelper,
+ newValue -> config.helpers.mythologicalRitual.enableMythologicalRitualHelper = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
+
+ //Experiments Solver
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.helpers.experiments"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.helpers.experiments.enableChronomatronSolver"))
+ .binding(defaults.helpers.experiments.enableChronomatronSolver,
+ () -> config.helpers.experiments.enableChronomatronSolver,
+ newValue -> config.helpers.experiments.enableChronomatronSolver = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.helpers.experiments.enableSuperpairsSolver"))
+ .binding(defaults.helpers.experiments.enableSuperpairsSolver,
+ () -> config.helpers.experiments.enableSuperpairsSolver,
+ newValue -> config.helpers.experiments.enableSuperpairsSolver = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.helpers.experiments.enableUltrasequencerSolver"))
+ .binding(defaults.helpers.experiments.enableUltrasequencerSolver,
+ () -> config.helpers.experiments.enableUltrasequencerSolver,
+ newValue -> config.helpers.experiments.enableUltrasequencerSolver = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
+
+ //Fishing Helper
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.helpers.fishing"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.helpers.fishing.enableFishingHelper"))
+ .binding(defaults.helpers.fishing.enableFishingHelper,
+ () -> config.helpers.fishing.enableFishingHelper,
+ newValue -> config.helpers.fishing.enableFishingHelper = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.helpers.fishing.enableFishingTimer"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.helpers.fishing.enableFishingTimer.@Tooltip")))
+ .binding(defaults.helpers.fishing.enableFishingTimer,
+ () -> config.helpers.fishing.enableFishingTimer,
+ newValue -> config.helpers.fishing.enableFishingTimer = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.helpers.fishing.changeTimerColor"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.helpers.fishing.changeTimerColor.@Tooltip")))
+ .binding(defaults.helpers.fishing.changeTimerColor,
+ () -> config.helpers.fishing.changeTimerColor,
+ newValue -> config.helpers.fishing.changeTimerColor = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Float>createBuilder()
+ .name(Text.translatable("skyblocker.config.helpers.fishing.fishingTimerScale"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.helpers.fishing.fishingTimerScale.@Tooltip")))
+ .binding(defaults.helpers.fishing.fishingTimerScale,
+ () -> config.helpers.fishing.fishingTimerScale,
+ newValue -> config.helpers.fishing.fishingTimerScale = newValue)
+ .controller(FloatFieldControllerBuilder::create)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.helpers.fishing.hideOtherPlayers"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.helpers.fishing.hideOtherPlayers.@Tooltip")))
+ .binding(defaults.helpers.fishing.hideOtherPlayersRods,
+ () -> config.helpers.fishing.hideOtherPlayersRods,
+ newValue -> config.helpers.fishing.hideOtherPlayersRods = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
+
+ //Fairy Souls Helper
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.helpers.fairySouls"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.helpers.fairySouls.enableFairySoulsHelper"))
+ .binding(defaults.helpers.fairySouls.enableFairySoulsHelper,
+ () -> config.helpers.fairySouls.enableFairySoulsHelper,
+ newValue -> config.helpers.fairySouls.enableFairySoulsHelper = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.helpers.fairySouls.highlightFoundSouls"))
+ .binding(defaults.helpers.fairySouls.highlightFoundSouls,
+ () -> config.helpers.fairySouls.highlightFoundSouls,
+ newValue -> config.helpers.fairySouls.highlightFoundSouls = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.helpers.fairySouls.highlightOnlyNearbySouls"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.helpers.fairySouls.highlightOnlyNearbySouls.@Tooltip")))
+ .binding(defaults.helpers.fairySouls.highlightOnlyNearbySouls,
+ () -> config.helpers.fairySouls.highlightOnlyNearbySouls,
+ newValue -> config.helpers.fairySouls.highlightOnlyNearbySouls = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
+
+ .build();
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/LocationsCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/LocationsCategory.java
deleted file mode 100644
index e56c9eb0..00000000
--- a/src/main/java/de/hysky/skyblocker/config/categories/LocationsCategory.java
+++ /dev/null
@@ -1,214 +0,0 @@
-package de.hysky.skyblocker.config.categories;
-
-import de.hysky.skyblocker.config.ConfigUtils;
-import de.hysky.skyblocker.config.SkyblockerConfig;
-import de.hysky.skyblocker.skyblock.end.EndHudConfigScreen;
-import de.hysky.skyblocker.skyblock.end.EndHudWidget;
-import de.hysky.skyblocker.skyblock.end.TheEnd;
-import de.hysky.skyblocker.skyblock.garden.FarmingHudConfigScreen;
-import dev.isxander.yacl3.api.*;
-import dev.isxander.yacl3.api.controller.IntegerSliderControllerBuilder;
-import net.minecraft.client.MinecraftClient;
-import net.minecraft.text.Text;
-
-public class LocationsCategory {
-
- public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig 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.<Boolean>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(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(ConfigUtils::createBooleanController)
- .build())
- .build())
-
- //The Rift
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.rift"))
- .collapsed(false)
- .option(Option.<Boolean>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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.rift.blobbercystGlow"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.rift.blobbercystGlow.@Tooltip")))
- .binding(defaults.locations.rift.blobbercystGlow,
- () -> config.locations.rift.blobbercystGlow,
- newValue -> config.locations.rift.blobbercystGlow = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.rift.enigmaSoulWaypoints"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.rift.enigmaSoulWaypoints.@Tooltip")))
- .binding(defaults.locations.rift.enigmaSoulWaypoints,
- () -> config.locations.rift.enigmaSoulWaypoints,
- newValue -> config.locations.rift.enigmaSoulWaypoints = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.rift.highlightFoundEnigmaSouls"))
- .binding(defaults.locations.rift.highlightFoundEnigmaSouls,
- () -> config.locations.rift.highlightFoundEnigmaSouls,
- newValue -> config.locations.rift.highlightFoundEnigmaSouls = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Integer>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())
-
- // The end
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.end"))
- .collapsed(false)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.end.enableEnderNodeHelper"))
- .binding(defaults.locations.end.enableEnderNodeHelper,
- () -> config.locations.end.enableEnderNodeHelper,
- newValue -> config.locations.end.enableEnderNodeHelper = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.end.hudEnabled"))
- .binding(defaults.locations.end.hudEnabled,
- () -> config.locations.end.hudEnabled,
- newValue -> config.locations.end.hudEnabled = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.end.zealotKillsEnabled"))
- .binding(defaults.locations.end.zealotKillsEnabled,
- () -> config.locations.end.zealotKillsEnabled,
- newValue -> {
- config.locations.end.zealotKillsEnabled = newValue;
- EndHudWidget.INSTANCE.update();
- })
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.end.protectorLocationEnable"))
- .binding(defaults.locations.end.protectorLocationEnabled,
- () -> config.locations.end.protectorLocationEnabled,
- newValue -> {
- config.locations.end.protectorLocationEnabled = newValue;
- EndHudWidget.INSTANCE.update();
- })
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.end.waypoint"))
- .binding(defaults.locations.end.waypoint,
- () -> config.locations.end.waypoint,
- newValue -> config.locations.end.waypoint = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(ButtonOption.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.end.screen"))
- .text(Text.translatable("text.skyblocker.open")) // Reusing again lol
- .action((screen, opt) -> MinecraftClient.getInstance().setScreen(new EndHudConfigScreen(screen)))
- .build())
- .option(ButtonOption.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.end.resetName"))
- .text(Text.translatable("text.autoconfig.skyblocker.option.locations.end.resetText"))
- .action((screen, opt) -> {
- TheEnd.zealotsKilled = 0;
- TheEnd.zealotsSinceLastEye = 0;
- TheEnd.eyes = 0;
- })
- .build())
- .build()
-
- )
-
- //Spider's Den
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.spidersDen"))
- .collapsed(false)
- .option(Option.<Boolean>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(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(ConfigUtils::createBooleanController)
- .build())
- .build())
-
- //Garden
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.garden"))
- .collapsed(false)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.garden.farmingHud.enableHud"))
- .binding(defaults.locations.garden.farmingHud.enableHud,
- () -> config.locations.garden.farmingHud.enableHud,
- newValue -> config.locations.garden.farmingHud.enableHud = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(ButtonOption.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.garden.farmingHud.config"))
- .text(Text.translatable("text.skyblocker.open"))
- .action((screen, opt) -> MinecraftClient.getInstance().setScreen(new FarmingHudConfigScreen(screen)))
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.garden.dicerTitlePrevent"))
- .binding(defaults.locations.garden.dicerTitlePrevent,
- () -> config.locations.garden.dicerTitlePrevent,
- newValue -> config.locations.garden.dicerTitlePrevent = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.garden.visitorHelper"))
- .binding(defaults.locations.garden.visitorHelper,
- () -> config.locations.garden.visitorHelper,
- newValue -> config.locations.garden.visitorHelper = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.garden.lockMouseTool"))
- .binding(defaults.locations.garden.lockMouseTool,
- () -> config.locations.garden.lockMouseTool,
- newValue -> config.locations.garden.lockMouseTool = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.locations.garden.lockMouseGround"))
- .binding(defaults.locations.garden.lockMouseGroundOnly,
- () -> config.locations.garden.lockMouseGroundOnly,
- newValue -> config.locations.garden.lockMouseGroundOnly = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .build())
- .build();
- }
-}
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/MessageFilterCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/MessageFilterCategory.java
deleted file mode 100644
index 0f95bcaa..00000000
--- a/src/main/java/de/hysky/skyblocker/config/categories/MessageFilterCategory.java
+++ /dev/null
@@ -1,159 +0,0 @@
-package de.hysky.skyblocker.config.categories;
-
-import de.hysky.skyblocker.config.ConfigUtils;
-import de.hysky.skyblocker.config.SkyblockerConfig;
-import de.hysky.skyblocker.skyblock.chat.ChatRulesConfigScreen;
-import de.hysky.skyblocker.skyblock.dwarven.CrystalsHudConfigScreen;
-import de.hysky.skyblocker.utils.chat.ChatFilterResult;
-import dev.isxander.yacl3.api.*;
-import dev.isxander.yacl3.api.controller.IntegerSliderControllerBuilder;
-import net.minecraft.client.MinecraftClient;
-import net.minecraft.text.Text;
-
-public class MessageFilterCategory {
-
- public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) {
- return ConfigCategory.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.category.messages"))
-
- //Uncategorized Options
- .option(Option.<ChatFilterResult>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideAbility"))
- .binding(defaults.messages.hideAbility,
- () -> config.messages.hideAbility,
- newValue -> config.messages.hideAbility = newValue)
- .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::createEnumCyclingListController)
- .build())
- .option(Option.<ChatFilterResult>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideAOTE"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.messages.hideAOTE.@Tooltip")))
- .binding(defaults.messages.hideAOTE,
- () -> config.messages.hideAOTE,
- newValue -> config.messages.hideAOTE = newValue)
- .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::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::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::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::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::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::createEnumCyclingListController)
- .build())
- .option(Option.<ChatFilterResult>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::createEnumCyclingListController)
- .build())
- .option(Option.<ChatFilterResult>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideToggleSkyMall"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.messages.hideToggleSkyMall.@Tooltip")))
- .binding(defaults.messages.hideToggleSkyMall,
- () -> config.messages.hideToggleSkyMall,
- newValue -> config.messages.hideToggleSkyMall = newValue)
- .controller(ConfigUtils::createEnumCyclingListController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideMana"))
- .binding(defaults.messages.hideMana,
- () -> config.messages.hideMana,
- newValue -> config.messages.hideMana = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<ChatFilterResult>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideMimicKill"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.messages.hideMimicKill.@Tooltip")))
- .binding(defaults.messages.hideMimicKill,
- () -> config.messages.hideMimicKill,
- newValue -> config.messages.hideMimicKill = newValue)
- .controller(ConfigUtils::createEnumCyclingListController)
- .build())
- .option(Option.<ChatFilterResult>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideDeath"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.messages.hideDeath.@Tooltip")))
- .binding(defaults.messages.hideDeath,
- () -> config.messages.hideDeath,
- newValue -> config.messages.hideDeath = newValue)
- .controller(ConfigUtils::createEnumCyclingListController)
- .build())
- .option(Option.<ChatFilterResult>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.messages.hideDicer"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.messages.hideDicer.@Tooltip")))
- .binding(defaults.messages.hideDicer,
- () -> config.messages.hideDicer,
- newValue -> config.messages.hideDicer = newValue)
- .controller(ConfigUtils::createEnumCyclingListController)
- .build())
- //chat rules options
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules"))
- .collapsed(false)
- .option(ButtonOption.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.screen"))
- .text(Text.translatable("text.skyblocker.open"))
- .action((screen, opt) -> MinecraftClient.getInstance().setScreen(new ChatRulesConfigScreen(screen)))
- .build())
- .option(Option.<Integer>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.announcementLength"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.announcementLength.@Tooltip")))
- .binding(defaults.messages.chatRuleConfig.announcementLength,
- () -> config.messages.chatRuleConfig.announcementLength,
- newValue -> config.messages.chatRuleConfig.announcementLength = newValue)
- .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(5, 200).step(1))
- .build())
- .option(Option.<Integer>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.announcementScale"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.announcementScale.@Tooltip")))
- .binding(defaults.messages.chatRuleConfig.announcementScale,
- () -> config.messages.chatRuleConfig.announcementScale,
- newValue -> config.messages.chatRuleConfig.announcementScale = newValue)
- .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(1, 8).step(1))
- .build())
- .build())
- .build();
- }
-}
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/MiningCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/MiningCategory.java
new file mode 100644
index 00000000..8809ba44
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/config/categories/MiningCategory.java
@@ -0,0 +1,165 @@
+package de.hysky.skyblocker.config.categories;
+
+import de.hysky.skyblocker.config.ConfigUtils;
+import de.hysky.skyblocker.config.SkyblockerConfig;
+import de.hysky.skyblocker.config.configs.MiningConfig;
+import de.hysky.skyblocker.skyblock.dwarven.CrystalsHudConfigScreen;
+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 de.hysky.skyblocker.skyblock.dwarven.DwarvenHudConfigScreen;
+import dev.isxander.yacl3.api.controller.FloatFieldControllerBuilder;
+import dev.isxander.yacl3.api.controller.IntegerSliderControllerBuilder;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.text.Text;
+
+public class MiningCategory {
+
+ public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) {
+ return ConfigCategory.createBuilder()
+ .name(Text.translatable("skyblocker.config.mining"))
+
+ //Uncategorized Options
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.mining.enableDrillFuel"))
+ .binding(defaults.mining.enableDrillFuel,
+ () -> config.mining.enableDrillFuel,
+ newValue -> config.mining.enableDrillFuel = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+
+ //Dwarven Mines
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.mining.dwarvenMines"))
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.mining.dwarvenMines.solveFetchur"))
+ .binding(defaults.mining.dwarvenMines.solveFetchur,
+ () -> config.mining.dwarvenMines.solveFetchur,
+ newValue -> config.mining.dwarvenMines.solveFetchur = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.mining.dwarvenMines.solvePuzzler"))
+ .binding(defaults.mining.dwarvenMines.solvePuzzler,
+ () -> config.mining.dwarvenMines.solvePuzzler,
+ newValue -> config.mining.dwarvenMines.solvePuzzler = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
+
+ //Dwarven HUD
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.mining.dwarvenHud"))
+ .collapsed(false)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.mining.dwarvenHud.enabledCommissions"))
+ .binding(defaults.mining.dwarvenHud.enabledCommissions,
+ () -> config.mining.dwarvenHud.enabledCommissions,
+ newValue -> config.mining.dwarvenHud.enabledCommissions = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.mining.dwarvenHud.enabledPowder"))
+ .binding(defaults.mining.dwarvenHud.enabledPowder,
+ () -> config.mining.dwarvenHud.enabledPowder,
+ newValue -> config.mining.dwarvenHud.enabledPowder = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<MiningConfig.DwarvenHudStyle>createBuilder()
+ .name(Text.translatable("skyblocker.config.mining.dwarvenHud.style"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.mining.dwarvenHud.style.@Tooltip[0]"),
+ Text.translatable("skyblocker.config.mining.dwarvenHud.style.@Tooltip[1]"),
+ Text.translatable("skyblocker.config.mining.dwarvenHud.style.@Tooltip[2]")))
+ .binding(defaults.mining.dwarvenHud.style,
+ () -> config.mining.dwarvenHud.style,
+ newValue -> config.mining.dwarvenHud.style = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .option(ButtonOption.createBuilder()
+ .name(Text.translatable("skyblocker.config.mining.dwarvenHud.screen"))
+ .text(Text.translatable("text.skyblocker.open"))
+ .action((screen, opt) -> MinecraftClient.getInstance().setScreen(new DwarvenHudConfigScreen(screen)))
+ .build())
+ .build())
+
+ //Crystal Hollows
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.mining.crystalHollows"))
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.mining.crystalHollows.metalDetectorHelper"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.mining.crystalHollows.metalDetectorHelper.@Tooltip")))
+ .binding(defaults.mining.crystalHollows.metalDetectorHelper,
+ () -> config.mining.crystalHollows.metalDetectorHelper,
+ newValue -> config.mining.crystalHollows.metalDetectorHelper = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
+
+ //Crystal Hollows Map
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.mining.crystalsHud"))
+ .collapsed(false)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.mining.crystalsHud.enabled"))
+ .binding(defaults.mining.crystalsHud.enabled,
+ () -> config.mining.crystalsHud.enabled,
+ newValue -> config.mining.crystalsHud.enabled = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(ButtonOption.createBuilder()
+ .name(Text.translatable("skyblocker.config.mining.crystalsHud.screen"))
+ .text(Text.translatable("text.skyblocker.open"))
+ .action((screen, opt) -> MinecraftClient.getInstance().setScreen(new CrystalsHudConfigScreen(screen)))
+ .build())
+ .option(Option.<Float>createBuilder()
+ .name(Text.translatable("skyblocker.config.mining.crystalsHud.mapScaling"))
+ .binding(defaults.mining.crystalsHud.mapScaling,
+ () -> config.mining.crystalsHud.mapScaling,
+ newValue -> config.mining.crystalsHud.mapScaling = newValue)
+ .controller(FloatFieldControllerBuilder::create)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.mining.crystalsHud.showLocations"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.mining.crystalsHud.showLocations.@Tooltip")))
+ .binding(defaults.mining.crystalsHud.showLocations,
+ () -> config.mining.crystalsHud.showLocations,
+ newValue -> config.mining.crystalsHud.showLocations = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.mining.crystalsHud.showLocations.locationSize"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.mining.crystalsHud.showLocations.locationSize.@Tooltip")))
+ .binding(defaults.mining.crystalsHud.locationSize,
+ () -> config.mining.crystalsHud.locationSize,
+ newValue -> config.mining.crystalsHud.locationSize = newValue)
+ .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(4, 12).step(2))
+ .build())
+ .build())
+
+ //Crystal Hollows waypoints
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.mining.crystalsWaypoints"))
+ .collapsed(false)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.mining.crystalsWaypoints.enabled"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.mining.crystalsWaypoints.enabled.@Tooltip")))
+ .binding(defaults.mining.crystalsWaypoints.enabled,
+ () -> config.mining.crystalsWaypoints.enabled,
+ newValue -> config.mining.crystalsWaypoints.enabled = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.mining.crystalsWaypoints.findInChat"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.mining.crystalsWaypoints.findInChat.@Tooltip")))
+ .binding(defaults.mining.crystalsWaypoints.findInChat,
+ () -> config.mining.crystalsWaypoints.findInChat,
+ newValue -> config.mining.crystalsWaypoints.findInChat = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+
+ .build())
+ .build();
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/MiscCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/MiscCategory.java
new file mode 100644
index 00000000..b2127e6b
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/config/categories/MiscCategory.java
@@ -0,0 +1,56 @@
+package de.hysky.skyblocker.config.categories;
+
+import de.hysky.skyblocker.config.ConfigUtils;
+import de.hysky.skyblocker.config.SkyblockerConfig;
+import de.hysky.skyblocker.config.configs.MiscConfig;
+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.StringControllerBuilder;
+import net.minecraft.text.Text;
+
+public class MiscCategory {
+
+ public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) {
+ return ConfigCategory.createBuilder()
+ .name(Text.translatable("skyblocker.config.misc"))
+
+ //Uncategorized Options
+
+ //Discord RPC
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.misc.richPresence"))
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.misc.richPresence.enableRichPresence"))
+ .binding(defaults.misc.richPresence.enableRichPresence,
+ () -> config.misc.richPresence.enableRichPresence,
+ newValue -> config.misc.richPresence.enableRichPresence = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<MiscConfig.Info>createBuilder()
+ .name(Text.translatable("skyblocker.config.misc.richPresence.info"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.misc.richPresence.info.@Tooltip")))
+ .binding(defaults.misc.richPresence.info,
+ () -> config.misc.richPresence.info,
+ newValue -> config.misc.richPresence.info = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.misc.richPresence.cycleMode"))
+ .binding(defaults.misc.richPresence.cycleMode,
+ () -> config.misc.richPresence.cycleMode,
+ newValue -> config.misc.richPresence.cycleMode = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.misc.richPresence.customMessage"))
+ .binding(defaults.misc.richPresence.customMessage,
+ () -> config.misc.richPresence.customMessage,
+ newValue -> config.misc.richPresence.customMessage = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .build())
+ .build();
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/OtherLocationsCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/OtherLocationsCategory.java
new file mode 100644
index 00000000..67397b9d
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/config/categories/OtherLocationsCategory.java
@@ -0,0 +1,166 @@
+package de.hysky.skyblocker.config.categories;
+
+import de.hysky.skyblocker.config.ConfigUtils;
+import de.hysky.skyblocker.config.SkyblockerConfig;
+import de.hysky.skyblocker.skyblock.end.EndHudConfigScreen;
+import de.hysky.skyblocker.skyblock.end.EndHudWidget;
+import de.hysky.skyblocker.skyblock.end.TheEnd;
+import dev.isxander.yacl3.api.*;
+import dev.isxander.yacl3.api.controller.IntegerSliderControllerBuilder;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.text.Text;
+
+public class OtherLocationsCategory {
+
+ public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) {
+ return ConfigCategory.createBuilder()
+ .name(Text.translatable("skyblocker.config.otherLocations"))
+
+ //Barn
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.otherLocations.barn"))
+ .collapsed(false)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.otherLocations.barn.solveHungryHiker"))
+ .binding(defaults.otherLocations.barn.solveHungryHiker,
+ () -> config.otherLocations.barn.solveHungryHiker,
+ newValue -> config.otherLocations.barn.solveHungryHiker = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.otherLocations.barn.solveTreasureHunter"))
+ .binding(defaults.otherLocations.barn.solveTreasureHunter,
+ () -> config.otherLocations.barn.solveTreasureHunter,
+ newValue -> config.otherLocations.barn.solveTreasureHunter = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
+
+ //The Rift
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.otherLocations.rift"))
+ .collapsed(false)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.otherLocations.rift.mirrorverseWaypoints"))
+ .binding(defaults.otherLocations.rift.mirrorverseWaypoints,
+ () -> config.otherLocations.rift.mirrorverseWaypoints,
+ newValue -> config.otherLocations.rift.mirrorverseWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.otherLocations.rift.blobbercystGlow"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.otherLocations.rift.blobbercystGlow.@Tooltip")))
+ .binding(defaults.otherLocations.rift.blobbercystGlow,
+ () -> config.otherLocations.rift.blobbercystGlow,
+ newValue -> config.otherLocations.rift.blobbercystGlow = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.otherLocations.rift.enigmaSoulWaypoints"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.otherLocations.rift.enigmaSoulWaypoints.@Tooltip")))
+ .binding(defaults.otherLocations.rift.enigmaSoulWaypoints,
+ () -> config.otherLocations.rift.enigmaSoulWaypoints,
+ newValue -> config.otherLocations.rift.enigmaSoulWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.otherLocations.rift.highlightFoundEnigmaSouls"))
+ .binding(defaults.otherLocations.rift.highlightFoundEnigmaSouls,
+ () -> config.otherLocations.rift.highlightFoundEnigmaSouls,
+ newValue -> config.otherLocations.rift.highlightFoundEnigmaSouls = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.otherLocations.rift.mcGrubberStacks"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.otherLocations.rift.mcGrubberStacks.@Tooltip")))
+ .binding(defaults.otherLocations.rift.mcGrubberStacks,
+ () -> config.otherLocations.rift.mcGrubberStacks,
+ newValue -> config.otherLocations.rift.mcGrubberStacks = newValue)
+ .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(0, 5).step(1))
+ .build())
+ .build())
+
+ // The end
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.otherLocations.end"))
+ .collapsed(false)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.otherLocations.end.enableEnderNodeHelper"))
+ .binding(defaults.otherLocations.end.enableEnderNodeHelper,
+ () -> config.otherLocations.end.enableEnderNodeHelper,
+ newValue -> config.otherLocations.end.enableEnderNodeHelper = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.otherLocations.end.hudEnabled"))
+ .binding(defaults.otherLocations.end.hudEnabled,
+ () -> config.otherLocations.end.hudEnabled,
+ newValue -> config.otherLocations.end.hudEnabled = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.otherLocations.end.zealotKillsEnabled"))
+ .binding(defaults.otherLocations.end.zealotKillsEnabled,
+ () -> config.otherLocations.end.zealotKillsEnabled,
+ newValue -> {
+ config.otherLocations.end.zealotKillsEnabled = newValue;
+ EndHudWidget.INSTANCE.update();
+ })
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.otherLocations.end.protectorLocationEnable"))
+ .binding(defaults.otherLocations.end.protectorLocationEnabled,
+ () -> config.otherLocations.end.protectorLocationEnabled,
+ newValue -> {
+ config.otherLocations.end.protectorLocationEnabled = newValue;
+ EndHudWidget.INSTANCE.update();
+ })
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.otherLocations.end.waypoint"))
+ .binding(defaults.otherLocations.end.waypoint,
+ () -> config.otherLocations.end.waypoint,
+ newValue -> config.otherLocations.end.waypoint = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(ButtonOption.createBuilder()
+ .name(Text.translatable("skyblocker.config.otherLocations.end.screen"))
+ .text(Text.translatable("text.skyblocker.open")) // Reusing again lol
+ .action((screen, opt) -> MinecraftClient.getInstance().setScreen(new EndHudConfigScreen(screen)))
+ .build())
+ .option(ButtonOption.createBuilder()
+ .name(Text.translatable("skyblocker.config.otherLocations.end.resetName"))
+ .text(Text.translatable("skyblocker.config.otherLocations.end.resetText"))
+ .action((screen, opt) -> {
+ TheEnd.zealotsKilled = 0;
+ TheEnd.zealotsSinceLastEye = 0;
+ TheEnd.eyes = 0;
+ })
+ .build())
+ .build())
+
+ //Spider's Den
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.otherLocations.spidersDen"))
+ .collapsed(false)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.otherLocations.spidersDen.relics.enableRelicsHelper"))
+ .binding(defaults.otherLocations.spidersDen.relics.enableRelicsHelper,
+ () -> config.otherLocations.spidersDen.relics.enableRelicsHelper,
+ newValue -> config.otherLocations.spidersDen.relics.enableRelicsHelper = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.otherLocations.spidersDen.relics.highlightFoundRelics"))
+ .binding(defaults.otherLocations.spidersDen.relics.highlightFoundRelics,
+ () -> config.otherLocations.spidersDen.relics.highlightFoundRelics,
+ newValue -> config.otherLocations.spidersDen.relics.highlightFoundRelics = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
+
+ .build();
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/QuickNavigationCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/QuickNavigationCategory.java
index 4b3c0dfd..1200261d 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/QuickNavigationCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/QuickNavigationCategory.java
@@ -12,607 +12,607 @@ import net.minecraft.text.Text;
public class QuickNavigationCategory {
- public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) {
- return ConfigCategory.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.category.quickNav"))
+ public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) {
+ return ConfigCategory.createBuilder()
+ .name(Text.translatable("skyblocker.config.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(ConfigUtils::createBooleanController)
- .build())
+ //Toggle
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.enableQuickNav"))
+ .binding(defaults.quickNav.enableQuickNav,
+ () -> config.quickNav.enableQuickNav,
+ newValue -> config.quickNav.enableQuickNav = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
- //Button 1
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button", 1))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.render"))
- .binding(defaults.quickNav.button1.render,
- () -> config.quickNav.button1.render,
- newValue -> config.quickNav.button1.render = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.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.<Integer>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.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.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.item.nbt"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.item.nbt.@Tooltip")))
- .binding(defaults.quickNav.button1.item.nbt,
- () -> config.quickNav.button1.item.nbt,
- newValue -> config.quickNav.button1.item.nbt = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.uiTitle"))
- .binding(defaults.quickNav.button1.uiTitle,
- () -> config.quickNav.button1.uiTitle,
- newValue -> config.quickNav.button1.uiTitle = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.clickEvent"))
- .binding(defaults.quickNav.button1.clickEvent,
- () -> config.quickNav.button1.clickEvent,
- newValue -> config.quickNav.button1.clickEvent = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .build())
+ //Button 1
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button", 1))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.render"))
+ .binding(defaults.quickNav.button1.render,
+ () -> config.quickNav.button1.render,
+ newValue -> config.quickNav.button1.render = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.item.itemName"))
+ .binding(defaults.quickNav.button1.item.id,
+ () -> config.quickNav.button1.item.id,
+ newValue -> config.quickNav.button1.item.id = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.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.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.item.nbt"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.quickNav.button.item.nbt.@Tooltip")))
+ .binding(defaults.quickNav.button1.item.nbt,
+ () -> config.quickNav.button1.item.nbt,
+ newValue -> config.quickNav.button1.item.nbt = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.uiTitle"))
+ .binding(defaults.quickNav.button1.uiTitle,
+ () -> config.quickNav.button1.uiTitle,
+ newValue -> config.quickNav.button1.uiTitle = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.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.button", 2))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.render"))
- .binding(defaults.quickNav.button2.render,
- () -> config.quickNav.button2.render,
- newValue -> config.quickNav.button2.render = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.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.<Integer>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.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.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.item.nbt"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.item.nbt.@Tooltip")))
- .binding(defaults.quickNav.button2.item.nbt,
- () -> config.quickNav.button2.item.nbt,
- newValue -> config.quickNav.button2.item.nbt = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.uiTitle"))
- .binding(defaults.quickNav.button2.uiTitle,
- () -> config.quickNav.button2.uiTitle,
- newValue -> config.quickNav.button2.uiTitle = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.clickEvent"))
- .binding(defaults.quickNav.button2.clickEvent,
- () -> config.quickNav.button2.clickEvent,
- newValue -> config.quickNav.button2.clickEvent = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .build())
+ //Button 2
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button", 2))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.render"))
+ .binding(defaults.quickNav.button2.render,
+ () -> config.quickNav.button2.render,
+ newValue -> config.quickNav.button2.render = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.item.itemName"))
+ .binding(defaults.quickNav.button2.item.id,
+ () -> config.quickNav.button2.item.id,
+ newValue -> config.quickNav.button2.item.id = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.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.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.item.nbt"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.quickNav.button.item.nbt.@Tooltip")))
+ .binding(defaults.quickNav.button2.item.nbt,
+ () -> config.quickNav.button2.item.nbt,
+ newValue -> config.quickNav.button2.item.nbt = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.uiTitle"))
+ .binding(defaults.quickNav.button2.uiTitle,
+ () -> config.quickNav.button2.uiTitle,
+ newValue -> config.quickNav.button2.uiTitle = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.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.button", 3))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.render"))
- .binding(defaults.quickNav.button3.render,
- () -> config.quickNav.button3.render,
- newValue -> config.quickNav.button3.render = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.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.<Integer>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.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.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.item.nbt"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.item.nbt.@Tooltip")))
- .binding(defaults.quickNav.button3.item.nbt,
- () -> config.quickNav.button3.item.nbt,
- newValue -> config.quickNav.button3.item.nbt = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.uiTitle"))
- .binding(defaults.quickNav.button3.uiTitle,
- () -> config.quickNav.button3.uiTitle,
- newValue -> config.quickNav.button3.uiTitle = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.clickEvent"))
- .binding(defaults.quickNav.button3.clickEvent,
- () -> config.quickNav.button3.clickEvent,
- newValue -> config.quickNav.button3.clickEvent = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .build())
+ //Button 3
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button", 3))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.render"))
+ .binding(defaults.quickNav.button3.render,
+ () -> config.quickNav.button3.render,
+ newValue -> config.quickNav.button3.render = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.item.itemName"))
+ .binding(defaults.quickNav.button3.item.id,
+ () -> config.quickNav.button3.item.id,
+ newValue -> config.quickNav.button3.item.id = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.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.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.item.nbt"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.quickNav.button.item.nbt.@Tooltip")))
+ .binding(defaults.quickNav.button3.item.nbt,
+ () -> config.quickNav.button3.item.nbt,
+ newValue -> config.quickNav.button3.item.nbt = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.uiTitle"))
+ .binding(defaults.quickNav.button3.uiTitle,
+ () -> config.quickNav.button3.uiTitle,
+ newValue -> config.quickNav.button3.uiTitle = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.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.button", 4))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.render"))
- .binding(defaults.quickNav.button4.render,
- () -> config.quickNav.button4.render,
- newValue -> config.quickNav.button4.render = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.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.<Integer>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.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.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.item.nbt"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.item.nbt.@Tooltip")))
- .binding(defaults.quickNav.button4.item.nbt,
- () -> config.quickNav.button4.item.nbt,
- newValue -> config.quickNav.button4.item.nbt = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.uiTitle"))
- .binding(defaults.quickNav.button4.uiTitle,
- () -> config.quickNav.button4.uiTitle,
- newValue -> config.quickNav.button4.uiTitle = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.clickEvent"))
- .binding(defaults.quickNav.button4.clickEvent,
- () -> config.quickNav.button4.clickEvent,
- newValue -> config.quickNav.button4.clickEvent = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .build())
+ //Button 4
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button", 4))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.render"))
+ .binding(defaults.quickNav.button4.render,
+ () -> config.quickNav.button4.render,
+ newValue -> config.quickNav.button4.render = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.item.itemName"))
+ .binding(defaults.quickNav.button4.item.id,
+ () -> config.quickNav.button4.item.id,
+ newValue -> config.quickNav.button4.item.id = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.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.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.item.nbt"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.quickNav.button.item.nbt.@Tooltip")))
+ .binding(defaults.quickNav.button4.item.nbt,
+ () -> config.quickNav.button4.item.nbt,
+ newValue -> config.quickNav.button4.item.nbt = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.uiTitle"))
+ .binding(defaults.quickNav.button4.uiTitle,
+ () -> config.quickNav.button4.uiTitle,
+ newValue -> config.quickNav.button4.uiTitle = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.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.button", 5))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.render"))
- .binding(defaults.quickNav.button5.render,
- () -> config.quickNav.button5.render,
- newValue -> config.quickNav.button5.render = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.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.<Integer>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.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.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.item.nbt"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.item.nbt.@Tooltip")))
- .binding(defaults.quickNav.button5.item.nbt,
- () -> config.quickNav.button5.item.nbt,
- newValue -> config.quickNav.button5.item.nbt = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.uiTitle"))
- .binding(defaults.quickNav.button5.uiTitle,
- () -> config.quickNav.button5.uiTitle,
- newValue -> config.quickNav.button5.uiTitle = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.clickEvent"))
- .binding(defaults.quickNav.button5.clickEvent,
- () -> config.quickNav.button5.clickEvent,
- newValue -> config.quickNav.button5.clickEvent = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .build())
+ //Button 5
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button", 5))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.render"))
+ .binding(defaults.quickNav.button5.render,
+ () -> config.quickNav.button5.render,
+ newValue -> config.quickNav.button5.render = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.item.itemName"))
+ .binding(defaults.quickNav.button5.item.id,
+ () -> config.quickNav.button5.item.id,
+ newValue -> config.quickNav.button5.item.id = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.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.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.item.nbt"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.quickNav.button.item.nbt.@Tooltip")))
+ .binding(defaults.quickNav.button5.item.nbt,
+ () -> config.quickNav.button5.item.nbt,
+ newValue -> config.quickNav.button5.item.nbt = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.uiTitle"))
+ .binding(defaults.quickNav.button5.uiTitle,
+ () -> config.quickNav.button5.uiTitle,
+ newValue -> config.quickNav.button5.uiTitle = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.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.button", 6))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.render"))
- .binding(defaults.quickNav.button6.render,
- () -> config.quickNav.button6.render,
- newValue -> config.quickNav.button6.render = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.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.<Integer>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.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.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.item.nbt"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.item.nbt.@Tooltip")))
- .binding(defaults.quickNav.button6.item.nbt,
- () -> config.quickNav.button6.item.nbt,
- newValue -> config.quickNav.button6.item.nbt = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.uiTitle"))
- .binding(defaults.quickNav.button6.uiTitle,
- () -> config.quickNav.button6.uiTitle,
- newValue -> config.quickNav.button6.uiTitle = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.clickEvent"))
- .binding(defaults.quickNav.button6.clickEvent,
- () -> config.quickNav.button6.clickEvent,
- newValue -> config.quickNav.button6.clickEvent = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .build())
+ //Button 6
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button", 6))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.render"))
+ .binding(defaults.quickNav.button6.render,
+ () -> config.quickNav.button6.render,
+ newValue -> config.quickNav.button6.render = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.item.itemName"))
+ .binding(defaults.quickNav.button6.item.id,
+ () -> config.quickNav.button6.item.id,
+ newValue -> config.quickNav.button6.item.id = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.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.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.item.nbt"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.quickNav.button.item.nbt.@Tooltip")))
+ .binding(defaults.quickNav.button6.item.nbt,
+ () -> config.quickNav.button6.item.nbt,
+ newValue -> config.quickNav.button6.item.nbt = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.uiTitle"))
+ .binding(defaults.quickNav.button6.uiTitle,
+ () -> config.quickNav.button6.uiTitle,
+ newValue -> config.quickNav.button6.uiTitle = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.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.button", 7))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.render"))
- .binding(defaults.quickNav.button7.render,
- () -> config.quickNav.button7.render,
- newValue -> config.quickNav.button7.render = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.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.<Integer>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.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.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.item.nbt"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.item.nbt.@Tooltip")))
- .binding(defaults.quickNav.button7.item.nbt,
- () -> config.quickNav.button7.item.nbt,
- newValue -> config.quickNav.button7.item.nbt = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.uiTitle"))
- .binding(defaults.quickNav.button7.uiTitle,
- () -> config.quickNav.button7.uiTitle,
- newValue -> config.quickNav.button7.uiTitle = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.clickEvent"))
- .binding(defaults.quickNav.button7.clickEvent,
- () -> config.quickNav.button7.clickEvent,
- newValue -> config.quickNav.button7.clickEvent = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .build())
+ //Button 7
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button", 7))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.render"))
+ .binding(defaults.quickNav.button7.render,
+ () -> config.quickNav.button7.render,
+ newValue -> config.quickNav.button7.render = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.item.itemName"))
+ .binding(defaults.quickNav.button7.item.id,
+ () -> config.quickNav.button7.item.id,
+ newValue -> config.quickNav.button7.item.id = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.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.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.item.nbt"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.quickNav.button.item.nbt.@Tooltip")))
+ .binding(defaults.quickNav.button7.item.nbt,
+ () -> config.quickNav.button7.item.nbt,
+ newValue -> config.quickNav.button7.item.nbt = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.uiTitle"))
+ .binding(defaults.quickNav.button7.uiTitle,
+ () -> config.quickNav.button7.uiTitle,
+ newValue -> config.quickNav.button7.uiTitle = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.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.button", 8))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.render"))
- .binding(defaults.quickNav.button8.render,
- () -> config.quickNav.button8.render,
- newValue -> config.quickNav.button8.render = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.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.<Integer>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.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.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.item.nbt"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.item.nbt.@Tooltip")))
- .binding(defaults.quickNav.button8.item.nbt,
- () -> config.quickNav.button8.item.nbt,
- newValue -> config.quickNav.button8.item.nbt = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.uiTitle"))
- .binding(defaults.quickNav.button8.uiTitle,
- () -> config.quickNav.button8.uiTitle,
- newValue -> config.quickNav.button8.uiTitle = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.clickEvent"))
- .binding(defaults.quickNav.button8.clickEvent,
- () -> config.quickNav.button8.clickEvent,
- newValue -> config.quickNav.button8.clickEvent = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .build())
+ //Button 8
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button", 8))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.render"))
+ .binding(defaults.quickNav.button8.render,
+ () -> config.quickNav.button8.render,
+ newValue -> config.quickNav.button8.render = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.item.itemName"))
+ .binding(defaults.quickNav.button8.item.id,
+ () -> config.quickNav.button8.item.id,
+ newValue -> config.quickNav.button8.item.id = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.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.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.item.nbt"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.quickNav.button.item.nbt.@Tooltip")))
+ .binding(defaults.quickNav.button8.item.nbt,
+ () -> config.quickNav.button8.item.nbt,
+ newValue -> config.quickNav.button8.item.nbt = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.uiTitle"))
+ .binding(defaults.quickNav.button8.uiTitle,
+ () -> config.quickNav.button8.uiTitle,
+ newValue -> config.quickNav.button8.uiTitle = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.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.button", 9))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.render"))
- .binding(defaults.quickNav.button9.render,
- () -> config.quickNav.button9.render,
- newValue -> config.quickNav.button9.render = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.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.<Integer>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.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.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.item.nbt"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.item.nbt.@Tooltip")))
- .binding(defaults.quickNav.button9.item.nbt,
- () -> config.quickNav.button9.item.nbt,
- newValue -> config.quickNav.button9.item.nbt = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.uiTitle"))
- .binding(defaults.quickNav.button9.uiTitle,
- () -> config.quickNav.button9.uiTitle,
- newValue -> config.quickNav.button9.uiTitle = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.clickEvent"))
- .binding(defaults.quickNav.button9.clickEvent,
- () -> config.quickNav.button9.clickEvent,
- newValue -> config.quickNav.button9.clickEvent = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .build())
+ //Button 9
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button", 9))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.render"))
+ .binding(defaults.quickNav.button9.render,
+ () -> config.quickNav.button9.render,
+ newValue -> config.quickNav.button9.render = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.item.itemName"))
+ .binding(defaults.quickNav.button9.item.id,
+ () -> config.quickNav.button9.item.id,
+ newValue -> config.quickNav.button9.item.id = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.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.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.item.nbt"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.quickNav.button.item.nbt.@Tooltip")))
+ .binding(defaults.quickNav.button9.item.nbt,
+ () -> config.quickNav.button9.item.nbt,
+ newValue -> config.quickNav.button9.item.nbt = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.uiTitle"))
+ .binding(defaults.quickNav.button9.uiTitle,
+ () -> config.quickNav.button9.uiTitle,
+ newValue -> config.quickNav.button9.uiTitle = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.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.button", 10))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.render"))
- .binding(defaults.quickNav.button10.render,
- () -> config.quickNav.button10.render,
- newValue -> config.quickNav.button10.render = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.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.<Integer>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.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.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.item.nbt"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.item.nbt.@Tooltip")))
- .binding(defaults.quickNav.button10.item.nbt,
- () -> config.quickNav.button10.item.nbt,
- newValue -> config.quickNav.button10.item.nbt = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.uiTitle"))
- .binding(defaults.quickNav.button10.uiTitle,
- () -> config.quickNav.button10.uiTitle,
- newValue -> config.quickNav.button10.uiTitle = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.clickEvent"))
- .binding(defaults.quickNav.button10.clickEvent,
- () -> config.quickNav.button10.clickEvent,
- newValue -> config.quickNav.button10.clickEvent = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .build())
+ //Button 10
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button", 10))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.render"))
+ .binding(defaults.quickNav.button10.render,
+ () -> config.quickNav.button10.render,
+ newValue -> config.quickNav.button10.render = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.item.itemName"))
+ .binding(defaults.quickNav.button10.item.id,
+ () -> config.quickNav.button10.item.id,
+ newValue -> config.quickNav.button10.item.id = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.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.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.item.nbt"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.quickNav.button.item.nbt.@Tooltip")))
+ .binding(defaults.quickNav.button10.item.nbt,
+ () -> config.quickNav.button10.item.nbt,
+ newValue -> config.quickNav.button10.item.nbt = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.uiTitle"))
+ .binding(defaults.quickNav.button10.uiTitle,
+ () -> config.quickNav.button10.uiTitle,
+ newValue -> config.quickNav.button10.uiTitle = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.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.button", 11))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.render"))
- .binding(defaults.quickNav.button11.render,
- () -> config.quickNav.button11.render,
- newValue -> config.quickNav.button11.render = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.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.<Integer>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.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.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.item.nbt"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.item.nbt.@Tooltip")))
- .binding(defaults.quickNav.button11.item.nbt,
- () -> config.quickNav.button11.item.nbt,
- newValue -> config.quickNav.button11.item.nbt = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.uiTitle"))
- .binding(defaults.quickNav.button11.uiTitle,
- () -> config.quickNav.button11.uiTitle,
- newValue -> config.quickNav.button11.uiTitle = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.clickEvent"))
- .binding(defaults.quickNav.button11.clickEvent,
- () -> config.quickNav.button11.clickEvent,
- newValue -> config.quickNav.button11.clickEvent = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .build())
+ //Button 11
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button", 11))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.render"))
+ .binding(defaults.quickNav.button11.render,
+ () -> config.quickNav.button11.render,
+ newValue -> config.quickNav.button11.render = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.item.itemName"))
+ .binding(defaults.quickNav.button11.item.id,
+ () -> config.quickNav.button11.item.id,
+ newValue -> config.quickNav.button11.item.id = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.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.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.item.nbt"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.quickNav.button.item.nbt.@Tooltip")))
+ .binding(defaults.quickNav.button11.item.nbt,
+ () -> config.quickNav.button11.item.nbt,
+ newValue -> config.quickNav.button11.item.nbt = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.uiTitle"))
+ .binding(defaults.quickNav.button11.uiTitle,
+ () -> config.quickNav.button11.uiTitle,
+ newValue -> config.quickNav.button11.uiTitle = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.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.button", 12))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.render"))
- .binding(defaults.quickNav.button12.render,
- () -> config.quickNav.button12.render,
- newValue -> config.quickNav.button12.render = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.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.<Integer>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.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.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.item.nbt"))
- .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.item.nbt.@Tooltip")))
- .binding(defaults.quickNav.button12.item.nbt,
- () -> config.quickNav.button12.item.nbt,
- newValue -> config.quickNav.button12.item.nbt = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.uiTitle"))
- .binding(defaults.quickNav.button12.uiTitle,
- () -> config.quickNav.button12.uiTitle,
- newValue -> config.quickNav.button12.uiTitle = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button.clickEvent"))
- .binding(defaults.quickNav.button12.clickEvent,
- () -> config.quickNav.button12.clickEvent,
- newValue -> config.quickNav.button12.clickEvent = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .build())
+ //Button 12
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button", 12))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.render"))
+ .binding(defaults.quickNav.button12.render,
+ () -> config.quickNav.button12.render,
+ newValue -> config.quickNav.button12.render = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.item.itemName"))
+ .binding(defaults.quickNav.button12.item.id,
+ () -> config.quickNav.button12.item.id,
+ newValue -> config.quickNav.button12.item.id = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.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.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.item.nbt"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.quickNav.button.item.nbt.@Tooltip")))
+ .binding(defaults.quickNav.button12.item.nbt,
+ () -> config.quickNav.button12.item.nbt,
+ newValue -> config.quickNav.button12.item.nbt = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.uiTitle"))
+ .binding(defaults.quickNav.button12.uiTitle,
+ () -> config.quickNav.button12.uiTitle,
+ newValue -> config.quickNav.button12.uiTitle = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.quickNav.button.clickEvent"))
+ .binding(defaults.quickNav.button12.clickEvent,
+ () -> config.quickNav.button12.clickEvent,
+ newValue -> config.quickNav.button12.clickEvent = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .build())
- .build();
- }
+ .build();
+ }
}
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/SlayersCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/SlayersCategory.java
index 005bebab..0a65aa3b 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/SlayersCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/SlayersCategory.java
@@ -13,131 +13,131 @@ import net.minecraft.text.Text;
public class SlayersCategory {
- public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) {
- return ConfigCategory.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.category.slayer"))
+ public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) {
+ return ConfigCategory.createBuilder()
+ .name(Text.translatable("skyblocker.config.slayer"))
- //Enderman Slayer
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.endermanSlayer"))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.endermanSlayer.enableYangGlyphsNotification"))
- .binding(defaults.slayer.endermanSlayer.enableYangGlyphsNotification,
- () -> config.slayer.endermanSlayer.enableYangGlyphsNotification,
- newValue -> config.slayer.endermanSlayer.enableYangGlyphsNotification = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.endermanSlayer.highlightBeacons"))
- .binding(defaults.slayer.endermanSlayer.highlightBeacons,
- () -> config.slayer.endermanSlayer.highlightBeacons,
- newValue -> config.slayer.endermanSlayer.highlightBeacons = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.endermanSlayer.highlightNukekubiHeads"))
- .binding(defaults.slayer.endermanSlayer.highlightNukekubiHeads,
- () -> config.slayer.endermanSlayer.highlightNukekubiHeads,
- newValue -> config.slayer.endermanSlayer.highlightNukekubiHeads = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .build())
+ //Enderman Slayer
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.slayer.endermanSlayer"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.slayer.endermanSlayer.enableYangGlyphsNotification"))
+ .binding(defaults.slayers.endermanSlayer.enableYangGlyphsNotification,
+ () -> config.slayers.endermanSlayer.enableYangGlyphsNotification,
+ newValue -> config.slayers.endermanSlayer.enableYangGlyphsNotification = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.slayer.endermanSlayer.highlightBeacons"))
+ .binding(defaults.slayers.endermanSlayer.highlightBeacons,
+ () -> config.slayers.endermanSlayer.highlightBeacons,
+ newValue -> config.slayers.endermanSlayer.highlightBeacons = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.slayer.endermanSlayer.highlightNukekubiHeads"))
+ .binding(defaults.slayers.endermanSlayer.highlightNukekubiHeads,
+ () -> config.slayers.endermanSlayer.highlightNukekubiHeads,
+ newValue -> config.slayers.endermanSlayer.highlightNukekubiHeads = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
- //Vampire Slayer
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("text.autoconfig.skyblocker.option.slayer.vampireSlayer"))
- .collapsed(true)
- .option(Option.<Boolean>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(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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Integer>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.<Boolean>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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Integer>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.<Integer>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.<Boolean>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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Float>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.<Boolean>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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Integer>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.<Boolean>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(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Integer>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())
+ //Vampire Slayer
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.slayer.vampireSlayer"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.slayer.vampireSlayer.enableEffigyWaypoints"))
+ .binding(defaults.slayers.vampireSlayer.enableEffigyWaypoints,
+ () -> config.slayers.vampireSlayer.enableEffigyWaypoints,
+ newValue -> config.slayers.vampireSlayer.enableEffigyWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.slayer.vampireSlayer.compactEffigyWaypoints"))
+ .binding(defaults.slayers.vampireSlayer.compactEffigyWaypoints,
+ () -> config.slayers.vampireSlayer.compactEffigyWaypoints,
+ newValue -> config.slayers.vampireSlayer.compactEffigyWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.slayer.vampireSlayer.effigyUpdateFrequency"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.slayer.vampireSlayer.effigyUpdateFrequency.@Tooltip")))
+ .binding(defaults.slayers.vampireSlayer.effigyUpdateFrequency,
+ () -> config.slayers.vampireSlayer.effigyUpdateFrequency,
+ newValue -> config.slayers.vampireSlayer.effigyUpdateFrequency = newValue)
+ .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(1, 10).step(1))
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.slayer.vampireSlayer.enableHolyIceIndicator"))
+ .binding(defaults.slayers.vampireSlayer.enableHolyIceIndicator,
+ () -> config.slayers.vampireSlayer.enableHolyIceIndicator,
+ newValue -> config.slayers.vampireSlayer.enableHolyIceIndicator = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.slayer.vampireSlayer.holyIceIndicatorTickDelay"))
+ .binding(defaults.slayers.vampireSlayer.holyIceIndicatorTickDelay,
+ () -> config.slayers.vampireSlayer.holyIceIndicatorTickDelay,
+ newValue -> config.slayers.vampireSlayer.holyIceIndicatorTickDelay = newValue)
+ .controller(IntegerFieldControllerBuilder::create)
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.slayer.vampireSlayer.holyIceUpdateFrequency"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.slayer.vampireSlayer.holyIceUpdateFrequency.@Tooltip")))
+ .binding(defaults.slayers.vampireSlayer.holyIceUpdateFrequency,
+ () -> config.slayers.vampireSlayer.holyIceUpdateFrequency,
+ newValue -> config.slayers.vampireSlayer.holyIceUpdateFrequency = newValue)
+ .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(1, 10).step(1))
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.slayer.vampireSlayer.enableHealingMelonIndicator"))
+ .binding(defaults.slayers.vampireSlayer.enableHealingMelonIndicator,
+ () -> config.slayers.vampireSlayer.enableHealingMelonIndicator,
+ newValue -> config.slayers.vampireSlayer.enableHealingMelonIndicator = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Float>createBuilder()
+ .name(Text.translatable("skyblocker.config.slayer.vampireSlayer.healingMelonHealthThreshold"))
+ .binding(defaults.slayers.vampireSlayer.healingMelonHealthThreshold,
+ () -> config.slayers.vampireSlayer.healingMelonHealthThreshold,
+ newValue -> config.slayers.vampireSlayer.healingMelonHealthThreshold = newValue)
+ .controller(FloatFieldControllerBuilder::create)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.slayer.vampireSlayer.enableSteakStakeIndicator"))
+ .binding(defaults.slayers.vampireSlayer.enableSteakStakeIndicator,
+ () -> config.slayers.vampireSlayer.enableSteakStakeIndicator,
+ newValue -> config.slayers.vampireSlayer.enableSteakStakeIndicator = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.slayer.vampireSlayer.steakStakeUpdateFrequency"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.slayer.vampireSlayer.steakStakeUpdateFrequency.@Tooltip")))
+ .binding(defaults.slayers.vampireSlayer.steakStakeUpdateFrequency,
+ () -> config.slayers.vampireSlayer.steakStakeUpdateFrequency,
+ newValue -> config.slayers.vampireSlayer.steakStakeUpdateFrequency = newValue)
+ .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(1, 10).step(1))
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.slayer.vampireSlayer.enableManiaIndicator"))
+ .binding(defaults.slayers.vampireSlayer.enableManiaIndicator,
+ () -> config.slayers.vampireSlayer.enableManiaIndicator,
+ newValue -> config.slayers.vampireSlayer.enableManiaIndicator = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.slayer.vampireSlayer.maniaUpdateFrequency"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.slayer.vampireSlayer.maniaUpdateFrequency.@Tooltip")))
+ .binding(defaults.slayers.vampireSlayer.maniaUpdateFrequency,
+ () -> config.slayers.vampireSlayer.maniaUpdateFrequency,
+ newValue -> config.slayers.vampireSlayer.maniaUpdateFrequency = newValue)
+ .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(1, 10).step(1))
+ .build())
+ .build())
- .build();
- }
+ .build();
+ }
}
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java
new file mode 100644
index 00000000..c6936335
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java
@@ -0,0 +1,360 @@
+package de.hysky.skyblocker.config.categories;
+
+import de.hysky.skyblocker.config.ConfigUtils;
+import de.hysky.skyblocker.config.SkyblockerConfig;
+import de.hysky.skyblocker.skyblock.fancybars.StatusBarsConfigScreen;
+import de.hysky.skyblocker.utils.render.title.TitleContainerConfigScreen;
+import de.hysky.skyblocker.config.configs.UIAndVisualsConfig;
+import de.hysky.skyblocker.utils.waypoint.Waypoint;
+import dev.isxander.yacl3.api.ConfigCategory;
+import dev.isxander.yacl3.api.*;
+import dev.isxander.yacl3.api.controller.FloatFieldControllerBuilder;
+import dev.isxander.yacl3.api.controller.IntegerSliderControllerBuilder;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
+
+public class UIAndVisualsCategory {
+ public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) {
+ return ConfigCategory.createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals"))
+
+ //Ungrouped Options
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.compactorDeletorPreview"))
+ .binding(defaults.uiAndVisuals.compactorDeletorPreview,
+ () -> config.uiAndVisuals.compactorDeletorPreview,
+ newValue -> config.uiAndVisuals.compactorDeletorPreview = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.dontStripSkinAlphaValues"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.uiAndVisuals.dontStripSkinAlphaValues.@Tooltip")))
+ .binding(defaults.uiAndVisuals.dontStripSkinAlphaValues,
+ () -> config.uiAndVisuals.dontStripSkinAlphaValues,
+ newValue -> config.uiAndVisuals.dontStripSkinAlphaValues = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .flag(OptionFlag.ASSET_RELOAD)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.backpackPreviewWithoutShift"))
+ .binding(defaults.uiAndVisuals.backpackPreviewWithoutShift,
+ () -> config.uiAndVisuals.backpackPreviewWithoutShift,
+ newValue -> config.uiAndVisuals.backpackPreviewWithoutShift = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.hideEmptyTooltips"))
+ .binding(defaults.uiAndVisuals.hideEmptyTooltips,
+ () -> config.uiAndVisuals.hideEmptyTooltips,
+ newValue -> config.uiAndVisuals.hideEmptyTooltips = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.fancyCraftingTable"))
+ .binding(defaults.uiAndVisuals.fancyCraftingTable,
+ () -> config.uiAndVisuals.fancyCraftingTable,
+ newValue -> config.uiAndVisuals.fancyCraftingTable = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.hideStatusEffectOverlay"))
+ .binding(defaults.uiAndVisuals.hideStatusEffectOverlay,
+ () -> config.uiAndVisuals.hideStatusEffectOverlay,
+ newValue -> config.uiAndVisuals.hideStatusEffectOverlay = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+
+ //Chest Value FIXME change dropdown to color controller
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.chestValue"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.chestValue.enableChestValue"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.uiAndVisuals.chestValue.enableChestValue.@Tooltip")))
+ .binding(defaults.uiAndVisuals.chestValue.enableChestValue,
+ () -> config.uiAndVisuals.chestValue.enableChestValue,
+ newValue -> config.uiAndVisuals.chestValue.enableChestValue = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Formatting>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.chestValue.color"))
+ .binding(defaults.uiAndVisuals.chestValue.color,
+ () -> config.uiAndVisuals.chestValue.color,
+ newValue -> config.uiAndVisuals.chestValue.color = newValue)
+ .controller(ConfigUtils.getEnumDropdownControllerFactory(ConfigUtils.FORMATTING_FORMATTER))
+ .build())
+ .option(Option.<Formatting>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.chestValue.incompleteColor"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.uiAndVisuals.chestValue.incompleteColor.@Tooltip")))
+ .binding(defaults.uiAndVisuals.chestValue.incompleteColor,
+ () -> config.uiAndVisuals.chestValue.incompleteColor,
+ newValue -> config.uiAndVisuals.chestValue.incompleteColor = newValue)
+ .controller(ConfigUtils.getEnumDropdownControllerFactory(ConfigUtils.FORMATTING_FORMATTER))
+ .build())
+ .build())
+
+ //Item Cooldown
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.itemCooldown"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.itemCooldown.enableItemCooldowns"))
+ .binding(defaults.uiAndVisuals.itemCooldown.enableItemCooldowns,
+ () -> config.uiAndVisuals.itemCooldown.enableItemCooldowns,
+ newValue -> config.uiAndVisuals.itemCooldown.enableItemCooldowns = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
+
+ //Title Container
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.titleContainer"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.uiAndVisuals.titleContainer.@Tooltip")))
+ .collapsed(true)
+ .option(Option.<Float>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.titleContainer.titleContainerScale"))
+ .binding(defaults.uiAndVisuals.titleContainer.titleContainerScale,
+ () -> config.uiAndVisuals.titleContainer.titleContainerScale,
+ newValue -> config.uiAndVisuals.titleContainer.titleContainerScale = newValue)
+ .controller(opt -> FloatFieldControllerBuilder.create(opt).range(30f, 140f))
+ .build())
+ .option(ButtonOption.createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.titleContainer.config"))
+ .text(Text.translatable("text.skyblocker.open"))
+ .action((screen, opt) -> MinecraftClient.getInstance().setScreen(new TitleContainerConfigScreen(screen)))
+ .build())
+ .build())
+
+ //Tab Hud
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.tabHud"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.tabHud.tabHudEnabled"))
+ .binding(defaults.uiAndVisuals.tabHud.tabHudEnabled,
+ () -> config.uiAndVisuals.tabHud.tabHudEnabled,
+ newValue -> config.uiAndVisuals.tabHud.tabHudEnabled = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.tabHud.tabHudScale"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.uiAndVisuals.tabHud.tabHudScale.@Tooltip")))
+ .binding(defaults.uiAndVisuals.tabHud.tabHudScale,
+ () -> config.uiAndVisuals.tabHud.tabHudScale,
+ newValue -> config.uiAndVisuals.tabHud.tabHudScale = newValue)
+ .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(10, 200).step(1))
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.tabHud.enableHudBackground"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.uiAndVisuals.tabHud.enableHudBackground.@Tooltip")))
+ .binding(defaults.uiAndVisuals.tabHud.enableHudBackground,
+ () -> config.uiAndVisuals.tabHud.enableHudBackground,
+ newValue -> config.uiAndVisuals.tabHud.enableHudBackground = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.tabHud.plainPlayerNames"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.uiAndVisuals.tabHud.plainPlayerNames.@Tooltip")))
+ .binding(defaults.uiAndVisuals.tabHud.plainPlayerNames,
+ () -> config.uiAndVisuals.tabHud.plainPlayerNames,
+ newValue -> config.uiAndVisuals.tabHud.plainPlayerNames = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<UIAndVisualsConfig.NameSorting>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.tabHud.nameSorting"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.uiAndVisuals.tabHud.nameSorting.@Tooltip")))
+ .binding(defaults.uiAndVisuals.tabHud.nameSorting,
+ () -> config.uiAndVisuals.tabHud.nameSorting,
+ newValue -> config.uiAndVisuals.tabHud.nameSorting = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .build())
+
+ // Fancy Auction House
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.fancyAuctionHouse"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.fancyAuctionHouse.enabled"))
+ .binding(defaults.uiAndVisuals.fancyAuctionHouse.enabled,
+ () -> config.uiAndVisuals.fancyAuctionHouse.enabled,
+ newValue -> config.uiAndVisuals.fancyAuctionHouse.enabled = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.fancyAuctionHouse.highlightUnderAvgPrice"))
+ .binding(defaults.uiAndVisuals.fancyAuctionHouse.highlightCheapBIN,
+ () -> config.uiAndVisuals.fancyAuctionHouse.highlightCheapBIN,
+ newValue -> config.uiAndVisuals.fancyAuctionHouse.highlightCheapBIN = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
+
+ //Fancy Bars
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.bars"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.bars.enableBars"))
+ .binding(defaults.uiAndVisuals.bars.enableBars,
+ () -> config.uiAndVisuals.bars.enableBars,
+ newValue -> config.uiAndVisuals.bars.enableBars = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(ButtonOption.createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.bars.openScreen"))
+ .text(Text.translatable("text.skyblocker.open"))
+ .action((screen, opt) -> MinecraftClient.getInstance().setScreen(new StatusBarsConfigScreen()))
+ .build())
+ .build())
+
+ //Waypoints
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.waypoints"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.waypoints.enableWaypoints"))
+ .binding(defaults.uiAndVisuals.waypoints.enableWaypoints,
+ () -> config.uiAndVisuals.waypoints.enableWaypoints,
+ newValue -> config.uiAndVisuals.waypoints.enableWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Waypoint.Type>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.waypoints.waypointType"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.uiAndVisuals.waypoints.waypointType.@Tooltip"),
+ Text.translatable("skyblocker.config.uiAndVisuals.waypoints.waypointType")))
+ .binding(defaults.uiAndVisuals.waypoints.waypointType,
+ () -> config.uiAndVisuals.waypoints.waypointType,
+ newValue -> config.uiAndVisuals.waypoints.waypointType = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .build())
+
+ //Teleport Overlays
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.teleportOverlay"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.teleportOverlay.enableTeleportOverlays"))
+ .binding(defaults.uiAndVisuals.teleportOverlay.enableTeleportOverlays,
+ () -> config.uiAndVisuals.teleportOverlay.enableTeleportOverlays,
+ newValue -> config.uiAndVisuals.teleportOverlay.enableTeleportOverlays = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.teleportOverlay.enableWeirdTransmission"))
+ .binding(defaults.uiAndVisuals.teleportOverlay.enableWeirdTransmission,
+ () -> config.uiAndVisuals.teleportOverlay.enableWeirdTransmission,
+ newValue -> config.uiAndVisuals.teleportOverlay.enableWeirdTransmission = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.teleportOverlay.enableInstantTransmission"))
+ .binding(defaults.uiAndVisuals.teleportOverlay.enableInstantTransmission,
+ () -> config.uiAndVisuals.teleportOverlay.enableInstantTransmission,
+ newValue -> config.uiAndVisuals.teleportOverlay.enableInstantTransmission = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.teleportOverlay.enableEtherTransmission"))
+ .binding(defaults.uiAndVisuals.teleportOverlay.enableEtherTransmission,
+ () -> config.uiAndVisuals.teleportOverlay.enableEtherTransmission,
+ newValue -> config.uiAndVisuals.teleportOverlay.enableEtherTransmission = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.teleportOverlay.enableSinrecallTransmission"))
+ .binding(defaults.uiAndVisuals.teleportOverlay.enableSinrecallTransmission,
+ () -> config.uiAndVisuals.teleportOverlay.enableSinrecallTransmission,
+ newValue -> config.uiAndVisuals.teleportOverlay.enableSinrecallTransmission = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.teleportOverlay.enableWitherImpact"))
+ .binding(defaults.uiAndVisuals.teleportOverlay.enableWitherImpact,
+ () -> config.uiAndVisuals.teleportOverlay.enableWitherImpact,
+ newValue -> config.uiAndVisuals.teleportOverlay.enableWitherImpact = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
+
+ //Search overlay
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.searchOverlay"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.searchOverlay.enableBazaar"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.uiAndVisuals.searchOverlay.enableBazaar.@Tooltip")))
+ .binding(defaults.uiAndVisuals.searchOverlay.enableBazaar,
+ () -> config.uiAndVisuals.searchOverlay.enableBazaar,
+ newValue -> config.uiAndVisuals.searchOverlay.enableBazaar = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.searchOverlay.enableAuctionHouse"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.uiAndVisuals.searchOverlay.enableAuctionHouse.@Tooltip")))
+ .binding(defaults.uiAndVisuals.searchOverlay.enableAuctionHouse,
+ () -> config.uiAndVisuals.searchOverlay.enableAuctionHouse,
+ newValue -> config.uiAndVisuals.searchOverlay.enableAuctionHouse = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.searchOverlay.keepPreviousSearches"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.uiAndVisuals.searchOverlay.keepPreviousSearches.@Tooltip")))
+ .binding(defaults.uiAndVisuals.searchOverlay.keepPreviousSearches,
+ () -> config.uiAndVisuals.searchOverlay.keepPreviousSearches,
+ newValue -> config.uiAndVisuals.searchOverlay.keepPreviousSearches = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.searchOverlay.maxSuggestions"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.uiAndVisuals.searchOverlay.maxSuggestions.@Tooltip")))
+ .binding(defaults.uiAndVisuals.searchOverlay.maxSuggestions,
+ () -> config.uiAndVisuals.searchOverlay.maxSuggestions,
+ newValue -> config.uiAndVisuals.searchOverlay.maxSuggestions = newValue)
+ .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(0, 5).step(1))
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.searchOverlay.historyLength"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.uiAndVisuals.searchOverlay.historyLength.@Tooltip")))
+ .binding(defaults.uiAndVisuals.searchOverlay.historyLength,
+ () -> config.uiAndVisuals.searchOverlay.historyLength,
+ newValue -> config.uiAndVisuals.searchOverlay.historyLength = newValue)
+ .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(0, 5).step(1))
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.searchOverlay.enableCommands"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.uiAndVisuals.searchOverlay.enableCommands.@Tooltip")))
+ .binding(defaults.uiAndVisuals.searchOverlay.enableCommands,
+ () -> config.uiAndVisuals.searchOverlay.enableCommands,
+ newValue -> config.uiAndVisuals.searchOverlay.enableCommands = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
+
+ //Flame Overlay
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.flameOverlay"))
+ .collapsed(true)
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.flameOverlay.flameHeight"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.uiAndVisuals.flameOverlay.flameHeight.@Tooltip")))
+ .binding(defaults.uiAndVisuals.flameOverlay.flameHeight,
+ () -> config.uiAndVisuals.flameOverlay.flameHeight,
+ newValue -> config.uiAndVisuals.flameOverlay.flameHeight = newValue)
+ .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(0, 100).step(1))
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.uiAndVisuals.flameOverlay.flameOpacity"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.uiAndVisuals.flameOverlay.flameOpacity.@Tooltip")))
+ .binding(defaults.uiAndVisuals.flameOverlay.flameOpacity,
+ () -> config.uiAndVisuals.flameOverlay.flameOpacity,
+ newValue -> config.uiAndVisuals.flameOverlay.flameOpacity = newValue)
+ .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(0, 100).step(1))
+ .build())
+ .build())
+
+ .build();
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/config/configs/ChatConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/ChatConfig.java
new file mode 100644
index 00000000..f857ad61
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/config/configs/ChatConfig.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 ChatConfig {
+ @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/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..2c99dc56
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/config/configs/DungeonsConfig.java
@@ -0,0 +1,289 @@
+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 DungeonMap dungeonMap = new DungeonMap();
+
+ @SerialEntry
+ public PuzzleSolvers puzzleSolvers = new PuzzleSolvers();
+
+ @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 PuzzleSolvers {
+ @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..56e110b6
--- /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 acceptReparty = 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.config.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/MiningConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/MiningConfig.java
new file mode 100644
index 00000000..fe845e55
--- /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 commissionsX = 10;
+
+ @SerialEntry
+ public int commissionsY = 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..919a26d8
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/config/configs/MiscConfig.java
@@ -0,0 +1,33 @@
+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 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.config.misc.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/QuickNavigationConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/QuickNavigationConfig.java
new file mode 100644
index 00000000..2c4347b6
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/config/configs/QuickNavigationConfig.java
@@ -0,0 +1,181 @@
+package de.hysky.skyblocker.config.configs;
+
+import dev.isxander.yacl3.config.v2.api.SerialEntry;
+
+public class QuickNavigationConfig {
+ @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,
+ "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)"
+ */
+ @SerialEntry
+ public QuickNavItem button6 = new QuickNavItem(true, new ItemData("ender_chest"),
+ "(?:Rift )?Storage(?: \\(1/2\\))?", "/storage");
+
+ @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");
+
+ @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");
+
+ @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");
+
+ @SerialEntry
+ public QuickNavItem button10 = new QuickNavItem(true, new ItemData("enchanting_table"), "Enchant Item",
+ "/etable");
+
+
+ @SerialEntry
+ public QuickNavItem button11 = new QuickNavItem(true, new ItemData("anvil"), "Anvil", "/anvil");
+
+ @SerialEntry
+ public QuickNavItem button12 = new QuickNavItem(true, new ItemData("crafting_table"), "Craft Item", "/craft");
+
+ public static class QuickNav {
+ @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,
+ "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)"
+ */
+ @SerialEntry
+ public QuickNavItem button6 = new QuickNavItem(true, new ItemData("ender_chest"),
+ "(?:Rift )?Storage(?: \\(1/2\\))?", "/storage");
+
+ @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");
+
+ @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");
+
+ @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");
+
+ @SerialEntry
+ public QuickNavItem button10 = new QuickNavItem(true, new ItemData("enchanting_table"), "Enchant Item",
+ "/etable");
+
+
+ @SerialEntry
+ public QuickNavItem button11 = new QuickNavItem(true, new ItemData("anvil"), "Anvil", "/anvil");
+
+ @SerialEntry
+ 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;
+ }
+
+ @SerialEntry
+ public Boolean render;
+
+ @SerialEntry
+ public ItemData item;
+
+ @SerialEntry
+ public String uiTitle;
+
+ @SerialEntry
+ public String clickEvent;
+ }
+
+ public static class ItemData {
+ public ItemData(String id, int count, String nbt) {
+ this.id = id;
+ this.count = count;
+ this.nbt = nbt;
+ }
+
+ public ItemData(String id) {
+ this.id = id;
+ this.count = 1;
+ this.nbt = "";
+ }
+
+ @SerialEntry
+ public String id;
+
+ @SerialEntry
+ public int count;
+
+ @SerialEntry
+ public String nbt;
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/config/configs/SlayersConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/SlayersConfig.java
new file mode 100644
index 00000000..ff6c2275
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/config/configs/SlayersConfig.java
@@ -0,0 +1,60 @@
+package de.hysky.skyblocker.config.configs;
+
+import dev.isxander.yacl3.config.v2.api.SerialEntry;
+
+public class SlayersConfig {
+ @SerialEntry
+ public EndermanSlayer endermanSlayer = new EndermanSlayer();
+
+ @SerialEntry
+ public VampireSlayer vampireSlayer = new VampireSlayer();
+
+ public static class EndermanSlayer {
+ @SerialEntry
+ public boolean enableYangGlyphsNotification = true;
+
+ @SerialEntry
+ public boolean highlightBeacons = true;
+
+ @SerialEntry
+ public boolean highlightNukekubiHeads = true;
+ }
+
+ public static class VampireSlayer {
+ @SerialEntry
+ public boolean enableEffigyWaypoints = true;
+
+ @SerialEntry
+ public boolean compactEffigyWaypoints;
+
+ @SerialEntry
+ public int effigyUpdateFrequency = 5;
+
+ @SerialEntry
+ public boolean enableHolyIceIndicator = true;
+
+ @SerialEntry
+ public int holyIceIndicatorTickDelay = 10;
+
+ @SerialEntry
+ public int holyIceUpdateFrequency = 5;
+
+ @SerialEntry
+ public boolean enableHealingMelonIndicator = true;
+
+ @SerialEntry
+ public float healingMelonHealthThreshold = 4f;
+
+ @SerialEntry
+ public boolean enableSteakStakeIndicator = true;
+
+ @SerialEntry
+ public int steakStakeUpdateFrequency = 5;
+
+ @SerialEntry
+ public boolean enableManiaIndicator = true;
+
+ @SerialEntry
+ public int maniaUpdateFrequency = 5;
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java
new file mode 100644
index 00000000..267dde14
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java
@@ -0,0 +1,250 @@
+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;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class UIAndVisualsConfig {
+ @SerialEntry
+ public boolean compactorDeletorPreview = true;
+
+ @SerialEntry
+ public boolean dontStripSkinAlphaValues = true;
+
+ @SerialEntry
+ public boolean backpackPreviewWithoutShift = false;
+
+ @SerialEntry
+ public boolean hideEmptyTooltips = true;
+
+ @SerialEntry
+ public boolean fancyCraftingTable = true;
+
+ @SerialEntry
+ public boolean hideStatusEffectOverlay = false;
+
+ @SerialEntry
+ public ChestValue chestValue = new ChestValue();
+
+ @SerialEntry
+ public ItemCooldown itemCooldown = new ItemCooldown();
+
+ @SerialEntry
+ public TitleContainer titleContainer = new TitleContainer();
+
+ @SerialEntry
+ public TabHudConf tabHud = new TabHudConf();
+
+ @SerialEntry
+ public FancyAuctionHouse fancyAuctionHouse = new FancyAuctionHouse();
+
+ @SerialEntry
+ public Bars bars = new Bars();
+
+ @SerialEntry
+ public Waypoints waypoints = new Waypoints();
+
+ @SerialEntry
+ public TeleportOverlay teleportOverlay = new TeleportOverlay();
+
+ @SerialEntry
+ public SearchOverlay searchOverlay = new SearchOverlay();
+
+ @SerialEntry
+ public FlameOverlay flameOverlay = new FlameOverlay();
+
+ public static class ChestValue {
+ @SerialEntry
+ public boolean enableChestValue = true;
+
+ @SerialEntry
+ public Formatting color = Formatting.DARK_GREEN;
+
+ @SerialEntry
+ public Formatting incompleteColor = Formatting.BLUE;
+ }
+
+ public static class ItemCooldown {
+ @SerialEntry
+ public boolean enableItemCooldowns = true;
+ }
+
+ public static class TitleContainer {
+ @SerialEntry
+ public float titleContainerScale = 100;
+
+ @SerialEntry
+ public int x = 540;
+
+ @SerialEntry
+ public int y = 10;
+
+ @SerialEntry
+ public Direction direction = Direction.HORIZONTAL;
+
+ @SerialEntry
+ public Alignment alignment = Alignment.MIDDLE;
+ }
+
+ 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 TabHudConf {
+ @SerialEntry
+ public boolean tabHudEnabled = true;
+
+ @SerialEntry
+ public int tabHudScale = 100;
+
+ @SerialEntry
+ public boolean enableHudBackground = true;
+
+ @SerialEntry
+ public boolean plainPlayerNames = false;
+
+ @SerialEntry
+ 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 FancyAuctionHouse {
+ @SerialEntry
+ public boolean enabled = true;
+
+ @SerialEntry
+ public boolean highlightCheapBIN = true;
+ }
+
+ public static class Bars {
+ @SerialEntry
+ public boolean enableBars = true;
+
+ // Kept in for backwards compatibility, remove if needed
+ @SerialEntry
+ public OldBarPositions barPositions = new OldBarPositions();
+ }
+
+ /**
+ * Backwards compat
+ */
+ public static class OldBarPositions {
+ @SerialEntry
+ public OldBarPosition healthBarPosition = OldBarPosition.LAYER1;
+
+ @SerialEntry
+ public OldBarPosition manaBarPosition = OldBarPosition.LAYER1;
+
+ @SerialEntry
+ public OldBarPosition defenceBarPosition = OldBarPosition.LAYER1;
+
+ @SerialEntry
+ public OldBarPosition experienceBarPosition = OldBarPosition.LAYER1;
+
+ }
+
+ /**
+ * Backwards compat
+ */
+ public enum OldBarPosition {
+ LAYER1, LAYER2, RIGHT, NONE
+ }
+
+ public static class Waypoints {
+ @SerialEntry
+ public boolean enableWaypoints = true;
+
+ @SerialEntry
+ public Waypoint.Type waypointType = Waypoint.Type.WAYPOINT;
+ }
+
+ public static class TeleportOverlay {
+ @SerialEntry
+ public boolean enableTeleportOverlays = true;
+
+ @SerialEntry
+ public boolean enableWeirdTransmission = true;
+
+ @SerialEntry
+ public boolean enableInstantTransmission = true;
+
+ @SerialEntry
+ public boolean enableEtherTransmission = true;
+
+ @SerialEntry
+ public boolean enableSinrecallTransmission = true;
+
+ @SerialEntry
+ public boolean enableWitherImpact = true;
+ }
+
+ public static class SearchOverlay {
+ @SerialEntry
+ public boolean enableBazaar = true;
+
+ @SerialEntry
+ public boolean enableAuctionHouse = true;
+
+ @SerialEntry
+ public boolean keepPreviousSearches = false;
+
+ @SerialEntry
+ public int maxSuggestions = 3;
+
+ @SerialEntry
+ public int historyLength = 3;
+
+ @SerialEntry
+ public boolean enableCommands = false;
+
+ @SerialEntry
+ public List<String> bazaarHistory = new ArrayList<>();
+
+ @SerialEntry
+ public List<String> auctionHistory = new ArrayList<>();
+ }
+
+ public static class FlameOverlay {
+ @SerialEntry
+ public int flameHeight = 100;
+
+ @SerialEntry
+ public int flameOpacity = 100;
+ }
+
+}