aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2024-07-10 16:03:19 -0400
committerAaron <51387595+AzureAaron@users.noreply.github.com>2024-07-10 16:03:19 -0400
commit8f8b583c31955c192856126d3ce48810d301f016 (patch)
treeb63f9f2ec7554837be27e0987c2be230f373907b /src/main/java
parent99e70f1d9aaafa5f9f39500efbc474eda561eda8 (diff)
downloadSkyblocker-8f8b583c31955c192856126d3ce48810d301f016.tar.gz
Skyblocker-8f8b583c31955c192856126d3ce48810d301f016.tar.bz2
Skyblocker-8f8b583c31955c192856126d3ce48810d301f016.zip
Refactor Simon Says solver
Should be less conflicting with other things
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/DungeonsCategory.java1232
-rw-r--r--src/main/java/de/hysky/skyblocker/mixins/ClientWorldMixin.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dungeon/device/SimonSays.java15
3 files changed, 624 insertions, 627 deletions
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 36999778..4a804650 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/DungeonsCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/DungeonsCategory.java
@@ -15,633 +15,633 @@ import net.minecraft.util.Formatting;
public class DungeonsCategory {
- public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) {
- return ConfigCategory.createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons"))
+ public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) {
+ return ConfigCategory.createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons"))
- //Ungrouped Options
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.fancyPartyFinder"))
- .binding(defaults.dungeons.fancyPartyFinder,
- () -> config.dungeons.fancyPartyFinder,
- newValue -> config.dungeons.fancyPartyFinder = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.croesusHelper"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.croesusHelper.@Tooltip")))
- .binding(defaults.dungeons.croesusHelper,
- () -> config.dungeons.croesusHelper,
- newValue -> config.dungeons.croesusHelper = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.playerSecretsTracker"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.playerSecretsTracker.@Tooltip")))
- .binding(defaults.dungeons.playerSecretsTracker,
- () -> config.dungeons.playerSecretsTracker,
- newValue -> config.dungeons.playerSecretsTracker = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.starredMobGlow"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.starredMobGlow.@Tooltip")))
- .binding(defaults.dungeons.starredMobGlow,
- () -> config.dungeons.starredMobGlow,
- newValue -> config.dungeons.starredMobGlow = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.starredMobBoundingBoxes"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.starredMobBoundingBoxes.@Tooltip")))
- .binding(defaults.dungeons.starredMobBoundingBoxes,
- () -> config.dungeons.starredMobBoundingBoxes,
- newValue -> config.dungeons.starredMobBoundingBoxes = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.allowDroppingProtectedItems"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.allowDroppingProtectedItems.@Tooltip")))
- .binding(defaults.dungeons.allowDroppingProtectedItems,
- () -> config.dungeons.allowDroppingProtectedItems,
- newValue -> config.dungeons.allowDroppingProtectedItems = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.hideSoulweaverSkulls"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.hideSoulweaverSkulls.@Tooltip")))
- .binding(defaults.dungeons.hideSoulweaverSkulls,
- () -> config.dungeons.hideSoulweaverSkulls,
- newValue -> config.dungeons.hideSoulweaverSkulls = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
+ //Ungrouped Options
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.fancyPartyFinder"))
+ .binding(defaults.dungeons.fancyPartyFinder,
+ () -> config.dungeons.fancyPartyFinder,
+ newValue -> config.dungeons.fancyPartyFinder = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.croesusHelper"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.croesusHelper.@Tooltip")))
+ .binding(defaults.dungeons.croesusHelper,
+ () -> config.dungeons.croesusHelper,
+ newValue -> config.dungeons.croesusHelper = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.playerSecretsTracker"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.playerSecretsTracker.@Tooltip")))
+ .binding(defaults.dungeons.playerSecretsTracker,
+ () -> config.dungeons.playerSecretsTracker,
+ newValue -> config.dungeons.playerSecretsTracker = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.starredMobGlow"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.starredMobGlow.@Tooltip")))
+ .binding(defaults.dungeons.starredMobGlow,
+ () -> config.dungeons.starredMobGlow,
+ newValue -> config.dungeons.starredMobGlow = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.starredMobBoundingBoxes"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.starredMobBoundingBoxes.@Tooltip")))
+ .binding(defaults.dungeons.starredMobBoundingBoxes,
+ () -> config.dungeons.starredMobBoundingBoxes,
+ newValue -> config.dungeons.starredMobBoundingBoxes = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.allowDroppingProtectedItems"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.allowDroppingProtectedItems.@Tooltip")))
+ .binding(defaults.dungeons.allowDroppingProtectedItems,
+ () -> config.dungeons.allowDroppingProtectedItems,
+ newValue -> config.dungeons.allowDroppingProtectedItems = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.hideSoulweaverSkulls"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.hideSoulweaverSkulls.@Tooltip")))
+ .binding(defaults.dungeons.hideSoulweaverSkulls,
+ () -> config.dungeons.hideSoulweaverSkulls,
+ newValue -> config.dungeons.hideSoulweaverSkulls = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
- // Map
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.map"))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.map.enableMap"))
- .binding(defaults.dungeons.dungeonMap.enableMap,
- () -> config.dungeons.dungeonMap.enableMap,
- newValue -> config.dungeons.dungeonMap.enableMap = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Float>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.map.mapScaling"))
- .binding(defaults.dungeons.dungeonMap.mapScaling,
- () -> config.dungeons.dungeonMap.mapScaling,
- newValue -> config.dungeons.dungeonMap.mapScaling = newValue)
- .controller(FloatFieldControllerBuilder::create)
- .build())
- .option(ButtonOption.createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.map.mapScreen"))
- .text(Text.translatable("text.skyblocker.open"))
- .action((screen, opt) -> MinecraftClient.getInstance().setScreen(new DungeonMapConfigScreen(screen)))
- .build())
- .build())
+ // Map
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.map"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.map.enableMap"))
+ .binding(defaults.dungeons.dungeonMap.enableMap,
+ () -> config.dungeons.dungeonMap.enableMap,
+ newValue -> config.dungeons.dungeonMap.enableMap = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Float>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.map.mapScaling"))
+ .binding(defaults.dungeons.dungeonMap.mapScaling,
+ () -> config.dungeons.dungeonMap.mapScaling,
+ newValue -> config.dungeons.dungeonMap.mapScaling = newValue)
+ .controller(FloatFieldControllerBuilder::create)
+ .build())
+ .option(ButtonOption.createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.map.mapScreen"))
+ .text(Text.translatable("text.skyblocker.open"))
+ .action((screen, opt) -> MinecraftClient.getInstance().setScreen(new DungeonMapConfigScreen(screen)))
+ .build())
+ .build())
- // Puzzle Solver
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.puzzle"))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.puzzle.solveTicTacToe"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.puzzle.solveTicTacToe.@Tooltip")))
- .binding(defaults.dungeons.puzzleSolvers.solveTicTacToe,
- () -> config.dungeons.puzzleSolvers.solveTicTacToe,
- newValue -> config.dungeons.puzzleSolvers.solveTicTacToe = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.puzzle.solveThreeWeirdos"))
- .binding(defaults.dungeons.puzzleSolvers.solveThreeWeirdos,
- () -> config.dungeons.puzzleSolvers.solveThreeWeirdos,
- newValue -> config.dungeons.puzzleSolvers.solveThreeWeirdos = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.puzzle.creeperSolver"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.puzzle.creeperSolver.@Tooltip")))
- .binding(defaults.dungeons.puzzleSolvers.creeperSolver,
- () -> config.dungeons.puzzleSolvers.creeperSolver,
- newValue -> config.dungeons.puzzleSolvers.creeperSolver = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.puzzle.solveWaterboard"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.puzzle.solveWaterboard.@Tooltip")))
- .binding(defaults.dungeons.puzzleSolvers.solveWaterboard,
- () -> config.dungeons.puzzleSolvers.solveWaterboard,
- newValue -> config.dungeons.puzzleSolvers.solveWaterboard = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.puzzle.blazeSolver"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.puzzle.blazeSolver.@Tooltip")))
- .binding(defaults.dungeons.puzzleSolvers.blazeSolver,
- () -> config.dungeons.puzzleSolvers.blazeSolver,
- newValue -> config.dungeons.puzzleSolvers.blazeSolver = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.puzzle.solveBoulder"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.puzzle.solveBoulder.@Tooltip")))
- .binding(defaults.dungeons.puzzleSolvers.solveBoulder,
- () -> config.dungeons.puzzleSolvers.solveBoulder,
- newValue -> config.dungeons.puzzleSolvers.solveBoulder = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.puzzle.solveIceFill"))
- .binding(defaults.dungeons.puzzleSolvers.solveIceFill,
- () -> config.dungeons.puzzleSolvers.solveIceFill,
- newValue -> config.dungeons.puzzleSolvers.solveIceFill = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.puzzle.solveSilverfish"))
- .binding(defaults.dungeons.puzzleSolvers.solveSilverfish,
- () -> config.dungeons.puzzleSolvers.solveSilverfish,
- newValue -> config.dungeons.puzzleSolvers.solveSilverfish = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.puzzle.solveTrivia"))
- .binding(defaults.dungeons.puzzleSolvers.solveTrivia,
- () -> config.dungeons.puzzleSolvers.solveTrivia,
- newValue -> config.dungeons.puzzleSolvers.solveTrivia = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .build())
+ // Puzzle Solver
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.puzzle"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.puzzle.solveTicTacToe"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.puzzle.solveTicTacToe.@Tooltip")))
+ .binding(defaults.dungeons.puzzleSolvers.solveTicTacToe,
+ () -> config.dungeons.puzzleSolvers.solveTicTacToe,
+ newValue -> config.dungeons.puzzleSolvers.solveTicTacToe = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.puzzle.solveThreeWeirdos"))
+ .binding(defaults.dungeons.puzzleSolvers.solveThreeWeirdos,
+ () -> config.dungeons.puzzleSolvers.solveThreeWeirdos,
+ newValue -> config.dungeons.puzzleSolvers.solveThreeWeirdos = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.puzzle.creeperSolver"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.puzzle.creeperSolver.@Tooltip")))
+ .binding(defaults.dungeons.puzzleSolvers.creeperSolver,
+ () -> config.dungeons.puzzleSolvers.creeperSolver,
+ newValue -> config.dungeons.puzzleSolvers.creeperSolver = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.puzzle.solveWaterboard"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.puzzle.solveWaterboard.@Tooltip")))
+ .binding(defaults.dungeons.puzzleSolvers.solveWaterboard,
+ () -> config.dungeons.puzzleSolvers.solveWaterboard,
+ newValue -> config.dungeons.puzzleSolvers.solveWaterboard = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.puzzle.blazeSolver"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.puzzle.blazeSolver.@Tooltip")))
+ .binding(defaults.dungeons.puzzleSolvers.blazeSolver,
+ () -> config.dungeons.puzzleSolvers.blazeSolver,
+ newValue -> config.dungeons.puzzleSolvers.blazeSolver = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.puzzle.solveBoulder"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.puzzle.solveBoulder.@Tooltip")))
+ .binding(defaults.dungeons.puzzleSolvers.solveBoulder,
+ () -> config.dungeons.puzzleSolvers.solveBoulder,
+ newValue -> config.dungeons.puzzleSolvers.solveBoulder = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.puzzle.solveIceFill"))
+ .binding(defaults.dungeons.puzzleSolvers.solveIceFill,
+ () -> config.dungeons.puzzleSolvers.solveIceFill,
+ newValue -> config.dungeons.puzzleSolvers.solveIceFill = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.puzzle.solveSilverfish"))
+ .binding(defaults.dungeons.puzzleSolvers.solveSilverfish,
+ () -> config.dungeons.puzzleSolvers.solveSilverfish,
+ newValue -> config.dungeons.puzzleSolvers.solveSilverfish = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.puzzle.solveTrivia"))
+ .binding(defaults.dungeons.puzzleSolvers.solveTrivia,
+ () -> config.dungeons.puzzleSolvers.solveTrivia,
+ newValue -> config.dungeons.puzzleSolvers.solveTrivia = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
- // The Professor (F3/M3)
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.professor"))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.professor.fireFreezeStaffTimer"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.professor.fireFreezeStaffTimer.@Tooltip")))
- .binding(defaults.dungeons.theProfessor.fireFreezeStaffTimer,
- () -> config.dungeons.theProfessor.fireFreezeStaffTimer,
- newValue -> config.dungeons.theProfessor.fireFreezeStaffTimer = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.professor.floor3GuardianHealthDisplay"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.professor.floor3GuardianHealthDisplay.@Tooltip")))
- .binding(defaults.dungeons.theProfessor.floor3GuardianHealthDisplay,
- () -> config.dungeons.theProfessor.floor3GuardianHealthDisplay,
- newValue -> config.dungeons.theProfessor.floor3GuardianHealthDisplay = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .build())
+ // The Professor (F3/M3)
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.professor"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.professor.fireFreezeStaffTimer"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.professor.fireFreezeStaffTimer.@Tooltip")))
+ .binding(defaults.dungeons.theProfessor.fireFreezeStaffTimer,
+ () -> config.dungeons.theProfessor.fireFreezeStaffTimer,
+ newValue -> config.dungeons.theProfessor.fireFreezeStaffTimer = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.professor.floor3GuardianHealthDisplay"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.professor.floor3GuardianHealthDisplay.@Tooltip")))
+ .binding(defaults.dungeons.theProfessor.floor3GuardianHealthDisplay,
+ () -> config.dungeons.theProfessor.floor3GuardianHealthDisplay,
+ newValue -> config.dungeons.theProfessor.floor3GuardianHealthDisplay = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
- // Livid (F5/M5)
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.livid"))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.livid.enableLividColorGlow"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.livid.enableLividColorGlow.@Tooltip")))
- .binding(defaults.dungeons.livid.enableLividColorGlow,
- () -> config.dungeons.livid.enableLividColorGlow,
- newValue -> config.dungeons.livid.enableLividColorGlow = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.livid.enableLividColorText"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.livid.enableLividColorText.@Tooltip")))
- .binding(defaults.dungeons.livid.enableLividColorText,
- () -> config.dungeons.livid.enableLividColorText,
- newValue -> config.dungeons.livid.enableLividColorText = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.livid.enableLividColorTitle"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.livid.enableLividColorTitle.@Tooltip")))
- .binding(defaults.dungeons.livid.enableLividColorTitle,
- () -> config.dungeons.livid.enableLividColorTitle,
- newValue -> config.dungeons.livid.enableLividColorTitle = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.livid.lividColorText"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.livid.lividColorText.@Tooltip")))
- .binding(defaults.dungeons.livid.lividColorText,
- () -> config.dungeons.livid.lividColorText,
- newValue -> config.dungeons.livid.lividColorText = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .build())
+ // Livid (F5/M5)
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.livid"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.livid.enableLividColorGlow"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.livid.enableLividColorGlow.@Tooltip")))
+ .binding(defaults.dungeons.livid.enableLividColorGlow,
+ () -> config.dungeons.livid.enableLividColorGlow,
+ newValue -> config.dungeons.livid.enableLividColorGlow = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.livid.enableLividColorText"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.livid.enableLividColorText.@Tooltip")))
+ .binding(defaults.dungeons.livid.enableLividColorText,
+ () -> config.dungeons.livid.enableLividColorText,
+ newValue -> config.dungeons.livid.enableLividColorText = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.livid.enableLividColorTitle"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.livid.enableLividColorTitle.@Tooltip")))
+ .binding(defaults.dungeons.livid.enableLividColorTitle,
+ () -> config.dungeons.livid.enableLividColorTitle,
+ newValue -> config.dungeons.livid.enableLividColorTitle = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.livid.lividColorText"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.livid.lividColorText.@Tooltip")))
+ .binding(defaults.dungeons.livid.lividColorText,
+ () -> config.dungeons.livid.lividColorText,
+ newValue -> config.dungeons.livid.lividColorText = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .build())
- // Terminal (F7/M7)
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.terminals"))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.terminals.solveColor"))
- .binding(defaults.dungeons.terminals.solveColor,
- () -> config.dungeons.terminals.solveColor,
- newValue -> config.dungeons.terminals.solveColor = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.terminals.solveOrder"))
- .binding(defaults.dungeons.terminals.solveOrder,
- () -> config.dungeons.terminals.solveOrder,
- newValue -> config.dungeons.terminals.solveOrder = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.terminals.solveStartsWith"))
- .binding(defaults.dungeons.terminals.solveStartsWith,
- () -> config.dungeons.terminals.solveStartsWith,
- newValue -> config.dungeons.terminals.solveStartsWith = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.terminals.blockIncorrectClicks"))
- .binding(defaults.dungeons.terminals.blockIncorrectClicks,
- () -> config.dungeons.terminals.blockIncorrectClicks,
- newValue -> config.dungeons.terminals.blockIncorrectClicks = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .build())
+ // Terminal (F7/M7)
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.terminals"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.terminals.solveColor"))
+ .binding(defaults.dungeons.terminals.solveColor,
+ () -> config.dungeons.terminals.solveColor,
+ newValue -> config.dungeons.terminals.solveColor = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.terminals.solveOrder"))
+ .binding(defaults.dungeons.terminals.solveOrder,
+ () -> config.dungeons.terminals.solveOrder,
+ newValue -> config.dungeons.terminals.solveOrder = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.terminals.solveStartsWith"))
+ .binding(defaults.dungeons.terminals.solveStartsWith,
+ () -> config.dungeons.terminals.solveStartsWith,
+ newValue -> config.dungeons.terminals.solveStartsWith = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.terminals.blockIncorrectClicks"))
+ .binding(defaults.dungeons.terminals.blockIncorrectClicks,
+ () -> config.dungeons.terminals.blockIncorrectClicks,
+ newValue -> config.dungeons.terminals.blockIncorrectClicks = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
- // Devices (F7/M7)
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.devices"))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.devices.solveSimonSays"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.devices.solveSimonSays.@Tooltip")))
- .binding(defaults.dungeons.devices.solveSimonSays,
- () -> config.dungeons.devices.solveSimonSays,
- newValue -> config.dungeons.devices.solveSimonSays = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .build())
+ // Devices (F7/M7)
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.devices"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.devices.solveSimonSays"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.devices.solveSimonSays.@Tooltip")))
+ .binding(defaults.dungeons.devices.solveSimonSays,
+ () -> config.dungeons.devices.solveSimonSays,
+ newValue -> config.dungeons.devices.solveSimonSays = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
- // Dungeon Secret Waypoints
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints"))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableRoomMatching"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableRoomMatching.@Tooltip")))
- .binding(defaults.dungeons.secretWaypoints.enableRoomMatching,
- () -> config.dungeons.secretWaypoints.enableRoomMatching,
- newValue -> config.dungeons.secretWaypoints.enableRoomMatching = newValue)
- .controller(ConfigUtils::createBooleanController)
- .flag(OptionFlag.GAME_RESTART)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableSecretWaypoints"))
- .binding(defaults.dungeons.secretWaypoints.enableSecretWaypoints,
- () -> config.dungeons.secretWaypoints.enableSecretWaypoints,
- newValue -> config.dungeons.secretWaypoints.enableSecretWaypoints = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Type>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.waypointType"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.secretWaypoints.waypointType.@Tooltip"),
- Text.translatable("skyblocker.config.dungeons.secretWaypoints.waypointType.generalNote")))
- .binding(defaults.dungeons.secretWaypoints.waypointType,
- () -> config.dungeons.secretWaypoints.waypointType,
- newValue -> config.dungeons.secretWaypoints.waypointType = newValue)
- .controller(ConfigUtils::createEnumCyclingListController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.showSecretText"))
- .binding(defaults.dungeons.secretWaypoints.showSecretText,
- () -> config.dungeons.secretWaypoints.showSecretText,
- newValue -> config.dungeons.secretWaypoints.showSecretText = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableEntranceWaypoints"))
- .binding(defaults.dungeons.secretWaypoints.enableEntranceWaypoints,
- () -> config.dungeons.secretWaypoints.enableEntranceWaypoints,
- newValue -> config.dungeons.secretWaypoints.enableEntranceWaypoints = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableSuperboomWaypoints"))
- .binding(defaults.dungeons.secretWaypoints.enableSuperboomWaypoints,
- () -> config.dungeons.secretWaypoints.enableSuperboomWaypoints,
- newValue -> config.dungeons.secretWaypoints.enableSuperboomWaypoints = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableChestWaypoints"))
- .binding(defaults.dungeons.secretWaypoints.enableChestWaypoints,
- () -> config.dungeons.secretWaypoints.enableChestWaypoints,
- newValue -> config.dungeons.secretWaypoints.enableChestWaypoints = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableItemWaypoints"))
- .binding(defaults.dungeons.secretWaypoints.enableItemWaypoints,
- () -> config.dungeons.secretWaypoints.enableItemWaypoints,
- newValue -> config.dungeons.secretWaypoints.enableItemWaypoints = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableBatWaypoints"))
- .binding(defaults.dungeons.secretWaypoints.enableBatWaypoints,
- () -> config.dungeons.secretWaypoints.enableBatWaypoints,
- newValue -> config.dungeons.secretWaypoints.enableBatWaypoints = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableWitherWaypoints"))
- .binding(defaults.dungeons.secretWaypoints.enableWitherWaypoints,
- () -> config.dungeons.secretWaypoints.enableWitherWaypoints,
- newValue -> config.dungeons.secretWaypoints.enableWitherWaypoints = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableLeverWaypoints"))
- .binding(defaults.dungeons.secretWaypoints.enableLeverWaypoints,
- () -> config.dungeons.secretWaypoints.enableLeverWaypoints,
- newValue -> config.dungeons.secretWaypoints.enableLeverWaypoints = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableFairySoulWaypoints"))
- .binding(defaults.dungeons.secretWaypoints.enableFairySoulWaypoints,
- () -> config.dungeons.secretWaypoints.enableFairySoulWaypoints,
- newValue -> config.dungeons.secretWaypoints.enableFairySoulWaypoints = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableStonkWaypoints"))
- .binding(defaults.dungeons.secretWaypoints.enableStonkWaypoints,
- () -> config.dungeons.secretWaypoints.enableStonkWaypoints,
- newValue -> config.dungeons.secretWaypoints.enableStonkWaypoints = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableAotvWaypoints"))
- .binding(defaults.dungeons.secretWaypoints.enableAotvWaypoints,
- () -> config.dungeons.secretWaypoints.enableAotvWaypoints,
- newValue -> config.dungeons.secretWaypoints.enableAotvWaypoints = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enablePearlWaypoints"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enablePearlWaypoints.@Tooltip")))
- .binding(defaults.dungeons.secretWaypoints.enablePearlWaypoints,
- () -> config.dungeons.secretWaypoints.enablePearlWaypoints,
- newValue -> config.dungeons.secretWaypoints.enablePearlWaypoints = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableDefaultWaypoints"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableDefaultWaypoints.@Tooltip")))
- .binding(defaults.dungeons.secretWaypoints.enableDefaultWaypoints,
- () -> config.dungeons.secretWaypoints.enableDefaultWaypoints,
- newValue -> config.dungeons.secretWaypoints.enableDefaultWaypoints = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .build())
+ // Dungeon Secret Waypoints
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableRoomMatching"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableRoomMatching.@Tooltip")))
+ .binding(defaults.dungeons.secretWaypoints.enableRoomMatching,
+ () -> config.dungeons.secretWaypoints.enableRoomMatching,
+ newValue -> config.dungeons.secretWaypoints.enableRoomMatching = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .flag(OptionFlag.GAME_RESTART)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableSecretWaypoints"))
+ .binding(defaults.dungeons.secretWaypoints.enableSecretWaypoints,
+ () -> config.dungeons.secretWaypoints.enableSecretWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enableSecretWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Type>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.waypointType"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.secretWaypoints.waypointType.@Tooltip"),
+ Text.translatable("skyblocker.config.dungeons.secretWaypoints.waypointType.generalNote")))
+ .binding(defaults.dungeons.secretWaypoints.waypointType,
+ () -> config.dungeons.secretWaypoints.waypointType,
+ newValue -> config.dungeons.secretWaypoints.waypointType = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.showSecretText"))
+ .binding(defaults.dungeons.secretWaypoints.showSecretText,
+ () -> config.dungeons.secretWaypoints.showSecretText,
+ newValue -> config.dungeons.secretWaypoints.showSecretText = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableEntranceWaypoints"))
+ .binding(defaults.dungeons.secretWaypoints.enableEntranceWaypoints,
+ () -> config.dungeons.secretWaypoints.enableEntranceWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enableEntranceWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableSuperboomWaypoints"))
+ .binding(defaults.dungeons.secretWaypoints.enableSuperboomWaypoints,
+ () -> config.dungeons.secretWaypoints.enableSuperboomWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enableSuperboomWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableChestWaypoints"))
+ .binding(defaults.dungeons.secretWaypoints.enableChestWaypoints,
+ () -> config.dungeons.secretWaypoints.enableChestWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enableChestWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableItemWaypoints"))
+ .binding(defaults.dungeons.secretWaypoints.enableItemWaypoints,
+ () -> config.dungeons.secretWaypoints.enableItemWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enableItemWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableBatWaypoints"))
+ .binding(defaults.dungeons.secretWaypoints.enableBatWaypoints,
+ () -> config.dungeons.secretWaypoints.enableBatWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enableBatWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableWitherWaypoints"))
+ .binding(defaults.dungeons.secretWaypoints.enableWitherWaypoints,
+ () -> config.dungeons.secretWaypoints.enableWitherWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enableWitherWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableLeverWaypoints"))
+ .binding(defaults.dungeons.secretWaypoints.enableLeverWaypoints,
+ () -> config.dungeons.secretWaypoints.enableLeverWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enableLeverWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableFairySoulWaypoints"))
+ .binding(defaults.dungeons.secretWaypoints.enableFairySoulWaypoints,
+ () -> config.dungeons.secretWaypoints.enableFairySoulWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enableFairySoulWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableStonkWaypoints"))
+ .binding(defaults.dungeons.secretWaypoints.enableStonkWaypoints,
+ () -> config.dungeons.secretWaypoints.enableStonkWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enableStonkWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableAotvWaypoints"))
+ .binding(defaults.dungeons.secretWaypoints.enableAotvWaypoints,
+ () -> config.dungeons.secretWaypoints.enableAotvWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enableAotvWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enablePearlWaypoints"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enablePearlWaypoints.@Tooltip")))
+ .binding(defaults.dungeons.secretWaypoints.enablePearlWaypoints,
+ () -> config.dungeons.secretWaypoints.enablePearlWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enablePearlWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableDefaultWaypoints"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.secretWaypoints.enableDefaultWaypoints.@Tooltip")))
+ .binding(defaults.dungeons.secretWaypoints.enableDefaultWaypoints,
+ () -> config.dungeons.secretWaypoints.enableDefaultWaypoints,
+ newValue -> config.dungeons.secretWaypoints.enableDefaultWaypoints = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .build())
- // Mimic Message
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.mimicMessage"))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.mimicMessage.sendMimicMessage"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.mimicMessage.sendMimicMessage.@Tooltip")))
- .binding(defaults.dungeons.mimicMessage.sendMimicMessage,
- () -> config.dungeons.mimicMessage.sendMimicMessage,
- newValue -> config.dungeons.mimicMessage.sendMimicMessage = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.mimicMessage.mimicMessage"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.mimicMessage.mimicMessage.@Tooltip")))
- .binding(defaults.dungeons.mimicMessage.mimicMessage,
- () -> config.dungeons.mimicMessage.mimicMessage,
- newValue -> config.dungeons.mimicMessage.mimicMessage = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .build())
+ // Mimic Message
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.mimicMessage"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.mimicMessage.sendMimicMessage"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.mimicMessage.sendMimicMessage.@Tooltip")))
+ .binding(defaults.dungeons.mimicMessage.sendMimicMessage,
+ () -> config.dungeons.mimicMessage.sendMimicMessage,
+ newValue -> config.dungeons.mimicMessage.sendMimicMessage = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.mimicMessage.mimicMessage"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.mimicMessage.mimicMessage.@Tooltip")))
+ .binding(defaults.dungeons.mimicMessage.mimicMessage,
+ () -> config.dungeons.mimicMessage.mimicMessage,
+ newValue -> config.dungeons.mimicMessage.mimicMessage = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .build())
- // Door Highlight
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.doorHighlight"))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.doorHighlight.enableDoorHighlight"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.doorHighlight.enableDoorHighlight.@Tooltip")))
- .binding(defaults.dungeons.doorHighlight.enableDoorHighlight,
- () -> config.dungeons.doorHighlight.enableDoorHighlight,
- newValue -> config.dungeons.doorHighlight.enableDoorHighlight = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<DungeonsConfig.DoorHighlight.Type>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.doorHighlight.doorHighlightType"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.doorHighlight.doorHighlightType.@Tooltip"),
- Text.translatable("skyblocker.config.dungeons.doorHighlight.doorHighlightType.secretWaypointsNote")))
- .binding(defaults.dungeons.doorHighlight.doorHighlightType,
- () -> config.dungeons.doorHighlight.doorHighlightType,
- newValue -> config.dungeons.doorHighlight.doorHighlightType = newValue)
- .controller(ConfigUtils::createEnumCyclingListController)
- .build())
- .build())
+ // Door Highlight
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.doorHighlight"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.doorHighlight.enableDoorHighlight"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.doorHighlight.enableDoorHighlight.@Tooltip")))
+ .binding(defaults.dungeons.doorHighlight.enableDoorHighlight,
+ () -> config.dungeons.doorHighlight.enableDoorHighlight,
+ newValue -> config.dungeons.doorHighlight.enableDoorHighlight = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<DungeonsConfig.DoorHighlight.Type>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.doorHighlight.doorHighlightType"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.doorHighlight.doorHighlightType.@Tooltip"),
+ Text.translatable("skyblocker.config.dungeons.doorHighlight.doorHighlightType.secretWaypointsNote")))
+ .binding(defaults.dungeons.doorHighlight.doorHighlightType,
+ () -> config.dungeons.doorHighlight.doorHighlightType,
+ newValue -> config.dungeons.doorHighlight.doorHighlightType = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build())
+ .build())
- // Dungeon Score
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.dungeonScore"))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreMessage", 270))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreMessage.@Tooltip", 270)))
- .binding(defaults.dungeons.dungeonScore.enableDungeonScore270Message,
- () -> config.dungeons.dungeonScore.enableDungeonScore270Message,
- newValue -> config.dungeons.dungeonScore.enableDungeonScore270Message = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreTitle", 270))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreTitle.@Tooltip", 270)))
- .binding(defaults.dungeons.dungeonScore.enableDungeonScore270Title,
- () -> config.dungeons.dungeonScore.enableDungeonScore270Title,
- newValue -> config.dungeons.dungeonScore.enableDungeonScore270Title = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreSound", 270))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreSound.@Tooltip", 270)))
- .binding(defaults.dungeons.dungeonScore.enableDungeonScore270Sound,
- () -> config.dungeons.dungeonScore.enableDungeonScore270Sound,
- newValue -> config.dungeons.dungeonScore.enableDungeonScore270Sound = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.dungeonScoreMessage", 270))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.dungeonScoreMessage.@Tooltip", 270, 270)))
- .binding(defaults.dungeons.dungeonScore.dungeonScore270Message,
- () -> config.dungeons.dungeonScore.dungeonScore270Message,
- newValue -> config.dungeons.dungeonScore.dungeonScore270Message = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreMessage", 300))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreMessage.@Tooltip", 300)))
- .binding(defaults.dungeons.dungeonScore.enableDungeonScore300Message,
- () -> config.dungeons.dungeonScore.enableDungeonScore300Message,
- newValue -> config.dungeons.dungeonScore.enableDungeonScore300Message = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreTitle", 300))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreTitle.@Tooltip", 300)))
- .binding(defaults.dungeons.dungeonScore.enableDungeonScore300Title,
- () -> config.dungeons.dungeonScore.enableDungeonScore300Title,
- newValue -> config.dungeons.dungeonScore.enableDungeonScore300Title = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreSound", 300))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreSound.@Tooltip", 300)))
- .binding(defaults.dungeons.dungeonScore.enableDungeonScore300Sound,
- () -> config.dungeons.dungeonScore.enableDungeonScore300Sound,
- newValue -> config.dungeons.dungeonScore.enableDungeonScore300Sound = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.dungeonScoreMessage", 300))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.dungeonScoreMessage.@Tooltip", 300, 300)))
- .binding(defaults.dungeons.dungeonScore.dungeonScore300Message,
- () -> config.dungeons.dungeonScore.dungeonScore300Message,
- newValue -> config.dungeons.dungeonScore.dungeonScore300Message = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonCryptsMessage"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonCryptsMessage.@Tooltip")))
- .binding(defaults.dungeons.dungeonScore.enableDungeonCryptsMessage,
- () -> config.dungeons.dungeonScore.enableDungeonCryptsMessage,
- newValue -> config.dungeons.dungeonScore.enableDungeonCryptsMessage = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Integer>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.dungeonCryptsMessageThreshold"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.dungeonCryptsMessageThreshold.@Tooltip")))
- .binding(defaults.dungeons.dungeonScore.dungeonCryptsMessageThreshold,
- () -> config.dungeons.dungeonScore.dungeonCryptsMessageThreshold,
- newValue -> config.dungeons.dungeonScore.dungeonCryptsMessageThreshold = newValue)
- .controller(IntegerFieldControllerBuilder::create)
- .build())
- .option(Option.<String>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.dungeonCryptsMessage"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.dungeonCryptsMessage.@Tooltip")))
- .binding(defaults.dungeons.dungeonScore.dungeonCryptsMessage,
- () -> config.dungeons.dungeonScore.dungeonCryptsMessage,
- newValue -> config.dungeons.dungeonScore.dungeonCryptsMessage = newValue)
- .controller(StringControllerBuilder::create)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableScoreHUD"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableScoreHUD.@Tooltip"),
- Text.translatable("skyblocker.config.dungeons.dungeonScore.enableScoreHUD.deathMessagesNote")))
- .binding(defaults.dungeons.dungeonScore.enableScoreHUD,
- () -> config.dungeons.dungeonScore.enableScoreHUD,
- newValue -> config.dungeons.dungeonScore.enableScoreHUD = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Float>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.scoreScaling"))
- .binding(defaults.dungeons.dungeonScore.scoreScaling,
- () -> config.dungeons.dungeonScore.scoreScaling,
- newValue -> {
- config.dungeons.dungeonScore.scoreX = config.dungeons.dungeonScore.scoreX + (int) ((config.dungeons.dungeonScore.scoreScaling - newValue) * 38.0);
- config.dungeons.dungeonScore.scoreY = config.dungeons.dungeonScore.scoreY + (int) ((config.dungeons.dungeonScore.scoreScaling - newValue) * MinecraftClient.getInstance().textRenderer.fontHeight / 2.0);
- config.dungeons.dungeonScore.scoreScaling = newValue;
- })
- .controller(FloatFieldControllerBuilder::create)
- .build())
- .build())
+ // Dungeon Score
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreMessage", 270))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreMessage.@Tooltip", 270)))
+ .binding(defaults.dungeons.dungeonScore.enableDungeonScore270Message,
+ () -> config.dungeons.dungeonScore.enableDungeonScore270Message,
+ newValue -> config.dungeons.dungeonScore.enableDungeonScore270Message = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreTitle", 270))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreTitle.@Tooltip", 270)))
+ .binding(defaults.dungeons.dungeonScore.enableDungeonScore270Title,
+ () -> config.dungeons.dungeonScore.enableDungeonScore270Title,
+ newValue -> config.dungeons.dungeonScore.enableDungeonScore270Title = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreSound", 270))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreSound.@Tooltip", 270)))
+ .binding(defaults.dungeons.dungeonScore.enableDungeonScore270Sound,
+ () -> config.dungeons.dungeonScore.enableDungeonScore270Sound,
+ newValue -> config.dungeons.dungeonScore.enableDungeonScore270Sound = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.dungeonScoreMessage", 270))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.dungeonScoreMessage.@Tooltip", 270, 270)))
+ .binding(defaults.dungeons.dungeonScore.dungeonScore270Message,
+ () -> config.dungeons.dungeonScore.dungeonScore270Message,
+ newValue -> config.dungeons.dungeonScore.dungeonScore270Message = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreMessage", 300))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreMessage.@Tooltip", 300)))
+ .binding(defaults.dungeons.dungeonScore.enableDungeonScore300Message,
+ () -> config.dungeons.dungeonScore.enableDungeonScore300Message,
+ newValue -> config.dungeons.dungeonScore.enableDungeonScore300Message = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreTitle", 300))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreTitle.@Tooltip", 300)))
+ .binding(defaults.dungeons.dungeonScore.enableDungeonScore300Title,
+ () -> config.dungeons.dungeonScore.enableDungeonScore300Title,
+ newValue -> config.dungeons.dungeonScore.enableDungeonScore300Title = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreSound", 300))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonScoreSound.@Tooltip", 300)))
+ .binding(defaults.dungeons.dungeonScore.enableDungeonScore300Sound,
+ () -> config.dungeons.dungeonScore.enableDungeonScore300Sound,
+ newValue -> config.dungeons.dungeonScore.enableDungeonScore300Sound = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.dungeonScoreMessage", 300))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.dungeonScoreMessage.@Tooltip", 300, 300)))
+ .binding(defaults.dungeons.dungeonScore.dungeonScore300Message,
+ () -> config.dungeons.dungeonScore.dungeonScore300Message,
+ newValue -> config.dungeons.dungeonScore.dungeonScore300Message = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonCryptsMessage"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableDungeonCryptsMessage.@Tooltip")))
+ .binding(defaults.dungeons.dungeonScore.enableDungeonCryptsMessage,
+ () -> config.dungeons.dungeonScore.enableDungeonCryptsMessage,
+ newValue -> config.dungeons.dungeonScore.enableDungeonCryptsMessage = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.dungeonCryptsMessageThreshold"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.dungeonCryptsMessageThreshold.@Tooltip")))
+ .binding(defaults.dungeons.dungeonScore.dungeonCryptsMessageThreshold,
+ () -> config.dungeons.dungeonScore.dungeonCryptsMessageThreshold,
+ newValue -> config.dungeons.dungeonScore.dungeonCryptsMessageThreshold = newValue)
+ .controller(IntegerFieldControllerBuilder::create)
+ .build())
+ .option(Option.<String>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.dungeonCryptsMessage"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.dungeonCryptsMessage.@Tooltip")))
+ .binding(defaults.dungeons.dungeonScore.dungeonCryptsMessage,
+ () -> config.dungeons.dungeonScore.dungeonCryptsMessage,
+ newValue -> config.dungeons.dungeonScore.dungeonCryptsMessage = newValue)
+ .controller(StringControllerBuilder::create)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableScoreHUD"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonScore.enableScoreHUD.@Tooltip"),
+ Text.translatable("skyblocker.config.dungeons.dungeonScore.enableScoreHUD.deathMessagesNote")))
+ .binding(defaults.dungeons.dungeonScore.enableScoreHUD,
+ () -> config.dungeons.dungeonScore.enableScoreHUD,
+ newValue -> config.dungeons.dungeonScore.enableScoreHUD = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Float>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonScore.scoreScaling"))
+ .binding(defaults.dungeons.dungeonScore.scoreScaling,
+ () -> config.dungeons.dungeonScore.scoreScaling,
+ newValue -> {
+ config.dungeons.dungeonScore.scoreX = config.dungeons.dungeonScore.scoreX + (int) ((config.dungeons.dungeonScore.scoreScaling - newValue) * 38.0);
+ config.dungeons.dungeonScore.scoreY = config.dungeons.dungeonScore.scoreY + (int) ((config.dungeons.dungeonScore.scoreScaling - newValue) * MinecraftClient.getInstance().textRenderer.fontHeight / 2.0);
+ config.dungeons.dungeonScore.scoreScaling = newValue;
+ })
+ .controller(FloatFieldControllerBuilder::create)
+ .build())
+ .build())
- // Dungeon Chest Profit Calculator
- .group(OptionGroup.createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit"))
- .collapsed(true)
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.enableProfitCalculator"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.enableProfitCalculator.@Tooltip")))
- .binding(defaults.dungeons.dungeonChestProfit.enableProfitCalculator,
- () -> config.dungeons.dungeonChestProfit.enableProfitCalculator,
- newValue -> config.dungeons.dungeonChestProfit.enableProfitCalculator = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.croesusProfit"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.croesusProfit.@Tooltip")))
- .binding(defaults.dungeons.dungeonChestProfit.croesusProfit,
- () -> config.dungeons.dungeonChestProfit.croesusProfit,
- newValue -> config.dungeons.dungeonChestProfit.croesusProfit = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.includeKismet"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.includeKismet.@Tooltip")))
- .binding(defaults.dungeons.dungeonChestProfit.includeKismet,
- () -> config.dungeons.dungeonChestProfit.includeKismet,
- newValue -> config.dungeons.dungeonChestProfit.includeKismet = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- .option(Option.<Boolean>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.includeEssence"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.includeEssence.@Tooltip")))
- .binding(defaults.dungeons.dungeonChestProfit.includeEssence,
- () -> config.dungeons.dungeonChestProfit.includeEssence,
- newValue -> config.dungeons.dungeonChestProfit.includeEssence = newValue)
- .controller(ConfigUtils::createBooleanController)
- .build())
- //FIXME maybe use color controller
- .option(Option.<Integer>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.neutralThreshold"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.neutralThreshold.@Tooltip")))
- .binding(defaults.dungeons.dungeonChestProfit.neutralThreshold,
- () -> config.dungeons.dungeonChestProfit.neutralThreshold,
- newValue -> config.dungeons.dungeonChestProfit.neutralThreshold = newValue)
- .controller(IntegerFieldControllerBuilder::create)
- .build())
- .option(Option.<Formatting>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.neutralColor"))
- .binding(defaults.dungeons.dungeonChestProfit.neutralColor,
- () -> config.dungeons.dungeonChestProfit.neutralColor,
- newValue -> config.dungeons.dungeonChestProfit.neutralColor = newValue)
- .controller(ConfigUtils.getEnumDropdownControllerFactory(ConfigUtils.FORMATTING_FORMATTER))
- .build())
- .option(Option.<Formatting>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.profitColor"))
- .binding(defaults.dungeons.dungeonChestProfit.profitColor,
- () -> config.dungeons.dungeonChestProfit.profitColor,
- newValue -> config.dungeons.dungeonChestProfit.profitColor = newValue)
- .controller(ConfigUtils.getEnumDropdownControllerFactory(ConfigUtils.FORMATTING_FORMATTER))
- .build())
- .option(Option.<Formatting>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.lossColor"))
- .binding(defaults.dungeons.dungeonChestProfit.lossColor,
- () -> config.dungeons.dungeonChestProfit.lossColor,
- newValue -> config.dungeons.dungeonChestProfit.lossColor = newValue)
- .controller(ConfigUtils.getEnumDropdownControllerFactory(ConfigUtils.FORMATTING_FORMATTER))
- .build())
- .option(Option.<Formatting>createBuilder()
- .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.incompleteColor"))
- .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.incompleteColor.@Tooltip")))
- .binding(defaults.dungeons.dungeonChestProfit.incompleteColor,
- () -> config.dungeons.dungeonChestProfit.incompleteColor,
- newValue -> config.dungeons.dungeonChestProfit.incompleteColor = newValue)
- .controller(ConfigUtils.getEnumDropdownControllerFactory(ConfigUtils.FORMATTING_FORMATTER))
- .build())
- .build())
+ // Dungeon Chest Profit Calculator
+ .group(OptionGroup.createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit"))
+ .collapsed(true)
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.enableProfitCalculator"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.enableProfitCalculator.@Tooltip")))
+ .binding(defaults.dungeons.dungeonChestProfit.enableProfitCalculator,
+ () -> config.dungeons.dungeonChestProfit.enableProfitCalculator,
+ newValue -> config.dungeons.dungeonChestProfit.enableProfitCalculator = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.croesusProfit"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.croesusProfit.@Tooltip")))
+ .binding(defaults.dungeons.dungeonChestProfit.croesusProfit,
+ () -> config.dungeons.dungeonChestProfit.croesusProfit,
+ newValue -> config.dungeons.dungeonChestProfit.croesusProfit = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.includeKismet"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.includeKismet.@Tooltip")))
+ .binding(defaults.dungeons.dungeonChestProfit.includeKismet,
+ () -> config.dungeons.dungeonChestProfit.includeKismet,
+ newValue -> config.dungeons.dungeonChestProfit.includeKismet = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.includeEssence"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.includeEssence.@Tooltip")))
+ .binding(defaults.dungeons.dungeonChestProfit.includeEssence,
+ () -> config.dungeons.dungeonChestProfit.includeEssence,
+ newValue -> config.dungeons.dungeonChestProfit.includeEssence = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ //FIXME maybe use color controller
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.neutralThreshold"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.neutralThreshold.@Tooltip")))
+ .binding(defaults.dungeons.dungeonChestProfit.neutralThreshold,
+ () -> config.dungeons.dungeonChestProfit.neutralThreshold,
+ newValue -> config.dungeons.dungeonChestProfit.neutralThreshold = newValue)
+ .controller(IntegerFieldControllerBuilder::create)
+ .build())
+ .option(Option.<Formatting>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.neutralColor"))
+ .binding(defaults.dungeons.dungeonChestProfit.neutralColor,
+ () -> config.dungeons.dungeonChestProfit.neutralColor,
+ newValue -> config.dungeons.dungeonChestProfit.neutralColor = newValue)
+ .controller(ConfigUtils.getEnumDropdownControllerFactory(ConfigUtils.FORMATTING_FORMATTER))
+ .build())
+ .option(Option.<Formatting>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.profitColor"))
+ .binding(defaults.dungeons.dungeonChestProfit.profitColor,
+ () -> config.dungeons.dungeonChestProfit.profitColor,
+ newValue -> config.dungeons.dungeonChestProfit.profitColor = newValue)
+ .controller(ConfigUtils.getEnumDropdownControllerFactory(ConfigUtils.FORMATTING_FORMATTER))
+ .build())
+ .option(Option.<Formatting>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.lossColor"))
+ .binding(defaults.dungeons.dungeonChestProfit.lossColor,
+ () -> config.dungeons.dungeonChestProfit.lossColor,
+ newValue -> config.dungeons.dungeonChestProfit.lossColor = newValue)
+ .controller(ConfigUtils.getEnumDropdownControllerFactory(ConfigUtils.FORMATTING_FORMATTER))
+ .build())
+ .option(Option.<Formatting>createBuilder()
+ .name(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.incompleteColor"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.dungeons.dungeonChestProfit.incompleteColor.@Tooltip")))
+ .binding(defaults.dungeons.dungeonChestProfit.incompleteColor,
+ () -> config.dungeons.dungeonChestProfit.incompleteColor,
+ newValue -> config.dungeons.dungeonChestProfit.incompleteColor = newValue)
+ .controller(ConfigUtils.getEnumDropdownControllerFactory(ConfigUtils.FORMATTING_FORMATTER))
+ .build())
+ .build())
- .build();
- }
+ .build();
+ }
}
diff --git a/src/main/java/de/hysky/skyblocker/mixins/ClientWorldMixin.java b/src/main/java/de/hysky/skyblocker/mixins/ClientWorldMixin.java
index 83a23b46..dd152089 100644
--- a/src/main/java/de/hysky/skyblocker/mixins/ClientWorldMixin.java
+++ b/src/main/java/de/hysky/skyblocker/mixins/ClientWorldMixin.java
@@ -18,13 +18,13 @@ public class ClientWorldMixin {
/**
* @implNote The {@code pos} can be mutable when this is called by chunk delta updates, so if you want to copy it into memory
- * (e.g. store it in a field/list/map) make sure to duplicate it via {@link BlockPos#BlockPos(net.minecraft.util.math.Vec3i)}.
+ * (e.g. store it in a field/list/map) make sure to duplicate it via {@link BlockPos#toImmutable()}.
*/
@Inject(method = "handleBlockUpdate", at = @At("RETURN"))
private void skyblocker$handleBlockUpdate(CallbackInfo ci, @Local(argsOnly = true) BlockPos pos, @Local(argsOnly = true) BlockState state) {
if (Utils.isInCrimson()) {
DojoManager.onBlockUpdate(pos.toImmutable(), state);
- SimonSays.onBlockUpdate(pos, state);
+ SimonSays.onBlockUpdate(pos.toImmutable(), state);
}
}
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/device/SimonSays.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/device/SimonSays.java
index 0c78c2d3..da07e13d 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/device/SimonSays.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/device/SimonSays.java
@@ -9,8 +9,8 @@ import de.hysky.skyblocker.utils.Boxes;
import de.hysky.skyblocker.utils.ColorUtils;
import de.hysky.skyblocker.utils.Utils;
import de.hysky.skyblocker.utils.render.RenderHelper;
-import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
-import it.unimi.dsi.fastutil.ints.Int2ObjectRBTreeMap;
+import it.unimi.dsi.fastutil.objects.ObjectArrayList;
+import it.unimi.dsi.fastutil.objects.ObjectList;
import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet;
import it.unimi.dsi.fastutil.objects.ObjectSet;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
@@ -39,7 +39,7 @@ public class SimonSays {
private static final float[] GREEN = ColorUtils.getFloatComponents(DyeColor.LIME);
private static final float[] YELLOW = ColorUtils.getFloatComponents(DyeColor.YELLOW);
private static final ObjectSet<BlockPos> CLICKED_BUTTONS = new ObjectOpenHashSet<>();
- private static final Int2ObjectRBTreeMap<BlockPos> SIMON_PATTERN = new Int2ObjectRBTreeMap<>();
+ private static final ObjectList<BlockPos> SIMON_PATTERN = new ObjectArrayList<>();
public static void init() {
UseBlockCallback.EVENT.register(SimonSays::onBlockInteract);
@@ -76,9 +76,7 @@ public class SimonSays {
Block block = state.getBlock();
if (BOARD_AREA.contains(posVec) && block.equals(Blocks.SEA_LANTERN)) {
- int nextIndex = SIMON_PATTERN.size() + 1;
-
- SIMON_PATTERN.put(nextIndex, new BlockPos(pos)); //Copy it because it can be mutable in chunk delta updates
+ SIMON_PATTERN.add(pos);
} else if (BUTTONS_AREA.contains(posVec) && block.equals(Blocks.AIR)) {
//Upon reaching the showing of the next sequence we need to reset the state so that we don't show old data
//Otherwise, the nextIndex will go beyond 5 and that can cause bugs, it also helps with the other case noted above
@@ -91,10 +89,9 @@ public class SimonSays {
if (shouldProcess()) {
int buttonsRendered = 0;
- //Tree maps iterate in natural order of key - so it goes from the lowest to the highest int :)
- for (Int2ObjectMap.Entry<BlockPos> entry : SIMON_PATTERN.int2ObjectEntrySet()) {
+ for (BlockPos pos : SIMON_PATTERN) {
//Offset to west (x - 1) to get the position of the button from the sea lantern block
- BlockPos buttonPos = entry.getValue().west();
+ BlockPos buttonPos = pos.west();
ClientWorld world = Objects.requireNonNull(MinecraftClient.getInstance().world); //Should never be null here
BlockState state = world.getBlockState(buttonPos);