aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2023-10-01 01:48:46 -0400
committerAaron <51387595+AzureAaron@users.noreply.github.com>2023-10-01 01:48:46 -0400
commitcb7100cbd8b4ee1187cfd91712c3403a8860d70c (patch)
treede29f871a5f289584a6162f92647578852652174 /src/main/java/me/xmrvizzy
parentbe8e307391d95e0bdc981411f94626978a88b0a5 (diff)
downloadSkyblocker-cb7100cbd8b4ee1187cfd91712c3403a8860d70c.tar.gz
Skyblocker-cb7100cbd8b4ee1187cfd91712c3403a8860d70c.tar.bz2
Skyblocker-cb7100cbd8b4ee1187cfd91712c3403a8860d70c.zip
Config Tweaks
Diffstat (limited to 'src/main/java/me/xmrvizzy')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java36
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java40
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/config/categories/QuickNavigationCategory.java9
3 files changed, 61 insertions, 24 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java
index 4a615ecc..475e9055 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/config/ConfigUtils.java
@@ -1,11 +1,39 @@
package me.xmrvizzy.skyblocker.config;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
import dev.isxander.yacl3.api.Option;
+import dev.isxander.yacl3.api.controller.DropdownStringControllerBuilder;
import dev.isxander.yacl3.api.controller.EnumControllerBuilder;
public class ConfigUtils {
- @SuppressWarnings("unchecked")
- public static <E extends Enum<E>> EnumControllerBuilder<E> createEnumCyclingListController(Option<E> opt) {
- return EnumControllerBuilder.create(opt).enumClass((Class<E>) opt.binding().defaultValue().getClass());
- }
+ @SuppressWarnings("unchecked")
+ public static <E extends Enum<E>> EnumControllerBuilder<E> createEnumCyclingListController(Option<E> opt) {
+ return EnumControllerBuilder.create(opt).enumClass((Class<E>) opt.binding().defaultValue().getClass());
+ }
+
+ /**
+ * Searches through enum constants in {@code enumClass} for one whose {@link Enum#toString()} result equals {@code expectedValue}
+ *
+ * @return The enum constant associated with the {@code expectedValue}
+ * @throws IllegalStateException Thrown when a constant couldn't be found
+ *
+ * @implNote The return value of {@link Enum#toString()} on each enum constant should be unique in order to ensure accuracy
+ */
+ public static <E extends Enum<E>> E enumConstantFromToString(Class<E> enumClass, String expectedValue) {
+ for (E constant : enumClass.getEnumConstants()) {
+ if (constant.toString().equals(expectedValue))
+ return constant;
+ }
+
+ throw new IllegalStateException("Didn't find an enum constant matching: " + expectedValue);
+ }
+
+ public static <E extends Enum<E>> DropdownStringControllerBuilder createDropdownControllerFromEnum(Option<String> opt, Class<E> enumClass) {
+ List<String> stringifiedConstants = Arrays.stream(enumClass.getEnumConstants()).map(Enum::toString).collect(Collectors.toList());
+
+ return DropdownStringControllerBuilder.create(opt).allowAnyValue(false).allowEmptyValue(false).values(stringifiedConstants);
+ }
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java
index 92a7ddec..f48c8344 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/DungeonsCategory.java
@@ -151,34 +151,34 @@ public class DungeonsCategory {
newValue -> config.locations.dungeons.dungeonChestProfit.neutralThreshold = newValue)
.controller(IntegerFieldControllerBuilder::create)
.build())
- .option(Option.<FormattingOption>createBuilder()
+ .option(Option.<String>createBuilder()
.name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.neutralColor"))
- .binding(defaults.locations.dungeons.dungeonChestProfit.neutralColor,
- () -> config.locations.dungeons.dungeonChestProfit.neutralColor,
- newValue -> config.locations.dungeons.dungeonChestProfit.neutralColor = newValue)
- .controller(ConfigUtils::createEnumCyclingListController)
+ .binding(defaults.locations.dungeons.dungeonChestProfit.neutralColor.toString(),
+ () -> config.locations.dungeons.dungeonChestProfit.neutralColor.toString(),
+ newValue -> config.locations.dungeons.dungeonChestProfit.neutralColor = ConfigUtils.enumConstantFromToString(FormattingOption.class, newValue))
+ .controller(opt -> ConfigUtils.createDropdownControllerFromEnum(opt, FormattingOption.class))
.build())
- .option(Option.<FormattingOption>createBuilder()
+ .option(Option.<String>createBuilder()
.name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.profitColor"))
- .binding(defaults.locations.dungeons.dungeonChestProfit.profitColor,
- () -> config.locations.dungeons.dungeonChestProfit.profitColor,
- newValue -> config.locations.dungeons.dungeonChestProfit.profitColor = newValue)
- .controller(ConfigUtils::createEnumCyclingListController)
+ .binding(defaults.locations.dungeons.dungeonChestProfit.profitColor.toString(),
+ () -> config.locations.dungeons.dungeonChestProfit.profitColor.toString(),
+ newValue -> config.locations.dungeons.dungeonChestProfit.profitColor = ConfigUtils.enumConstantFromToString(FormattingOption.class, newValue))
+ .controller(opt -> ConfigUtils.createDropdownControllerFromEnum(opt, FormattingOption.class))
.build())
- .option(Option.<FormattingOption>createBuilder()
+ .option(Option.<String>createBuilder()
.name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.lossColor"))
- .binding(defaults.locations.dungeons.dungeonChestProfit.lossColor,
- () -> config.locations.dungeons.dungeonChestProfit.lossColor,
- newValue -> config.locations.dungeons.dungeonChestProfit.lossColor = newValue)
- .controller(ConfigUtils::createEnumCyclingListController)
+ .binding(defaults.locations.dungeons.dungeonChestProfit.lossColor.toString(),
+ () -> config.locations.dungeons.dungeonChestProfit.lossColor.toString(),
+ newValue -> config.locations.dungeons.dungeonChestProfit.lossColor = ConfigUtils.enumConstantFromToString(FormattingOption.class, newValue))
+ .controller(opt -> ConfigUtils.createDropdownControllerFromEnum(opt, FormattingOption.class))
.build())
- .option(Option.<FormattingOption>createBuilder()
+ .option(Option.<String>createBuilder()
.name(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.incompleteColor"))
.description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.locations.dungeons.dungeonChestProfit.incompleteColor.@Tooltip")))
- .binding(defaults.locations.dungeons.dungeonChestProfit.incompleteColor,
- () -> config.locations.dungeons.dungeonChestProfit.incompleteColor,
- newValue -> config.locations.dungeons.dungeonChestProfit.incompleteColor = newValue)
- .controller(ConfigUtils::createEnumCyclingListController)
+ .binding(defaults.locations.dungeons.dungeonChestProfit.incompleteColor.toString(),
+ () -> config.locations.dungeons.dungeonChestProfit.incompleteColor.toString(),
+ newValue -> config.locations.dungeons.dungeonChestProfit.incompleteColor = ConfigUtils.enumConstantFromToString(FormattingOption.class, newValue))
+ .controller(opt -> ConfigUtils.createDropdownControllerFromEnum(opt, FormattingOption.class))
.build())
.build())
diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/categories/QuickNavigationCategory.java b/src/main/java/me/xmrvizzy/skyblocker/config/categories/QuickNavigationCategory.java
index 4ca38375..4f360d3b 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/config/categories/QuickNavigationCategory.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/config/categories/QuickNavigationCategory.java
@@ -15,6 +15,15 @@ public class QuickNavigationCategory {
return ConfigCategory.createBuilder()
.name(Text.translatable("text.autoconfig.skyblocker.category.quickNav"))
+ //Toggle
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.enableQuickNav"))
+ .binding(defaults.quickNav.enableQuickNav,
+ () -> config.quickNav.enableQuickNav,
+ newValue -> config.quickNav.enableQuickNav = newValue)
+ .controller(BooleanControllerBuilder::create)
+ .build())
+
//Button 1
.group(OptionGroup.createBuilder()
.name(Text.translatable("text.autoconfig.skyblocker.option.quickNav.button1"))