diff options
Diffstat (limited to 'src/main')
43 files changed, 2767 insertions, 2665 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java index a45c9dd8..84c957ca 100644 --- a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java @@ -4,42 +4,42 @@ import de.hysky.skyblocker.config.configs.*; import dev.isxander.yacl3.config.v2.api.SerialEntry; public class SkyblockerConfig { - @SerialEntry - public int version = 2; + @SerialEntry + public int version = 2; - @SerialEntry - public GeneralConfig general = new GeneralConfig(); + @SerialEntry + public GeneralConfig general = new GeneralConfig(); - @SerialEntry - public UiAndVisualsConfig uiAndVisuals = new UiAndVisualsConfig(); + @SerialEntry + public UIAndVisualsConfig uiAndVisuals = new UIAndVisualsConfig(); - @SerialEntry - public HelperConfig helper = new HelperConfig(); + @SerialEntry + public HelperConfig helper = new HelperConfig(); - @SerialEntry - public DungeonsConfig dungeons = new DungeonsConfig(); + @SerialEntry + public DungeonsConfig dungeons = new DungeonsConfig(); - @SerialEntry - public CrimsonIsleConfig crimsonIsle = new CrimsonIsleConfig(); + @SerialEntry + public CrimsonIsleConfig crimsonIsle = new CrimsonIsleConfig(); - @SerialEntry - public MiningConfig mining = new MiningConfig(); + @SerialEntry + public MiningConfig mining = new MiningConfig(); - @SerialEntry - public FarmingConfig farming = new FarmingConfig(); + @SerialEntry + public FarmingConfig farming = new FarmingConfig(); - @SerialEntry - public OtherLocationsConfig otherLocations = new OtherLocationsConfig(); + @SerialEntry + public OtherLocationsConfig otherLocations = new OtherLocationsConfig(); - @SerialEntry - public SlayerConfig slayer = new SlayerConfig(); + @SerialEntry + public SlayersConfig slayer = new SlayersConfig(); - @SerialEntry - public MessagesConfig messages = new MessagesConfig(); + @SerialEntry + public MessagesFilterConfig messages = new MessagesFilterConfig(); - @SerialEntry - public QuickNavConfig quickNav = new QuickNavConfig(); + @SerialEntry + public QuickNavigationConfig quickNav = new QuickNavigationConfig(); - @SerialEntry - public MiscConfig misc = new MiscConfig(); + @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 11a61cde..f01f463c 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-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(); + 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("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.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("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.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(MessageFilterCategory.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/CrimsonIsleCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/CrimsonIsleCategory.java index a573a622..dd9cb693 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,74 @@ import net.minecraft.text.Text; public class CrimsonIsleCategory { - public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) { - return ConfigCategory.createBuilder() - .name(Text.translatable("skyblocker.category.crimsonIsle")) + public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) { + return ConfigCategory.createBuilder() + .name(Text.translatable("skyblocker.category.crimsonIsle")) - //Kuudra - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.locations.crimsonIsle.kuudra")) - .collapsed(false) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.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.option.locations.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.option.locations.crimsonIsle.kuudra.suppliesAndFuelWaypointType")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.waypoints.waypointType.@Tooltip"))) - .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.option.locations.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.option.locations.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.option.locations.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.option.locations.crimsonIsle.kuudra.noArrowPoisonWarning")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.crimsonIsle.kuudra.arrowPoisonThreshold")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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(); - } + //Kuudra + .group(OptionGroup.createBuilder() + .name(Text.translatable("skyblocker.option.locations.crimsonIsle.kuudra")) + .collapsed(false) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.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.option.locations.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.option.locations.crimsonIsle.kuudra.suppliesAndFuelWaypointType")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.waypoints.waypointType.@Tooltip"))) + .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.option.locations.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.option.locations.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.option.locations.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.option.locations.crimsonIsle.kuudra.noArrowPoisonWarning")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.crimsonIsle.kuudra.arrowPoisonThreshold")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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 f69d6343..00000000 --- a/src/main/java/de/hysky/skyblocker/config/categories/DiscordRPCCategory.java +++ /dev/null @@ -1,50 +0,0 @@ -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.controller.StringControllerBuilder; -import net.minecraft.text.Text; - -public class DiscordRPCCategory { - - public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) { - return ConfigCategory.createBuilder() - .name(Text.translatable("skyblocker.category.richPresence")) - - //Uncategorized Options - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.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.option.richPresence.info")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.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.option.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.option.richPresence.customMessage")) - .binding(defaults.misc.richPresence.customMessage, - () -> config.misc.richPresence.customMessage, - newValue -> config.misc.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 2137f380..94cb01b7 100644 --- a/src/main/java/de/hysky/skyblocker/config/categories/DungeonsCategory.java +++ b/src/main/java/de/hysky/skyblocker/config/categories/DungeonsCategory.java @@ -15,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("skyblocker.option.locations.dungeons")) + public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) { + return ConfigCategory.createBuilder() + .name(Text.translatable("skyblocker.option.locations.dungeons")) - //Dungeon Secret Waypoints - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.locations.dungeons.secretWaypoints")) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.dungeons.secretWaypoints.enableRoomMatching")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.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.option.general.waypoints.waypointType")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.waypoints.waypointType.@Tooltip"))) - .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.option.locations.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.option.locations.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.option.locations.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.option.locations.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.option.locations.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.option.locations.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.option.locations.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.option.locations.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.option.locations.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.option.locations.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.option.locations.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.option.locations.dungeons.secretWaypoints.enablePearlWaypoints")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.secretWaypoints.enableDefaultWaypoints")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.secretWaypoints.enableDefaultWaypoints.@Tooltip"))) - .binding(defaults.dungeons.secretWaypoints.enableDefaultWaypoints, - () -> config.dungeons.secretWaypoints.enableDefaultWaypoints, - newValue -> config.dungeons.secretWaypoints.enableDefaultWaypoints = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .build()) + //Ungrouped Options + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.general.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.option.locations.dungeons.croesusHelper")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.playerSecretsTracker")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.starredMobGlow")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.starredMobBoundingBoxes")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.allowDroppingProtectedItems")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.allowDroppingProtectedItems.@Tooltip"))) + .binding(defaults.dungeons.allowDroppingProtectedItems, + () -> config.dungeons.allowDroppingProtectedItems, + newValue -> config.dungeons.allowDroppingProtectedItems = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.general.acceptReparty")) + .binding(defaults.dungeons.acceptReparty, + () -> config.dungeons.acceptReparty, + newValue -> config.dungeons.acceptReparty = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) - //Dungeon Door Highlight - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.locations.dungeons.doorHighlight")) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.dungeons.doorHighlight.enableDoorHighlight")) - .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.option.locations.dungeons.doorHighlight.doorHighlightType")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.doorHighlight.doorHighlightType.@Tooltip"), Text.translatable("skyblocker.option.locations.dungeons.doorHighlight.doorHighlightType.secretWaypointsNote"))) - .binding(defaults.dungeons.doorHighlight.doorHighlightType, - () -> config.dungeons.doorHighlight.doorHighlightType, - newValue -> config.dungeons.doorHighlight.doorHighlightType = newValue) - .controller(ConfigUtils::createEnumCyclingListController) - .build()) - .build()) + // Map + .group(OptionGroup.createBuilder() + .name(Text.translatable("skyblocker.option.locations.dungeons.map")) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.dungeons.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.option.locations.dungeons.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.option.locations.dungeons.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("skyblocker.option.locations.dungeons.dungeonScore")) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.dungeons.dungeonScore.enableDungeonScoreMessage", 270)) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonScore.enableDungeonScoreTitle", 270)) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonScore.enableDungeonScoreSound", 270)) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonScore.dungeonScoreMessage", 270)) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonScore.enableDungeonScoreMessage", 300)) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonScore.enableDungeonScoreTitle", 300)) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonScore.enableDungeonScoreSound", 300)) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonScore.dungeonScoreMessage", 300)) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonScore.enableDungeonCryptsMessage")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonScore.dungeonCryptsMessageThreshold")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonScore.dungeonCryptsMessage")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonScore.enableScoreHUD")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.dungeonScore.enableScoreHUD.@Tooltip"), Text.translatable("skyblocker.option.locations.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.option.locations.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()) + // Puzzle Solver + .group(OptionGroup.createBuilder() + .name(Text.translatable("skyblocker.option.locations.dungeons.puzzle")) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.dungeons.solveTicTacToe")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.solveTicTacToe.@Tooltip"))) + .binding(defaults.dungeons.puzzleSolver.solveTicTacToe, + () -> config.dungeons.puzzleSolver.solveTicTacToe, + newValue -> config.dungeons.puzzleSolver.solveTicTacToe = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.dungeons.solveThreeWeirdos")) + .binding(defaults.dungeons.puzzleSolver.solveThreeWeirdos, + () -> config.dungeons.puzzleSolver.solveThreeWeirdos, + newValue -> config.dungeons.puzzleSolver.solveThreeWeirdos = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.dungeons.creeperSolver")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.creeperSolver.@Tooltip"))) + .binding(defaults.dungeons.puzzleSolver.creeperSolver, + () -> config.dungeons.puzzleSolver.creeperSolver, + newValue -> config.dungeons.puzzleSolver.creeperSolver = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.dungeons.solveWaterboard")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.solveWaterboard.@Tooltip"))) + .binding(defaults.dungeons.puzzleSolver.solveWaterboard, + () -> config.dungeons.puzzleSolver.solveWaterboard, + newValue -> config.dungeons.puzzleSolver.solveWaterboard = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.dungeons.blazeSolver")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.blazeSolver.@Tooltip"))) + .binding(defaults.dungeons.puzzleSolver.blazeSolver, + () -> config.dungeons.puzzleSolver.blazeSolver, + newValue -> config.dungeons.puzzleSolver.blazeSolver = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.dungeons.solveBoulder")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.solveBoulder.@Tooltip"))) + .binding(defaults.dungeons.puzzleSolver.solveBoulder, + () -> config.dungeons.puzzleSolver.solveBoulder, + newValue -> config.dungeons.puzzleSolver.solveBoulder = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.dungeons.solveIceFill")) + .binding(defaults.dungeons.puzzleSolver.solveIceFill, + () -> config.dungeons.puzzleSolver.solveIceFill, + newValue -> config.dungeons.puzzleSolver.solveIceFill = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.dungeons.solveSilverfish")) + .binding(defaults.dungeons.puzzleSolver.solveSilverfish, + () -> config.dungeons.puzzleSolver.solveSilverfish, + newValue -> config.dungeons.puzzleSolver.solveSilverfish = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.dungeons.solveTrivia")) + .binding(defaults.dungeons.puzzleSolver.solveTrivia, + () -> config.dungeons.puzzleSolver.solveTrivia, + newValue -> config.dungeons.puzzleSolver.solveTrivia = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + .build()) - //Dungeon Chest Profit - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.locations.dungeons.dungeonChestProfit")) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.dungeons.dungeonChestProfit.enableProfitCalculator")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonChestProfit.includeKismet")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonChestProfit.includeEssence")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.dungeonChestProfit.includeEssence.@Tooltip"))) - .binding(defaults.dungeons.dungeonChestProfit.includeEssence, - () -> config.dungeons.dungeonChestProfit.includeEssence, - newValue -> config.dungeons.dungeonChestProfit.includeEssence = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.dungeons.dungeonChestProfit.croesusProfit")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.<Integer>createBuilder() - .name(Text.translatable("skyblocker.option.locations.dungeons.dungeonChestProfit.neutralThreshold")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.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.option.locations.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.option.locations.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.option.general.chestValue.incompleteColor")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.chestValue.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()) + // The Professor (F3/M3) + .group(OptionGroup.createBuilder() + .name(Text.translatable("skyblocker.option.locations.dungeons.professor")) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.dungeons.fireFreezeStaffTimer")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.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.option.locations.dungeons.floor3GuardianHealthDisplay")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.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("skyblocker.option.locations.dungeons.croesusHelper")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.enableMap")) - .binding(defaults.dungeons.dungeonMap.enableMap, - () -> config.dungeons.dungeonMap.enableMap, - newValue -> config.dungeons.dungeonMap.enableMap = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .option(ButtonOption.createBuilder() - .name(Text.translatable("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("skyblocker.option.locations.dungeons.mapScaling")) - .binding(defaults.dungeons.dungeonMap.mapScaling, - () -> config.dungeons.dungeonMap.mapScaling, - newValue -> config.dungeons.dungeonMap.mapScaling = newValue) - .controller(FloatFieldControllerBuilder::create) - .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.dungeons.playerSecretsTracker")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.starredMobGlow")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.starredMobBoundingBoxes")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.solveThreeWeirdos")) - .binding(defaults.dungeons.puzzleSolver.solveThreeWeirdos, - () -> config.dungeons.puzzleSolver.solveThreeWeirdos, - newValue -> config.dungeons.puzzleSolver.solveThreeWeirdos = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.dungeons.blazeSolver")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.blazeSolver.@Tooltip"))) - .binding(defaults.dungeons.puzzleSolver.blazeSolver, - () -> config.dungeons.puzzleSolver.blazeSolver, - newValue -> config.dungeons.puzzleSolver.blazeSolver = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.dungeons.creeperSolver")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.creeperSolver.@Tooltip"))) - .binding(defaults.dungeons.puzzleSolver.creeperSolver, - () -> config.dungeons.puzzleSolver.creeperSolver, - newValue -> config.dungeons.puzzleSolver.creeperSolver = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.dungeons.solveTrivia")) - .binding(defaults.dungeons.puzzleSolver.solveTrivia, - () -> config.dungeons.puzzleSolver.solveTrivia, - newValue -> config.dungeons.puzzleSolver.solveTrivia = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.dungeons.solveTicTacToe")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.solveTicTacToe.@Tooltip"))) - .binding(defaults.dungeons.puzzleSolver.solveTicTacToe, - () -> config.dungeons.puzzleSolver.solveTicTacToe, - newValue -> config.dungeons.puzzleSolver.solveTicTacToe = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.dungeons.solveWaterboard")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.solveWaterboard.@Tooltip"))) - .binding(defaults.dungeons.puzzleSolver.solveWaterboard, - () -> config.dungeons.puzzleSolver.solveWaterboard, - newValue -> config.dungeons.puzzleSolver.solveWaterboard = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.dungeons.solveBoulder")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.solveBoulder.@Tooltip"))) - .binding(defaults.dungeons.puzzleSolver.solveBoulder, - () -> config.dungeons.puzzleSolver.solveBoulder, - newValue -> config.dungeons.puzzleSolver.solveBoulder = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.dungeons.solveIceFill")) - .binding(defaults.dungeons.puzzleSolver.solveIceFill, - () -> config.dungeons.puzzleSolver.solveIceFill, - newValue -> config.dungeons.puzzleSolver.solveIceFill = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.dungeons.solveSilverfish")) - .binding(defaults.dungeons.puzzleSolver.solveSilverfish, - () -> config.dungeons.puzzleSolver.solveSilverfish, - newValue -> config.dungeons.puzzleSolver.solveSilverfish = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.dungeons.fireFreezeStaffTimer")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.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.option.locations.dungeons.floor3GuardianHealthDisplay")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.floor3GuardianHealthDisplay.@Tooltip"))) - .binding(defaults.dungeons.theProfessor.floor3GuardianHealthDisplay, - () -> config.dungeons.theProfessor.floor3GuardianHealthDisplay, - newValue -> config.dungeons.theProfessor.floor3GuardianHealthDisplay = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.dungeons.allowDroppingProtectedItems")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.allowDroppingProtectedItems.@Tooltip"))) - .binding(defaults.dungeons.allowDroppingProtectedItems, - () -> config.dungeons.allowDroppingProtectedItems, - newValue -> config.dungeons.allowDroppingProtectedItems = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) + // Livid (F5/M5) + .group(OptionGroup.createBuilder() + .name(Text.translatable("skyblocker.option.locations.dungeons.livid")) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.dungeons.lividColor.enableLividColorGlow")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.lividColor.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.option.locations.dungeons.lividColor.enableLividColorText")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.lividColor.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.option.locations.dungeons.lividColor.enableLividColorTitle")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.lividColor.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.option.locations.dungeons.lividColor.lividColorText")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.lividColor.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("skyblocker.option.locations.dungeons.mimicMessage")) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.dungeons.mimicMessage.sendMimicMessage")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.mimicMessage.mimicMessage")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.mimicMessage.mimicMessage.@Tooltip"))) - .binding(defaults.dungeons.mimicMessage.mimicMessage, - () -> config.dungeons.mimicMessage.mimicMessage, - newValue -> config.dungeons.mimicMessage.mimicMessage = newValue) - .controller(StringControllerBuilder::create) - .build()) - .build()) + // Terminal (F7/M7) + .group(OptionGroup.createBuilder() + .name(Text.translatable("skyblocker.option.locations.dungeons.terminals")) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.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.option.locations.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.option.locations.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("skyblocker.option.locations.dungeons.lividColor")) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.dungeons.lividColor.enableLividColorGlow")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.lividColor.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.option.locations.dungeons.lividColor.enableLividColorText")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.lividColor.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.option.locations.dungeons.lividColor.enableLividColorTitle")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.lividColor.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.option.locations.dungeons.lividColor.lividColorText")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.lividColor.lividColorText.@Tooltip"))) - .binding(defaults.dungeons.livid.lividColorText, - () -> config.dungeons.livid.lividColorText, - newValue -> config.dungeons.livid.lividColorText = newValue) - .controller(StringControllerBuilder::create) - .build()) - .build()) + // Dungeon Secret Waypoints + .group(OptionGroup.createBuilder() + .name(Text.translatable("skyblocker.option.locations.dungeons.secretWaypoints")) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.dungeons.secretWaypoints.enableRoomMatching")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.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.option.general.waypoints.waypointType")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.waypoints.waypointType.@Tooltip"))) + .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.option.locations.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.option.locations.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.option.locations.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.option.locations.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.option.locations.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.option.locations.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.option.locations.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.option.locations.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.option.locations.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.option.locations.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.option.locations.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.option.locations.dungeons.secretWaypoints.enablePearlWaypoints")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.secretWaypoints.enableDefaultWaypoints")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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("skyblocker.option.locations.dungeons.terminals")) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.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.option.locations.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.option.locations.dungeons.terminals.solveStartsWith")) - .binding(defaults.dungeons.terminals.solveStartsWith, - () -> config.dungeons.terminals.solveStartsWith, - newValue -> config.dungeons.terminals.solveStartsWith = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .build()) - .build(); - } + // Mimic Message + .group(OptionGroup.createBuilder() + .name(Text.translatable("skyblocker.option.locations.dungeons.mimicMessage")) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.dungeons.mimicMessage.sendMimicMessage")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.mimicMessage.mimicMessage")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.doorHighlight")) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.dungeons.doorHighlight.enableDoorHighlight")) + .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.option.locations.dungeons.doorHighlight.doorHighlightType")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.doorHighlight.doorHighlightType.@Tooltip"), Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonScore")) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.dungeons.dungeonScore.enableDungeonScoreMessage", 270)) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonScore.enableDungeonScoreTitle", 270)) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonScore.enableDungeonScoreSound", 270)) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonScore.dungeonScoreMessage", 270)) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonScore.enableDungeonScoreMessage", 300)) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonScore.enableDungeonScoreTitle", 300)) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonScore.enableDungeonScoreSound", 300)) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonScore.dungeonScoreMessage", 300)) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonScore.enableDungeonCryptsMessage")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonScore.dungeonCryptsMessageThreshold")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonScore.dungeonCryptsMessage")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonScore.enableScoreHUD")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dungeons.dungeonScore.enableScoreHUD.@Tooltip"), Text.translatable("skyblocker.option.locations.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.option.locations.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.option.locations.dungeons.dungeonChestProfit")) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.dungeons.dungeonChestProfit.enableProfitCalculator")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonChestProfit.croesusProfit")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonChestProfit.includeKismet")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonChestProfit.includeEssence")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.dungeons.dungeonChestProfit.neutralThreshold")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.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.option.locations.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.option.locations.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.option.general.chestValue.incompleteColor")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.chestValue.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 416fe62e..00000000 --- a/src/main/java/de/hysky/skyblocker/config/categories/DwarvenMinesCategory.java +++ /dev/null @@ -1,153 +0,0 @@ -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 DwarvenMinesCategory { - - public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) { - return ConfigCategory.createBuilder() - .name(Text.translatable("skyblocker.option.locations.dwarvenMines")) - - //Uncategorized Options - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.dwarvenMines.enableDrillFuel")) - .binding(defaults.mining.enableDrillFuel, - () -> config.mining.enableDrillFuel, - newValue -> config.mining.enableDrillFuel = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.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.option.locations.dwarvenMines.solvePuzzler")) - .binding(defaults.mining.dwarvenMines.solvePuzzler, - () -> config.mining.dwarvenMines.solvePuzzler, - newValue -> config.mining.dwarvenMines.solvePuzzler = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.dwarvenMines.metalDetectorHelper")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dwarvenMines.metalDetectorHelper.@Tooltip"))) - .binding(defaults.mining.crystalHollows.metalDetectorHelper, - () -> config.mining.crystalHollows.metalDetectorHelper, - newValue -> config.mining.crystalHollows.metalDetectorHelper = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - - //Dwarven HUD - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.locations.dwarvenMines.dwarvenHud")) - .collapsed(false) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.dwarvenMines.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.option.locations.dwarvenMines.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.option.locations.dwarvenMines.dwarvenHud.style")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dwarvenMines.dwarvenHud.style.@Tooltip[0]"), - Text.translatable("skyblocker.option.locations.dwarvenMines.dwarvenHud.style.@Tooltip[1]"), - Text.translatable("skyblocker.option.locations.dwarvenMines.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.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("skyblocker.option.locations.dwarvenMines.crystalsHud")) - .collapsed(false) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.dwarvenMines.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.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("skyblocker.option.locations.dwarvenMines.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.option.locations.dwarvenMines.crystalsHud.showLocations")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dwarvenMines.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.option.locations.dwarvenMines.crystalsHud.showLocations.locationSize")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dwarvenMines.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()) - //crystals waypoints - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.locations.dwarvenMines.crystalsWaypoints")) - .collapsed(false) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.dwarvenMines.crystalsWaypoints.enabled")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dwarvenMines.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.option.locations.dwarvenMines.crystalsWaypoints.findInChat")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dwarvenMines.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/FarmingCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/FarmingCategory.java new file mode 100644 index 00000000..2c3572c5 --- /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.category.farming")) + + //Garden + .group(OptionGroup.createBuilder() + .name(Text.translatable("skyblocker.option.locations.garden")) + .collapsed(false) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.garden.farmingHud.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.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("skyblocker.option.locations.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.option.locations.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.option.locations.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.option.locations.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 029c0b00..161d1d39 100644 --- a/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java +++ b/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java @@ -3,15 +3,9 @@ package de.hysky.skyblocker.config.categories; import de.hysky.skyblocker.config.ConfigUtils; import de.hysky.skyblocker.config.SkyblockerConfig; import de.hysky.skyblocker.config.configs.GeneralConfig; -import de.hysky.skyblocker.config.configs.UiAndVisualsConfig; -import de.hysky.skyblocker.skyblock.fancybars.StatusBarsConfigScreen; 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; @@ -31,268 +25,12 @@ public class GeneralCategory { .controller(ConfigUtils::createBooleanController) .build()) .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.general.acceptReparty")) - .binding(defaults.dungeons.acceptReparty, - () -> config.dungeons.acceptReparty, - newValue -> config.dungeons.acceptReparty = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.general.betterPartyFinder")) - .binding(defaults.dungeons.fancyPartyFinder, - () -> config.dungeons.fancyPartyFinder, - newValue -> config.dungeons.fancyPartyFinder = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.general.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.option.general.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.option.general.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.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("skyblocker.option.general.hideStatusEffectOverlay")) - .binding(defaults.misc.hideStatusEffectOverlay, - () -> config.misc.hideStatusEffectOverlay, - newValue -> config.misc.hideStatusEffectOverlay = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.general.dontStripSkinAlphaValues")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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.option.general.dungeonQuality")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.dungeonQuality.@Tooltip"))) - .binding(defaults.general.itemTooltip.dungeonQuality, - () -> config.general.itemTooltip.dungeonQuality, - newValue -> config.general.itemTooltip.dungeonQuality = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.general.enableNewYearCakesHelper")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.enableNewYearCakesHelper.@Tooltip"))) - .binding(defaults.helper.enableNewYearCakesHelper, - () -> config.helper.enableNewYearCakesHelper, - newValue -> config.helper.enableNewYearCakesHelper = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - - //Tab Hud - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.general.tabHud")) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.general.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.option.general.tabHud.tabHudScale")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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.option.general.tabHud.enableHudBackground")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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.option.general.tabHud.plainPlayerNames")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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.option.general.tabHud.nameSorting")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.tabHud.nameSorting.@Tooltip"))) - .binding(defaults.uiAndVisuals.tabHud.nameSorting, - () -> config.uiAndVisuals.tabHud.nameSorting, - newValue -> config.uiAndVisuals.tabHud.nameSorting = newValue) - .controller(ConfigUtils::createEnumCyclingListController) - .build()) - .build()) - - //Fancy Bars - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.general.bars")) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.general.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.bars.config.openScreen")) - .text(Text.translatable("text.skyblocker.open")) - .action((screen, opt) -> MinecraftClient.getInstance().setScreen(new StatusBarsConfigScreen())) - .build()) - .build()) - - //Experiments Solver - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.general.experiments")) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.general.experiments.enableChronomatronSolver")) - .binding(defaults.helper.experiments.enableChronomatronSolver, - () -> config.helper.experiments.enableChronomatronSolver, - newValue -> config.helper.experiments.enableChronomatronSolver = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.general.experiments.enableSuperpairsSolver")) - .binding(defaults.helper.experiments.enableSuperpairsSolver, - () -> config.helper.experiments.enableSuperpairsSolver, - newValue -> config.helper.experiments.enableSuperpairsSolver = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.general.experiments.enableUltrasequencerSolver")) - .binding(defaults.helper.experiments.enableUltrasequencerSolver, - () -> config.helper.experiments.enableUltrasequencerSolver, - newValue -> config.helper.experiments.enableUltrasequencerSolver = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .build()) - - //Fishing Helper - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.general.fishing")) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.general.fishing.enableFishingHelper")) - .binding(defaults.helper.fishing.enableFishingHelper, - () -> config.helper.fishing.enableFishingHelper, - newValue -> config.helper.fishing.enableFishingHelper = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.general.fishing.enableFishingTimer")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.fishing.enableFishingTimer.@Tooltip"))) - .binding(defaults.helper.fishing.enableFishingTimer, - () -> config.helper.fishing.enableFishingTimer, - newValue -> config.helper.fishing.enableFishingTimer = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.general.fishing.changeTimerColor")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.fishing.changeTimerColor.@Tooltip"))) - .binding(defaults.helper.fishing.changeTimerColor, - () -> config.helper.fishing.changeTimerColor, - newValue -> config.helper.fishing.changeTimerColor = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .option(Option.<Float>createBuilder() - .name(Text.translatable("skyblocker.option.general.fishing.fishingTimerScale")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.fishing.fishingTimerScale.@Tooltip"))) - .binding(defaults.helper.fishing.fishingTimerScale, - () -> config.helper.fishing.fishingTimerScale, - newValue -> config.helper.fishing.fishingTimerScale = newValue) - .controller(FloatFieldControllerBuilder::create) - .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.general.fishing.hideOtherPlayers")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.fishing.hideOtherPlayers.@Tooltip"))) - .binding(defaults.helper.fishing.hideOtherPlayersRods, - () -> config.helper.fishing.hideOtherPlayersRods, - newValue -> config.helper.fishing.hideOtherPlayersRods = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .build()) - - //Fairy Souls Helper - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.general.fairySouls")) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.general.fairySouls.enableFairySoulsHelper")) - .binding(defaults.helper.fairySouls.enableFairySoulsHelper, - () -> config.helper.fairySouls.enableFairySoulsHelper, - newValue -> config.helper.fairySouls.enableFairySoulsHelper = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.general.fairySouls.highlightFoundSouls")) - .binding(defaults.helper.fairySouls.highlightFoundSouls, - () -> config.helper.fairySouls.highlightFoundSouls, - newValue -> config.helper.fairySouls.highlightFoundSouls = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.general.fairySouls.highlightOnlyNearbySouls")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.fairySouls.highlightOnlyNearbySouls.@Tooltip"))) - .binding(defaults.helper.fairySouls.highlightOnlyNearbySouls, - () -> config.helper.fairySouls.highlightOnlyNearbySouls, - newValue -> config.helper.fairySouls.highlightOnlyNearbySouls = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .build()) - - //Mythological Ritual - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.general.mythologicalRitual")) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.general.mythologicalRitual.enableMythologicalRitualHelper")) - .binding(defaults.helper.mythologicalRitual.enableMythologicalRitualHelper, - () -> config.helper.mythologicalRitual.enableMythologicalRitualHelper, - newValue -> config.helper.mythologicalRitual.enableMythologicalRitualHelper = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .build()) - - //Item Cooldown - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.general.itemCooldown")) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.general.itemCooldown.enableItemCooldowns")) - .binding(defaults.uiAndVisuals.itemCooldown.enableItemCooldowns, - () -> config.uiAndVisuals.itemCooldown.enableItemCooldowns, - newValue -> config.uiAndVisuals.itemCooldown.enableItemCooldowns = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .build()) //Shortcuts .group(OptionGroup.createBuilder() @@ -329,27 +67,6 @@ public class GeneralCategory { .build()) .build()) - //Waypoints - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.general.waypoints")) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.general.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.option.general.waypoints.waypointType")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.waypoints.waypointType.@Tooltip"), Text.translatable("skyblocker.option.general.waypoints.waypointType.generalNote"))) - .binding(defaults.uiAndVisuals.waypoints.waypointType, - () -> config.uiAndVisuals.waypoints.waypointType, - newValue -> config.uiAndVisuals.waypoints.waypointType = newValue) - .controller(ConfigUtils::createEnumCyclingListController) - .build()) - .build()) - //Quiver Warning .group(OptionGroup.createBuilder() .name(Text.translatable("skyblocker.option.general.quiverWarning")) @@ -465,12 +182,20 @@ public class GeneralCategory { .name(Text.translatable("skyblocker.option.general.itemTooltip.enableAccessoriesHelper")) .description(OptionDescription.of(Text.translatable("skyblocker.option.general.itemTooltip.enableAccessoriesHelper.@Tooltip[0]"), Text.literal("\n\n✔ Collected").formatted(Formatting.GREEN), Text.translatable("skyblocker.option.general.itemTooltip.enableAccessoriesHelper.@Tooltip[1]"), Text.literal("\n✦ Upgrade").withColor(0x218bff), Text.translatable("skyblocker.option.general.itemTooltip.enableAccessoriesHelper.@Tooltip[2]"), Text.literal("\n↑ Upgradable").withColor(0xf8d048), Text.translatable("skyblocker.option.general.itemTooltip.enableAccessoriesHelper.@Tooltip[3]"), - Text.literal("\n↓ Downgrade").formatted(Formatting.GRAY), Text.translatable("skyblocker.option.general.itemTooltip.enableAccessoriesHelper.@Tooltip[4]"), Text.literal("\n✖ Missing").formatted(Formatting.RED), Text.translatable("skyblocker.option.general.itemTooltip.enableAccessoriesHelper.@Tooltip[5]"))) + Text.literal("\n↓ Downgrade").formatted(Formatting.GRAY), Text.translatable("skyblocker.option.general.itemTooltip.enableAccessoriesHelper.@Tooltip[4]"), Text.literal("\n✖ Missing").formatted(Formatting.RED), Text.translatable("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()) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.general.itemTooltip.dungeonQuality")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.itemTooltip.dungeonQuality.@Tooltip"))) + .binding(defaults.general.itemTooltip.dungeonQuality, + () -> config.general.itemTooltip.dungeonQuality, + newValue -> config.general.itemTooltip.dungeonQuality = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) .build()) //Item Info Display @@ -546,35 +271,6 @@ public class GeneralCategory { .build()) .build()) - //Chest Value - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.general.chestValue")) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.general.chestValue.enableChestValue")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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.option.general.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.option.general.chestValue.incompleteColor")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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()) - //Special Effects .group(OptionGroup.createBuilder() .name(Text.translatable("skyblocker.option.general.specialEffects")) @@ -609,168 +305,6 @@ public class GeneralCategory { .build()) .build()) - //Title Container - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.general.titleContainer")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.titleContainer.@Tooltip"))) - .collapsed(true) - .option(Option.<Float>createBuilder() - .name(Text.translatable("skyblocker.option.general.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.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("skyblocker.option.general.teleportOverlay")) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.general.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.option.general.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.option.general.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.option.general.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.option.general.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.option.general.teleportOverlay.enableWitherImpact")) - .binding(defaults.uiAndVisuals.teleportOverlay.enableWitherImpact, - () -> config.uiAndVisuals.teleportOverlay.enableWitherImpact, - newValue -> config.uiAndVisuals.teleportOverlay.enableWitherImpact = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .build()) - - //Flame Overlay - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.general.flameOverlay")) - .collapsed(true) - .option(Option.<Integer>createBuilder() - .name(Text.translatable("skyblocker.option.general.flameOverlay.flameHeight")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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.option.general.flameOverlay.flameOpacity")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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()) - - //Search overlay - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.general.searchOverlay")) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.general.searchOverlay.enableBazaar")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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.option.general.searchOverlay.enableAuctionHouse")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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.option.general.searchOverlay.keepPreviousSearches")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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.option.general.searchOverlay.maxSuggestions")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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.option.general.searchOverlay.historyLength")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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.option.general.searchOverlay.enableCommands")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.general.searchOverlay.enableCommands.@Tooltip"))) - .binding(defaults.uiAndVisuals.searchOverlay.enableCommands, - () -> config.uiAndVisuals.searchOverlay.enableCommands, - newValue -> config.uiAndVisuals.searchOverlay.enableCommands = newValue) - .controller(ConfigUtils::createBooleanController) - .build()) - .build()) - - // Fancy Auction House - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.general.betterAuctionHouse")) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.general.betterAuctionHouse.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.option.general.betterAuctionHouse.highlightUnderAvgPrice")) - .binding(defaults.uiAndVisuals.fancyAuctionHouse.highlightCheapBIN, - () -> config.uiAndVisuals.fancyAuctionHouse.highlightCheapBIN, - newValue -> config.uiAndVisuals.fancyAuctionHouse.highlightCheapBIN = newValue) - .controller(ConfigUtils::createBooleanController) - .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..011fb7de --- /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.category.helper")) + + //Ungrouped Options + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.general.enableNewYearCakesHelper")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.enableNewYearCakesHelper.@Tooltip"))) + .binding(defaults.helper.enableNewYearCakesHelper, + () -> config.helper.enableNewYearCakesHelper, + newValue -> config.helper.enableNewYearCakesHelper = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + + //Mythological Ritual + .group(OptionGroup.createBuilder() + .name(Text.translatable("skyblocker.option.general.mythologicalRitual")) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.general.mythologicalRitual.enableMythologicalRitualHelper")) + .binding(defaults.helper.mythologicalRitual.enableMythologicalRitualHelper, + () -> config.helper.mythologicalRitual.enableMythologicalRitualHelper, + newValue -> config.helper.mythologicalRitual.enableMythologicalRitualHelper = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + .build()) + + //Experiments Solver + .group(OptionGroup.createBuilder() + .name(Text.translatable("skyblocker.option.general.experiments")) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.general.experiments.enableChronomatronSolver")) + .binding(defaults.helper.experiments.enableChronomatronSolver, + () -> config.helper.experiments.enableChronomatronSolver, + newValue -> config.helper.experiments.enableChronomatronSolver = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.general.experiments.enableSuperpairsSolver")) + .binding(defaults.helper.experiments.enableSuperpairsSolver, + () -> config.helper.experiments.enableSuperpairsSolver, + newValue -> config.helper.experiments.enableSuperpairsSolver = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.general.experiments.enableUltrasequencerSolver")) + .binding(defaults.helper.experiments.enableUltrasequencerSolver, + () -> config.helper.experiments.enableUltrasequencerSolver, + newValue -> config.helper.experiments.enableUltrasequencerSolver = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + .build()) + + //Fishing Helper + .group(OptionGroup.createBuilder() + .name(Text.translatable("skyblocker.option.general.fishing")) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.general.fishing.enableFishingHelper")) + .binding(defaults.helper.fishing.enableFishingHelper, + () -> config.helper.fishing.enableFishingHelper, + newValue -> config.helper.fishing.enableFishingHelper = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.general.fishing.enableFishingTimer")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.fishing.enableFishingTimer.@Tooltip"))) + .binding(defaults.helper.fishing.enableFishingTimer, + () -> config.helper.fishing.enableFishingTimer, + newValue -> config.helper.fishing.enableFishingTimer = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.general.fishing.changeTimerColor")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.fishing.changeTimerColor.@Tooltip"))) + .binding(defaults.helper.fishing.changeTimerColor, + () -> config.helper.fishing.changeTimerColor, + newValue -> config.helper.fishing.changeTimerColor = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + .option(Option.<Float>createBuilder() + .name(Text.translatable("skyblocker.option.general.fishing.fishingTimerScale")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.fishing.fishingTimerScale.@Tooltip"))) + .binding(defaults.helper.fishing.fishingTimerScale, + () -> config.helper.fishing.fishingTimerScale, + newValue -> config.helper.fishing.fishingTimerScale = newValue) + .controller(FloatFieldControllerBuilder::create) + .build()) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.general.fishing.hideOtherPlayers")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.fishing.hideOtherPlayers.@Tooltip"))) + .binding(defaults.helper.fishing.hideOtherPlayersRods, + () -> config.helper.fishing.hideOtherPlayersRods, + newValue -> config.helper.fishing.hideOtherPlayersRods = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + .build()) + + //Fairy Souls Helper + .group(OptionGroup.createBuilder() + .name(Text.translatable("skyblocker.option.general.fairySouls")) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.general.fairySouls.enableFairySoulsHelper")) + .binding(defaults.helper.fairySouls.enableFairySoulsHelper, + () -> config.helper.fairySouls.enableFairySoulsHelper, + newValue -> config.helper.fairySouls.enableFairySoulsHelper = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.general.fairySouls.highlightFoundSouls")) + .binding(defaults.helper.fairySouls.highlightFoundSouls, + () -> config.helper.fairySouls.highlightFoundSouls, + newValue -> config.helper.fairySouls.highlightFoundSouls = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.general.fairySouls.highlightOnlyNearbySouls")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.fairySouls.highlightOnlyNearbySouls.@Tooltip"))) + .binding(defaults.helper.fairySouls.highlightOnlyNearbySouls, + () -> config.helper.fairySouls.highlightOnlyNearbySouls, + newValue -> config.helper.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 1be80f70..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("skyblocker.category.locations")) - - //Barn - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.locations.barn")) - .collapsed(false) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.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.option.locations.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.option.locations.rift")) - .collapsed(false) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.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.option.locations.rift.blobbercystGlow")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.rift.enigmaSoulWaypoints")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.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.option.locations.rift.mcGrubberStacks")) - .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.end")) - .collapsed(false) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.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.option.locations.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.option.locations.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.option.locations.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.option.locations.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.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("skyblocker.option.locations.end.resetName")) - .text(Text.translatable("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("skyblocker.option.locations.spidersDen")) - .collapsed(false) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.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.option.locations.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()) - - //Garden - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.locations.garden")) - .collapsed(false) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.option.locations.garden.farmingHud.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.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("skyblocker.option.locations.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.option.locations.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.option.locations.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.option.locations.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/MessageFilterCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/MessageFilterCategory.java index 871925d1..a5b1e3ed 100644 --- a/src/main/java/de/hysky/skyblocker/config/categories/MessageFilterCategory.java +++ b/src/main/java/de/hysky/skyblocker/config/categories/MessageFilterCategory.java @@ -11,148 +11,149 @@ import net.minecraft.text.Text; public class MessageFilterCategory { - public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) { - return ConfigCategory.createBuilder() - .name(Text.translatable("skyblocker.category.messages")) + public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) { + return ConfigCategory.createBuilder() + .name(Text.translatable("skyblocker.category.messages")) - //Uncategorized Options - .option(Option.<ChatFilterResult>createBuilder() - .name(Text.translatable("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("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("skyblocker.option.messages.hideAOTE")) - .description(OptionDescription.of(Text.translatable("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("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("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("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("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("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("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("skyblocker.option.messages.hideShowOff")) - .description(OptionDescription.of(Text.translatable("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("skyblocker.option.messages.hideToggleSkyMall")) - .description(OptionDescription.of(Text.translatable("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("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("skyblocker.option.messages.hideMimicKill")) - .description(OptionDescription.of(Text.translatable("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("skyblocker.option.messages.hideDeath")) - .description(OptionDescription.of(Text.translatable("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("skyblocker.option.messages.hideDicer")) - .description(OptionDescription.of(Text.translatable("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("skyblocker.option.messages.chatRules")) - .collapsed(false) - .option(ButtonOption.createBuilder() - .name(Text.translatable("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("skyblocker.option.messages.chatRules.announcementLength")) - .description(OptionDescription.of(Text.translatable("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("skyblocker.option.messages.chatRules.announcementScale")) - .description(OptionDescription.of(Text.translatable("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(); - } + //Uncategorized Options + .option(Option.<ChatFilterResult>createBuilder() + .name(Text.translatable("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("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("skyblocker.option.messages.hideAOTE")) + .description(OptionDescription.of(Text.translatable("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("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("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("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("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("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("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("skyblocker.option.messages.hideShowOff")) + .description(OptionDescription.of(Text.translatable("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("skyblocker.option.messages.hideToggleSkyMall")) + .description(OptionDescription.of(Text.translatable("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("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("skyblocker.option.messages.hideMimicKill")) + .description(OptionDescription.of(Text.translatable("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("skyblocker.option.messages.hideDeath")) + .description(OptionDescription.of(Text.translatable("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("skyblocker.option.messages.hideDicer")) + .description(OptionDescription.of(Text.translatable("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("skyblocker.option.messages.chatRules")) + .collapsed(false) + .option(ButtonOption.createBuilder() + .name(Text.translatable("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("skyblocker.option.messages.chatRules.announcementLength")) + .description(OptionDescription.of(Text.translatable("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("skyblocker.option.messages.chatRules.announcementScale")) + .description(OptionDescription.of(Text.translatable("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..bfa49442 --- /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.option.locations.dwarvenMines")) + + //Uncategorized Options + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.dwarvenMines.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.option.locations.dwarvenMines.dwarvenHud")) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.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.option.locations.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.option.locations.dwarvenMines.dwarvenHud")) + .collapsed(false) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.dwarvenMines.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.option.locations.dwarvenMines.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.option.locations.dwarvenMines.dwarvenHud.style")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dwarvenMines.dwarvenHud.style.@Tooltip[0]"), + Text.translatable("skyblocker.option.locations.dwarvenMines.dwarvenHud.style.@Tooltip[1]"), + Text.translatable("skyblocker.option.locations.dwarvenMines.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.option.locations.dwarvenMines.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.option.locations.dwarvenMines.dwarvenHud")) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.dwarvenMines.metalDetectorHelper")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dwarvenMines.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.option.locations.dwarvenMines.crystalsHud")) + .collapsed(false) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.dwarvenMines.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.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("skyblocker.option.locations.dwarvenMines.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.option.locations.dwarvenMines.crystalsHud.showLocations")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dwarvenMines.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.option.locations.dwarvenMines.crystalsHud.showLocations.locationSize")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dwarvenMines.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.option.locations.dwarvenMines.crystalsWaypoints")) + .collapsed(false) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.dwarvenMines.crystalsWaypoints.enabled")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dwarvenMines.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.option.locations.dwarvenMines.crystalsWaypoints.findInChat")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.dwarvenMines.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..70b4ee1b --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/config/categories/MiscCategory.java @@ -0,0 +1,63 @@ +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.category.misc")) + + //Uncategorized Options + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.general.hideStatusEffectOverlay")) + .binding(defaults.misc.hideStatusEffectOverlay, + () -> config.misc.hideStatusEffectOverlay, + newValue -> config.misc.hideStatusEffectOverlay = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + + //Discord RPC + .group(OptionGroup.createBuilder() + .name(Text.translatable("skyblocker.option.misc.richPresence")) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.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.option.misc.richPresence.info")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.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.option.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.option.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..63afdeee --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/config/categories/OtherLocationsCategory.java @@ -0,0 +1,169 @@ +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 OtherLocationsCategory { + + public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) { + return ConfigCategory.createBuilder() + .name(Text.translatable("skyblocker.category.locations")) + + //Barn + .group(OptionGroup.createBuilder() + .name(Text.translatable("skyblocker.option.locations.barn")) + .collapsed(false) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.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.option.locations.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.option.locations.rift")) + .collapsed(false) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.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.option.locations.rift.blobbercystGlow")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.rift.enigmaSoulWaypoints")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.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.option.locations.rift.mcGrubberStacks")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.locations.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.option.locations.end")) + .collapsed(false) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.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.option.locations.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.option.locations.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.option.locations.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.option.locations.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.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("skyblocker.option.locations.end.resetName")) + .text(Text.translatable("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("skyblocker.option.locations.spidersDen")) + .collapsed(false) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.locations.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.option.locations.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 7dd41731..15d94fed 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("skyblocker.category.quickNav")) + public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) { + return ConfigCategory.createBuilder() + .name(Text.translatable("skyblocker.category.quickNav")) - //Toggle - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("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.option.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("skyblocker.option.quickNav.button", 1)) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("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("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("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("skyblocker.option.quickNav.button.item.nbt")) - .description(OptionDescription.of(Text.translatable("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("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("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.option.quickNav.button", 1)) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("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("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("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("skyblocker.option.quickNav.button.item.nbt")) + .description(OptionDescription.of(Text.translatable("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("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("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 2 - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.quickNav.button", 2)) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("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("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("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("skyblocker.option.quickNav.button.item.nbt")) - .description(OptionDescription.of(Text.translatable("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("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("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.option.quickNav.button", 2)) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("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("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("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("skyblocker.option.quickNav.button.item.nbt")) + .description(OptionDescription.of(Text.translatable("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("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("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 3 - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.quickNav.button", 3)) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("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("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("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("skyblocker.option.quickNav.button.item.nbt")) - .description(OptionDescription.of(Text.translatable("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("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("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.option.quickNav.button", 3)) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("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("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("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("skyblocker.option.quickNav.button.item.nbt")) + .description(OptionDescription.of(Text.translatable("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("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("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 4 - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.quickNav.button", 4)) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("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("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("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("skyblocker.option.quickNav.button.item.nbt")) - .description(OptionDescription.of(Text.translatable("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("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("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.option.quickNav.button", 4)) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("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("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("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("skyblocker.option.quickNav.button.item.nbt")) + .description(OptionDescription.of(Text.translatable("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("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("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 5 - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.quickNav.button", 5)) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("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("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("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("skyblocker.option.quickNav.button.item.nbt")) - .description(OptionDescription.of(Text.translatable("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("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("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.option.quickNav.button", 5)) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("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("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("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("skyblocker.option.quickNav.button.item.nbt")) + .description(OptionDescription.of(Text.translatable("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("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("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 6 - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.quickNav.button", 6)) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("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("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("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("skyblocker.option.quickNav.button.item.nbt")) - .description(OptionDescription.of(Text.translatable("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("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("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.option.quickNav.button", 6)) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("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("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("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("skyblocker.option.quickNav.button.item.nbt")) + .description(OptionDescription.of(Text.translatable("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("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("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 7 - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.quickNav.button", 7)) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("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("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("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("skyblocker.option.quickNav.button.item.nbt")) - .description(OptionDescription.of(Text.translatable("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("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("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.option.quickNav.button", 7)) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("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("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("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("skyblocker.option.quickNav.button.item.nbt")) + .description(OptionDescription.of(Text.translatable("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("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("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 8 - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.quickNav.button", 8)) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("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("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("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("skyblocker.option.quickNav.button.item.nbt")) - .description(OptionDescription.of(Text.translatable("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("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("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.option.quickNav.button", 8)) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("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("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("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("skyblocker.option.quickNav.button.item.nbt")) + .description(OptionDescription.of(Text.translatable("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("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("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 9 - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.quickNav.button", 9)) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("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("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("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("skyblocker.option.quickNav.button.item.nbt")) - .description(OptionDescription.of(Text.translatable("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("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("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.option.quickNav.button", 9)) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("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("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("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("skyblocker.option.quickNav.button.item.nbt")) + .description(OptionDescription.of(Text.translatable("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("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("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 10 - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.quickNav.button", 10)) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("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("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("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("skyblocker.option.quickNav.button.item.nbt")) - .description(OptionDescription.of(Text.translatable("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("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("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.option.quickNav.button", 10)) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("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("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("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("skyblocker.option.quickNav.button.item.nbt")) + .description(OptionDescription.of(Text.translatable("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("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("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 11 - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.quickNav.button", 11)) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("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("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("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("skyblocker.option.quickNav.button.item.nbt")) - .description(OptionDescription.of(Text.translatable("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("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("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.option.quickNav.button", 11)) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("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("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("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("skyblocker.option.quickNav.button.item.nbt")) + .description(OptionDescription.of(Text.translatable("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("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("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 12 - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.quickNav.button", 12)) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("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("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("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("skyblocker.option.quickNav.button.item.nbt")) - .description(OptionDescription.of(Text.translatable("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("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("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.option.quickNav.button", 12)) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("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("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("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("skyblocker.option.quickNav.button.item.nbt")) + .description(OptionDescription.of(Text.translatable("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("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("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()) - .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 064b33e3..196baa85 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("skyblocker.category.slayer")) + public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) { + return ConfigCategory.createBuilder() + .name(Text.translatable("skyblocker.category.slayer")) - //Enderman Slayer - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.slayer.endermanSlayer")) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("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("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("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.option.slayer.endermanSlayer")) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("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("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("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()) - //Vampire Slayer - .group(OptionGroup.createBuilder() - .name(Text.translatable("skyblocker.option.slayer.vampireSlayer")) - .collapsed(true) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("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("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("skyblocker.option.slayer.vampireSlayer.effigyUpdateFrequency")) - .description(OptionDescription.of(Text.translatable("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("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("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("skyblocker.option.slayer.vampireSlayer.holyIceUpdateFrequency")) - .description(OptionDescription.of(Text.translatable("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("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("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("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("skyblocker.option.slayer.vampireSlayer.steakStakeUpdateFrequency")) - .description(OptionDescription.of(Text.translatable("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("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("skyblocker.option.slayer.vampireSlayer.maniaUpdateFrequency")) - .description(OptionDescription.of(Text.translatable("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.option.slayer.vampireSlayer")) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("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("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("skyblocker.option.slayer.vampireSlayer.effigyUpdateFrequency")) + .description(OptionDescription.of(Text.translatable("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("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("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("skyblocker.option.slayer.vampireSlayer.holyIceUpdateFrequency")) + .description(OptionDescription.of(Text.translatable("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("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("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("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("skyblocker.option.slayer.vampireSlayer.steakStakeUpdateFrequency")) + .description(OptionDescription.of(Text.translatable("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("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("skyblocker.option.slayer.vampireSlayer.maniaUpdateFrequency")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.slayer.vampireSlayer.maniaUpdateFrequency.@Tooltip"))) + .binding(defaults.slayer.vampireSlayer.maniaUpdateFrequency, + () -> config.slayer.vampireSlayer.maniaUpdateFrequency, + newValue -> config.slayer.vampireSlayer.maniaUpdateFrequency = newValue) + .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(1, 10).step(1)) + .build()) + .build()) - .build(); - } + .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..f59991c7 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java @@ -0,0 +1,345 @@ +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.category.useinterfaceandvisuals")) + + //Ungrouped Options + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.general.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.option.general.dontStripSkinAlphaValues")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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.option.general.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.option.general.fancyCraftingTable")) + .binding(defaults.uiAndVisuals.fancyCraftingTable, + () -> config.uiAndVisuals.fancyCraftingTable, + newValue -> config.uiAndVisuals.fancyCraftingTable = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) + + //Chest Value FIXME change dropdown to color controller + .group(OptionGroup.createBuilder() + .name(Text.translatable("skyblocker.option.general.chestValue")) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.general.chestValue.enableChestValue")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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.option.general.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.option.general.chestValue.incompleteColor")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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.option.general.itemCooldown")) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.general.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.option.general.titleContainer")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.titleContainer.@Tooltip"))) + .collapsed(true) + .option(Option.<Float>createBuilder() + .name(Text.translatable("skyblocker.option.general.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.option.general.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.option.general.tabHud")) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.general.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.option.general.tabHud.tabHudScale")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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.option.general.tabHud.enableHudBackground")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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.option.general.tabHud.plainPlayerNames")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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.option.general.tabHud.nameSorting")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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.option.general.fancyAuctionHouse")) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.general.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.option.general.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.option.general.bars")) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.general.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.bars.config.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.option.general.waypoints")) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.general.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.option.general.waypoints.waypointType")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.waypoints.waypointType.@Tooltip"), Text.translatable("skyblocker.option.general.waypoints.waypointType.generalNote"))) + .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.option.general.teleportOverlay")) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.general.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.option.general.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.option.general.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.option.general.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.option.general.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.option.general.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.option.general.searchOverlay")) + .collapsed(true) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.option.general.searchOverlay.enableBazaar")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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.option.general.searchOverlay.enableAuctionHouse")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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.option.general.searchOverlay.keepPreviousSearches")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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.option.general.searchOverlay.maxSuggestions")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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.option.general.searchOverlay.historyLength")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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.option.general.searchOverlay.enableCommands")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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.option.general.flameOverlay")) + .collapsed(true) + .option(Option.<Integer>createBuilder() + .name(Text.translatable("skyblocker.option.general.flameOverlay.flameHeight")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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.option.general.flameOverlay.flameOpacity")) + .description(OptionDescription.of(Text.translatable("skyblocker.option.general.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/MessagesConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/MessagesFilterConfig.java index 8fdf1422..778cd829 100644 --- a/src/main/java/de/hysky/skyblocker/config/configs/MessagesConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/configs/MessagesFilterConfig.java @@ -3,7 +3,7 @@ package de.hysky.skyblocker.config.configs; import de.hysky.skyblocker.utils.chat.ChatFilterResult; import dev.isxander.yacl3.config.v2.api.SerialEntry; -public class MessagesConfig { +public class MessagesFilterConfig { @SerialEntry public ChatFilterResult hideAbility = ChatFilterResult.PASS; diff --git a/src/main/java/de/hysky/skyblocker/config/configs/QuickNavConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/QuickNavigationConfig.java index 6927be08..dc2c4885 100644 --- a/src/main/java/de/hysky/skyblocker/config/configs/QuickNavConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/configs/QuickNavigationConfig.java @@ -2,7 +2,7 @@ package de.hysky.skyblocker.config.configs; import dev.isxander.yacl3.config.v2.api.SerialEntry; -public class QuickNavConfig { +public class QuickNavigationConfig { @SerialEntry public boolean enableQuickNav = true; diff --git a/src/main/java/de/hysky/skyblocker/config/configs/SlayerConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/SlayersConfig.java index c5b3283a..ff6c2275 100644 --- a/src/main/java/de/hysky/skyblocker/config/configs/SlayerConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/configs/SlayersConfig.java @@ -2,7 +2,7 @@ package de.hysky.skyblocker.config.configs; import dev.isxander.yacl3.config.v2.api.SerialEntry; -public class SlayerConfig { +public class SlayersConfig { @SerialEntry public EndermanSlayer endermanSlayer = new EndermanSlayer(); diff --git a/src/main/java/de/hysky/skyblocker/config/configs/UiAndVisualsConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java index 8d4fac97..9facd21d 100644 --- a/src/main/java/de/hysky/skyblocker/config/configs/UiAndVisualsConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java @@ -7,7 +7,7 @@ import net.minecraft.util.Formatting; import java.util.ArrayList; import java.util.List; -public class UiAndVisualsConfig { +public class UIAndVisualsConfig { @SerialEntry public boolean compactorDeletorPreview = true; diff --git a/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java b/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java index 2c958c0a..a10e69ce 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java @@ -1,10 +1,9 @@ package de.hysky.skyblocker.skyblock; import com.google.gson.JsonObject; -import de.hysky.skyblocker.config.SkyblockerConfig; import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.config.configs.DungeonsConfig; -import de.hysky.skyblocker.config.configs.UiAndVisualsConfig; +import de.hysky.skyblocker.config.configs.UIAndVisualsConfig; import de.hysky.skyblocker.mixins.accessors.HandledScreenAccessor; import de.hysky.skyblocker.mixins.accessors.ScreenAccessor; import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip; @@ -217,7 +216,7 @@ public class ChestValue { } static Text getValueText(long value, boolean hasIncompleteData) { - UiAndVisualsConfig.ChestValue config = SkyblockerConfigManager.get().uiAndVisuals.chestValue; + UIAndVisualsConfig.ChestValue config = SkyblockerConfigManager.get().uiAndVisuals.chestValue; return Text.literal(' ' + FORMATTER.format(value) + " Coins").formatted(hasIncompleteData ? config.incompleteColor : config.color); } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsWaypoint.java b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsWaypoint.java index 0a03e60c..053f3536 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsWaypoint.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsWaypoint.java @@ -1,8 +1,7 @@ package de.hysky.skyblocker.skyblock.dwarven; -import de.hysky.skyblocker.config.SkyblockerConfig; import de.hysky.skyblocker.config.SkyblockerConfigManager; -import de.hysky.skyblocker.config.configs.UiAndVisualsConfig; +import de.hysky.skyblocker.config.configs.UIAndVisualsConfig; import de.hysky.skyblocker.utils.render.RenderHelper; import de.hysky.skyblocker.utils.waypoint.Waypoint; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; @@ -20,7 +19,7 @@ import java.util.function.Supplier; import java.util.function.ToDoubleFunction; public class CrystalsWaypoint extends Waypoint { - private static final Supplier<UiAndVisualsConfig.Waypoints> CONFIG = () -> SkyblockerConfigManager.get().uiAndVisuals.waypoints; + private static final Supplier<UIAndVisualsConfig.Waypoints> CONFIG = () -> SkyblockerConfigManager.get().uiAndVisuals.waypoints; private static final Supplier<Type> TYPE_SUPPLIER = () -> CONFIG.get().waypointType; final Category category; final Text name; diff --git a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/FancyStatusBars.java b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/FancyStatusBars.java index cdd5639b..141a48ed 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/FancyStatusBars.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/FancyStatusBars.java @@ -2,9 +2,8 @@ package de.hysky.skyblocker.skyblock.fancybars; import com.google.gson.JsonObject; import de.hysky.skyblocker.SkyblockerMod; -import de.hysky.skyblocker.config.SkyblockerConfig; import de.hysky.skyblocker.config.SkyblockerConfigManager; -import de.hysky.skyblocker.config.configs.UiAndVisualsConfig; +import de.hysky.skyblocker.config.configs.UIAndVisualsConfig; import de.hysky.skyblocker.skyblock.StatusBarTracker; import de.hysky.skyblocker.utils.Utils; import de.hysky.skyblocker.utils.scheduler.Scheduler; @@ -59,7 +58,7 @@ public class FancyStatusBars { // Fetch from old status bar config int[] counts = new int[3]; // counts for RIGHT, LAYER1, LAYER2 StatusBar health = statusBars.get("health"); - UiAndVisualsConfig.OldBarPositions barPositions = SkyblockerConfigManager.get().uiAndVisuals.bars.barPositions; + UIAndVisualsConfig.OldBarPositions barPositions = SkyblockerConfigManager.get().uiAndVisuals.bars.barPositions; loadOldBarPosition(health, counts, barPositions.healthBarPosition); StatusBar intelligence = statusBars.get("intelligence"); loadOldBarPosition(intelligence, counts, barPositions.manaBarPosition); @@ -104,7 +103,7 @@ public class FancyStatusBars { * @param counts the counts for each bar position (LAYER1, LAYER2, RIGHT) * @param position the position to load */ - private static void loadOldBarPosition(StatusBar bar, int[] counts, UiAndVisualsConfig.OldBarPosition position) { + private static void loadOldBarPosition(StatusBar bar, int[] counts, UIAndVisualsConfig.OldBarPosition position) { switch (position) { case RIGHT: bar.anchor = BarPositioner.BarAnchor.HOTBAR_RIGHT; diff --git a/src/main/java/de/hysky/skyblocker/skyblock/quicknav/QuickNav.java b/src/main/java/de/hysky/skyblocker/skyblock/quicknav/QuickNav.java index 6bb27215..6e7e3906 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/quicknav/QuickNav.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/quicknav/QuickNav.java @@ -3,7 +3,7 @@ package de.hysky.skyblocker.skyblock.quicknav; import com.mojang.brigadier.exceptions.CommandSyntaxException; import de.hysky.skyblocker.config.SkyblockerConfigManager; -import de.hysky.skyblocker.config.configs.QuickNavConfig; +import de.hysky.skyblocker.config.configs.QuickNavigationConfig; import de.hysky.skyblocker.utils.Utils; import de.hysky.skyblocker.utils.datafixer.ItemStackComponentizationFixer; import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; @@ -37,7 +37,7 @@ public class QuickNav { public static List<QuickNavButton> init(String screenTitle) { List<QuickNavButton> buttons = new ArrayList<>(); - QuickNavConfig data = SkyblockerConfigManager.get().quickNav; + QuickNavigationConfig data = SkyblockerConfigManager.get().quickNav; try { if (data.button1.render) buttons.add(parseButton(data.button1, screenTitle, 0)); if (data.button2.render) buttons.add(parseButton(data.button2, screenTitle, 1)); @@ -57,8 +57,8 @@ public class QuickNav { return buttons; } - private static QuickNavButton parseButton(QuickNavConfig.QuickNavItem buttonInfo, String screenTitle, int id) throws CommandSyntaxException { - QuickNavConfig.ItemData itemData = buttonInfo.item; + private static QuickNavButton parseButton(QuickNavigationConfig.QuickNavItem buttonInfo, String screenTitle, int id) throws CommandSyntaxException { + QuickNavigationConfig.ItemData itemData = buttonInfo.item; String nbtString = "{id:\"minecraft:" + itemData.itemName.toLowerCase(Locale.ROOT) + "\",Count:1"; if (itemData.nbt.length() > 2) nbtString += "," + itemData.nbt; nbtString += "}"; diff --git a/src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/SearchOverManager.java b/src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/SearchOverManager.java index f8c4742d..2e509c35 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/SearchOverManager.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/SearchOverManager.java @@ -4,9 +4,8 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.mojang.brigadier.Command; import com.mojang.brigadier.CommandDispatcher; -import de.hysky.skyblocker.config.SkyblockerConfig; import de.hysky.skyblocker.config.SkyblockerConfigManager; -import de.hysky.skyblocker.config.configs.UiAndVisualsConfig; +import de.hysky.skyblocker.config.configs.UIAndVisualsConfig; import de.hysky.skyblocker.skyblock.item.tooltip.TooltipInfoType; import de.hysky.skyblocker.utils.NEURepoManager; import de.hysky.skyblocker.utils.scheduler.MessageScheduler; @@ -267,7 +266,7 @@ public class SearchOverManager { */ private static void saveHistory() { //save to history - UiAndVisualsConfig.SearchOverlay config = SkyblockerConfigManager.get().uiAndVisuals.searchOverlay; + UIAndVisualsConfig.SearchOverlay config = SkyblockerConfigManager.get().uiAndVisuals.searchOverlay; if (isAuction) { if (config.auctionHistory.isEmpty() || !config.auctionHistory.getFirst().equals(search)) { config.auctionHistory.add(0, search); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java index b568e3ae..6daf3a8a 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/PlayerListWidget.java @@ -1,8 +1,7 @@ package de.hysky.skyblocker.skyblock.tabhud.widget; -import de.hysky.skyblocker.config.SkyblockerConfig; import de.hysky.skyblocker.config.SkyblockerConfigManager; -import de.hysky.skyblocker.config.configs.UiAndVisualsConfig; +import de.hysky.skyblocker.config.configs.UIAndVisualsConfig; import de.hysky.skyblocker.skyblock.tabhud.util.PlayerListMgr; import de.hysky.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent; import de.hysky.skyblocker.skyblock.tabhud.widget.component.PlayerComponent; @@ -52,7 +51,7 @@ public class PlayerListWidget extends Widget { list.add(PlayerListMgr.getRaw(i)); } - if (SkyblockerConfigManager.get().uiAndVisuals.tabHud.nameSorting == UiAndVisualsConfig.NameSorting.ALPHABETICAL) { + if (SkyblockerConfigManager.get().uiAndVisuals.tabHud.nameSorting == UIAndVisualsConfig.NameSorting.ALPHABETICAL) { list.sort(Comparator.comparing(o -> o.getProfile().getName().toLowerCase())); } diff --git a/src/main/java/de/hysky/skyblocker/utils/render/title/TitleContainer.java b/src/main/java/de/hysky/skyblocker/utils/render/title/TitleContainer.java index 7a2ea60a..c21485e2 100644 --- a/src/main/java/de/hysky/skyblocker/utils/render/title/TitleContainer.java +++ b/src/main/java/de/hysky/skyblocker/utils/render/title/TitleContainer.java @@ -1,8 +1,7 @@ package de.hysky.skyblocker.utils.render.title; -import de.hysky.skyblocker.config.SkyblockerConfig; import de.hysky.skyblocker.config.SkyblockerConfigManager; -import de.hysky.skyblocker.config.configs.UiAndVisualsConfig; +import de.hysky.skyblocker.config.configs.UIAndVisualsConfig; import de.hysky.skyblocker.events.HudRenderEvents; import de.hysky.skyblocker.utils.scheduler.Scheduler; import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; @@ -94,8 +93,8 @@ public class TitleContainer { float scale = 3F * (SkyblockerConfigManager.get().uiAndVisuals.titleContainer.titleContainerScale / 100F); // Grab direction and alignment values - UiAndVisualsConfig.Direction direction = SkyblockerConfigManager.get().uiAndVisuals.titleContainer.direction; - UiAndVisualsConfig.Alignment alignment = SkyblockerConfigManager.get().uiAndVisuals.titleContainer.alignment; + UIAndVisualsConfig.Direction direction = SkyblockerConfigManager.get().uiAndVisuals.titleContainer.direction; + UIAndVisualsConfig.Alignment alignment = SkyblockerConfigManager.get().uiAndVisuals.titleContainer.alignment; // x/y refer to the starting position for the text // y always starts at yPos float x = 0; @@ -107,8 +106,8 @@ public class TitleContainer { width += textRenderer.getWidth(title.getText()) * scale + 10; } - if (alignment == UiAndVisualsConfig.Alignment.MIDDLE) { - if (direction == UiAndVisualsConfig.Direction.HORIZONTAL) { + if (alignment == UIAndVisualsConfig.Alignment.MIDDLE) { + if (direction == UIAndVisualsConfig.Direction.HORIZONTAL) { //If middle aligned horizontally, start the xPosition at half of the width to the left. x = xPos - (width / 2); } else { @@ -116,7 +115,7 @@ public class TitleContainer { x = xPos; } } - if (alignment == UiAndVisualsConfig.Alignment.LEFT || alignment == UiAndVisualsConfig.Alignment.RIGHT) { + if (alignment == UIAndVisualsConfig.Alignment.LEFT || alignment == UIAndVisualsConfig.Alignment.RIGHT) { //If left or right aligned, start at xPos, we will shift each text later x = xPos; } @@ -125,14 +124,14 @@ public class TitleContainer { //Calculate which x the text should use float xToUse; - if (direction == UiAndVisualsConfig.Direction.HORIZONTAL) { - xToUse = alignment == UiAndVisualsConfig.Alignment.RIGHT ? + if (direction == UIAndVisualsConfig.Direction.HORIZONTAL) { + xToUse = alignment == UIAndVisualsConfig.Alignment.RIGHT ? x - (textRenderer.getWidth(title.getText()) * scale) : //if right aligned we need the text position to be aligned on the right side. x; } else { - xToUse = alignment == UiAndVisualsConfig.Alignment.MIDDLE ? + xToUse = alignment == UIAndVisualsConfig.Alignment.MIDDLE ? x - (textRenderer.getWidth(title.getText()) * scale) / 2 : //if middle aligned we need the text position to be aligned in the middle. - alignment == UiAndVisualsConfig.Alignment.RIGHT ? + alignment == UIAndVisualsConfig.Alignment.RIGHT ? x - (textRenderer.getWidth(title.getText()) * scale) : //if right aligned we need the text position to be aligned on the right side. x; } @@ -157,13 +156,13 @@ public class TitleContainer { context.getMatrices().pop(); //Calculate the x and y positions for the next title - if (direction == UiAndVisualsConfig.Direction.HORIZONTAL) { - if (alignment == UiAndVisualsConfig.Alignment.MIDDLE || alignment == UiAndVisualsConfig.Alignment.LEFT) { + if (direction == UIAndVisualsConfig.Direction.HORIZONTAL) { + if (alignment == UIAndVisualsConfig.Alignment.MIDDLE || alignment == UIAndVisualsConfig.Alignment.LEFT) { //Move to the right if middle or left aligned x += textRenderer.getWidth(title.getText()) * scale + 10; } - if (alignment == UiAndVisualsConfig.Alignment.RIGHT) { + if (alignment == UIAndVisualsConfig.Alignment.RIGHT) { //Move to the left if right aligned x -= textRenderer.getWidth(title.getText()) * scale + 10; } diff --git a/src/main/java/de/hysky/skyblocker/utils/render/title/TitleContainerConfigScreen.java b/src/main/java/de/hysky/skyblocker/utils/render/title/TitleContainerConfigScreen.java index 6a66faad..e5cf6f80 100644 --- a/src/main/java/de/hysky/skyblocker/utils/render/title/TitleContainerConfigScreen.java +++ b/src/main/java/de/hysky/skyblocker/utils/render/title/TitleContainerConfigScreen.java @@ -1,8 +1,7 @@ package de.hysky.skyblocker.utils.render.title; -import de.hysky.skyblocker.config.SkyblockerConfig; import de.hysky.skyblocker.config.SkyblockerConfigManager; -import de.hysky.skyblocker.config.configs.UiAndVisualsConfig; +import de.hysky.skyblocker.config.configs.UIAndVisualsConfig; import de.hysky.skyblocker.utils.render.RenderHelper; import dev.isxander.yacl3.api.ConfigCategory; import dev.isxander.yacl3.api.Option; @@ -43,8 +42,8 @@ public class TitleContainerConfigScreen extends Screen { super.render(context, mouseX, mouseY, delta); renderBackground(context, mouseX, mouseY, delta); TitleContainer.render(context, Set.of(example1, example2, example3), (int) hudX, (int) hudY, delta); - UiAndVisualsConfig.Direction direction = SkyblockerConfigManager.get().uiAndVisuals.titleContainer.direction; - UiAndVisualsConfig.Alignment alignment = SkyblockerConfigManager.get().uiAndVisuals.titleContainer.alignment; + UIAndVisualsConfig.Direction direction = SkyblockerConfigManager.get().uiAndVisuals.titleContainer.direction; + UIAndVisualsConfig.Alignment alignment = SkyblockerConfigManager.get().uiAndVisuals.titleContainer.alignment; context.drawCenteredTextWithShadow(textRenderer, "Press Q/E to change Alignment: " + alignment, width / 2, textRenderer.fontHeight * 2, Color.WHITE.getRGB()); context.drawCenteredTextWithShadow(textRenderer, "Press R to change Direction: " + direction, width / 2, textRenderer.fontHeight * 3 + 5, Color.WHITE.getRGB()); context.drawCenteredTextWithShadow(textRenderer, "Press +/- to change Scale", width / 2, textRenderer.fontHeight * 4 + 10, Color.WHITE.getRGB()); @@ -63,7 +62,7 @@ public class TitleContainerConfigScreen extends Screen { } private Pair<Vector2f, Vector2f> getSelectionBoundingBox() { - UiAndVisualsConfig.Alignment alignment = SkyblockerConfigManager.get().uiAndVisuals.titleContainer.alignment; + UIAndVisualsConfig.Alignment alignment = SkyblockerConfigManager.get().uiAndVisuals.titleContainer.alignment; float midWidth = getSelectionWidth() / 2F; float x1 = 0; @@ -89,14 +88,14 @@ public class TitleContainerConfigScreen extends Screen { private float getSelectionHeight() { float scale = (3F * (SkyblockerConfigManager.get().uiAndVisuals.titleContainer.titleContainerScale / 100F)); - return SkyblockerConfigManager.get().uiAndVisuals.titleContainer.direction == UiAndVisualsConfig.Direction.HORIZONTAL ? + return SkyblockerConfigManager.get().uiAndVisuals.titleContainer.direction == UIAndVisualsConfig.Direction.HORIZONTAL ? (textRenderer.fontHeight * scale) : (textRenderer.fontHeight + 10F) * 3F * scale; } private float getSelectionWidth() { float scale = (3F * (SkyblockerConfigManager.get().uiAndVisuals.titleContainer.titleContainerScale / 100F)); - return SkyblockerConfigManager.get().uiAndVisuals.titleContainer.direction == UiAndVisualsConfig.Direction.HORIZONTAL ? + return SkyblockerConfigManager.get().uiAndVisuals.titleContainer.direction == UIAndVisualsConfig.Direction.HORIZONTAL ? (textRenderer.getWidth("Test1") + 10 + textRenderer.getWidth("Test23") + 10 + textRenderer.getWidth("Testing1234")) * scale : textRenderer.getWidth("Testing1234") * scale; } @@ -136,26 +135,26 @@ public class TitleContainerConfigScreen extends Screen { @Override public boolean keyPressed(int keyCode, int scanCode, int modifiers) { if (keyCode == GLFW.GLFW_KEY_Q) { - UiAndVisualsConfig.Alignment current = SkyblockerConfigManager.get().uiAndVisuals.titleContainer.alignment; + UIAndVisualsConfig.Alignment current = SkyblockerConfigManager.get().uiAndVisuals.titleContainer.alignment; SkyblockerConfigManager.get().uiAndVisuals.titleContainer.alignment = switch (current) { - case LEFT -> UiAndVisualsConfig.Alignment.MIDDLE; - case MIDDLE -> UiAndVisualsConfig.Alignment.RIGHT; - case RIGHT -> UiAndVisualsConfig.Alignment.LEFT; + case LEFT -> UIAndVisualsConfig.Alignment.MIDDLE; + case MIDDLE -> UIAndVisualsConfig.Alignment.RIGHT; + case RIGHT -> UIAndVisualsConfig.Alignment.LEFT; }; } if (keyCode == GLFW.GLFW_KEY_E) { - UiAndVisualsConfig.Alignment current = SkyblockerConfigManager.get().uiAndVisuals.titleContainer.alignment; + UIAndVisualsConfig.Alignment current = SkyblockerConfigManager.get().uiAndVisuals.titleContainer.alignment; SkyblockerConfigManager.get().uiAndVisuals.titleContainer.alignment = switch (current) { - case LEFT -> UiAndVisualsConfig.Alignment.RIGHT; - case MIDDLE -> UiAndVisualsConfig.Alignment.LEFT; - case RIGHT -> UiAndVisualsConfig.Alignment.MIDDLE; + case LEFT -> UIAndVisualsConfig.Alignment.RIGHT; + case MIDDLE -> UIAndVisualsConfig.Alignment.LEFT; + case RIGHT -> UIAndVisualsConfig.Alignment.MIDDLE; }; } if (keyCode == GLFW.GLFW_KEY_R) { - UiAndVisualsConfig.Direction current = SkyblockerConfigManager.get().uiAndVisuals.titleContainer.direction; + UIAndVisualsConfig.Direction current = SkyblockerConfigManager.get().uiAndVisuals.titleContainer.direction; SkyblockerConfigManager.get().uiAndVisuals.titleContainer.direction = switch (current) { - case HORIZONTAL -> UiAndVisualsConfig.Direction.VERTICAL; - case VERTICAL -> UiAndVisualsConfig.Direction.HORIZONTAL; + case HORIZONTAL -> UIAndVisualsConfig.Direction.VERTICAL; + case VERTICAL -> UIAndVisualsConfig.Direction.HORIZONTAL; }; } if (keyCode == GLFW.GLFW_KEY_EQUAL) { diff --git a/src/main/resources/assets/skyblocker/lang/en_ca.json b/src/main/resources/assets/skyblocker/lang/en_ca.json index bc2b6894..082eab1b 100644 --- a/src/main/resources/assets/skyblocker/lang/en_ca.json +++ b/src/main/resources/assets/skyblocker/lang/en_ca.json @@ -1,7 +1,7 @@ { "skyblocker.option.general.bars": "Health, Mana, Defence & XP Bars", "skyblocker.option.locations.dungeons.croesusHelper.@Tooltip": "Grey out chests that have already been opened.", - "skyblocker.option.locations.dungeons.lividColor": "Livid Colour", + "skyblocker.option.locations.dungeons.livid": "Livid Colour", "skyblocker.option.locations.dungeons.lividColor.enableLividColorText": "Enable Livid Colour Text", "skyblocker.option.locations.dungeons.lividColor.enableLividColorText.@Tooltip": "Send the livid colour in the chat during the Livid boss fight.", "skyblocker.option.locations.dungeons.lividColor.lividColorText": "Livid Colour Text", diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index ba7a27be..3b4586cd 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -21,6 +21,9 @@ "skyblocker.title": "Skyblocker Settings", + "skyblocker.category.useinterfaceandvisuals": "UI & Visuals", + "skyblocker.category.helper": "Helper", + "skyblocker.category.farming": "Farming", "skyblocker.category.general": "General", "skyblocker.option.general.enableTips": "Enable Tips", "skyblocker.option.general.bars": "Health, Mana, Defence & XP Bars", @@ -104,8 +107,8 @@ "skyblocker.option.general.itemTooltip.enableAccessoriesHelper.@Tooltip[3]": "This accessory can be upgraded. Also tells you what tier of accessory you have in that family.", "skyblocker.option.general.itemTooltip.enableAccessoriesHelper.@Tooltip[4]": "You already own an accessory in the same family that is better than this one. Also tells you what tier of accessory you have in that family.", "skyblocker.option.general.itemTooltip.enableAccessoriesHelper.@Tooltip[5]": "You don't own any accessory from this family.", - "skyblocker.option.general.dungeonQuality": "Dungeon Quality", - "skyblocker.option.general.dungeonQuality.@Tooltip": "Displays quality and tier of dungeon drops from mobs.\n\n\nReminder:\nTier 1-3 dropped from F1-F3\nTier 4-7 dropped from F4-F7 or M1-M4\nTier 8-10 are dropped only from M5-M7", + "skyblocker.option.general.itemTooltip.dungeonQuality": "Dungeon Quality", + "skyblocker.option.general.itemTooltip.dungeonQuality.@Tooltip": "Displays quality and tier of dungeon drops from mobs.\n\n\nReminder:\nTier 1-3 dropped from F1-F3\nTier 4-7 dropped from F4-F7 or M1-M4\nTier 8-10 are dropped only from M5-M7", "skyblocker.option.general.enableNewYearCakesHelper": "Enable New Year Cakes Helper", "skyblocker.option.general.enableNewYearCakesHelper.@Tooltip": "Highlights the missing new year cakes green and the cakes you have already red.\n\nRequires you to open your cake bag at least once to work.", "skyblocker.option.general.itemInfoDisplay": "Item Info Display", @@ -167,25 +170,26 @@ "skyblocker.option.general.searchOverlay.enableCommands": "Open from commands", "skyblocker.option.general.searchOverlay.enableCommands.@Tooltip": "Opens the bazaar search with \"/bzs\" and auction house with \"/ahs\". A re-log is required for this setting to be updated.", "skyblocker.option.general.searchOverlay.historyLabel": "History:", - "skyblocker.option.general.betterPartyFinder": "Better Party Finder", + "skyblocker.option.general.fancyPartyFinder": "Fancy Party Finder", "skyblocker.option.general.fancyCraftingTable": "Fancy Crafting Table UI", - "skyblocker.option.general.betterAuctionHouse": "Better Auction House", - "skyblocker.option.general.betterAuctionHouse.enabled": "Enabled", - "skyblocker.option.general.betterAuctionHouse.highlightUnderAvgPrice": "Highlight BIN under average price", + "skyblocker.option.general.fancyAuctionHouse": "Fancy Auction House", + "skyblocker.option.general.fancyAuctionHouse.enabled": "Enabled", + "skyblocker.option.general.fancyAuctionHouse.highlightUnderAvgPrice": "Highlight BIN under average price", "skyblocker.itemTooltip.nullMessage": "§cItem price information on tooltip will renew in max 60 seconds. If not, check latest.log", "skyblocker.itemTooltip.noData": "§cNo Data", "skyblocker.wikiLookup.noArticleFound": "§rUnable to locate a wiki article for this item...", - "skyblocker.category.richPresence": "Discord Rich Presence", - "skyblocker.option.richPresence.info": "Skyblock Info", - "skyblocker.option.richPresence.info.PURSE": "PURSE", - "skyblocker.option.richPresence.info.BITS": "BITS", - "skyblocker.option.richPresence.info.LOCATION": "LOCATION", - "skyblocker.option.richPresence.info.@Tooltip": "This value doesn't matter if you are cycling", - "skyblocker.option.richPresence.cycleMode": "Cycle Skyblock Info", - "skyblocker.option.richPresence.enableRichPresence": "Enabled", - "skyblocker.option.richPresence.customMessage": "Custom Message", + "skyblocker.category.misc": "Misc", + "skyblocker.option.misc.richPresence": "Discord RPC", + "skyblocker.option.misc.richPresence.info": "Skyblock Info", + "skyblocker.option.misc.richPresence.info.PURSE": "PURSE", + "skyblocker.option.misc.richPresence.info.BITS": "BITS", + "skyblocker.option.misc.richPresence.info.LOCATION": "LOCATION", + "skyblocker.option.misc.richPresence.info.@Tooltip": "This value doesn't matter if you are cycling", + "skyblocker.option.misc.richPresence.cycleMode": "Cycle Skyblock Info", + "skyblocker.option.misc.richPresence.enableRichPresence": "Enabled", + "skyblocker.option.misc.richPresence.customMessage": "Custom Message", "skyblocker.category.quickNav": "Quick Navigation", "skyblocker.option.quickNav.enableQuickNav": "Enable Quick Navigation", @@ -202,7 +206,7 @@ "skyblocker.option.general.itemList": "Item List", "skyblocker.option.general.itemList.enableItemList": "Enable Item List", - "skyblocker.category.locations": "Locations", + "skyblocker.category.locations": "Other Locations", "skyblocker.option.locations.barn": "Barn", "skyblocker.option.locations.barn.solveHungryHiker": "Solve Hungry Hiker", "skyblocker.option.locations.barn.solveTreasureHunter": "Solve Treasure Hunter", @@ -318,7 +322,10 @@ "skyblocker.option.locations.dungeons.mimicMessage.sendMimicMessage.@Tooltip": "Sends a message in chat upon killing a mimic for other players' score calculation mods.", "skyblocker.option.locations.dungeons.mimicMessage.mimicMessage": "Mimic Message", "skyblocker.option.locations.dungeons.mimicMessage.mimicMessage.@Tooltip": "Message which will be sent in the chat upon killing a mimic. Recommended to retain the default value.", - "skyblocker.option.locations.dungeons.lividColor": "Livid Color", + "skyblocker.option.locations.dungeons.livid": "Livid (F5/M5)", + "skyblocker.option.locations.dungeons.map": "Map", + "skyblocker.option.locations.dungeons.puzzle": "Puzzle Solver", + "skyblocker.option.locations.dungeons.professor": "The Professor (F3/M3)", "skyblocker.option.locations.dungeons.lividColor.enableLividColorGlow": "Enable Livid Color Glow", "skyblocker.option.locations.dungeons.lividColor.enableLividColorGlow.@Tooltip": "Applies the glowing effect to the correct Livid in F5/M5.", "skyblocker.option.locations.dungeons.lividColor.enableLividColorText": "Enable Livid Color Text", @@ -327,7 +334,7 @@ "skyblocker.option.locations.dungeons.lividColor.enableLividColorTitle.@Tooltip": "Display the livid color in the title during the Livid boss fight.", "skyblocker.option.locations.dungeons.lividColor.lividColorText": "Livid Color Text", "skyblocker.option.locations.dungeons.lividColor.lividColorText.@Tooltip": "Text which will be sent in the chat during the Livid boss fight. The string \"[color]\" will be replaced with the livid color.", - "skyblocker.option.locations.dungeons.terminals": "Terminal Solvers", + "skyblocker.option.locations.dungeons.terminals": "Terminal Solvers (F7/M7)", "skyblocker.option.locations.dungeons.terminals.solveColor": "Solve Select Colored", "skyblocker.option.locations.dungeons.terminals.solveOrder": "Solve Click In Order", "skyblocker.option.locations.dungeons.terminals.solveStartsWith": "Solve Starts With", @@ -338,7 +345,7 @@ "skyblocker.option.locations.dungeons.allowDroppingProtectedItems": "Enabled Dropping Protected Items & on Locked Slots", "skyblocker.option.locations.dungeons.allowDroppingProtectedItems.@Tooltip": "Allows the use of class abilities in Dungeons on a locked slot or while holding an item which has been protected using /skyblocker protectItem.", - "skyblocker.option.locations.dwarvenMines": "Dwarven Mines", + "skyblocker.option.locations.dwarvenMines": "Mining", "skyblocker.option.locations.dwarvenMines.enableDrillFuel": "Enable Drill Fuel", "skyblocker.option.locations.dwarvenMines.solveFetchur": "Solve Fetchur", "skyblocker.option.locations.dwarvenMines.solvePuzzler": "Solve Puzzler Puzzle", diff --git a/src/main/resources/assets/skyblocker/lang/es_es.json b/src/main/resources/assets/skyblocker/lang/es_es.json index 26c1a496..10fbacbe 100644 --- a/src/main/resources/assets/skyblocker/lang/es_es.json +++ b/src/main/resources/assets/skyblocker/lang/es_es.json @@ -21,14 +21,14 @@ "skyblocker.option.general.hitbox.oldFarmlandHitbox": "Habilitar la Caja de Colisión de la 1.8 para la tierra de cultivo", "skyblocker.option.general.hitbox.oldLeverHitbox": "Habilitar la Caja de Colisión de la 1.8 para la palanca", "skyblocker.itemTooltip.noData": "§cSin Información", - "skyblocker.category.richPresence": "Discord Rich Presence", - "skyblocker.option.richPresence.info": "Información de Skyblock", - "skyblocker.option.richPresence.info.PURSE": "CARTERA", - "skyblocker.option.richPresence.info.BITS": "BITS", - "skyblocker.option.richPresence.info.LOCATION": "LOCALIZACIÓN", - "skyblocker.option.richPresence.cycleMode": "Ciclar Información de Skyblock", - "skyblocker.option.richPresence.enableRichPresence": "Habilitado", - "skyblocker.option.richPresence.customMessage": "Mensaje Personalizado", + "skyblocker.option.misc.richPresence": "Discord Rich Presence", + "skyblocker.option.misc.richPresence.info": "Información de Skyblock", + "skyblocker.option.misc.richPresence.info.PURSE": "CARTERA", + "skyblocker.option.misc.richPresence.info.BITS": "BITS", + "skyblocker.option.misc.richPresence.info.LOCATION": "LOCALIZACIÓN", + "skyblocker.option.misc.richPresence.cycleMode": "Ciclar Información de Skyblock", + "skyblocker.option.misc.richPresence.enableRichPresence": "Habilitado", + "skyblocker.option.misc.richPresence.customMessage": "Mensaje Personalizado", "skyblocker.category.quickNav": "Navegación Rápida", "skyblocker.option.quickNav.enableQuickNav": "Habilitar Navegación Rápida", "skyblocker.option.messages.hideImplosion": "Ocultar el mensaje de Implosion", @@ -36,7 +36,7 @@ "skyblocker.option.locations.dungeons.croesusHelper.@Tooltip": "Obscurece los cofres que ya han sido abiertos.", "skyblocker.option.general.itemTooltip": "Información extra de los objetos", "skyblocker.itemTooltip.nullMessage": "§cEl precio en la información en los objetos se actualiza cada 60 segundos. De lo contrario revisa lastest.log", - "skyblocker.option.richPresence.info.@Tooltip": "Este valor no importa si estas ciclando", + "skyblocker.option.misc.richPresence.info.@Tooltip": "Este valor no importa si estas ciclando", "skyblocker.option.messages.hideAds": "Ocultar anuncios del Chat Publico", "skyblocker.option.messages.hideTeleportPad": "Ocultar mensajes del Pad de Teletransporte", "skyblocker.option.messages.hideAutopet": "Ocultar mensajes del Autopet", diff --git a/src/main/resources/assets/skyblocker/lang/fr_fr.json b/src/main/resources/assets/skyblocker/lang/fr_fr.json index a25c3ed7..338bc74d 100644 --- a/src/main/resources/assets/skyblocker/lang/fr_fr.json +++ b/src/main/resources/assets/skyblocker/lang/fr_fr.json @@ -20,12 +20,12 @@ "skyblocker.option.general.hitbox.oldLeverHitbox": "Hitbox 1.8 du levier", "skyblocker.itemTooltip.nullMessage": "§cLes informations sur le prix des objets vont s'actualiser dans 60 secondes maximum. Sinon consultez le fichier latest.log", "skyblocker.itemTooltip.noData": "§cPas de données", - "skyblocker.category.richPresence": "Rich Presence Discord", - "skyblocker.option.richPresence.info": "Information à afficher", - "skyblocker.option.richPresence.info.@Tooltip": "Cette valeur n'a aucune importance si vous faites défiler", - "skyblocker.option.richPresence.cycleMode": "Faire défiler les informations", - "skyblocker.option.richPresence.enableRichPresence": "Activée", - "skyblocker.option.richPresence.customMessage": "Message personnalisé", + "skyblocker.option.misc.richPresence": "Rich Presence Discord", + "skyblocker.option.misc.richPresence.info": "Information à afficher", + "skyblocker.option.misc.richPresence.info.@Tooltip": "Cette valeur n'a aucune importance si vous faites défiler", + "skyblocker.option.misc.richPresence.cycleMode": "Faire défiler les informations", + "skyblocker.option.misc.richPresence.enableRichPresence": "Activée", + "skyblocker.option.misc.richPresence.customMessage": "Message personnalisé", "skyblocker.option.general.itemList": "Liste d'objets", "skyblocker.option.general.itemList.enableItemList": "Activer la liste d'objets", "skyblocker.category.locations": "Lieux", @@ -59,7 +59,7 @@ "skyblocker.option.messages.hideMana.@Tooltip": "Permet une meilleure expérience avec les barres", "skyblocker.option.locations.dungeons.mapScaling": "Taille de la Carte", "skyblocker.option.locations.dungeons.lividColor.lividColorText.@Tooltip": "Texte qui sera envoyé dans le chat lors du boss Livid. Le string \"[color]\" sera remplacé par la couleur Livid.", - "skyblocker.option.locations.dungeons.lividColor": "Couleur Livid", + "skyblocker.option.locations.dungeons.livid": "Couleur Livid", "skyblocker.option.locations.dungeons.lividColor.enableLividColorText": "Activer la Couleur Livid", "skyblocker.option.locations.dungeons.lividColor.enableLividColorText.@Tooltip": "Envoyer la Couler Livid dans le chat durant le boss Livid.", "skyblocker.option.locations.dungeons.lividColor.lividColorText": "Texte de la Couleur Livid", @@ -80,7 +80,7 @@ "skyblocker.option.general.tabHud": "HUD Tab joli (temporairement désactivé en dehors des donjons)", "skyblocker.option.general.tabHud.tabHudEnabled": "Activer le HUD Tab joli", "skyblocker.option.general.tabHud.tabHudScale": "Taille du HUD Tab joli", - "skyblocker.option.richPresence.info.LOCATION": "LIEU", + "skyblocker.option.misc.richPresence.info.LOCATION": "LIEU", "skyblocker.category.quickNav": "Navigation rapide", "skyblocker.option.quickNav.enableQuickNav": "Activer la navigation rapide", "skyblocker.updateRepository.error": "§cLa mise à jour de la repository a échoué. Supprimez les fichiers manuellement et relancez le jeu.", @@ -89,8 +89,8 @@ "skyblocker.option.general.fishing": "Assistant de pêche", "skyblocker.option.general.itemTooltip.avg.THREE_DAY": "Prix pour 3 jours", "skyblocker.option.general.itemTooltip.avg.BOTH": "Les deux", - "skyblocker.option.richPresence.info.PURSE": "PORTE-MONNAIE", - "skyblocker.option.richPresence.info.BITS": "BITS", + "skyblocker.option.misc.richPresence.info.PURSE": "PORTE-MONNAIE", + "skyblocker.option.misc.richPresence.info.BITS": "BITS", "skyblocker.option.general.experiments": "Aide aux expériences de la table d'expérimentation", "skyblocker.option.general.experiments.enableChronomatronSolver": "Activer l'aide au Chronomatron", "skyblocker.option.general.experiments.enableSuperpairsSolver": "Activer l'aide aux Superpairs", @@ -162,8 +162,8 @@ "skyblocker.option.general.itemInfoDisplay.attributeShardInfo.@Tooltip": "Afficher le niveau de l'attribut avec le nombre d'items et les initiales du nom de l'attribut.", "skyblocker.option.general.wikiLookup.officialWiki": "Utiliser le wiki officiel", "skyblocker.option.general.itemProtection.slotLockStyle": "Style de l'icône de verrouillage d'emplacement", - "skyblocker.option.general.dungeonQuality": "Qualité du donjon", - "skyblocker.option.general.dungeonQuality.@Tooltip": "Affiche la qualité et le niveau des objets lâchés par les ennemis des donjons à leur mort.\n\n\nRappel:\nNiveau 1-3 lâchés en F1-F3\nNiveau 4-7 lâchés en F4-F7 ou M1-M4\nNiveau 8-10 lâchés en M5-M7", + "skyblocker.option.general.itemTooltip.dungeonQuality": "Qualité du donjon", + "skyblocker.option.general.itemTooltip.dungeonQuality.@Tooltip": "Affiche la qualité et le niveau des objets lâchés par les ennemis des donjons à leur mort.\n\n\nRappel:\nNiveau 1-3 lâchés en F1-F3\nNiveau 4-7 lâchés en F4-F7 ou M1-M4\nNiveau 8-10 lâchés en M5-M7", "skyblocker.option.general.itemInfoDisplay.attributeShardInfo": "Info des fragments d'attributs", "skyblocker.option.general.specialEffects.rareDungeonDropEffects": "Effet de drop de donjon rare", "skyblocker.option.general.specialEffects.rareDungeonDropEffects.@Tooltip": "Ajoute un effet visuel spécial activé en obtenant un objet de donjon rare!", @@ -194,7 +194,7 @@ "skyblocker.option.locations.dwarvenMines.crystalsHud.enabled": "Activé", "skyblocker.option.locations.dwarvenMines.dwarvenHud.screen": "Configuration du HUD des Nains...", "skyblocker.option.locations.dwarvenMines.crystalsHud": "Carte de Crystal Hollows", - "skyblocker.option.general.betterPartyFinder": "Recherche de Groupe Amélioré", + "skyblocker.option.general.fancyPartyFinder": "Recherche de Groupe Amélioré", "skyblocker.wikiLookup.noArticleFound": "§rImpossivle de trouver un article sur le wiki pour cet item...", "skyblocker.option.quickNav.button.clickEvent": "Événement de clique", "skyblocker.option.general.flameOverlay.flameHeight.@Tooltip": "100% taille par défaut\n0% désactivé", @@ -237,9 +237,9 @@ "skyblocker.option.general.searchOverlay.enableCommands.@Tooltip": "Ouvrir la recherche du bazaar avec \"/bzs\" et l'auction house avec \"/ahs\". Une reconnection sera nécessaire pour que ce paramètre prenne effet.", "skyblocker.option.general.searchOverlay.historyLabel": "Historique :", "skyblocker.option.general.fancyCraftingTable": "UI de Table de Craft joli", - "skyblocker.option.general.betterAuctionHouse": "Auction House Amélioré", - "skyblocker.option.general.betterAuctionHouse.enabled": "Activé", - "skyblocker.option.general.betterAuctionHouse.highlightUnderAvgPrice": "Surlignzr les BIN est dessous du prix moyen", + "skyblocker.option.general.fancyAuctionHouse": "Auction House Amélioré", + "skyblocker.option.general.fancyAuctionHouse.enabled": "Activé", + "skyblocker.option.general.fancyAuctionHouse.highlightUnderAvgPrice": "Surlignzr les BIN est dessous du prix moyen", "skyblocker.option.locations.crimsonIsle.kuudra": "Kuudra", "skyblocker.option.locations.crimsonIsle.kuudra.safeSpotWaypoints": "Waypoints des endroits sûrs", "skyblocker.option.locations.crimsonIsle.kuudra.noArrowPoisonWarning": "Avertissement pas de flèches empoisonnées", diff --git a/src/main/resources/assets/skyblocker/lang/id_id.json b/src/main/resources/assets/skyblocker/lang/id_id.json index d7b885f5..0f97aa25 100644 --- a/src/main/resources/assets/skyblocker/lang/id_id.json +++ b/src/main/resources/assets/skyblocker/lang/id_id.json @@ -21,8 +21,8 @@ "skyblocker.option.general.itemTooltip.enableAvgBIN": "Aktifkan Rata-rata Harga BIN", "skyblocker.option.general.itemTooltip.avg": "Tipe Rata-rata", "skyblocker.option.general.itemTooltip.enableBazaarPrice": "Aktifkan Harga Jual Beli Bazaar", - "skyblocker.option.richPresence.info": "Informasi Skyblock", - "skyblocker.option.richPresence.enableRichPresence": "Diaktifkan", + "skyblocker.option.misc.richPresence.info": "Informasi Skyblock", + "skyblocker.option.misc.richPresence.enableRichPresence": "Diaktifkan", "skyblocker.option.general.itemList": "Daftar Item", "skyblocker.option.general.itemList.enableItemList": "Aktifkan Daftar Item", "key.wikiLookup": "Pencarian Wiki", diff --git a/src/main/resources/assets/skyblocker/lang/it_it.json b/src/main/resources/assets/skyblocker/lang/it_it.json index 4f38e758..c7554b5a 100644 --- a/src/main/resources/assets/skyblocker/lang/it_it.json +++ b/src/main/resources/assets/skyblocker/lang/it_it.json @@ -40,16 +40,16 @@ "skyblocker.option.general.quiverWarning.enableQuiverWarningInDungeons": "Attiva avviso per faretra nei Dungeons", "skyblocker.option.general.itemTooltip": "Descrizione Oggetto", "skyblocker.option.general.itemTooltip.avg.BOTH": "Entrambi", - "skyblocker.option.general.dungeonQuality": "Qualita Dungeon", + "skyblocker.option.general.itemTooltip.dungeonQuality": "Qualita Dungeon", "skyblocker.option.general.wikiLookup": "Guarda sulla Wiki", "skyblocker.option.general.chestValue": "Valore Cesta", "skyblocker.option.general.specialEffects": "Effetti Speciali", "skyblocker.option.general.hitbox": "Hitbox", "skyblocker.option.general.teleportOverlay": "Overlay per Teletrasporto", "skyblocker.option.general.searchOverlay.historyLabel": "Storia:", - "skyblocker.option.richPresence.info.PURSE": "Portafoglio", - "skyblocker.option.richPresence.info.BITS": "BIT", - "skyblocker.option.richPresence.info.LOCATION": "POSIZIONE", + "skyblocker.option.misc.richPresence.info.PURSE": "Portafoglio", + "skyblocker.option.misc.richPresence.info.BITS": "BIT", + "skyblocker.option.misc.richPresence.info.LOCATION": "POSIZIONE", "skyblocker.option.quickNav.button.item": "Oggetto", "skyblocker.option.quickNav.button.item.nbt": "NBT", "skyblocker.option.locations.crimsonIsle.kuudra": "Kuudra", @@ -92,7 +92,7 @@ "skyblocker.option.general.itemTooltip.enableAccessoriesHelper.@Tooltip[2]": "Questo accessorio è un miglioramento rispetto a quello della stessa famiglia che già possiedi. Mostra anche di che livello è l'accessorio all'interno della sua famiglia.", "skyblocker.option.general.itemTooltip.enableAccessoriesHelper.@Tooltip[0]": "Quando passi il mouse sopra un accessorio vieni informato se ce lo hai gia, o meno, e se è meglio o peggio di quello che hai già. Lista dei possibili status:", "skyblocker.option.general.itemTooltip.enableMuseumInfo.@Tooltip": "SI questo oggetto è donabile al museo, viene mostrata la categoria del museo a cui appartiene. Mostra anche se hai già donato o meno quel'oggetto.\n\nFai attenzione ad aver abilitato l'API per il Museo per far si di avere informazioni accurate!", - "skyblocker.option.richPresence.enableRichPresence": "Attivo", + "skyblocker.option.misc.richPresence.enableRichPresence": "Attivo", "skyblocker.option.quickNav.button.render": "Rendering", "skyblocker.category.locations": "Luoghi", "skyblocker.option.locations.barn": "Barn", @@ -115,8 +115,8 @@ "skyblocker.option.general.flameOverlay.flameHeight": "Altezza della Fiamma", "skyblocker.option.general.flameOverlay.flameOpacity": "Opacità della FIamma", "skyblocker.itemTooltip.noData": "§cNessuna Informazione", - "skyblocker.option.richPresence.info": "Informazioni Skyblock", - "skyblocker.option.richPresence.customMessage": "Messaggio Personalizzato", + "skyblocker.option.misc.richPresence.info": "Informazioni Skyblock", + "skyblocker.option.misc.richPresence.customMessage": "Messaggio Personalizzato", "skyblocker.category.quickNav": "Navigazione Veloce", "skyblocker.option.quickNav.button": "Bottone %d", "skyblocker.option.quickNav.button.item.itemName": "ID Oggetto", @@ -138,7 +138,7 @@ "skyblocker.option.locations.dungeons.dungeonChestProfit.lossColor": "Colore per Perdita", "skyblocker.option.locations.dungeons.mapScaling": "Dimensioni della Mappa", "skyblocker.option.locations.dungeons.mimicMessage": "Messaggio per il Mimic", - "skyblocker.option.locations.dungeons.lividColor": "Colore Livid", + "skyblocker.option.locations.dungeons.livid": "Colore Livid", "skyblocker.option.locations.dwarvenMines.solveFetchur": "Risolvi Fetchur", "skyblocker.option.locations.dwarvenMines.dwarvenHud": "HUD per le Dwarven Mines", "skyblocker.option.locations.dwarvenMines.crystalsHud.mapScaling": "Dimensioni Mappa", @@ -176,7 +176,7 @@ "skyblocker.option.locations.dungeons.dungeonChestProfit.enableProfitCalculator.@Tooltip": "Mostra il profitto di un baule del dungeon nel titolo dello schermo del baule.\nVerde se c'è profitto.\nRosso se non c'è profitto.\nGrigio se non guadagni o perdi nulla.\nBlu se i calcoli sono stati basati su dati incompleti.", "skyblocker.option.messages.chatRules.screen.ruleScreen.sounds": "Riproduci Suono:", "skyblocker.option.slayer.endermanSlayer": "Slayer di Enderman", - "skyblocker.option.general.dungeonQuality.@Tooltip": "Mostra la qualità e il livello dei drop del dungeon dai mob.\n\n\nPromemoria:\nLivello 1-3 droppato da F1-F3\nLivello 4-7 droppato da F4-F7 o M1-M4\n Livello 8-10 droppati solo da M5-M7", + "skyblocker.option.general.itemTooltip.dungeonQuality.@Tooltip": "Mostra la qualità e il livello dei drop del dungeon dai mob.\n\n\nPromemoria:\nLivello 1-3 droppato da F1-F3\nLivello 4-7 droppato da F4-F7 o M1-M4\n Livello 8-10 droppati solo da M5-M7", "skyblocker.option.locations.dungeons.dungeonScore.dungeonScoreMessage.@Tooltip": "Messaggio che verrà inviato in chat quando si raggiunge %d punteggio nei dungeon. La stringa “[punteggio]” sarà sostituita con il punteggio del dungeon (%d).", "skyblocker.option.general.itemTooltip.enableAccessoriesHelper.@Tooltip[4]": "Possiedi già un accessorio nella stessa famiglia che è migliore di questo. Dice anche di che livello è l’accessorio che hai in quella famiglia.", "skyblocker.option.general.enableNewYearCakesHelper.@Tooltip": "Evidenzia in verde le torte di capodanno mancanti e in rosso le torte che hai già. \n\nRichiede che tu apra almeno una volta la tua borsa delle torte per funzionare.", diff --git a/src/main/resources/assets/skyblocker/lang/ja_jp.json b/src/main/resources/assets/skyblocker/lang/ja_jp.json index 61f1d542..0b1cd9f3 100644 --- a/src/main/resources/assets/skyblocker/lang/ja_jp.json +++ b/src/main/resources/assets/skyblocker/lang/ja_jp.json @@ -19,12 +19,12 @@ "skyblocker.option.general.hitbox.oldFarmlandHitbox": "バージョン1.8での作物のヒットボックスを使う", "skyblocker.option.general.hitbox.oldLeverHitbox": "バージョン1.8でのレバーのヒットボックスを使う", "skyblocker.itemTooltip.nullMessage": "§cツールチップ上のアイテムの値段は最大60秒ごとに更新されます。されていない場合はlatest.logを確認してください", - "skyblocker.category.richPresence": "discordに自分のゲームアクティビティを表示する", - "skyblocker.option.richPresence.info": "skyblockの情報", - "skyblocker.option.richPresence.info.@Tooltip": "この値はあなたがサイクリングしている場合は重要ではありません", - "skyblocker.option.richPresence.cycleMode": "円状のskyblockの情報", - "skyblocker.option.richPresence.enableRichPresence": "有効", - "skyblocker.option.richPresence.customMessage": "カスタムメッセージ", + "skyblocker.option.misc.richPresence": "discordに自分のゲームアクティビティを表示する", + "skyblocker.option.misc.richPresence.info": "skyblockの情報", + "skyblocker.option.misc.richPresence.info.@Tooltip": "この値はあなたがサイクリングしている場合は重要ではありません", + "skyblocker.option.misc.richPresence.cycleMode": "円状のskyblockの情報", + "skyblocker.option.misc.richPresence.enableRichPresence": "有効", + "skyblocker.option.misc.richPresence.customMessage": "カスタムメッセージ", "skyblocker.option.general.itemList": "アイテムリスト", "skyblocker.option.general.itemList.enableItemList": "アイテムリストを有効にする", "skyblocker.category.locations": "場所", diff --git a/src/main/resources/assets/skyblocker/lang/ko_kr.json b/src/main/resources/assets/skyblocker/lang/ko_kr.json index e5df9678..da5bf7e7 100644 --- a/src/main/resources/assets/skyblocker/lang/ko_kr.json +++ b/src/main/resources/assets/skyblocker/lang/ko_kr.json @@ -23,15 +23,15 @@ "skyblocker.option.general.hitbox.oldLeverHitbox": "1.8 레버 히트박스 활성화", "skyblocker.itemTooltip.nullMessage": "§c아이템 가격 툴팁이 최대 60초 이내에 갱신됩니다. 갱신되지 않을 시 latest.log 를 확인하세요.", "skyblocker.itemTooltip.noData": "§c데이터 없음", - "skyblocker.category.richPresence": "디스코드 Rich Presence", - "skyblocker.option.richPresence.info": "스카이블록 정보", - "skyblocker.option.richPresence.info.PURSE": "PURSE", - "skyblocker.option.richPresence.info.BITS": "BITS", - "skyblocker.option.richPresence.info.LOCATION": "위치", - "skyblocker.option.richPresence.info.@Tooltip": "이 값은 순환중일 시 중요하지 않습니다", - "skyblocker.option.richPresence.cycleMode": "스카이블록 정보 순환", - "skyblocker.option.richPresence.enableRichPresence": "활성화됨", - "skyblocker.option.richPresence.customMessage": "사용자 지정 메시지", + "skyblocker.option.misc.richPresence": "디스코드 Rich Presence", + "skyblocker.option.misc.richPresence.info": "스카이블록 정보", + "skyblocker.option.misc.richPresence.info.PURSE": "PURSE", + "skyblocker.option.misc.richPresence.info.BITS": "BITS", + "skyblocker.option.misc.richPresence.info.LOCATION": "위치", + "skyblocker.option.misc.richPresence.info.@Tooltip": "이 값은 순환중일 시 중요하지 않습니다", + "skyblocker.option.misc.richPresence.cycleMode": "스카이블록 정보 순환", + "skyblocker.option.misc.richPresence.enableRichPresence": "활성화됨", + "skyblocker.option.misc.richPresence.customMessage": "사용자 지정 메시지", "skyblocker.category.quickNav": "즐겨찾기", "skyblocker.option.quickNav.enableQuickNav": "즐겨찾기 활성화", "skyblocker.option.general.itemList": "아이템 목록", diff --git a/src/main/resources/assets/skyblocker/lang/nb_no.json b/src/main/resources/assets/skyblocker/lang/nb_no.json index d9a931bb..6accbc74 100644 --- a/src/main/resources/assets/skyblocker/lang/nb_no.json +++ b/src/main/resources/assets/skyblocker/lang/nb_no.json @@ -17,15 +17,15 @@ "skyblocker.option.general.hitbox.oldFarmlandHitbox": "Aktiver 1.8 treffboks for avlinger", "skyblocker.option.general.hitbox.oldLeverHitbox": "Aktiver 1.8 spak Treffboks", "skyblocker.itemTooltip.noData": "§cIngen data", - "skyblocker.category.richPresence": "Discord-rik tilstedeværelse", - "skyblocker.option.richPresence.info": "Skyblock-informasjon", - "skyblocker.option.richPresence.info.PURSE": "VESKE", - "skyblocker.option.richPresence.info.BITS": "BITS", - "skyblocker.option.richPresence.info.LOCATION": "PLASSERING", - "skyblocker.option.richPresence.info.@Tooltip": "Denne verdien har ikke noe å si hvis du cycling", - "skyblocker.option.richPresence.cycleMode": "Cycle Skyblock Informasjon", - "skyblocker.option.richPresence.enableRichPresence": "Aktivert", - "skyblocker.option.richPresence.customMessage": "Egendefinert melding", + "skyblocker.option.misc.richPresence": "Discord-rik tilstedeværelse", + "skyblocker.option.misc.richPresence.info": "Skyblock-informasjon", + "skyblocker.option.misc.richPresence.info.PURSE": "VESKE", + "skyblocker.option.misc.richPresence.info.BITS": "BITS", + "skyblocker.option.misc.richPresence.info.LOCATION": "PLASSERING", + "skyblocker.option.misc.richPresence.info.@Tooltip": "Denne verdien har ikke noe å si hvis du cycling", + "skyblocker.option.misc.richPresence.cycleMode": "Cycle Skyblock Informasjon", + "skyblocker.option.misc.richPresence.enableRichPresence": "Aktivert", + "skyblocker.option.misc.richPresence.customMessage": "Egendefinert melding", "skyblocker.category.quickNav": "Rask navigering", "skyblocker.option.quickNav.enableQuickNav": "Aktiver hurtignavigering", "key.categories.skyblocker": "SkyBlocker", diff --git a/src/main/resources/assets/skyblocker/lang/pt_br.json b/src/main/resources/assets/skyblocker/lang/pt_br.json index c9bff123..8289fb03 100644 --- a/src/main/resources/assets/skyblocker/lang/pt_br.json +++ b/src/main/resources/assets/skyblocker/lang/pt_br.json @@ -23,12 +23,12 @@ "skyblocker.option.general.teleportOverlay.enableSinrecallTransmission": "Ativar Overlay de Transmissão de Sinrecall", "skyblocker.option.general.teleportOverlay.enableWitherImpact": "Ativar Overlay de Impacto de Wither", "skyblocker.itemTooltip.noData": "§cSem Dados", - "skyblocker.option.richPresence.info": "Informação do Skyblock", - "skyblocker.option.richPresence.info.PURSE": "BOLSA", - "skyblocker.option.richPresence.info.@Tooltip": "Esse valor não importa se você está passando por um ciclo", - "skyblocker.option.richPresence.cycleMode": "Informação de Ciclo do Skyblock", - "skyblocker.option.richPresence.enableRichPresence": "Ativado", - "skyblocker.option.richPresence.customMessage": "Mensagem Personalizada", + "skyblocker.option.misc.richPresence.info": "Informação do Skyblock", + "skyblocker.option.misc.richPresence.info.PURSE": "BOLSA", + "skyblocker.option.misc.richPresence.info.@Tooltip": "Esse valor não importa se você está passando por um ciclo", + "skyblocker.option.misc.richPresence.cycleMode": "Informação de Ciclo do Skyblock", + "skyblocker.option.misc.richPresence.enableRichPresence": "Ativado", + "skyblocker.option.misc.richPresence.customMessage": "Mensagem Personalizada", "skyblocker.option.quickNav.enableQuickNav": "Ativar Navegação Rápida", "key.hotbarSlotLock": "Trancar Slot (Hotbar)", "skyblocker.title": "Configurações do Skyblocker", @@ -45,7 +45,7 @@ "skyblocker.option.general.teleportOverlay.enableTeleportOverlays": "Ativar Overlays de Teleporte", "skyblocker.option.general.teleportOverlay.enableEtherTransmission": "Ativar Overlay de Transmissão Éter", "skyblocker.itemTooltip.nullMessage": "§cA Informação do preço do item no tooltip irá se renovar no máximo 60 segundos. Caso contrário, cheque \"latest.log\"", - "skyblocker.option.richPresence.info.LOCATION": "LOCALIZAÇÃO", + "skyblocker.option.misc.richPresence.info.LOCATION": "LOCALIZAÇÃO", "skyblocker.category.quickNav": "Navegação Rápida", "key.categories.skyblocker": "Skyblocker", "skyblocker.option.general.etherwarpOverlay": "Overlay de Etherwarp", @@ -66,8 +66,8 @@ "skyblocker.option.general.itemTooltip.avg.@Tooltip": "Você pode escolher quantos dias de preço médio para ser", "skyblocker.option.general.itemInfoDisplay": "Exibição de Informação do Item", "skyblocker.option.general.itemInfoDisplay.attributeShardInfo": "Informação de Fragmento de Atributo", - "skyblocker.category.richPresence": "Discord Rich Presence", - "skyblocker.option.richPresence.info.BITS": "BITS", + "skyblocker.option.misc.richPresence": "Discord Rich Presence", + "skyblocker.option.misc.richPresence.info.BITS": "BITS", "skyblocker.category.messages": "Mensagens", "skyblocker.option.messages.hideImplosion": "Esconder Mensagem de Implosão", "skyblocker.option.messages.hideMoltenWave": "Esconder Mensagem do Molten Wave", @@ -172,7 +172,7 @@ "skyblocker.option.locations.dungeons.croesusHelper.@Tooltip": "Acinzentar os baús que já foram abertos.", "skyblocker.option.locations.dungeons.enableMap": "Ativar mapa", "skyblocker.option.locations.dungeons.mapScaling": "Tamanho do mapa", - "skyblocker.option.locations.dungeons.lividColor": "Cor do Livid", + "skyblocker.option.locations.dungeons.livid": "Cor do Livid", "skyblocker.option.locations.dungeons.lividColor.enableLividColorText": "Ativar cor para Livid", "skyblocker.option.locations.dungeons.terminals": "Guia dos terminais", "skyblocker.option.locations.dungeons.terminals.solveColor": "Guia de seleção colorido", @@ -289,7 +289,7 @@ "skyblocker.option.general.itemProtection.slotLockStyle.@Tooltip": "Escolhe entre ícone de slot bloqueado bonito ou classico.", "key.itemProtection": "Proteger Item", "skyblocker.option.general.chestValue.color": "Cor do Valor do Baú", - "skyblocker.option.general.dungeonQuality": "Qualidade da Dungeon", + "skyblocker.option.general.itemTooltip.dungeonQuality": "Qualidade da Dungeon", "skyblocker.option.general.tabHud.enableHudBackground": "Ativar Fundo de HUD", "skyblocker.option.general.tabHud.enableHudBackground.@Tooltip": "Ativa o fundo de uma HUD que não é a tab.", "skyblocker.option.general.waypoints": "Waypoints", diff --git a/src/main/resources/assets/skyblocker/lang/ru_ru.json b/src/main/resources/assets/skyblocker/lang/ru_ru.json index b880c452..abee3e85 100644 --- a/src/main/resources/assets/skyblocker/lang/ru_ru.json +++ b/src/main/resources/assets/skyblocker/lang/ru_ru.json @@ -33,12 +33,12 @@ "skyblocker.option.general.itemTooltip.avg.@Tooltip": "Можно выбрать, за сколько дней будет браться средняя цена", "skyblocker.option.general.itemTooltip.enableLowestBIN": "Показать минимальную цену на BIN", "skyblocker.option.general.itemTooltip.enableBazaarPrice": "Показать цены на Bazaar-е", - "skyblocker.category.richPresence": "Активность в статусе Discord", - "skyblocker.option.richPresence.info": "Отображаемая информация", - "skyblocker.option.richPresence.info.@Tooltip": "Не имеет значения при цикличном отображении", - "skyblocker.option.richPresence.cycleMode": "Отображать все опции циклично", - "skyblocker.option.richPresence.enableRichPresence": "Включить", - "skyblocker.option.richPresence.customMessage": "Своё сообщение", + "skyblocker.option.misc.richPresence": "Активность в статусе Discord", + "skyblocker.option.misc.richPresence.info": "Отображаемая информация", + "skyblocker.option.misc.richPresence.info.@Tooltip": "Не имеет значения при цикличном отображении", + "skyblocker.option.misc.richPresence.cycleMode": "Отображать все опции циклично", + "skyblocker.option.misc.richPresence.enableRichPresence": "Включить", + "skyblocker.option.misc.richPresence.customMessage": "Своё сообщение", "skyblocker.option.general.itemList": "Список предметов", "skyblocker.option.general.itemList.enableItemList": "Включить Список Предметов", "skyblocker.option.messages.hideCombo": "Скрывать сообщения о комбо", @@ -60,8 +60,8 @@ "skyblocker.option.general.hitbox.oldLeverHitbox": "Использовать хитбокс рычагов из 1.8", "skyblocker.option.general.itemTooltip.avg.ONE_DAY": "Цена за 1 день", "skyblocker.itemTooltip.noData": "§cНет данных", - "skyblocker.option.richPresence.info.PURSE": "PURSE", - "skyblocker.option.richPresence.info.LOCATION": "LOCATION", + "skyblocker.option.misc.richPresence.info.PURSE": "PURSE", + "skyblocker.option.misc.richPresence.info.LOCATION": "LOCATION", "skyblocker.category.quickNav": "Быстрый Доступ", "skyblocker.option.quickNav.enableQuickNav": "Включить кнопки в инвентаре", "skyblocker.option.general.tabHud": "Красивое TAB меню(временно отключено вне данжа)", @@ -74,7 +74,7 @@ "skyblocker.option.locations.dwarvenMines.dwarvenHud.style.@Tooltip[1]": "\nКрасивый: Показывает название, процент и шкалу выполнения, а также иконку.", "skyblocker.option.locations.dungeons.mapScaling": "Размер Карты", "skyblocker.option.locations.dungeons.lividColor.enableLividColorText": "Включить Цвет Босса Livid", - "skyblocker.option.locations.dungeons.lividColor": "Цвет Босса Livid", + "skyblocker.option.locations.dungeons.livid": "Цвет Босса Livid", "skyblocker.option.locations.dungeons.lividColor.enableLividColorText.@Tooltip": "Отправляет в чат информацию о том, какого цвета босс Livid.", "skyblocker.option.locations.dungeons.lividColor.lividColorText": "Текст О Цвете Livid", "skyblocker.option.locations.dwarvenMines.dwarvenHud.style": "Стиль HUD", @@ -89,7 +89,7 @@ "skyblocker.option.messages.chatFilterResult.FILTER": "Скрыть", "skyblocker.option.messages.chatFilterResult.PASS": "Не скрывать", "skyblocker.updateRepository.error": "§cОшибка в обновлении местного репозитория. Перезапустите игру, удалив файлы вручную.", - "skyblocker.option.richPresence.info.BITS": "BITS", + "skyblocker.option.misc.richPresence.info.BITS": "BITS", "skyblocker.option.locations.dungeons.croesusHelper": "Помощь в меню Croesus", "skyblocker.option.general.experiments": "Помощь в Экспериментах", "skyblocker.option.general.experiments.enableUltrasequencerSolver": "Помощь с Ultrasequencer", @@ -197,7 +197,7 @@ "skyblocker.option.locations.dungeons.secretWaypoints.enableRoomMatching": "Включить нумерацию комнат", "skyblocker.option.locations.dungeons.secretWaypoints.enableDefaultWaypoints": "Включить стандартные метки", "skyblocker.wikiLookup.noArticleFound": "§rДля этого предмета не найдено статьи на Вики...", - "skyblocker.option.general.betterPartyFinder": "Улучшенный поиск компании", + "skyblocker.option.general.fancyPartyFinder": "Улучшенный поиск компании", "skyblocker.option.locations.spidersDen.relics.highlightFoundRelics": "Подсветка найденных реликвий", "skyblocker.option.locations.spidersDen.relics.enableRelicsHelper": "Включить помощника по хайд-реликвиям", "skyblocker.option.locations.dungeons.secretWaypoints.showSecretText": "Включить секретный текст", @@ -321,8 +321,8 @@ "skyblocker.option.general.itemProtection": "Предметная защита", "skyblocker.option.general.itemProtection.slotLockStyle": "Стиль слота с закреплённым предметом", "skyblocker.option.locations.crimsonIsle.kuudra": "Kuudrа", - "skyblocker.option.general.dungeonQuality": "Данж-качество", - "skyblocker.option.general.dungeonQuality.@Tooltip": "Показывает качество и уровень дропа из данжа с мобов.\n\n\nПример:\nУр. 1-3 падает на 1-3 этажах\nУр. 4-7 падает на 4-7 этажах, или с 1-4 ур. Мастера\nУр. 8-10 падает только с 5-7 ур. Мастера", + "skyblocker.option.general.itemTooltip.dungeonQuality": "Данж-качество", + "skyblocker.option.general.itemTooltip.dungeonQuality.@Tooltip": "Показывает качество и уровень дропа из данжа с мобов.\n\n\nПример:\nУр. 1-3 падает на 1-3 этажах\nУр. 4-7 падает на 4-7 этажах, или с 1-4 ур. Мастера\nУр. 8-10 падает только с 5-7 ур. Мастера", "skyblocker.option.locations.dungeons.dungeonChestProfit.croesusProfit": "Подсчёт окупаемости сундука Croesus", "skyblocker.option.locations.dungeons.dungeonChestProfit.croesusProfit.@Tooltip": "Подсвечивает сундук с самой лучшей окупаемостью у Croesus НИПа.\n\n\nСамый лучший сундук будет подсвечиваться зелёным цветом.\nЕсли для этого сундука нужен ключ данжа, то он будет подсвечиваться жёлтым", "skyblocker.option.locations.dungeons.mapScreen": "Расположение карты и результата забега...", @@ -373,9 +373,9 @@ "skyblocker.option.general.fishing.hideOtherPlayers.@Tooltip": "Не дает отображаться удочкам других игроков", "skyblocker.option.general.itemTooltip.enableAccessoriesHelper.@Tooltip[4]": "У вас уже есть аксессуар лучше, чем этот. Также сообщает, какого уровня имеющийся аксессуар.", "skyblocker.option.general.itemTooltip.enableAccessoriesHelper.@Tooltip[5]": "У вас нет аксессуаров из этого семейства.", - "skyblocker.option.general.betterAuctionHouse": "Улучшенный аукцион", - "skyblocker.option.general.betterAuctionHouse.enabled": "Включить", - "skyblocker.option.general.betterAuctionHouse.highlightUnderAvgPrice": "Подсвечивать BIN-аукционы по цене ниже средней", + "skyblocker.option.general.fancyAuctionHouse": "Улучшенный аукцион", + "skyblocker.option.general.fancyAuctionHouse.enabled": "Включить", + "skyblocker.option.general.fancyAuctionHouse.highlightUnderAvgPrice": "Подсвечивать BIN-аукционы по цене ниже средней", "skyblocker.option.locations.garden.farmingHud.enableHud": "Включить фермерский HUD", "skyblocker.option.locations.garden.farmingHud.config": "Настройка фермерского HUD...", "skyblocker.option.general.fishing.enableFishingTimer": "Включить Таймер", diff --git a/src/main/resources/assets/skyblocker/lang/tr_tr.json b/src/main/resources/assets/skyblocker/lang/tr_tr.json index a7939f3d..dbc189ba 100644 --- a/src/main/resources/assets/skyblocker/lang/tr_tr.json +++ b/src/main/resources/assets/skyblocker/lang/tr_tr.json @@ -13,14 +13,14 @@ "skyblocker.option.general.hitbox.oldFarmlandHitbox": "1.8 tarım hitboxlarını etkinleştir", "skyblocker.option.general.hitbox.oldLeverHitbox": "1.8 şalter hitboxunu etkinleştir", "skyblocker.itemTooltip.noData": "§cVeri yok", - "skyblocker.category.richPresence": "Discord Özel Durumu", - "skyblocker.option.richPresence.info": "Skyblock bilgisi", - "skyblocker.option.richPresence.info.PURSE": "Cüzdan", - "skyblocker.option.richPresence.info.BITS": "Bit", - "skyblocker.option.richPresence.info.LOCATION": "Konum", - "skyblocker.option.richPresence.info.@Tooltip": "Eğer döngüyü açtıysanız bu değer geçersiz kalır", - "skyblocker.option.richPresence.cycleMode": "Skyblock bilgilerini döngüye al", - "skyblocker.option.richPresence.customMessage": "Özel mesaj", + "skyblocker.option.misc.richPresence": "Discord Özel Durumu", + "skyblocker.option.misc.richPresence.info": "Skyblock bilgisi", + "skyblocker.option.misc.richPresence.info.PURSE": "Cüzdan", + "skyblocker.option.misc.richPresence.info.BITS": "Bit", + "skyblocker.option.misc.richPresence.info.LOCATION": "Konum", + "skyblocker.option.misc.richPresence.info.@Tooltip": "Eğer döngüyü açtıysanız bu değer geçersiz kalır", + "skyblocker.option.misc.richPresence.cycleMode": "Skyblock bilgilerini döngüye al", + "skyblocker.option.misc.richPresence.customMessage": "Özel mesaj", "skyblocker.option.locations.dwarvenMines.dwarvenHud": "Dwarven HUD", "skyblocker.option.locations.dwarvenMines.solveFetchur": "Fetchur'un mesajını çöz", "skyblocker.fishing.reelNow": "Şimdi sarıl!", @@ -40,7 +40,7 @@ "skyblocker.option.general.hideEmptyTooltips": "Menülerdeki boş eşya açıklamalarını gizle", "skyblocker.option.general.itemTooltip.avg.@Tooltip": "Kaç günlük ortalamanın gösterileceğini seçebilirsiniz", "skyblocker.option.general.itemTooltip.enableLowestBIN": "En düşük BIN fiyatını göster", - "skyblocker.option.richPresence.enableRichPresence": "Aktif", + "skyblocker.option.misc.richPresence.enableRichPresence": "Aktif", "skyblocker.option.locations.dwarvenMines.solvePuzzler": "Puzzler'ın bulmacasını çöz", "key.hotbarSlotLock": "Slot Kilidi (Araç Çubuğu)", "key.wikiLookup": "Wiki Araması", diff --git a/src/main/resources/assets/skyblocker/lang/zh_cn.json b/src/main/resources/assets/skyblocker/lang/zh_cn.json index edfedc71..0b8111de 100644 --- a/src/main/resources/assets/skyblocker/lang/zh_cn.json +++ b/src/main/resources/assets/skyblocker/lang/zh_cn.json @@ -23,15 +23,15 @@ "skyblocker.option.general.hitbox.oldLeverHitbox": "启用1.8的拉杆碰撞箱", "skyblocker.itemTooltip.nullMessage": "§c物品提示里的价格信息会在最多60秒内更新。如果没有,请检查latest.log", "skyblocker.itemTooltip.noData": "§c没有数据", - "skyblocker.category.richPresence": "Discord活动状态", - "skyblocker.option.richPresence.info": "Skyblock信息", - "skyblocker.option.richPresence.info.PURSE": "钱包", - "skyblocker.option.richPresence.info.BITS": "点数", - "skyblocker.option.richPresence.info.LOCATION": "位置", - "skyblocker.option.richPresence.info.@Tooltip": "如果您处于循环模式,这个值将不会生效", - "skyblocker.option.richPresence.cycleMode": "循环Skyblock信息", - "skyblocker.option.richPresence.enableRichPresence": "已启用", - "skyblocker.option.richPresence.customMessage": "自定义消息", + "skyblocker.option.misc.richPresence": "Discord活动状态", + "skyblocker.option.misc.richPresence.info": "Skyblock信息", + "skyblocker.option.misc.richPresence.info.PURSE": "钱包", + "skyblocker.option.misc.richPresence.info.BITS": "点数", + "skyblocker.option.misc.richPresence.info.LOCATION": "位置", + "skyblocker.option.misc.richPresence.info.@Tooltip": "如果您处于循环模式,这个值将不会生效", + "skyblocker.option.misc.richPresence.cycleMode": "循环Skyblock信息", + "skyblocker.option.misc.richPresence.enableRichPresence": "已启用", + "skyblocker.option.misc.richPresence.customMessage": "自定义消息", "skyblocker.category.quickNav": "快速导航", "skyblocker.option.quickNav.enableQuickNav": "启用快速导航", "skyblocker.option.general.itemList": "物品列表", @@ -78,7 +78,7 @@ "skyblocker.option.general.fishing.enableFishingHelper": "启用钓鱼助手", "skyblocker.fishing.reelNow": "收竿!", "skyblocker.option.locations.dungeons.lividColor.enableLividColorText": "启用真Livid的颜色提示文本", - "skyblocker.option.locations.dungeons.lividColor": "提示真Livid的颜色", + "skyblocker.option.locations.dungeons.livid": "提示真Livid的颜色", "skyblocker.option.locations.dungeons.lividColor.enableLividColorText.@Tooltip": "将真Livid的颜色发送到聊天栏。", "skyblocker.option.locations.dungeons.lividColor.lividColorText": "真Livid颜色提示信息文本", "skyblocker.option.locations.dungeons.lividColor.lividColorText.@Tooltip": "Livid Boss战时发送到聊天栏的信息, 字段 “[color]” 将被替换为真Livid的颜色。", @@ -170,7 +170,7 @@ "skyblocker.wikiLookup.noArticleFound": "§r无法找到此物品的维基条目...", "skyblocker.option.locations.dungeons.secretWaypoints.enableWitherWaypoints": "启用凋灵精粹路径点", "skyblocker.option.locations.dungeons.secretWaypoints.enableBatWaypoints": "启用蝙蝠路径点", - "skyblocker.option.general.betterPartyFinder": "更好的组队查找", + "skyblocker.option.general.fancyPartyFinder": "更好的组队查找", "skyblocker.option.locations.dungeons.secretWaypoints.enableRoomMatching.@Tooltip": "关闭此选项可节省约20MB左右的内存,但是秘密路径点和§l部分谜题助手功能§r需要启用该选项。", "skyblocker.option.locations.dungeons.secretWaypoints.enableItemWaypoints": "启用物品路径点", "skyblocker.option.general.quiverWarning.enableQuiverWarningAfterDungeon": "在地牢结束后启用箭袋提示", @@ -192,7 +192,7 @@ "skyblocker.option.general.specialEffects": "特效", "skyblocker.option.locations.dungeons.doorHighlight.doorHighlightType.secretWaypointsNote": "\n\n\n注意:若使此功能生效,必须启用地牢秘密路径点。", "skyblocker.option.locations.dungeons.dungeonScore.enableScoreHUD.@Tooltip": "在状态栏显示地牢的分数。", - "skyblocker.option.general.dungeonQuality": "地牢物品品质", + "skyblocker.option.general.itemTooltip.dungeonQuality": "地牢物品品质", "skyblocker.option.locations.dungeons.secretWaypoints.enableStonkWaypoints": "启用Stonk路径点", "skyblocker.option.messages.hideToggleSkyMall": "隐藏Sky Mall切换的消息", "skyblocker.option.locations.dwarvenMines.dwarvenHud.screen": "矮人矿井HUD配置", @@ -528,7 +528,7 @@ "text.skyblocker.discord": "Discord", "text.skyblocker.source": "源代码", "text.skyblocker.confirm": "确认", - "skyblocker.option.general.betterAuctionHouse.enabled": "启用", + "skyblocker.option.general.fancyAuctionHouse.enabled": "启用", "skyblocker.fancyAuctionHouse.editBid": "点击编辑出价!", "skyblocker.fancyAuctionHouse.alreadyTopBid": "已经是最高出价!", "skyblocker.fancyAuctionHouse.didntWin": "没有赢得拍卖 :(", @@ -539,8 +539,8 @@ "skyblocker.fancyAuctionHouse.yourAuction": "这是你的拍卖!", "skyblocker.fancyAuctionHouse.youPay": "你支付:%s", "skyblocker.fancyAuctionHouse.collectBid": "收集出价", - "skyblocker.option.general.betterAuctionHouse": "更好的拍卖行界面", - "skyblocker.option.general.betterAuctionHouse.highlightUnderAvgPrice": "高亮显示低于平均价格的BIN物品", + "skyblocker.option.general.fancyAuctionHouse": "更好的拍卖行界面", + "skyblocker.option.general.fancyAuctionHouse.highlightUnderAvgPrice": "高亮显示低于平均价格的BIN物品", "skyblocker.fancyAuctionHouse.price": "价格:", "skyblocker.fancyAuctionHouse.newBid": "新出价:", "skyblocker.fancyAuctionHouse.buy": "买!", diff --git a/src/main/resources/assets/skyblocker/lang/zh_tw.json b/src/main/resources/assets/skyblocker/lang/zh_tw.json index 3a851977..b0b0a7bf 100644 --- a/src/main/resources/assets/skyblocker/lang/zh_tw.json +++ b/src/main/resources/assets/skyblocker/lang/zh_tw.json @@ -35,10 +35,10 @@ "skyblocker.option.locations.barn.solveHungryHiker": "飢餓的旅行者所需物品提示", "skyblocker.option.messages.hideMoltenWave": "隱藏Molten Wave技能的提示訊息", "skyblocker.option.messages.hideImplosion": "隱藏Implosion技能的提示訊息", - "skyblocker.option.richPresence.info.PURSE": "錢包", - "skyblocker.option.richPresence.info.LOCATION": "位置", - "skyblocker.option.richPresence.info.@Tooltip": "如果您正在循環模式,這個值將不會生效", - "skyblocker.option.richPresence.customMessage": "自訂訊息", + "skyblocker.option.misc.richPresence.info.PURSE": "錢包", + "skyblocker.option.misc.richPresence.info.LOCATION": "位置", + "skyblocker.option.misc.richPresence.info.@Tooltip": "如果您正在循環模式,這個值將不會生效", + "skyblocker.option.misc.richPresence.customMessage": "自訂訊息", "skyblocker.option.locations.dwarvenMines.solveFetchur": "解開Fetchur的謎題", "skyblocker.option.messages.chatFilterResult.ACTION_BAR": "移至動作欄", "skyblocker.option.messages.chatFilterResult.PASS": "關閉", @@ -158,7 +158,7 @@ "skyblocker.option.locations.dungeons.lividColor.enableLividColorText": "啟用真Livid的顏色提示文本", "skyblocker.option.locations.dungeons.lividColor.enableLividColorGlow": "啟用Livid高亮", "skyblocker.option.general.teleportOverlay.enableSinrecallTransmission": "啟用Sinrecall Transmission技能目標位置顯示", - "skyblocker.category.richPresence": "Discord活動狀態", + "skyblocker.option.misc.richPresence": "Discord活動狀態", "skyblocker.option.locations.dungeons.dungeonChestProfit.enableProfitCalculator.@Tooltip": "在寶箱畫面的標題中顯示地牢寶箱的利潤。\n如果獲利則顯示綠色。\n如果虧損則為紅色。\n灰色表示沒有獲利也沒有虧損。\n如果計算是基於不完整的數據,則顯示為藍色。", "skyblocker.option.locations.dungeons.dungeonChestProfit.includeKismet": "包含Kismet價格", "skyblocker.option.slayer.endermanSlayer": "終界使者杀手", @@ -343,7 +343,7 @@ "skyblocker.option.locations.dwarvenMines.dwarvenHud.screen": "矮人礦井HUD配置…", "skyblocker.tips.enabled": "§a啟用提示。", "skyblocker.option.quickNav.button": "按鈕 %d", - "skyblocker.option.general.betterPartyFinder": "更好的組隊查找", + "skyblocker.option.general.fancyPartyFinder": "更好的組隊查找", "skyblocker.option.locations.dungeons.secretWaypoints.enableDefaultWaypoints": "啟用預設路徑點", "skyblocker.fairySouls.markAllFound": "§r將目前島嶼上的全部仙女之魂標記為已發現", "skyblocker.option.locations.dungeons.dungeonScore.enableScoreHUD": "啟用分數狀態欄", @@ -354,7 +354,7 @@ "skyblocker.option.locations.dungeons.mimicMessage.sendMimicMessage": "啟用Mimic訊息", "skyblocker.option.locations.dungeons.mimicMessage.sendMimicMessage.@Tooltip": "殺死Mimic後在聊天中發送一則訊息,以供其他玩家的分數計算模組使用。", "skyblocker.option.locations.dungeons.mimicMessage.mimicMessage": "Mimic訊息", - "skyblocker.option.locations.dungeons.lividColor": "提示真Livid的顏色", + "skyblocker.option.locations.dungeons.livid": "提示真Livid的顏色", "skyblocker.option.locations.dungeons.mimicMessage.mimicMessage.@Tooltip": "殺死Mimic後將在聊天中發送的訊息。 建議保留預設值。", "skyblocker.option.locations.dungeons.fireFreezeStaffTimer.@Tooltip": "在F3/M3的Boss戰中使用受到開火凍結影響的武器時顯示計時器。", "skyblocker.option.locations.dwarvenMines": "矮人礦井", @@ -372,7 +372,7 @@ "skyblocker.option.locations.dwarvenMines.crystalsHud": "水晶洞窟地圖", "skyblocker.option.general.enableTips": "啟用貼士", "skyblocker.option.general.teleportOverlay.enableTeleportOverlays": "啟用傳送類型技能目標位置顯示", - "skyblocker.option.richPresence.enableRichPresence": "已啟用", + "skyblocker.option.misc.richPresence.enableRichPresence": "已啟用", "skyblocker.option.locations.dwarvenMines.crystalsWaypoints.enabled.@Tooltip": "為叢林遺跡和仙女石窟等水晶洞窟中的重要區域添加路徑點(在一般設定/路徑點中所選擇的路徑點)。 ", "skyblocker.option.general.searchOverlay.enableBazaar.@Tooltip": "在Bazaar中搜尋時顯示自訂搜尋介面。", "skyblocker.option.general.searchOverlay": "搜尋介面", @@ -387,7 +387,7 @@ "skyblocker.option.locations.dungeons.solveBoulder.@Tooltip": "繪製路線並高亮按鈕", "skyblocker.option.locations.dungeons.lividColor.enableLividColorTitle": "啟用Livid顏色標題", "skyblocker.option.locations.dwarvenMines.crystalsWaypoints.findInChat": "在聊天欄中搜尋路徑點", - "skyblocker.option.general.dungeonQuality": "地牢物品品質", + "skyblocker.option.general.itemTooltip.dungeonQuality": "地牢物品品質", "skyblocker.option.general.searchOverlay.historyLength.@Tooltip": "介面顯示的搜尋歷史的最大數量。", "skyblocker.option.general.searchOverlay.enableCommands": "從指令打開", "skyblocker.tips.issues": "在 https://github.com/SkyblockerMod/Skyblocker 提交錯誤報告和功能請求。", @@ -405,8 +405,8 @@ "skyblocker.option.general.itemTooltip.enableMotesPrice.@Tooltip": "顯示Rift中的物品價格,以Mote為計量單位。", "skyblocker.option.general.tabHud.tabHudEnabled": "啟用更好的Tab HUD", "skyblocker.option.general.teleportOverlay": "傳送類型技能目標位置顯示", - "skyblocker.option.richPresence.info": "Skyblock訊息", - "skyblocker.option.richPresence.cycleMode": "循環Skyblock訊息", + "skyblocker.option.misc.richPresence.info": "Skyblock訊息", + "skyblocker.option.misc.richPresence.cycleMode": "循環Skyblock訊息", "skyblocker.updateRepository.error": "§c更新本機資料儲存庫失敗,請手動刪除檔案並重新啟動遊戲。", "skyblocker.dungeons.secrets.markSecretFoundUnable": "§c無法將秘密 #%d 標記為已找到。", "skyblocker.dungeons.secrets.markSecretMissingUnable": "§c無法將秘密 #%d 標記為已忽略。", @@ -472,7 +472,7 @@ "skyblocker.partyFinder.deList": "點擊取消列出", "skyblocker.option.general.tabHud.enableHudBackground": "啟用HUD背景", "skyblocker.option.general.tabHud.enableHudBackground.@Tooltip": "為非TAB的HUD啟用背景。", - "skyblocker.option.richPresence.info.BITS": "點數", + "skyblocker.option.misc.richPresence.info.BITS": "點數", "skyblocker.option.locations.crimsonIsle.kuudra.safeSpotWaypoints": "安全點路徑", "skyblocker.option.locations.crimsonIsle.kuudra.noArrowPoisonWarning": "箭毒耗盡警告", "skyblocker.option.locations.garden.farmingHud.enableHud": "啟用耕作HUD", @@ -530,9 +530,9 @@ "skyblocker.fancyAuctionHouse.alreadyTopBid": "已經是最高出價!", "skyblocker.fancyAuctionHouse.yourAuction": "這是你的拍賣!", "text.skyblocker.confirm": "確認", - "skyblocker.option.general.betterAuctionHouse.enabled": "啟用", - "skyblocker.option.general.betterAuctionHouse": "更好的拍賣行介面", - "skyblocker.option.general.betterAuctionHouse.highlightUnderAvgPrice": "高亮顯示低於平均價格的BIN物品", + "skyblocker.option.general.fancyAuctionHouse.enabled": "啟用", + "skyblocker.option.general.fancyAuctionHouse": "更好的拍賣行介面", + "skyblocker.option.general.fancyAuctionHouse.highlightUnderAvgPrice": "高亮顯示低於平均價格的BIN物品", "skyblocker.fancyAuctionHouse.price": "價格:", "skyblocker.fancyAuctionHouse.newBid": "新出價:", "skyblocker.fancyAuctionHouse.buy": "買!", |