diff --git a/src/main/java/de/hysky/skyblocker/compatibility/emi/SkyblockerEMIPlugin.java b/src/main/java/de/hysky/skyblocker/compatibility/emi/SkyblockerEMIPlugin.java index be30832d0ed..e0a5fd814b8 100644 --- a/src/main/java/de/hysky/skyblocker/compatibility/emi/SkyblockerEMIPlugin.java +++ b/src/main/java/de/hysky/skyblocker/compatibility/emi/SkyblockerEMIPlugin.java @@ -47,7 +47,7 @@ public void register(EmiRegistry registry) { registry.addWorkstation(SKYBLOCK_CRAFTING, EmiStack.of(Items.LAVA_BUCKET)); ItemRepository.getRecipesStream().map(SkyblockEmiRecipe::new).forEach(registry::addRecipe); registry.addExclusionArea(InventoryScreen.class, (screen, consumer) -> { - if (!SkyblockerConfigManager.get().farming.garden.gardenPlotsWidget || !Utils.getLocation().equals(Location.GARDEN)) return; + if (!SkyblockerConfigManager.get().farming.plotsWidget.enabled || !Utils.getLocation().equals(Location.GARDEN)) return; AbstractContainerScreenAccessor accessor = (AbstractContainerScreenAccessor) screen; consumer.accept(new Bounds(accessor.getX() + accessor.getImageWidth() + 4, accessor.getY(), 104, 127)); }); diff --git a/src/main/java/de/hysky/skyblocker/compatibility/jei/SkyblockerJEIPlugin.java b/src/main/java/de/hysky/skyblocker/compatibility/jei/SkyblockerJEIPlugin.java index 24a9f7d6dd9..af58588e0fa 100644 --- a/src/main/java/de/hysky/skyblocker/compatibility/jei/SkyblockerJEIPlugin.java +++ b/src/main/java/de/hysky/skyblocker/compatibility/jei/SkyblockerJEIPlugin.java @@ -93,7 +93,7 @@ public List getGuiExtraAreas(ContainerScreen containerScreen) { private static class InventoryContainerHandler implements IGuiContainerHandler { @Override public List getGuiExtraAreas(InventoryScreen containerScreen) { - if (!Utils.isOnSkyblock() || !SkyblockerConfigManager.get().farming.garden.gardenPlotsWidget || !Utils.isInGarden()) return List.of(); + if (!Utils.isOnSkyblock() || !SkyblockerConfigManager.get().farming.plotsWidget.enabled || !Utils.isInGarden()) return List.of(); AbstractContainerScreenAccessor accessor = (AbstractContainerScreenAccessor) containerScreen; return List.of(new Rect2i(accessor.getX() + accessor.getImageWidth() + 4, accessor.getY(), 104, 127)); } diff --git a/src/main/java/de/hysky/skyblocker/compatibility/rei/SkyblockerREIClientPlugin.java b/src/main/java/de/hysky/skyblocker/compatibility/rei/SkyblockerREIClientPlugin.java index 3691913bd52..b7376096be0 100644 --- a/src/main/java/de/hysky/skyblocker/compatibility/rei/SkyblockerREIClientPlugin.java +++ b/src/main/java/de/hysky/skyblocker/compatibility/rei/SkyblockerREIClientPlugin.java @@ -130,7 +130,7 @@ public void registerExclusionZones(ExclusionZones zones) { }); zones.register(InventoryScreen.class, screen -> { - if (!SkyblockerConfigManager.get().farming.garden.gardenPlotsWidget || !Utils.isInGarden()) return List.of(); + if (!SkyblockerConfigManager.get().farming.plotsWidget.enabled || !Utils.isInGarden()) return List.of(); AbstractContainerScreenAccessor accessor = (AbstractContainerScreenAccessor) screen; return List.of(new Rectangle(accessor.getX() + accessor.getImageWidth() + 4, accessor.getY(), 104, 127)); }); diff --git a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java index 864a59c8b8c..b410a9fd0c0 100644 --- a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java +++ b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java @@ -57,7 +57,7 @@ import org.slf4j.Logger; public class SkyblockerConfigManager { - public static final int CONFIG_VERSION = 7; + public static final int CONFIG_VERSION = 8; private static final Logger LOGGER = LogUtils.getLogger(); private static final Path CONFIG_DIR = FabricLoader.getInstance().getConfigDir(); private static final Path CONFIG_FILE = CONFIG_DIR.resolve("skyblocker.json"); diff --git a/src/main/java/de/hysky/skyblocker/config/categories/FarmingCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/FarmingCategory.java index 1e5be31e13f..2b94ac2a3bb 100644 --- a/src/main/java/de/hysky/skyblocker/config/categories/FarmingCategory.java +++ b/src/main/java/de/hysky/skyblocker/config/categories/FarmingCategory.java @@ -21,117 +21,127 @@ public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig .id(SkyblockerMod.id("config/farming")) .name(Component.translatable("skyblocker.config.farming")) - //Garden + // Farming HUD .group(OptionGroup.createBuilder() - .name(Component.translatable("skyblocker.config.farming.garden")) - .collapsed(false) + .name(Component.translatable("skyblocker.config.farming.farmingHud")) + .collapsed(true) .option(Option.createBuilder() - .name(Component.translatable("skyblocker.config.farming.garden.enableHud")) - .binding(defaults.farming.garden.farmingHud.enableHud, - () -> config.farming.garden.farmingHud.enableHud, - newValue -> config.farming.garden.farmingHud.enableHud = newValue) + .name(Component.translatable("skyblocker.config.farming.farmingHud.enabled")) + .binding(defaults.farming.farmingHud.enabled, + () -> config.farming.farmingHud.enabled, + newValue -> config.farming.farmingHud.enabled = newValue) .controller(ConfigUtils.createBooleanController()) .build()) .option(ButtonOption.createBuilder() - .name(Component.translatable("skyblocker.config.farming.garden.farmingHud")) + .name(Component.translatable("skyblocker.config.farming.farmingHud.config")) .prompt(Component.translatable("text.skyblocker.open")) .action(screen -> Minecraft.getInstance().setScreen(new WidgetsConfigurationScreen(Location.GARDEN, FarmingHudWidget.getInstance().getInternalID(), screen))) .build()) .option(Option.createBuilder() - .name(Component.translatable("skyblocker.config.farming.garden.farmingHud.type")) - .description(Component.translatable("skyblocker.config.farming.garden.farmingHud.type.@Tooltip")) - .binding(defaults.farming.garden.farmingHud.type, - () -> config.farming.garden.farmingHud.type, - newValue -> config.farming.garden.farmingHud.type = newValue) + .name(Component.translatable("skyblocker.config.farming.farmingHud.type")) + .description(Component.translatable("skyblocker.config.farming.farmingHud.type.@Tooltip")) + .binding(defaults.farming.farmingHud.type, + () -> config.farming.farmingHud.type, + newValue -> config.farming.farmingHud.type = newValue) .controller(ConfigUtils.createEnumController()) .build()) + .build()) + // Pest Highlighter + .group(OptionGroup.createBuilder() + .name(Component.translatable("skyblocker.config.farming.pestHighlighter")) + .collapsed(true) .option(Option.createBuilder() - .name(Component.translatable("skyblocker.config.farming.garden.dicerTitlePrevent")) - .binding(defaults.farming.garden.dicerTitlePrevent, - () -> config.farming.garden.dicerTitlePrevent, - newValue -> config.farming.garden.dicerTitlePrevent = newValue) - .controller(ConfigUtils.createBooleanController()) - .build()) - .option(Option.createBuilder() - .name(Component.translatable("skyblocker.config.farming.garden.pestHighlighter")) - .description(Component.translatable("skyblocker.config.farming.garden.pestHighlighter.@Tooltip")) - .binding(defaults.farming.garden.pestHighlighter, - () -> config.farming.garden.pestHighlighter, - newValue -> config.farming.garden.pestHighlighter = newValue) + .name(Component.translatable("skyblocker.config.farming.pestHighlighter.enabled")) + .description(Component.translatable("skyblocker.config.farming.pestHighlighter.enabled.@Tooltip")) + .binding(defaults.farming.pestHighlighter.enabled, + () -> config.farming.pestHighlighter.enabled, + newValue -> config.farming.pestHighlighter.enabled = newValue) .controller(ConfigUtils.createBooleanController()) .build()) .option(Option.createBuilder() - .name(Component.translatable("skyblocker.config.farming.garden.vinylHighlighter")) - .description(Component.translatable("skyblocker.config.farming.garden.vinylHighlighter.@Tooltip")) - .binding(defaults.farming.garden.vinylHighlighter, - () -> config.farming.garden.vinylHighlighter, - newValue -> config.farming.garden.vinylHighlighter = newValue) + .name(Component.translatable("skyblocker.config.farming.pestHighlighter.vinylHighlighter")) + .description(Component.translatable("skyblocker.config.farming.pestHighlighter.vinylHighlighter.@Tooltip")) + .binding(defaults.farming.pestHighlighter.vinylHighlighter, + () -> config.farming.pestHighlighter.vinylHighlighter, + newValue -> config.farming.pestHighlighter.vinylHighlighter = newValue) .controller(ConfigUtils.createBooleanController()) .build()) .option(Option.createBuilder() - .name(Component.translatable("skyblocker.config.farming.garden.lockMouseTool")) - .binding(defaults.farming.garden.lockMouseTool, - () -> config.farming.garden.lockMouseTool, - newValue -> config.farming.garden.lockMouseTool = newValue) + .name(Component.translatable("skyblocker.config.farming.pestHighlighter.stereoHarmony")) + .description(Component.translatable("skyblocker.config.farming.pestHighlighter.stereoHarmony.@Tooltip")) + .binding(defaults.farming.pestHighlighter.enableStereoHarmonyHelperForContest, + () -> config.farming.pestHighlighter.enableStereoHarmonyHelperForContest, + newValue -> config.farming.pestHighlighter.enableStereoHarmonyHelperForContest = newValue) .controller(ConfigUtils.createBooleanController()) .build()) + .build()) + // Mouse Lock + .group(OptionGroup.createBuilder() + .name(Component.translatable("skyblocker.config.farming.mouseLock")) + .collapsed(true) + .tags(Component.literal("camera lock"), Component.literal("sensitivity"), Component.literal("yaw pitch")) .option(Option.createBuilder() - .name(Component.translatable("skyblocker.config.farming.garden.lockMouseGround")) - .binding(defaults.farming.garden.lockMouseGroundOnly, - () -> config.farming.garden.lockMouseGroundOnly, - newValue -> config.farming.garden.lockMouseGroundOnly = newValue) + .name(Component.translatable("skyblocker.config.farming.mouseLock.lockMouseTool")) + .binding(defaults.farming.mouseLock.lockMouseTool, + () -> config.farming.mouseLock.lockMouseTool, + newValue -> config.farming.mouseLock.lockMouseTool = newValue) .controller(ConfigUtils.createBooleanController()) .build()) .option(Option.createBuilder() - .name(Component.translatable("skyblocker.config.farming.garden.gardenPlotsWidget")) - .description(Component.translatable("skyblocker.config.farming.garden.gardenPlotsWidget.@Tooltip")) - .binding(defaults.farming.garden.gardenPlotsWidget, - () -> config.farming.garden.gardenPlotsWidget, - newValue -> config.farming.garden.gardenPlotsWidget = newValue) + .name(Component.translatable("skyblocker.config.farming.mouseLock.lockMouseGround")) + .binding(defaults.farming.mouseLock.lockMouseGroundOnly, + () -> config.farming.mouseLock.lockMouseGroundOnly, + newValue -> config.farming.mouseLock.lockMouseGroundOnly = newValue) .controller(ConfigUtils.createBooleanController()) .build()) + .build()) + // Garden Plots Widget + .group(OptionGroup.createBuilder() + .name(Component.translatable("skyblocker.config.farming.plotsWidget")) + .collapsed(true) .option(Option.createBuilder() - .name(Component.translatable("skyblocker.config.farming.garden.closeScreenOnPlotClick")) - .description(Component.translatable("skyblocker.config.farming.garden.closeScreenOnPlotClick.@Tooltip")) - .binding(defaults.farming.garden.closeScreenOnPlotClick, - () -> config.farming.garden.closeScreenOnPlotClick, - newValue -> config.farming.garden.closeScreenOnPlotClick = newValue) + .name(Component.translatable("skyblocker.config.farming.plotsWidget.enabled")) + .description(Component.translatable("skyblocker.config.farming.plotsWidget.enabled.@Tooltip")) + .binding(defaults.farming.plotsWidget.enabled, + () -> config.farming.plotsWidget.enabled, + newValue -> config.farming.plotsWidget.enabled = newValue) .controller(ConfigUtils.createBooleanController()) .build()) .option(Option.createBuilder() - .name(Component.translatable("skyblocker.config.farming.garden.enableStereoHarmonyHelperForContest")) - .description(Component.translatable("skyblocker.config.farming.garden.enableStereoHarmonyHelperForContest.@Tooltip")) - .binding(defaults.farming.garden.enableStereoHarmonyHelperForContest, - () -> config.farming.garden.enableStereoHarmonyHelperForContest, - newValue -> config.farming.garden.enableStereoHarmonyHelperForContest = newValue) + .name(Component.translatable("skyblocker.config.farming.plotsWidget.closeScreenOnPlotClick")) + .description(Component.translatable("skyblocker.config.farming.plotsWidget.closeScreenOnPlotClick.@Tooltip")) + .binding(defaults.farming.plotsWidget.closeScreenOnPlotClick, + () -> config.farming.plotsWidget.closeScreenOnPlotClick, + newValue -> config.farming.plotsWidget.closeScreenOnPlotClick = newValue) .controller(ConfigUtils.createBooleanController()) .build()) .build()) + // Visitor Helper .group(OptionGroup.createBuilder() .name(Component.translatable("skyblocker.config.farming.visitorHelper")) - .collapsed(false) + .collapsed(true) .option(Option.createBuilder() - .name(Component.translatable("skyblocker.config.farming.visitorHelper.visitorHelper")) - .description(Component.translatable("skyblocker.config.farming.visitorHelper.visitorHelper.@Tooltip")) - .binding(defaults.farming.visitorHelper.visitorHelper, - () -> config.farming.visitorHelper.visitorHelper, - newValue -> config.farming.visitorHelper.visitorHelper = newValue) + .name(Component.translatable("skyblocker.config.farming.visitorHelper.enabled")) + .description(Component.translatable("skyblocker.config.farming.visitorHelper.enabled.@Tooltip")) + .binding(defaults.farming.visitorHelper.enabled, + () -> config.farming.visitorHelper.enabled, + newValue -> config.farming.visitorHelper.enabled = newValue) .controller(ConfigUtils.createBooleanController()) .build()) .option(Option.createBuilder() - .name(Component.translatable("skyblocker.config.farming.visitorHelper.visitorHelperGardenOnly")) - .description(Component.translatable("skyblocker.config.farming.visitorHelper.visitorHelperGardenOnly.@Tooltip")) - .binding(defaults.farming.visitorHelper.visitorHelperGardenOnly, - () -> config.farming.visitorHelper.visitorHelperGardenOnly, - newValue -> config.farming.visitorHelper.visitorHelperGardenOnly = newValue) + .name(Component.translatable("skyblocker.config.farming.visitorHelper.showInGardenOnly")) + .description(Component.translatable("skyblocker.config.farming.visitorHelper.showInGardenOnly.@Tooltip")) + .binding(defaults.farming.visitorHelper.showInGardenOnly, + () -> config.farming.visitorHelper.showInGardenOnly, + newValue -> config.farming.visitorHelper.showInGardenOnly = newValue) .controller(ConfigUtils.createBooleanController()) .build()) .option(Option.createBuilder() - .name(Component.translatable("skyblocker.config.farming.visitorHelper.showStacksInVisitorHelper")) - .description(Component.translatable("skyblocker.config.farming.visitorHelper.showStacksInVisitorHelper.@Tooltip")) - .binding(defaults.farming.visitorHelper.showStacksInVisitorHelper, - () -> config.farming.visitorHelper.showStacksInVisitorHelper, - newValue -> config.farming.visitorHelper.showStacksInVisitorHelper = newValue) + .name(Component.translatable("skyblocker.config.farming.visitorHelper.showInStacks")) + .description(Component.translatable("skyblocker.config.farming.visitorHelper.showInStacks.@Tooltip")) + .binding(defaults.farming.visitorHelper.showInStacks, + () -> config.farming.visitorHelper.showInStacks, + newValue -> config.farming.visitorHelper.showInStacks = newValue) .controller(ConfigUtils.createBooleanController()) .build()) .build()) diff --git a/src/main/java/de/hysky/skyblocker/config/configs/FarmingConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/FarmingConfig.java index 658bd04aa46..a1146f93e3a 100644 --- a/src/main/java/de/hysky/skyblocker/config/configs/FarmingConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/configs/FarmingConfig.java @@ -3,44 +3,46 @@ import net.minecraft.client.resources.language.I18n; public class FarmingConfig { - public Garden garden = new Garden(); + public FarmingHud farmingHud = new FarmingHud(); - public VisitorHelper visitorHelper = new VisitorHelper(); + public PestHighlighter pestHighlighter = new PestHighlighter(); + + public MouseLock mouseLock = new MouseLock(); - public static class Garden { - public FarmingHud farmingHud = new FarmingHud(); + public PlotsWidget plotsWidget = new PlotsWidget(); - public boolean dicerTitlePrevent = true; + public VisitorHelper visitorHelper = new VisitorHelper(); - public boolean pestHighlighter = true; + public static class PestHighlighter { + public boolean enabled = true; public boolean vinylHighlighter = true; + public boolean enableStereoHarmonyHelperForContest = true; + } + + public static class MouseLock { public boolean lockMouseTool = false; public boolean lockMouseGroundOnly = false; + } - public boolean gardenPlotsWidget = true; + public static class PlotsWidget { + public boolean enabled = true; public boolean closeScreenOnPlotClick = false; - - public boolean enableStereoHarmonyHelperForContest = true; } public static class VisitorHelper { - public boolean visitorHelper = true; + public boolean enabled = true; - public boolean visitorHelperGardenOnly = true; + public boolean showInGardenOnly = true; - public boolean showStacksInVisitorHelper = false; + public boolean showInStacks = false; } public static class FarmingHud { - public boolean enableHud = true; - - public int x; - - public int y; + public boolean enabled = true; public Type type = Type.BOTH; } @@ -52,7 +54,7 @@ public enum Type { @Override public String toString() { - return I18n.get("skyblocker.config.farming.garden.farmingHud.type." + name()); + return I18n.get("skyblocker.config.farming.farmingHud.type." + name()); } } } diff --git a/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigDataFixer.java b/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigDataFixer.java index 5b95ecf8a90..b63dbccf689 100644 --- a/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigDataFixer.java +++ b/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigDataFixer.java @@ -62,6 +62,8 @@ private static DataFixer build() { builder.addFixer(new ConfigFix5ChatRulesSeparateOutputs(schema6, true)); Schema schema7 = builder.addSchema(7, Schema::new); builder.addFixer(new ConfigFix6BuildersWandConfig(schema7, true)); + Schema schema8 = builder.addSchema(8, Schema::new); + builder.addFixer(new ConfigFix7Farming(schema8, true)); return dataFixer = builder.build().fixer(); } diff --git a/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigFix7Farming.java b/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigFix7Farming.java new file mode 100644 index 00000000000..91845d2b4b8 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/config/datafixer/ConfigFix7Farming.java @@ -0,0 +1,44 @@ +package de.hysky.skyblocker.config.datafixer; + +import com.mojang.datafixers.DSL; +import com.mojang.datafixers.TypeRewriteRule; +import com.mojang.datafixers.schemas.Schema; +import com.mojang.serialization.Dynamic; + +public class ConfigFix7Farming extends ConfigDataFix { + public ConfigFix7Farming(Schema outputSchema, boolean changesType) { + super(outputSchema, changesType); + } + + @Override + protected TypeRewriteRule makeRule() { + return fixTypeEverywhereTyped( + getClass().getSimpleName(), + getInputSchema().getType(ConfigDataFixer.CONFIG_TYPE), + typed -> typed.update(DSL.remainderFinder(), this::fix) + ); + } + + private Dynamic fix(Dynamic dynamic) { + return fixVersion(dynamic).update("farming", farming -> farming + .set("farmingHud", dynamic.emptyMap() + .setFieldIfPresent("enabled", farming.get("garden").get("farmingHud").get("enableHud").result()) + .setFieldIfPresent("type", farming.get("garden").get("farmingHud").get("type").result()) + ).set("pestHighlighter", dynamic.emptyMap() + .setFieldIfPresent("enabled", farming.get("garden").get("pestHighlighter").result()) + .setFieldIfPresent("vinylHighlighter", farming.get("garden").get("vinylHighlighter").result()) + .setFieldIfPresent("enableStereoHarmonyHelperForContest", farming.get("garden").get("enableStereoHarmonyHelperForContest").result()) + ).set("mouseLock", dynamic.emptyMap() + .setFieldIfPresent("lockMouseTool", farming.get("garden").get("lockMouseTool").result()) + .setFieldIfPresent("lockMouseGroundOnly", farming.get("garden").get("lockMouseGroundOnly").result()) + ).set("plotsWidget", dynamic.emptyMap() + .setFieldIfPresent("enabled", farming.get("garden").get("gardenPlotsWidget").result()) + .setFieldIfPresent("closeScreenOnPlotClick", farming.get("garden").get("closeScreenOnPlotClick").result()) + ).update("visitorHelper", visitorHelper -> visitorHelper + .renameField("visitorHelper", "enabled") + .renameField("visitorHelperGardenOnly", "showInGardenOnly") + .renameField("showStacksInVisitorHelper", "showInStacks") + ).remove("garden") + ); + } +} diff --git a/src/main/java/de/hysky/skyblocker/mixins/GuiMixin.java b/src/main/java/de/hysky/skyblocker/mixins/GuiMixin.java index f5e821a7281..5c38356309d 100644 --- a/src/main/java/de/hysky/skyblocker/mixins/GuiMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixins/GuiMixin.java @@ -22,7 +22,6 @@ import net.minecraft.core.component.DataComponents; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; -import net.minecraft.network.chat.Component; import net.minecraft.resources.Identifier; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -37,15 +36,12 @@ import java.util.OptionalInt; import java.util.function.Supplier; -import java.util.regex.Pattern; @Environment(EnvType.CLIENT) @Mixin(Gui.class) public abstract class GuiMixin { @Unique private static final Supplier SLOT_LOCK_ICON = () -> SkyblockerConfigManager.get().general.itemProtection.slotLockStyle.tex; - @Unique - private static final Pattern DICER_TITLE_BLACKLIST = Pattern.compile(".+? DROP!"); @Shadow @Final @@ -130,11 +126,4 @@ private static boolean isQuiverItem(ItemStack stack) { return cooldownProgress; } - - @Inject(method = "setTitle", at = @At("HEAD"), cancellable = true) - private void skyblocker$dicerTitlePrevent(Component title, CallbackInfo ci) { - if (Utils.isOnSkyblock() && SkyblockerConfigManager.get().farming.garden.dicerTitlePrevent && title != null && DICER_TITLE_BLACKLIST.matcher(title.getString()).matches()) { - ci.cancel(); - } - } } diff --git a/src/main/java/de/hysky/skyblocker/mixins/InventoryScreenMixin.java b/src/main/java/de/hysky/skyblocker/mixins/InventoryScreenMixin.java index 56e4626b704..f6592c34420 100644 --- a/src/main/java/de/hysky/skyblocker/mixins/InventoryScreenMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixins/InventoryScreenMixin.java @@ -53,14 +53,14 @@ public InventoryScreenMixin(InventoryMenu handler, Inventory inventory, Componen @WrapWithCondition(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/inventory/EffectsInInventory;render(Lnet/minecraft/client/gui/GuiGraphics;II)V")) private boolean skyblocker$dontDrawStatusEffects(EffectsInInventory statusEffectsDisplay, GuiGraphics context, int mouseX, int mouseY) { - return !(Utils.isOnSkyblock() && SkyblockerConfigManager.get().uiAndVisuals.hideStatusEffectOverlay || Utils.isInGarden() && SkyblockerConfigManager.get().farming.garden.gardenPlotsWidget); + return !(Utils.isOnSkyblock() && SkyblockerConfigManager.get().uiAndVisuals.hideStatusEffectOverlay || Utils.isInGarden() && SkyblockerConfigManager.get().farming.plotsWidget.enabled); } // This makes it so that REI at least doesn't wrongly exclude the zone @ModifyReturnValue(method = "showsActiveEffects", at = @At("RETURN")) private boolean skyblocker$markStatusEffectsHidden(boolean original) { // In the garden, status effects are shown when both hideStatusEffectOverlay and gardenPlotsWidget are false - if (Utils.isInGarden()) return original && !SkyblockerConfigManager.get().uiAndVisuals.hideStatusEffectOverlay && !SkyblockerConfigManager.get().farming.garden.gardenPlotsWidget; + if (Utils.isInGarden()) return original && !SkyblockerConfigManager.get().uiAndVisuals.hideStatusEffectOverlay && !SkyblockerConfigManager.get().farming.plotsWidget.enabled; // In the rest of Skyblock, status effects are shown when hideStatusEffectOverlay is false if (Utils.isOnSkyblock()) return original && !SkyblockerConfigManager.get().uiAndVisuals.hideStatusEffectOverlay; // In vanilla, status effects are shown as normal diff --git a/src/main/java/de/hysky/skyblocker/skyblock/entity/glow/adder/GardenGlowAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/entity/glow/adder/GardenGlowAdder.java index 0b79a3a7fd2..1a519e511f8 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/entity/glow/adder/GardenGlowAdder.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/entity/glow/adder/GardenGlowAdder.java @@ -48,7 +48,7 @@ case ArmorStand as when isPestHead(as) -> @Override public boolean isEnabled() { - return SkyblockerConfigManager.get().farming.garden.pestHighlighter && Utils.isInGarden(); + return SkyblockerConfigManager.get().farming.pestHighlighter.enabled && Utils.isInGarden(); } /** @@ -98,7 +98,7 @@ public static boolean doesPestMatchCurrentContest(ArmorStand entity) { * Matches the armor stand head with currently playing vinyl outside of Jacob's Contest. */ public static boolean doesPestMatchCurrentVinyl(ArmorStand entity) { - if (!SkyblockerConfigManager.get().farming.garden.vinylHighlighter) + if (!SkyblockerConfigManager.get().farming.pestHighlighter.vinylHighlighter) return false; String vinyl = VacuumCache.getVinyl(); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHud.java b/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHud.java index e3bf80bbcd7..e2863fe3967 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHud.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHud.java @@ -126,7 +126,7 @@ private static boolean tryGetCounter(ItemStack stack, CounterType counterType) { } private static boolean shouldRender() { - return SkyblockerConfigManager.get().farming.garden.farmingHud.enableHud && client.player != null && Utils.getLocation() == Location.GARDEN; + return SkyblockerConfigManager.get().farming.farmingHud.enabled && client.player != null && Utils.getLocation() == Location.GARDEN; } public static String counterText() { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java index 579e58f539c..b045028bf14 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java @@ -105,18 +105,18 @@ public void updateContent() { if (FarmingHud.CounterType.NONE.matchesText(counterText)) counterNumber = ""; addSimpleIcoText(cropStack, counterText, ChatFormatting.YELLOW, counterNumber); float cropsPerMinute = FarmingHud.cropsPerMinute(); - addSimpleIconTranslatableText(cropStack, "skyblocker.config.farming.general.cropsPerMin", ChatFormatting.YELLOW, FarmingHud.NUMBER_FORMAT.format((int) cropsPerMinute / 10 * 10)); - addSimpleIconTranslatableText(Ico.GOLD, "skyblocker.config.farming.general.coinsPerHour", ChatFormatting.GOLD, getPriceText(cropItemId, cropsPerMinute)); - addSimpleIconTranslatableText(cropStack, "skyblocker.config.farming.general.blocksPerSec", ChatFormatting.YELLOW, Double.toString(FarmingHud.blockBreaks())); + addSimpleIconTranslatableText(cropStack, "skyblocker.farming.farmingHud.cropsPerMin", ChatFormatting.YELLOW, FarmingHud.NUMBER_FORMAT.format((int) cropsPerMinute / 10 * 10)); + addSimpleIconTranslatableText(Ico.GOLD, "skyblocker.farming.farmingHud.coinsPerHour", ChatFormatting.GOLD, getPriceText(cropItemId, cropsPerMinute)); + addSimpleIconTranslatableText(cropStack, "skyblocker.farming.farmingHud.blocksPerSec", ChatFormatting.YELLOW, Double.toString(FarmingHud.blockBreaks())); //noinspection DataFlowIssue - addComponent(Elements.progressComponent(Ico.LANTERN, Component.translatable("skyblocker.config.farming.general.farmingLevel"), FarmingHud.farmingXpPercentProgress(), ChatFormatting.GOLD.getColor())); - addSimpleIconTranslatableText(Ico.LIME_DYE, "skyblocker.config.farming.general.farmingXPPerHour", ChatFormatting.YELLOW, FarmingHud.NUMBER_FORMAT.format(FarmingHud.farmingXpPerHour())); + addComponent(Elements.progressComponent(Ico.LANTERN, Component.translatable("skyblocker.farming.farmingHud.farmingLevel"), FarmingHud.farmingXpPercentProgress(), ChatFormatting.GOLD.getColor())); + addSimpleIconTranslatableText(Ico.LIME_DYE, "skyblocker.farming.farmingHud.farmingXPPerHour", ChatFormatting.YELLOW, FarmingHud.NUMBER_FORMAT.format(FarmingHud.farmingXpPerHour())); Entity cameraEntity = client.getCameraEntity(); - Component yaw = cameraEntity == null ? Component.translatable("skyblocker.config.farming.general.noCameraEntity") : Component.literal(String.format("%.2f", Mth.wrapDegrees(cameraEntity.getYRot()))); - Component pitch = cameraEntity == null ? Component.translatable("skyblocker.config.farming.general.noCameraEntity") : Component.literal(String.format("%.2f", Mth.wrapDegrees(cameraEntity.getXRot()))); - addComponent(new PlainTextElement(Component.translatable("skyblocker.config.farming.general.yaw", yaw).withStyle(ChatFormatting.GOLD))); - addComponent(new PlainTextElement(Component.translatable("skyblocker.config.farming.general.pitch", pitch).withStyle(ChatFormatting.GOLD))); + Component yaw = cameraEntity == null ? Component.translatable("skyblocker.farming.farmingHud.noCameraEntity") : Component.literal(String.format("%.2f", Mth.wrapDegrees(cameraEntity.getYRot()))); + Component pitch = cameraEntity == null ? Component.translatable("skyblocker.farming.farmingHud.noCameraEntity") : Component.literal(String.format("%.2f", Mth.wrapDegrees(cameraEntity.getXRot()))); + addComponent(new PlainTextElement(Component.translatable("skyblocker.farming.farmingHud.yaw", yaw).withStyle(ChatFormatting.GOLD))); + addComponent(new PlainTextElement(Component.translatable("skyblocker.farming.farmingHud.pitch", pitch).withStyle(ChatFormatting.GOLD))); if (LowerSensitivity.isSensitivityLowered()) { addComponent(new PlainTextElement(Component.translatable("skyblocker.garden.hud.mouseLocked").withStyle(ChatFormatting.ITALIC))); } @@ -141,12 +141,12 @@ private Component getPriceText(String cropItemId, float cropsPerMinute) { Component sourceLabel = null; boolean hasValidPrice = false; - switch (SkyblockerConfigManager.get().farming.garden.farmingHud.type) { + switch (SkyblockerConfigManager.get().farming.farmingHud.type) { case NPC -> { // Use NPC price if it's available. if (itemNpcPrice > 0 && itemNpcPrice != Double.MIN_VALUE) { priceToUse = itemNpcPrice; - sourceLabel = Component.literal(" (").append(Component.translatable("skyblocker.config.farming.garden.farmingHud.type.NPC")).append(")"); + sourceLabel = Component.literal(" (").append(Component.translatable("skyblocker.config.farming.farmingHud.type.NPC")).append(")"); hasValidPrice = true; } } @@ -154,7 +154,7 @@ private Component getPriceText(String cropItemId, float cropsPerMinute) { // Use Bazaar price if data is available. if (hasBazaarData) { priceToUse = bazaarPrice; - sourceLabel = Component.literal(" (").append(Component.translatable("skyblocker.config.farming.garden.farmingHud.type.BAZAAR")).append(")"); + sourceLabel = Component.literal(" (").append(Component.translatable("skyblocker.config.farming.farmingHud.type.BAZAAR")).append(")"); hasValidPrice = true; } } @@ -162,13 +162,13 @@ private Component getPriceText(String cropItemId, float cropsPerMinute) { // Use the NPC price if it's higher than the Bazaar price and available. if (itemNpcPrice > bazaarPrice && itemNpcPrice != Double.MIN_VALUE) { priceToUse = itemNpcPrice; - sourceLabel = Component.literal(" (").append(Component.translatable("skyblocker.config.farming.garden.farmingHud.type.NPC")).append(")"); + sourceLabel = Component.literal(" (").append(Component.translatable("skyblocker.config.farming.farmingHud.type.NPC")).append(")"); hasValidPrice = true; } // Otherwise, use Bazaar price if available. else if (hasBazaarData) { priceToUse = bazaarPrice; - sourceLabel = Component.literal(" (").append(Component.translatable("skyblocker.config.farming.garden.farmingHud.type.BAZAAR")).append(")"); + sourceLabel = Component.literal(" (").append(Component.translatable("skyblocker.config.farming.farmingHud.type.BAZAAR")).append(")"); hasValidPrice = true; } } @@ -176,18 +176,18 @@ else if (hasBazaarData) { // Multiply by 60 to convert to hourly and divide by 100 for rounding is combined into multiplying by 0.6. - return hasValidPrice ? Component.literal(FarmingHud.NUMBER_FORMAT.format((int) (priceToUse * cropsPerMinute * 0.6) * 100)).append(sourceLabel) : Component.translatable("skyblocker.config.farming.general.noData"); + return hasValidPrice ? Component.literal(FarmingHud.NUMBER_FORMAT.format((int) (priceToUse * cropsPerMinute * 0.6) * 100)).append(sourceLabel) : Component.translatable("skyblocker.farming.farmingHud.noData"); } @Override public boolean isEnabledIn(Location location) { - return location.equals(Location.GARDEN) && SkyblockerConfigManager.get().farming.garden.farmingHud.enableHud; + return location.equals(Location.GARDEN) && SkyblockerConfigManager.get().farming.farmingHud.enabled; } @Override public void setEnabledIn(Location location, boolean enabled) { if (!location.equals(Location.GARDEN)) return; - SkyblockerConfigManager.update(config -> config.farming.garden.farmingHud.enableHud = enabled); + SkyblockerConfigManager.update(config -> config.farming.farmingHud.enabled = enabled); } @Override diff --git a/src/main/java/de/hysky/skyblocker/skyblock/garden/GardenPlots.java b/src/main/java/de/hysky/skyblocker/skyblock/garden/GardenPlots.java index a6cd9dde3f0..c17b77deb5d 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/garden/GardenPlots.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/garden/GardenPlots.java @@ -80,7 +80,7 @@ public static void init() { } }); - } else if (screen instanceof InventoryScreen inventoryScreen && Utils.getLocation().equals(Location.GARDEN) && SkyblockerConfigManager.get().farming.garden.gardenPlotsWidget) { + } else if (screen instanceof InventoryScreen inventoryScreen && Utils.getLocation().equals(Location.GARDEN) && SkyblockerConfigManager.get().farming.plotsWidget.enabled) { GardenPlotsWidget widget = new GardenPlotsWidget( ((AbstractContainerScreenAccessor) inventoryScreen).getX() + ((AbstractContainerScreenAccessor) inventoryScreen).getImageWidth() + 4, ((AbstractContainerScreenAccessor) inventoryScreen).getY()); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/garden/GardenPlotsWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/garden/GardenPlotsWidget.java index 2acdeb537fa..4083212e22e 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/garden/GardenPlotsWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/garden/GardenPlotsWidget.java @@ -281,7 +281,7 @@ public void onClick(MouseButtonEvent click, boolean doubled) { return; } - if (SkyblockerConfigManager.get().farming.garden.closeScreenOnPlotClick && Minecraft.getInstance().screen != null) + if (SkyblockerConfigManager.get().farming.plotsWidget.closeScreenOnPlotClick && Minecraft.getInstance().screen != null) Minecraft.getInstance().screen.onClose(); if (hoveredSlot == 12) MessageScheduler.INSTANCE.sendMessageAfterCooldown("/plottp barn", true); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/garden/LowerSensitivity.java b/src/main/java/de/hysky/skyblocker/skyblock/garden/LowerSensitivity.java index 8a18b94ba79..3176cc671d5 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/garden/LowerSensitivity.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/garden/LowerSensitivity.java @@ -14,13 +14,13 @@ public class LowerSensitivity { @Init public static void init() { ClientTickEvents.END_WORLD_TICK.register(world -> { - if (Utils.getLocation() != Location.GARDEN || Minecraft.getInstance().player == null || !SkyblockerConfigManager.get().farming.garden.lockMouseTool) { + if (Utils.getLocation() != Location.GARDEN || Minecraft.getInstance().player == null || !SkyblockerConfigManager.get().farming.mouseLock.lockMouseTool) { if (sensitivityLowered) lowerSensitivity(false); return; } ItemStack mainHandStack = Minecraft.getInstance().player.getMainHandItem(); String itemId = mainHandStack.getSkyblockId(); - boolean shouldLockMouse = FarmingHudWidget.FARMING_TOOLS.containsKey(itemId) && (!SkyblockerConfigManager.get().farming.garden.lockMouseGroundOnly || Minecraft.getInstance().player.onGround()); + boolean shouldLockMouse = FarmingHudWidget.FARMING_TOOLS.containsKey(itemId) && (!SkyblockerConfigManager.get().farming.mouseLock.lockMouseGroundOnly || Minecraft.getInstance().player.onGround()); if (shouldLockMouse && !sensitivityLowered) lowerSensitivity(true); else if (!shouldLockMouse && sensitivityLowered) lowerSensitivity(false); }); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/garden/StereoHarmonyHelper.java b/src/main/java/de/hysky/skyblocker/skyblock/garden/StereoHarmonyHelper.java index 58ad3342f75..5ba68f3bf9c 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/garden/StereoHarmonyHelper.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/garden/StereoHarmonyHelper.java @@ -25,7 +25,7 @@ private StereoHarmonyHelper() { @Override public boolean isEnabled() { - return SkyblockerConfigManager.get().farming.garden.enableStereoHarmonyHelperForContest; + return SkyblockerConfigManager.get().farming.pestHighlighter.enableStereoHarmonyHelperForContest; } @Override diff --git a/src/main/java/de/hysky/skyblocker/skyblock/garden/visitor/VisitorHelper.java b/src/main/java/de/hysky/skyblocker/skyblock/garden/visitor/VisitorHelper.java index f28fd7644b7..c6f90dfd166 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/garden/visitor/VisitorHelper.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/garden/visitor/VisitorHelper.java @@ -112,8 +112,8 @@ public static void initialize() { } public static boolean shouldRender() { - boolean isHelperEnabled = SkyblockerConfigManager.get().farming.visitorHelper.visitorHelper; - boolean isGardenMode = SkyblockerConfigManager.get().farming.visitorHelper.visitorHelperGardenOnly; + boolean isHelperEnabled = SkyblockerConfigManager.get().farming.visitorHelper.enabled; + boolean isGardenMode = SkyblockerConfigManager.get().farming.visitorHelper.showInGardenOnly; return isHelperEnabled && (!isGardenMode || Utils.isInGarden() || Utils.getArea() == Area.Hub.BAZAAR); } @@ -245,7 +245,7 @@ public void renderWidget(GuiGraphics context, int mouseX, int mouseY, float delt context.pose().popMatrix(); MutableComponent name = cachedStack.getHoverName().copy(); - MutableComponent itemText = SkyblockerConfigManager.get().farming.visitorHelper.showStacksInVisitorHelper && totalAmount >= 64 + MutableComponent itemText = SkyblockerConfigManager.get().farming.visitorHelper.showInStacks && totalAmount >= 64 ? name.append(" x" + (totalAmount / 64) + " stacks + " + (totalAmount % 64)) : name.append(" x" + totalAmount); @@ -301,7 +301,7 @@ public void onClick(MouseButtonEvent click, boolean doubled) { int yPosition = y + index * (LINE_HEIGHT + textRenderer.lineHeight); MutableComponent name = itemName.copy(); - Component itemText = SkyblockerConfigManager.get().farming.visitorHelper.showStacksInVisitorHelper && totalAmount >= 64 + Component itemText = SkyblockerConfigManager.get().farming.visitorHelper.showInStacks && totalAmount >= 64 ? name.append(" x" + (totalAmount / 64) + " stacks + " + (totalAmount % 64)) : name.append(" x" + totalAmount); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/WidgetManager.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/WidgetManager.java index 85730364fde..51e3acaba13 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/WidgetManager.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/WidgetManager.java @@ -168,12 +168,6 @@ private static void fillDefaultConfig() { new PositionRule("screen", PositionRule.Point.DEFAULT, PositionRule.Point.DEFAULT, SkyblockerConfigManager.get().otherLocations.end.x, SkyblockerConfigManager.get().otherLocations.end.y, WidgetManager.ScreenLayer.HUD) ); - screenBuilder = getScreenBuilder(Location.GARDEN); - screenBuilder.setPositionRule( - "hud_farming", - new PositionRule("screen", PositionRule.Point.DEFAULT, PositionRule.Point.DEFAULT, SkyblockerConfigManager.get().farming.garden.farmingHud.x, SkyblockerConfigManager.get().farming.garden.farmingHud.y, WidgetManager.ScreenLayer.HUD) - ); - for (Location loc : new Location[]{Location.CRYSTAL_HOLLOWS, Location.DWARVEN_MINES}) { screenBuilder = getScreenBuilder(loc); screenBuilder.setPositionRule( diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index 92853fadc9e..2018c03ab40 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -437,45 +437,40 @@ "skyblocker.config.farming": "Farming", - "skyblocker.config.farming.garden": "Garden", - "skyblocker.config.farming.garden.closeScreenOnPlotClick": "Close inventory on plot tp", - "skyblocker.config.farming.garden.closeScreenOnPlotClick.@Tooltip": "Whether or not your inventory should automatically close when teleporting to a plot using the Garden Plots Widget", - "skyblocker.config.farming.garden.dicerTitlePrevent": "Enable Dicer Title Prevent", - "skyblocker.config.farming.garden.enableHud": "Enable Farming HUD", - "skyblocker.config.farming.garden.enableStereoHarmonyHelperForContest": "Enable Stereo Harmony Helper for Jacob's Contest", - "skyblocker.config.farming.garden.enableStereoHarmonyHelperForContest.@Tooltip": "Highlighting a disc that matches with current Jacob's Contest", - "skyblocker.config.farming.garden.farmingHud": "Farming HUD Config...", - "skyblocker.config.farming.garden.farmingHud.type": "Use Price Value From", - "skyblocker.config.farming.garden.farmingHud.type.@Tooltip": "Which price to use when calculating coins in the farming HUD.\n'Both' uses whichever price is higher.", - "skyblocker.config.farming.garden.farmingHud.type.BAZAAR": "Bazaar", - "skyblocker.config.farming.garden.farmingHud.type.BOTH": "Both", - "skyblocker.config.farming.garden.farmingHud.type.NPC": "NPC", - "skyblocker.config.farming.garden.gardenPlotsWidget": "Enable Garden Plots Widget", - "skyblocker.config.farming.garden.gardenPlotsWidget.@Tooltip": "While in the garden, on the right of your inventory there will be a widget to quickly teleport to plots. It will also show plots that have pests (this requires the Pests widget to be enabled and visible in the Tab).\n\nThe icon of a plot can be customized by right clicking the plot in the widget.", - "skyblocker.config.farming.garden.lockMouseGround": "Only lock camera when on the ground", - "skyblocker.config.farming.garden.lockMouseTool": "Lock camera when holding a farming tool", - "skyblocker.config.farming.garden.pestHighlighter": "Pest Highlighter", - "skyblocker.config.farming.garden.pestHighlighter.@Tooltip": "Makes all pests on your island glow so you can see them easier :D", - "skyblocker.config.farming.garden.vinylHighlighter": "Stereo Harmony Vinyl Highlighter", - "skyblocker.config.farming.garden.vinylHighlighter.@Tooltip": "Pests from Stereo Harmony vinyls glow blue outside of Jacob's Contests. Only enabled if Pest Highlighter is also enabled.", - - "skyblocker.config.farming.general.blocksPerSec": "Blocks/s: %s", - "skyblocker.config.farming.general.coinsPerHour": "Coins/h: %s", - "skyblocker.config.farming.general.cropsPerMin": "Crops/min: %s", - "skyblocker.config.farming.general.farmingLevel": "Farming Level:", - "skyblocker.config.farming.general.farmingXPPerHour": "Farming XP/h: %s", - "skyblocker.config.farming.general.noCameraEntity": "No Camera Entity", - "skyblocker.config.farming.general.noData": "No Data", - "skyblocker.config.farming.general.pitch": "Pitch: %s", - "skyblocker.config.farming.general.yaw": "Yaw: %s", + "skyblocker.config.farming.farmingHud": "Farming HUD", + "skyblocker.config.farming.farmingHud.config": "Farming HUD Config...", + "skyblocker.config.farming.farmingHud.enabled": "Enable Farming HUD", + "skyblocker.config.farming.farmingHud.type": "Use Price Value From", + "skyblocker.config.farming.farmingHud.type.@Tooltip": "The source to use when calculating profit in the Farming HUD.\n'Both' uses the highest price.", + "skyblocker.config.farming.farmingHud.type.BAZAAR": "Bazaar", + "skyblocker.config.farming.farmingHud.type.BOTH": "Both", + "skyblocker.config.farming.farmingHud.type.NPC": "NPC", + + "skyblocker.config.farming.mouseLock": "Mouse Lock", + "skyblocker.config.farming.mouseLock.lockMouseGround": "Lock only when on the ground", + "skyblocker.config.farming.mouseLock.lockMouseTool": "Lock when holding a farming tool", + + "skyblocker.config.farming.pestHighlighter": "Pest Highlighter", + "skyblocker.config.farming.pestHighlighter.enabled": "Enable Pest Highlighter", + "skyblocker.config.farming.pestHighlighter.enabled.@Tooltip": "Makes all pests on the Garden glow so you can see them easier! :D", + "skyblocker.config.farming.pestHighlighter.stereoHarmony": "Enable Stereo Harmony Helper", + "skyblocker.config.farming.pestHighlighter.stereoHarmony.@Tooltip": "Highlights the disc that matches with current Jacob's Contest crop.", + "skyblocker.config.farming.pestHighlighter.vinylHighlighter": "Stereo Harmony Vinyl Highlighter", + "skyblocker.config.farming.pestHighlighter.vinylHighlighter.@Tooltip": "Pests from Stereo Harmony vinyls glow blue outside of Jacob's Contests.\nRequires Pest Highlighter to be enabled!", + + "skyblocker.config.farming.plotsWidget": "Garden Plots Widget", + "skyblocker.config.farming.plotsWidget.closeScreenOnPlotClick": "Close Inventory on Teleport", + "skyblocker.config.farming.plotsWidget.closeScreenOnPlotClick.@Tooltip": "Whether your inventory should automatically close when teleporting to a plot using the Garden Plots Widget.", + "skyblocker.config.farming.plotsWidget.enabled": "Enable Garden Plots Widget", + "skyblocker.config.farming.plotsWidget.enabled.@Tooltip": "Displays a widget on the right of your inventory in the Garden.\n\nAllows quickly teleporting between plots. Highlights plots with pests. (Requires the Pests widget to be enabled and visible in Tab!)\n\nThe icon of a plot can be customized by right clicking the plot in the widget.", "skyblocker.config.farming.visitorHelper": "Visitor Helper", - "skyblocker.config.farming.visitorHelper.showStacksInVisitorHelper": "Show Stacks in Visitor Helper", - "skyblocker.config.farming.visitorHelper.showStacksInVisitorHelper.@Tooltip": "Shows the required items as (5 stacks + 45) rather than just a total number especially useful for ironman players.", - "skyblocker.config.farming.visitorHelper.visitorHelper": "Enable Visitor Helper", - "skyblocker.config.farming.visitorHelper.visitorHelper.@Tooltip": "Makes it easier to manage visitors by grouping similar requests, copying item amounts, and quickly opening the Bazaar to buy items.", - "skyblocker.config.farming.visitorHelper.visitorHelperGardenOnly": "Garden Only", - "skyblocker.config.farming.visitorHelper.visitorHelperGardenOnly.@Tooltip": "Locks the Visitor Helper so it only works on the Garden.\n§cRequires Visitor Helper to be enabled.", + "skyblocker.config.farming.visitorHelper.enabled": "Enable Visitor Helper", + "skyblocker.config.farming.visitorHelper.enabled.@Tooltip": "Makes it easier to manage visitors by grouping similar requests, copying item amounts, and quickly opening the Bazaar to buy items.", + "skyblocker.config.farming.visitorHelper.showInGardenOnly": "Show On Garden Only", + "skyblocker.config.farming.visitorHelper.showInGardenOnly.@Tooltip": "Whether to only display the Visitor Helper on the Garden.", + "skyblocker.config.farming.visitorHelper.showInStacks": "Show Stacks in Visitor Helper", + "skyblocker.config.farming.visitorHelper.showInStacks.@Tooltip": "Shows the required items as (5 stacks + 45) rather than just the total number.\nUseful for ironman players!", "skyblocker.config.foraging": "Foraging", @@ -750,7 +745,7 @@ "skyblocker.config.helpers.hoppitysHunt.sendEggFoundMessages": "Send Egg Found Messages", "skyblocker.config.helpers.hoppitysHunt.sendEggFoundMessages.@Tooltip": "Sends a message when a new egg location is received from the Skyblocker WebSocket.", "skyblocker.config.helpers.hoppitysHunt.showThroughWalls": "Show Through Walls", - "skyblocker.config.helpers.hoppitysHunt.showThroughWalls.@Tooltip": "Whether or not to show Chocolate Egg waypoints through walls.", + "skyblocker.config.helpers.hoppitysHunt.showThroughWalls.@Tooltip": "Whether to show Chocolate Egg waypoints through walls.", "skyblocker.config.helpers.hoppitysHunt.waypointType": "Egg Waypoint Type", "skyblocker.config.helpers.itemPrice.enableItemPriceLookup": "Enable Item Price Lookup", @@ -1638,6 +1633,15 @@ "skyblocker.fancyAuctionHouse.youPay": "You pay: %s", "skyblocker.fancyAuctionHouse.yourAuction": "This is your auction!", + "skyblocker.farming.farmingHud.blocksPerSec": "Blocks/s: %s", + "skyblocker.farming.farmingHud.coinsPerHour": "Coins/h: %s", + "skyblocker.farming.farmingHud.cropsPerMin": "Crops/min: %s", + "skyblocker.farming.farmingHud.farmingLevel": "Farming Level:", + "skyblocker.farming.farmingHud.farmingXPPerHour": "Farming XP/h: %s", + "skyblocker.farming.farmingHud.noCameraEntity": "No Camera Entity", + "skyblocker.farming.farmingHud.noData": "No Data", + "skyblocker.farming.farmingHud.pitch": "Pitch: %s", + "skyblocker.farming.farmingHud.yaw": "Yaw: %s", "skyblocker.farming.visitorHelper.command.clearedAllVisitors": "Cleared all visitors!", "skyblocker.farming.visitorHelper.command.removedVisitor": "Removed %s!", "skyblocker.farming.visitorHelper.command.unableToRemoveVisitor": "Unable to remove visitor!", diff --git a/src/test/java/de/hysky/skyblocker/config/datafixer/ConfigDataFixerTest.java b/src/test/java/de/hysky/skyblocker/config/datafixer/ConfigDataFixerTest.java index d34f6425ef9..2870af06ed2 100644 --- a/src/test/java/de/hysky/skyblocker/config/datafixer/ConfigDataFixerTest.java +++ b/src/test/java/de/hysky/skyblocker/config/datafixer/ConfigDataFixerTest.java @@ -20,33 +20,37 @@ public static void setupEnvironment() { Bootstrap.bootStrap(); } - @Test - void testDataFixer1() { + void testDataFix(int previousVersion, int newVersion) { @SuppressWarnings("DataFlowIssue") - JsonObject oldConfig = GSON.fromJson(new InputStreamReader(ConfigDataFixerTest.class.getResourceAsStream("/assets/skyblocker/config/skyblocker-v1.json")), JsonObject.class); + JsonObject oldConfig = GSON.fromJson(new InputStreamReader(ConfigDataFixerTest.class.getResourceAsStream("/assets/skyblocker/config/skyblocker-v" + previousVersion + ".json")), JsonObject.class); @SuppressWarnings("DataFlowIssue") - JsonObject expectedNewConfig = GSON.fromJson(new InputStreamReader(ConfigDataFixerTest.class.getResourceAsStream("/assets/skyblocker/config/skyblocker-v2.json")), JsonObject.class); + JsonObject expectedNewConfig = GSON.fromJson(new InputStreamReader(ConfigDataFixerTest.class.getResourceAsStream("/assets/skyblocker/config/skyblocker-v" + newVersion + ".json")), JsonObject.class); - Assertions.assertEquals(expectedNewConfig, ConfigDataFixer.apply(ConfigDataFixer.CONFIG_TYPE, oldConfig, 2)); + Assertions.assertEquals(expectedNewConfig, ConfigDataFixer.apply(ConfigDataFixer.CONFIG_TYPE, oldConfig, newVersion)); } @Test - void testDataFixer2QuickNav() { - @SuppressWarnings("DataFlowIssue") - JsonObject oldConfig = GSON.fromJson(new InputStreamReader(ConfigDataFixerTest.class.getResourceAsStream("/assets/skyblocker/config/skyblocker-v2.json")), JsonObject.class); - @SuppressWarnings("DataFlowIssue") - JsonObject expectedNewConfig = GSON.fromJson(new InputStreamReader(ConfigDataFixerTest.class.getResourceAsStream("/assets/skyblocker/config/skyblocker-v3.json")), JsonObject.class); + void testDataFixer1() { + testDataFix(1, 2); + } - Assertions.assertEquals(expectedNewConfig, ConfigDataFixer.apply(ConfigDataFixer.CONFIG_TYPE, oldConfig, 3)); + @Test + void testDataFixer2QuickNav() { + testDataFix(2, 3); } @Test void testDataFixer3() { - @SuppressWarnings("DataFlowIssue") - JsonObject oldConfig = GSON.fromJson(new InputStreamReader(ConfigDataFixerTest.class.getResourceAsStream("/assets/skyblocker/config/skyblocker-v3.json")), JsonObject.class); - @SuppressWarnings("DataFlowIssue") - JsonObject expectedNewConfig = GSON.fromJson(new InputStreamReader(ConfigDataFixerTest.class.getResourceAsStream("/assets/skyblocker/config/skyblocker-v4.json")), JsonObject.class); + testDataFix(3, 4); + } - Assertions.assertEquals(expectedNewConfig, ConfigDataFixer.apply(ConfigDataFixer.CONFIG_TYPE, oldConfig, 4)); + @Test + void testDataFixer6() { + testDataFix(6, 7); + } + + @Test + void testDataFixer7() { + testDataFix(7, 8); } } diff --git a/src/test/resources/assets/skyblocker/config/skyblocker-v6.json b/src/test/resources/assets/skyblocker/config/skyblocker-v6.json new file mode 100644 index 00000000000..5974cfcf3a4 --- /dev/null +++ b/src/test/resources/assets/skyblocker/config/skyblocker-v6.json @@ -0,0 +1,998 @@ +{ + "version": 4, + "general": { + "enableTips": true, + "acceptReparty": true, + "speedPresets": { + "enableSpeedPresets": true + }, + "shortcuts": { + "enableShortcuts": true, + "enableCommandShortcuts": true, + "enableCommandArgShortcuts": true, + "enableKeyBindingShortcuts": true + }, + "quiverWarning": { + "enableQuiverWarning": true, + "enableQuiverWarningInDungeons": true, + "enableQuiverWarningAfterDungeon": true + }, + "itemList": { + "enableItemList": true, + "enableCollapsibleEntries": true + }, + "itemTooltip": { + "enableNPCPrice": true, + "enableMotesPrice": true, + "enableAvgBIN": true, + "avg": "THREE_DAY", + "enableLowestBIN": true, + "enableBazaarPrice": true, + "enableCraftingCost": "OFF", + "enableObtainedDate": true, + "enableMuseumInfo": true, + "enableExoticTooltip": true, + "enableAccessoriesHelper": true, + "dungeonQuality": true, + "showEssenceCost": true, + "enableEstimatedItemValue": true, + "enableStackingEnchantProgress": true, + "enableEvolvingItemProgress": true + }, + "itemInfoDisplay": { + "itemBackgroundStyle": "CIRCULAR", + "itemBackgroundOpacity": 0.5, + "itemRarityBackgrounds": true, + "jacobMedalBackgrounds": true, + "legacyAttributeBackgrounds": true + }, + "itemProtection": { + "slotLockStyle": "FANCY", + "displayChatNotification": true, + "protectValuableConsumables": true + }, + "wikiLookup": { + "enableWikiLookup": true + }, + "specialEffects": { + "rareDungeonDropEffects": true, + "rareDropEffects": true, + "rareDyeDropEffects": true + }, + "lockedSlots": [ + 3, + 8, + 0 + ], + "protectedItems": [ + "10f84455-c063-4e3e-b6eb-cc485fe74a06", + "64e491fa-64ed-4abf-829a-940e1fb295d2", + "23a619b6-f487-419e-8598-10b8f21dc80a", + "416aa42d-27d4-4284-913f-d03fa1f528c3", + "4e2a7f16-7d93-4069-bfbd-a8ff8e42f285", + "63ec4f84-2005-45e5-a4b7-0c9ae84dc612", + "aba2b017-91e8-4263-ae9e-5a10f8dc91fe", + "f1391873-5126-496d-b0fe-c861faeaf681", + "bb84cfea-3fdd-4579-b5fa-907cd8123593", + "a604f533-49f6-4190-b971-08f725231229", + "333cba8d-3136-4494-9fa0-40dff482ef66", + "91f49338-fc0b-4601-a704-aabc44853318", + "d76e5eca-be47-4d0b-973c-3ec30fd176dc", + "301c58a7-9b8a-4c4e-9e8d-3e8a9471a916", + "c8ab629e-fc5b-4af0-8053-acb155411c9b", + "333a079f-93d4-48f1-af9f-862b1ecc417c", + "0843d8b0-b6a6-47fc-afde-8eee8c5455d9", + "8bcf2a99-68e6-4646-ac04-4c72e55c6818", + "214333db-d71c-4080-8487-00b4666bb9a4", + "5f6090c8-cbc4-4030-97ac-5018c151cc15", + "6b42c77f-1891-43a4-a9ea-4454e299a059", + "71ce1812-d1fd-4e71-98ad-8b863759a82f", + "253489d9-49d0-46c8-b3f8-b70c3663c5d2", + "1eba38b5-e0f6-4862-bf19-e2df33e21ce4", + "6033eff2-879d-494f-8dae-696fc8a3c82e", + "64162e02-91fb-4ec3-a57c-866436a99a7a", + "a299c718-c66b-4de5-9747-71c172ac4601", + "e21172ce-0a41-426a-a445-84a28677cd65", + "4bfd23bf-ceb8-4951-874d-e61633e088d8", + "575ce2c9-251e-4435-9020-de1a2e24b1d0", + "b06b8fe2-470a-43f3-b844-658472f20996", + "e54dea3d-ca45-451e-9ae4-0e5fb87e97b2", + "67b47348-da46-4257-833a-dd23fb074cc6", + "9f7597ec-c3c9-46df-9f36-8e76c8745a9d", + "e297dcef-2f3d-4fb3-9781-aaff6017178c", + "ad9a598d-e5c9-4293-92c8-5e41bebe913c", + "fa51c660-b262-4826-bed8-6138236919cb" + ], + "customItemNames": {}, + "customDyeColors": {}, + "customArmorTrims": { + "f1391873-5126-496d-b0fe-c861faeaf681": { + "material": "minecraft:amethyst", + "pattern": "minecraft:raiser" + }, + "81409da1-610c-445a-aba2-4c95a3cabbf2": { + "material": "minecraft:amethyst", + "pattern": "minecraft:coast" + } + }, + "customAnimatedDyes": { + "f1391873-5126-496d-b0fe-c861faeaf681": { + "keyframes": [ + { + "color": -16777216, + "time": 0.0 + }, + { + "color": -16777216, + "time": 1.0 + } + ], + "cycleBack": true, + "delay": 0.0, + "duration": 1.0 + } + }, + "customHelmetTextures": {}, + "customGlint": {}, + "customItemModel": {}, + "customArmorModel": {}, + "customAnimatedHelmetTextures": {} + }, + "uiAndVisuals": { + "swingOnAbilities": false, + "nightVisionStrength": 100, + "compactorDeletorPreview": true, + "dontStripSkinAlphaValues": true, + "backpackPreviewWithoutShift": true, + "hideEmptyTooltips": true, + "fancyCraftingTable": true, + "hideStatusEffectOverlay": false, + "showEquipmentInInventory": true, + "cancelComponentUpdateAnimation": true, + "showCustomizeButton": true, + "showConfigButton": false, + "trueQuiverCount": true, + "chestValue": { + "enableChestValue": true, + "color": "DARK_GREEN", + "incompleteColor": "BLUE" + }, + "itemCooldown": { + "enableItemCooldowns": true + }, + "museumOverlay": true, + "slotText": { + "slotTextMode": "ENABLED", + "textEnabled": {}, + "slotTextToggled": true + }, + "radialMenu": { + "enabled": false, + "tooltipsWithoutShift": false, + "enabledMenus": {} + }, + "inventorySearch": { + "enabled": "SKYBLOCK", + "ctrlK": false, + "clickableText": false + }, + "titleContainer": { + "titleContainerScale": 100.0, + "x": 482, + "y": 170, + "direction": "VERTICAL", + "alignment": "MIDDLE" + }, + "tabHud": { + "tabHudEnabled": true, + "tabHudScale": 100, + "showVanillaTabByDefault": true, + "style": "FANCY", + "displayIcons": true, + "compactWidgets": false, + "enableHudBackground": true, + "effectsFromFooter": false, + "defaultPositioning": "CENTERED", + "nameSorting": "ALPHABETICAL" + }, + "fancyAuctionHouse": { + "enabled": true, + "highlightCheapBIN": true + }, + "bars": { + "enableBars": true, + "enableBarsRift": true, + "riftHealthHP": false, + "enableVanillaStyleManaBar": false, + "intelligenceDisplay": "ORIGINAL", + "barPositions": { + "healthBarPosition": "LAYER1", + "manaBarPosition": "LAYER1", + "defenceBarPosition": "RIGHT", + "experienceBarPosition": "RIGHT" + } + }, + "waypoints": { + "enableWaypoints": true, + "waypointType": "WAYPOINT", + "renderLine": true, + "lineColor": -16711936, + "lineWidth": 5.0, + "allowSkippingWaypoints": true, + "allowGoingBackwards": true, + "enableChatWaypoints": true + }, + "teleportOverlay": { + "enableTeleportOverlays": true, + "showWhenInAir": false, + "teleportOverlayColor": 2138445204, + "enableWeirdTransmission": true, + "enableInstantTransmission": true, + "enableEtherTransmission": true, + "enableSinrecallTransmission": true, + "enableWitherImpact": true + }, + "smoothAOTE": { + "predictive": false, + "enableWeirdTransmission": false, + "enableInstantTransmission": false, + "enableEtherTransmission": false, + "enableSinrecallTransmission": false, + "enableWitherImpact": false, + "maximumAddedLag": 100 + }, + "searchOverlay": { + "enableBazaar": true, + "enableAuctionHouse": true, + "enableMuseum": true, + "keepPreviousSearches": false, + "maxSuggestions": 5, + "historyLength": 5, + "enableCommands": false, + "bazaarHistory": [ + "Enchanted Snow Block", + "Recombobulator 3000", + "Enchanted Snow Block", + "Recombobulator 3000", + "Enchanted Snow Block" + ], + "auctionHistory": [ + "God Potion", + "New Year Cake (Year 30", + "New Year Cake (Year 31", + "New Year Cake (Year 32", + "New Year Cake (Year 2" + ], + "museumHistory": [] + }, + "bazaarQuickQuantities": { + "enabled": false, + "closeSignOnUse": false, + "slot1Quantity": 28, + "slot2Quantity": 2240, + "slot3Quantity": 256 + }, + "inputCalculator": { + "enabled": true, + "requiresEquals": false, + "closeSignsWithEnter": true + }, + "flameOverlay": { + "flameHeight": 0, + "flameOpacity": 0 + }, + "compactDamage": { + "enabled": true, + "maxPrecision": 4, + "normalDamageColor": -1, + "critDamageGradientStart": -171, + "critDamageGradientEnd": -43691 + }, + "healthBars": { + "enabled": false, + "scale": 1.5, + "removeHealthFromName": true, + "removeMaxHealthFromName": true, + "applyToHealthOnlyMobs": true, + "hideFullHealth": false, + "fullBarColor": -16711936, + "halfBarColor": -256, + "emptyBarColor": -65536 + }, + "gyroOverlay": { + "gyroOverlayMode": "OFF", + "gyroOverlayColor": 2138445204 + }, + "itemPickup": { + "enabled": false, + "sackNotifications": false, + "showItemName": true, + "lifeTime": 3, + "splitNotifications": false + } + }, + "helpers": { + "enableNewYearCakesHelper": true, + "enableBitsTooltip": true, + "enableWardrobeHelper": true, + "enableDateCalculator": true, + "enableCopyUnderbidPrice": false, + "enableBuildersWandPreview": true, + "enableAnvilHelper": true, + "enableAccessoriesHelperWidget": true, + "mythologicalRitual": { + "enableMythologicalRitualHelper": true + }, + "jerry": { + "enableJerryTimer": false + }, + "experiments": { + "enableChronomatronSolver": true, + "enableSuperpairsSolver": true, + "enableUltrasequencerSolver": true, + "blockIncorrectClicks": false + }, + "fishing": { + "enableFishingHelper": true, + "enableFishingTimer": false, + "hideOtherPlayersRods": false, + "enableFishingHud": true, + "fishingHudEnabledLocations": [ + "PRIVATE_ISLAND", + "GARDEN", + "HUB", + "THE_FARMING_ISLAND", + "THE_PARK", + "SPIDERS_DEN", + "BLAZING_FORTRESS", + "THE_END", + "CRIMSON_ISLE", + "GOLD_MINE", + "DEEP_CAVERNS", + "DWARVEN_MINES", + "BACKWATER_BAYOU", + "DUNGEON_HUB", + "WINTER_ISLAND", + "THE_RIFT", + "DARK_AUCTION", + "CRYSTAL_HOLLOWS", + "DUNGEON", + "KUUDRAS_HOLLOW", + "GLACITE_MINESHAFTS", + "GALATEA", + "UNKNOWN" + ], + "enableSeaCreatureCounter": true, + "fishingHookDisplay": "HUD", + "onlyShowHudInBarn": true, + "timerLength": 340, + "seaCreatureTimerNotification": true, + "seaCreatureCap": 30, + "seaCreatureCapNotification": true, + "minimumNotificationRarity": "EPIC" + }, + "fairySouls": { + "enableFairySoulsHelper": true, + "highlightFoundSouls": false, + "highlightOnlyNearbySouls": false + }, + "chocolateFactory": { + "enableChocolateFactoryHelper": true, + "enableTimeTowerReminder": true, + "straySound": true, + "enableEggFinder": true, + "sendEggFoundMessages": true, + "waypointType": "WAYPOINT", + "showThroughWalls": false + }, + "carnival": { + "catchAFishHelper": true, + "zombieShootoutHelper": true + }, + "bazaar": { + "enableBazaarHelper": true, + "enableReorderHelper": true, + "enableOrderTracker": true + }, + "itemPrice": { + "enableItemPriceLookup": true, + "enableItemPriceRefresh": true + }, + "greatSpookEvent": { + "enableMathTeacherHelper": true + } + }, + "dungeons": { + "fancyPartyFinder": true, + "croesusHelper": true, + "salvageHelper": true, + "onlyHighlightDonatedItems": false, + "sellableItemsHighlighter": true, + "bloodCampHelper": false, + "playerSecretsTracker": true, + "classBasedPlayerGlow": true, + "starredMobGlow": true, + "starredMobBoundingBoxes": true, + "highlightDoorKeys": true, + "allowDroppingProtectedItems": false, + "dungeonSplits": false, + "hideSoulweaverSkulls": false, + "dungeonMap": { + "enableMap": true, + "fancyMap": true, + "showSelfHead": true, + "showRoomLabels": true, + "roomLabelType": "ROOM_NAME_AND_SECRETS_FOUND", + "hideCheckmarks": true, + "showOutline": true, + "backgroundBlur": false, + "mapScaling": 1.0, + "mapX": 2, + "mapY": 2 + }, + "leapOverlay": { + "enableLeapOverlay": true, + "leapKeybinds": true, + "showMap": true, + "scale": 1.2, + "enableLeapMessage": false, + "leapMessage": "Leaped to [name]!" + }, + "puzzleSolvers": { + "solveTicTacToe": true, + "solveThreeWeirdos": true, + "creeperSolver": true, + "waterboardOneFlow": true, + "previewWaterPath": true, + "previewLeverEffects": true, + "blazeSolver": true, + "solveBoulder": true, + "solveIceFill": true, + "solveSilverfish": true, + "solveTrivia": true, + "solveTeleportMaze": true + }, + "theProfessor": { + "fireFreezeStaffTimer": true, + "floor3GuardianHealthDisplay": true + }, + "livid": { + "enableSolidColor": false, + "customColor": -65536, + "enableLividColorGlow": true, + "enableLividColorBoundingBox": true, + "enableLividColorText": true, + "enableLividColorTitle": true, + "lividColorText": "[color] is sus" + }, + "terminals": { + "solveColor": true, + "solveSameColor": true, + "solveOrder": true, + "solveStartsWith": true, + "blockIncorrectClicks": false + }, + "devices": { + "solveSimonSays": true, + "solveLightsOn": true, + "solveArrowAlign": true, + "solveTargetPractice": true + }, + "goldor": { + "enableGoldorWaypoints": true, + "waypointType": "WAYPOINT" + }, + "terminalHud": { + "enableTerminalHud": false, + "showTerminalStatus": true, + "showPlayerAtTerminal": true, + "showTerminals": true, + "showDevice": true, + "showLevers": true, + "showGate": true + }, + "secretWaypoints": { + "enableSecretWaypoints": true, + "waypointType": "OUTLINED_HIGHLIGHT", + "adaptiveBoxSize": false, + "showSecretText": true, + "enableEntranceWaypoints": true, + "enableSuperboomWaypoints": true, + "enableChestWaypoints": true, + "enableItemWaypoints": true, + "enableBatWaypoints": true, + "enableWitherWaypoints": true, + "enableRedstoneKeyWaypoints": true, + "enableLeverWaypoints": true, + "enableFairySoulWaypoints": true, + "enableStonkWaypoints": false, + "enableAotvWaypoints": true, + "enablePearlWaypoints": true, + "enablePrinceWaypoints": true, + "enableDefaultWaypoints": true + }, + "secretSync": { + "receiveRoomMatch": true, + "receiveRoomSecretCount": true, + "hideReceivedWaypoints": true + }, + "mimicMessage": { + "sendMimicMessage": true + }, + "princeMessage": { + "sendPrinceMessage": true + }, + "doorHighlight": { + "enableDoorHighlight": true, + "doorHighlightType": "OUTLINED_HIGHLIGHT" + }, + "dungeonScore": { + "enableDungeonScore270Message": false, + "enableDungeonScore270Title": false, + "enableDungeonScore270Sound": false, + "dungeonScore270Message": "270 Score Reached!", + "enableDungeonScore300Message": true, + "enableDungeonScore300Title": true, + "enableDungeonScore300Sound": true, + "dungeonScore300Message": "[做得好] 300 Social Credit has been added to your account. Enjoy your boss fight.", + "enableDungeonCryptsMessage": true, + "dungeonCryptsMessageThreshold": 250, + "dungeonCryptsMessage": "We only have [crypts] crypts out of 5, we need more!", + "enableScoreHUD": true, + "scoreX": 25, + "scoreY": 134, + "scoreScaling": 1.0 + }, + "dungeonChestProfit": { + "enableProfitCalculator": true, + "includeKismet": true, + "includeEssence": false, + "croesusProfit": true, + "neutralThreshold": 1000, + "neutralColor": "DARK_GRAY", + "profitColor": "DARK_GREEN", + "lossColor": "RED", + "incompleteColor": "BLUE" + } + }, + "foraging": { + "galatea": { + "enableForestNodeHelper": true, + "solveForestTemplePuzzle": true, + "enableLushlilacHighlighter": true, + "enableSeaLumiesHighlighter": true, + "seaLumiesMinimumCount": 3, + "enableTreeBreakProgress": true, + "enableTunerSolver": true, + "enableSweepDetailsWidget": true + }, + "sweepOverlay": { + "enableSweepOverlay": true, + "enableThrownAbilityOverlay": true, + "sweepOverlayColor": 1090491904 + } + }, + "crimsonIsle": { + "kuudra": { + "supplyWaypoints": true, + "fuelWaypoints": true, + "suppliesAndFuelWaypointType": "WAYPOINT", + "ballistaBuildWaypoints": true, + "safeSpotWaypoints": true, + "pearlWaypoints": true, + "noArrowPoisonWarning": true, + "arrowPoisonThreshold": 16, + "kuudraGlow": true, + "dangerWarning": true + }, + "dojo": { + "enableForceHelper": true, + "enableStaminaHelper": true, + "enableMasteryHelper": true, + "enableDisciplineHelper": true, + "enableSwiftnessHelper": true, + "enableControlHelper": true, + "enableTenacityHelper": true + }, + "extendNetherFog": true + }, + "mining": { + "enableDrillFuel": true, + "commissionHighlight": true, + "callMismyla": true, + "redialOnBadSignal": true, + "enablePickobulusHelper": true, + "pickobulusHelper": { + "enablePickobulusHud": true, + "hideHudOnCooldown": false + }, + "dwarvenMines": { + "solveFetchur": true, + "solvePuzzler": true, + "enableCarpetHighlighter": true, + "carpetHighlightColor": 1291780096 + }, + "crystalHollows": { + "metalDetectorHelper": true, + "nucleusWaypoints": false, + "chestHighlighter": true, + "chestHighlightColor": -2147483393, + "enablePowderTracker": true, + "countNaturalChestsInTracker": true, + "powderTrackerFilter": [] + }, + "crystalsHud": { + "enabled": true, + "showLocations": true, + "locationSize": 8, + "x": 10, + "y": 130, + "mapScaling": 1.0 + }, + "crystalsWaypoints": { + "enabled": true, + "findInChat": true, + "wishingCompassSolver": true, + "shareFairyGrotto": true + }, + "commissionWaypoints": { + "mode": "BOTH", + "useColor": true, + "showBaseCamp": false, + "showEmissary": true, + "hideEmissaryOnPigeon": true + }, + "glacite": { + "coldOverlay": true, + "fossilSolver": true, + "enableCorpseFinder": true, + "enableParsingChatCorpseFinder": true, + "autoShareCorpses": false, + "enableCorpseProfitTracker": true, + "forceEnglishCorpseProfitTracker": true + }, + "blockBreakPrediction": { + "enabled": false, + "playSound": false + } + }, + "farming": { + "garden": { + "farmingHud": { + "enableHud": true, + "x": 180, + "y": 0, + "type": "BOTH" + }, + "pestHighlighter": true, + "vinylHighlighter": true, + "lockMouseTool": true, + "lockMouseGroundOnly": true, + "gardenPlotsWidget": true, + "closeScreenOnPlotClick": false, + "enableStereoHarmonyHelperForContest": true + }, + "visitorHelper": { + "visitorHelper": true, + "visitorHelperGardenOnly": true, + "showStacksInVisitorHelper": false + } + }, + "hunting": { + "huntingBox": { + "enabled": true + }, + "huntingMobs": { + "silencePhantoms": true, + "highlightHideonleaf": true, + "hideonleafGlowColor": -256, + "highlightShellwise": true, + "shellwiseGlowColor": -38881, + "highlightCoralot": true, + "coralotGlowColor": -16776961 + }, + "lassoHud": { + "enabled": true + } + }, + "otherLocations": { + "barn": { + "enableGlowingMushroomHelper": true, + "solveHungryHiker": true, + "solveTreasureHunter": true, + "enableCallTrevorMessage": true + }, + "rift": { + "mirrorverseWaypoints": true, + "blobbercystGlow": true, + "enigmaSoulWaypoints": false, + "highlightFoundEnigmaSouls": true, + "mcGrubberStacks": 0 + }, + "end": { + "enableEnderNodeHelper": true, + "enderNodeWaypointType": "OUTLINED_HIGHLIGHT", + "hudEnabled": true, + "zealotKillsEnabled": true, + "protectorLocationEnabled": true, + "waypoint": true, + "muteEndermanSounds": true, + "x": 10, + "y": 10 + }, + "spidersDen": { + "relics": { + "enableRelicsHelper": true, + "highlightFoundRelics": false + } + } + }, + "slayers": { + "highlightMinis": "GLOW", + "highlightBosses": "GLOW", + "highlightColor": -47104, + "displayBossbar": true, + "bossSpawnAlert": true, + "miniBossSpawnAlert": true, + "alertOtherMinibosses": false, + "showMiniBossNameInAlert": false, + "slainTime": true, + "enableHud": true, + "hideSlayerMinibossSpawn": "PASS", + "highlightUnclaimedRewards": true, + "callMaddox": { + "sendMessageOnFail": true, + "sendMessageOnKill": false + }, + "endermanSlayer": { + "enableYangGlyphsNotification": true, + "highlightBeacons": true, + "highlightNukekubiHeads": true, + "lazerTimer": true + }, + "vampireSlayer": { + "enableEffigyWaypoints": true, + "compactEffigyWaypoints": false, + "effigyUpdateFrequency": 5, + "enableHolyIceIndicator": true, + "holyIceIndicatorTickDelay": 10, + "holyIceUpdateFrequency": 5, + "enableHealingMelonIndicator": true, + "healingMelonHealthThreshold": 4.0, + "enableSteakStakeIndicator": true, + "steakStakeUpdateFrequency": 5, + "enableManiaIndicator": true, + "maniaUpdateFrequency": 5 + }, + "blazeSlayer": { + "firePillarCountdown": "SOUND_AND_VISUAL", + "attunementHighlights": true, + "muteBlazeSounds": true, + "hideHellionShield": "PASS" + }, + "wolfSlayer": { + "muteWolfSounds": false, + "hideSvenPupNametag": true + }, + "spiderSlayer": { + "muteSpiderSounds": false + } + }, + "chat": { + "skyblockXpMessages": true, + "confirmationPromptHelper": false, + "toastDisplayDuration": 4.0, + "hideAbility": "ACTION_BAR", + "hideHeal": "PASS", + "hideAOTE": "ACTION_BAR", + "hideImplosion": "PASS", + "hideMoltenWave": "PASS", + "hideAds": "FILTER", + "hideTeleportPad": "PASS", + "hideCombo": "PASS", + "hideAutopet": "PASS", + "hideShowOff": "FILTER", + "hideToggleSkyMall": "PASS", + "hideToggleLottery": "PASS", + "hideMimicKill": "PASS", + "hideDeath": "PASS", + "hideMana": false, + "hideDungeonBreaker": "PASS", + "chatRuleConfig": { + "announcementLength": 60 + } + }, + "quickNav": { + "enableQuickNav": true, + "button1": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:diamond_sword", + "count": 1, + "components": "[]" + }, + "uiTitle": "Your Skills", + "tooltip": "", + "clickEvent": "/skills" + }, + "button2": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:painting", + "count": 1, + "components": "[]" + }, + "uiTitle": "Collections", + "tooltip": "", + "clickEvent": "/collection" + }, + "button3": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:bone", + "count": 1, + "components": "[]" + }, + "uiTitle": "Pets(:? \\(\\d+\\/\\d+\\))?", + "tooltip": "", + "clickEvent": "/pets" + }, + "button4": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:leather_chestplate", + "count": 1, + "components": "[minecraft:dyed_color\u003d8991416]" + }, + "uiTitle": "Wardrobe \\([12]/2\\)", + "tooltip": "", + "clickEvent": "/wardrobe" + }, + "button5": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:player_head", + "count": 1, + "components": "[minecraft:profile\u003d{id:[I;-2081424676,-57521078,-2073572414,158072763],name:\"\",properties:[{name:\"textures\",value:\"ewogICJ0aW1lc3RhbXAiIDogMTU5MTMxMDU4NTYwOSwKICAicHJvZmlsZUlkIiA6ICI0MWQzYWJjMmQ3NDk0MDBjOTA5MGQ1NDM0ZDAzODMxYiIsCiAgInByb2ZpbGVOYW1lIiA6ICJNZWdha2xvb24iLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODBhMDc3ZTI0OGQxNDI3NzJlYTgwMDg2NGY4YzU3OGI5ZDM2ODg1YjI5ZGFmODM2YjY0YTcwNjg4MmI2ZWMxMCIKICAgIH0KICB9Cn0\u003d\"}]}]" + }, + "uiTitle": "Sack of Sacks", + "tooltip": "", + "clickEvent": "/sacks" + }, + "button6": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:ender_chest", + "count": 1, + "components": "[]" + }, + "uiTitle": "Storage", + "tooltip": "", + "clickEvent": "/storage" + }, + "button7": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:ender_chest", + "count": 1, + "components": "[]" + }, + "uiTitle": "(?:Rift )?Storage(?: \\(\\d/\\d\\))?", + "tooltip": "Storage", + "clickEvent": "/storage" + }, + "button8": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:player_head", + "count": 1, + "components": "[minecraft:profile\u003d{id:[I;-300151517,-631415889,-1193921967,-1821784279],name:\"\",properties:[{name:\"textures\",value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDdjYzY2ODc0MjNkMDU3MGQ1NTZhYzUzZTA2NzZjYjU2M2JiZGQ5NzE3Y2Q4MjY5YmRlYmVkNmY2ZDRlN2JmOCJ9fX0\u003d\"}]}]" + }, + "uiTitle": "none", + "tooltip": "", + "clickEvent": "/hub" + }, + "button9": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:player_head", + "count": 1, + "components": "[minecraft:profile\u003d{id:[I;1605800870,415127827,-1236127084,15358548],name:\"\",properties:[{name:\"textures\",value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzg5MWQ1YjI3M2ZmMGJjNTBjOTYwYjJjZDg2ZWVmMWM0MGExYjk0MDMyYWU3MWU3NTQ3NWE1NjhhODI1NzQyMSJ9fX0\u003d\"}]}]" + }, + "uiTitle": "none", + "tooltip": "", + "clickEvent": "/warp dungeon_hub" + }, + "button10": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:player_head", + "count": 1, + "components": "[minecraft:profile\u003d{id:[I;-562285948,532499670,-1705302742,775653035],name:\"\",properties:[{name:\"textures\",value:\"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjVkZjU1NTkyNjQzMGQ1ZDc1YWRlZDIxZGQ5NjE5Yjc2YzViN2NhMmM3ZjU0MDE0NDA1MjNkNTNhOGJjZmFhYiJ9fX0\u003d\"}]}]" + }, + "uiTitle": "Visit prtl", + "tooltip": "", + "clickEvent": "/visit prtl" + }, + "button11": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:enchanting_table", + "count": 1, + "components": "[]" + }, + "uiTitle": "Enchant Item", + "tooltip": "", + "clickEvent": "/etable" + }, + "button12": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:anvil", + "count": 1, + "components": "[]" + }, + "uiTitle": "Anvil", + "tooltip": "", + "clickEvent": "/anvil" + }, + "button13": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:crafting_table", + "count": 1, + "components": "[]" + }, + "uiTitle": "Craft Item", + "tooltip": "", + "clickEvent": "/craft" + }, + "button14": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:crafting_table", + "count": 1, + "components": "[]" + }, + "uiTitle": "Craft Item", + "tooltip": "Crafting Table", + "clickEvent": "/craft" + } + }, + "eventNotifications": { + "criterion": "SKYBLOCK", + "reminderSound": "PLING", + "eventsReminderTimes": {} + }, + "misc": { + "richPresence": { + "enableRichPresence": false, + "info": "LOCATION", + "cycleMode": false, + "customMessage": "Playing Skyblock" + }, + "configBackend": "MOUL_CONFIG", + "cat": true + }, + "debug": { + "dumpRange": 5, + "dumpFormat": "SNBT", + "showInvisibleArmorStands": false, + "webSocketDebug": false, + "corpseFinderDebug": false + } +} diff --git a/src/test/resources/assets/skyblocker/config/skyblocker-v7.json b/src/test/resources/assets/skyblocker/config/skyblocker-v7.json new file mode 100644 index 00000000000..bebf49f5eb8 --- /dev/null +++ b/src/test/resources/assets/skyblocker/config/skyblocker-v7.json @@ -0,0 +1,1001 @@ +{ + "version": 7, + "general": { + "enableTips": true, + "acceptReparty": true, + "speedPresets": { + "enableSpeedPresets": true + }, + "shortcuts": { + "enableShortcuts": true, + "enableCommandShortcuts": true, + "enableCommandArgShortcuts": true, + "enableKeyBindingShortcuts": true + }, + "quiverWarning": { + "enableQuiverWarning": true, + "enableQuiverWarningInDungeons": true, + "enableQuiverWarningAfterDungeon": true + }, + "itemList": { + "enableItemList": true, + "enableCollapsibleEntries": true + }, + "itemTooltip": { + "enableNPCPrice": true, + "enableMotesPrice": true, + "enableAvgBIN": true, + "avg": "THREE_DAY", + "enableLowestBIN": true, + "enableBazaarPrice": true, + "enableCraftingCost": "OFF", + "enableObtainedDate": true, + "enableMuseumInfo": true, + "enableExoticTooltip": true, + "enableAccessoriesHelper": true, + "dungeonQuality": true, + "showEssenceCost": true, + "enableEstimatedItemValue": true, + "enableStackingEnchantProgress": true, + "enableEvolvingItemProgress": true + }, + "itemInfoDisplay": { + "itemBackgroundStyle": "CIRCULAR", + "itemBackgroundOpacity": 0.5, + "itemRarityBackgrounds": true, + "jacobMedalBackgrounds": true, + "legacyAttributeBackgrounds": true + }, + "itemProtection": { + "slotLockStyle": "FANCY", + "displayChatNotification": true, + "protectValuableConsumables": true + }, + "wikiLookup": { + "enableWikiLookup": true + }, + "specialEffects": { + "rareDungeonDropEffects": true, + "rareDropEffects": true, + "rareDyeDropEffects": true + }, + "lockedSlots": [ + 3, + 8, + 0 + ], + "protectedItems": [ + "10f84455-c063-4e3e-b6eb-cc485fe74a06", + "64e491fa-64ed-4abf-829a-940e1fb295d2", + "23a619b6-f487-419e-8598-10b8f21dc80a", + "416aa42d-27d4-4284-913f-d03fa1f528c3", + "4e2a7f16-7d93-4069-bfbd-a8ff8e42f285", + "63ec4f84-2005-45e5-a4b7-0c9ae84dc612", + "aba2b017-91e8-4263-ae9e-5a10f8dc91fe", + "f1391873-5126-496d-b0fe-c861faeaf681", + "bb84cfea-3fdd-4579-b5fa-907cd8123593", + "a604f533-49f6-4190-b971-08f725231229", + "333cba8d-3136-4494-9fa0-40dff482ef66", + "91f49338-fc0b-4601-a704-aabc44853318", + "d76e5eca-be47-4d0b-973c-3ec30fd176dc", + "301c58a7-9b8a-4c4e-9e8d-3e8a9471a916", + "c8ab629e-fc5b-4af0-8053-acb155411c9b", + "333a079f-93d4-48f1-af9f-862b1ecc417c", + "0843d8b0-b6a6-47fc-afde-8eee8c5455d9", + "8bcf2a99-68e6-4646-ac04-4c72e55c6818", + "214333db-d71c-4080-8487-00b4666bb9a4", + "5f6090c8-cbc4-4030-97ac-5018c151cc15", + "6b42c77f-1891-43a4-a9ea-4454e299a059", + "71ce1812-d1fd-4e71-98ad-8b863759a82f", + "253489d9-49d0-46c8-b3f8-b70c3663c5d2", + "1eba38b5-e0f6-4862-bf19-e2df33e21ce4", + "6033eff2-879d-494f-8dae-696fc8a3c82e", + "64162e02-91fb-4ec3-a57c-866436a99a7a", + "a299c718-c66b-4de5-9747-71c172ac4601", + "e21172ce-0a41-426a-a445-84a28677cd65", + "4bfd23bf-ceb8-4951-874d-e61633e088d8", + "575ce2c9-251e-4435-9020-de1a2e24b1d0", + "b06b8fe2-470a-43f3-b844-658472f20996", + "e54dea3d-ca45-451e-9ae4-0e5fb87e97b2", + "67b47348-da46-4257-833a-dd23fb074cc6", + "9f7597ec-c3c9-46df-9f36-8e76c8745a9d", + "e297dcef-2f3d-4fb3-9781-aaff6017178c", + "ad9a598d-e5c9-4293-92c8-5e41bebe913c", + "fa51c660-b262-4826-bed8-6138236919cb" + ], + "customItemNames": {}, + "customDyeColors": {}, + "customArmorTrims": { + "f1391873-5126-496d-b0fe-c861faeaf681": { + "material": "minecraft:amethyst", + "pattern": "minecraft:raiser" + }, + "81409da1-610c-445a-aba2-4c95a3cabbf2": { + "material": "minecraft:amethyst", + "pattern": "minecraft:coast" + } + }, + "customAnimatedDyes": { + "f1391873-5126-496d-b0fe-c861faeaf681": { + "keyframes": [ + { + "color": -16777216, + "time": 0.0 + }, + { + "color": -16777216, + "time": 1.0 + } + ], + "cycleBack": true, + "delay": 0.0, + "duration": 1.0 + } + }, + "customHelmetTextures": {}, + "customGlint": {}, + "customItemModel": {}, + "customArmorModel": {}, + "customAnimatedHelmetTextures": {} + }, + "uiAndVisuals": { + "swingOnAbilities": false, + "nightVisionStrength": 100, + "compactorDeletorPreview": true, + "dontStripSkinAlphaValues": true, + "backpackPreviewWithoutShift": true, + "hideEmptyTooltips": true, + "fancyCraftingTable": true, + "hideStatusEffectOverlay": false, + "showEquipmentInInventory": true, + "cancelComponentUpdateAnimation": true, + "showCustomizeButton": true, + "showConfigButton": false, + "trueQuiverCount": true, + "chestValue": { + "enableChestValue": true, + "color": "DARK_GREEN", + "incompleteColor": "BLUE" + }, + "itemCooldown": { + "enableItemCooldowns": true + }, + "museumOverlay": true, + "slotText": { + "slotTextMode": "ENABLED", + "textEnabled": {}, + "slotTextToggled": true + }, + "radialMenu": { + "enabled": false, + "tooltipsWithoutShift": false, + "enabledMenus": {} + }, + "inventorySearch": { + "enabled": "SKYBLOCK", + "ctrlK": false, + "clickableText": false + }, + "titleContainer": { + "titleContainerScale": 100.0, + "x": 482, + "y": 170, + "direction": "VERTICAL", + "alignment": "MIDDLE" + }, + "tabHud": { + "tabHudEnabled": true, + "tabHudScale": 100, + "showVanillaTabByDefault": true, + "style": "FANCY", + "displayIcons": true, + "compactWidgets": false, + "enableHudBackground": true, + "effectsFromFooter": false, + "defaultPositioning": "CENTERED", + "nameSorting": "ALPHABETICAL" + }, + "fancyAuctionHouse": { + "enabled": true, + "highlightCheapBIN": true + }, + "bars": { + "enableBars": true, + "enableBarsRift": true, + "riftHealthHP": false, + "enableVanillaStyleManaBar": false, + "intelligenceDisplay": "ORIGINAL", + "barPositions": { + "healthBarPosition": "LAYER1", + "manaBarPosition": "LAYER1", + "defenceBarPosition": "RIGHT", + "experienceBarPosition": "RIGHT" + } + }, + "waypoints": { + "enableWaypoints": true, + "waypointType": "WAYPOINT", + "renderLine": true, + "lineColor": -16711936, + "lineWidth": 5.0, + "allowSkippingWaypoints": true, + "allowGoingBackwards": true, + "enableChatWaypoints": true + }, + "teleportOverlay": { + "enableTeleportOverlays": true, + "showWhenInAir": false, + "teleportOverlayColor": 2138445204, + "enableWeirdTransmission": true, + "enableInstantTransmission": true, + "enableEtherTransmission": true, + "enableSinrecallTransmission": true, + "enableWitherImpact": true + }, + "smoothAOTE": { + "predictive": false, + "enableWeirdTransmission": false, + "enableInstantTransmission": false, + "enableEtherTransmission": false, + "enableSinrecallTransmission": false, + "enableWitherImpact": false, + "maximumAddedLag": 100 + }, + "searchOverlay": { + "enableBazaar": true, + "enableAuctionHouse": true, + "enableMuseum": true, + "keepPreviousSearches": false, + "maxSuggestions": 5, + "historyLength": 5, + "enableCommands": false, + "bazaarHistory": [ + "Enchanted Snow Block", + "Recombobulator 3000", + "Enchanted Snow Block", + "Recombobulator 3000", + "Enchanted Snow Block" + ], + "auctionHistory": [ + "God Potion", + "New Year Cake (Year 30", + "New Year Cake (Year 31", + "New Year Cake (Year 32", + "New Year Cake (Year 2" + ], + "museumHistory": [] + }, + "bazaarQuickQuantities": { + "enabled": false, + "closeSignOnUse": false, + "slot1Quantity": 28, + "slot2Quantity": 2240, + "slot3Quantity": 256 + }, + "inputCalculator": { + "enabled": true, + "requiresEquals": false, + "closeSignsWithEnter": true + }, + "flameOverlay": { + "flameHeight": 0, + "flameOpacity": 0 + }, + "compactDamage": { + "enabled": true, + "maxPrecision": 4, + "normalDamageColor": -1, + "critDamageGradientStart": -171, + "critDamageGradientEnd": -43691 + }, + "healthBars": { + "enabled": false, + "scale": 1.5, + "removeHealthFromName": true, + "removeMaxHealthFromName": true, + "applyToHealthOnlyMobs": true, + "hideFullHealth": false, + "fullBarColor": -16711936, + "halfBarColor": -256, + "emptyBarColor": -65536 + }, + "gyroOverlay": { + "gyroOverlayMode": "OFF", + "gyroOverlayColor": 2138445204 + }, + "itemPickup": { + "enabled": false, + "sackNotifications": false, + "showItemName": true, + "lifeTime": 3, + "splitNotifications": false + } + }, + "helpers": { + "enableNewYearCakesHelper": true, + "enableBitsTooltip": true, + "enableWardrobeHelper": true, + "enableDateCalculator": true, + "enableCopyUnderbidPrice": false, + "enableBuildersWandPreview": true, + "enableAnvilHelper": true, + "enableAccessoriesHelperWidget": true, + "mythologicalRitual": { + "enableMythologicalRitualHelper": true + }, + "jerry": { + "enableJerryTimer": false + }, + "experiments": { + "enableChronomatronSolver": true, + "enableSuperpairsSolver": true, + "enableUltrasequencerSolver": true, + "blockIncorrectClicks": false + }, + "fishing": { + "enableFishingHelper": true, + "enableFishingTimer": false, + "hideOtherPlayersRods": false, + "enableFishingHud": true, + "fishingHudEnabledLocations": [ + "PRIVATE_ISLAND", + "GARDEN", + "HUB", + "THE_FARMING_ISLAND", + "THE_PARK", + "SPIDERS_DEN", + "BLAZING_FORTRESS", + "THE_END", + "CRIMSON_ISLE", + "GOLD_MINE", + "DEEP_CAVERNS", + "DWARVEN_MINES", + "BACKWATER_BAYOU", + "DUNGEON_HUB", + "WINTER_ISLAND", + "THE_RIFT", + "DARK_AUCTION", + "CRYSTAL_HOLLOWS", + "DUNGEON", + "KUUDRAS_HOLLOW", + "GLACITE_MINESHAFTS", + "GALATEA", + "UNKNOWN" + ], + "enableSeaCreatureCounter": true, + "fishingHookDisplay": "HUD", + "onlyShowHudInBarn": true, + "timerLength": 340, + "seaCreatureTimerNotification": true, + "seaCreatureCap": 30, + "seaCreatureCapNotification": true, + "minimumNotificationRarity": "EPIC" + }, + "fairySouls": { + "enableFairySoulsHelper": true, + "highlightFoundSouls": false, + "highlightOnlyNearbySouls": false + }, + "chocolateFactory": { + "enableChocolateFactoryHelper": true, + "enableTimeTowerReminder": true, + "straySound": true, + "enableEggFinder": true, + "sendEggFoundMessages": true, + "waypointType": "WAYPOINT", + "showThroughWalls": false + }, + "carnival": { + "catchAFishHelper": true, + "zombieShootoutHelper": true + }, + "bazaar": { + "enableBazaarHelper": true, + "enableReorderHelper": true, + "enableOrderTracker": true + }, + "itemPrice": { + "enableItemPriceLookup": true, + "enableItemPriceRefresh": true + }, + "greatSpookEvent": { + "enableMathTeacherHelper": true + }, + "buildersWand": { + "enableBuildersWandPreview": true + } + }, + "dungeons": { + "fancyPartyFinder": true, + "croesusHelper": true, + "salvageHelper": true, + "onlyHighlightDonatedItems": false, + "sellableItemsHighlighter": true, + "bloodCampHelper": false, + "playerSecretsTracker": true, + "classBasedPlayerGlow": true, + "starredMobGlow": true, + "starredMobBoundingBoxes": true, + "highlightDoorKeys": true, + "allowDroppingProtectedItems": false, + "dungeonSplits": false, + "hideSoulweaverSkulls": false, + "dungeonMap": { + "enableMap": true, + "fancyMap": true, + "showSelfHead": true, + "showRoomLabels": true, + "roomLabelType": "ROOM_NAME_AND_SECRETS_FOUND", + "hideCheckmarks": true, + "showOutline": true, + "backgroundBlur": false, + "mapScaling": 1.0, + "mapX": 2, + "mapY": 2 + }, + "leapOverlay": { + "enableLeapOverlay": true, + "leapKeybinds": true, + "showMap": true, + "scale": 1.2, + "enableLeapMessage": false, + "leapMessage": "Leaped to [name]!" + }, + "puzzleSolvers": { + "solveTicTacToe": true, + "solveThreeWeirdos": true, + "creeperSolver": true, + "waterboardOneFlow": true, + "previewWaterPath": true, + "previewLeverEffects": true, + "blazeSolver": true, + "solveBoulder": true, + "solveIceFill": true, + "solveSilverfish": true, + "solveTrivia": true, + "solveTeleportMaze": true + }, + "theProfessor": { + "fireFreezeStaffTimer": true, + "floor3GuardianHealthDisplay": true + }, + "livid": { + "enableSolidColor": false, + "customColor": -65536, + "enableLividColorGlow": true, + "enableLividColorBoundingBox": true, + "enableLividColorText": true, + "enableLividColorTitle": true, + "lividColorText": "[color] is sus" + }, + "terminals": { + "solveColor": true, + "solveSameColor": true, + "solveOrder": true, + "solveStartsWith": true, + "blockIncorrectClicks": false + }, + "devices": { + "solveSimonSays": true, + "solveLightsOn": true, + "solveArrowAlign": true, + "solveTargetPractice": true + }, + "goldor": { + "enableGoldorWaypoints": true, + "waypointType": "WAYPOINT" + }, + "terminalHud": { + "enableTerminalHud": false, + "showTerminalStatus": true, + "showPlayerAtTerminal": true, + "showTerminals": true, + "showDevice": true, + "showLevers": true, + "showGate": true + }, + "secretWaypoints": { + "enableSecretWaypoints": true, + "waypointType": "OUTLINED_HIGHLIGHT", + "adaptiveBoxSize": false, + "showSecretText": true, + "enableEntranceWaypoints": true, + "enableSuperboomWaypoints": true, + "enableChestWaypoints": true, + "enableItemWaypoints": true, + "enableBatWaypoints": true, + "enableWitherWaypoints": true, + "enableRedstoneKeyWaypoints": true, + "enableLeverWaypoints": true, + "enableFairySoulWaypoints": true, + "enableStonkWaypoints": false, + "enableAotvWaypoints": true, + "enablePearlWaypoints": true, + "enablePrinceWaypoints": true, + "enableDefaultWaypoints": true + }, + "secretSync": { + "receiveRoomMatch": true, + "receiveRoomSecretCount": true, + "hideReceivedWaypoints": true + }, + "mimicMessage": { + "sendMimicMessage": true + }, + "princeMessage": { + "sendPrinceMessage": true + }, + "doorHighlight": { + "enableDoorHighlight": true, + "doorHighlightType": "OUTLINED_HIGHLIGHT" + }, + "dungeonScore": { + "enableDungeonScore270Message": false, + "enableDungeonScore270Title": false, + "enableDungeonScore270Sound": false, + "dungeonScore270Message": "270 Score Reached!", + "enableDungeonScore300Message": true, + "enableDungeonScore300Title": true, + "enableDungeonScore300Sound": true, + "dungeonScore300Message": "[做得好] 300 Social Credit has been added to your account. Enjoy your boss fight.", + "enableDungeonCryptsMessage": true, + "dungeonCryptsMessageThreshold": 250, + "dungeonCryptsMessage": "We only have [crypts] crypts out of 5, we need more!", + "enableScoreHUD": true, + "scoreX": 25, + "scoreY": 134, + "scoreScaling": 1.0 + }, + "dungeonChestProfit": { + "enableProfitCalculator": true, + "includeKismet": true, + "includeEssence": false, + "croesusProfit": true, + "neutralThreshold": 1000, + "neutralColor": "DARK_GRAY", + "profitColor": "DARK_GREEN", + "lossColor": "RED", + "incompleteColor": "BLUE" + } + }, + "foraging": { + "galatea": { + "enableForestNodeHelper": true, + "solveForestTemplePuzzle": true, + "enableLushlilacHighlighter": true, + "enableSeaLumiesHighlighter": true, + "seaLumiesMinimumCount": 3, + "enableTreeBreakProgress": true, + "enableTunerSolver": true, + "enableSweepDetailsWidget": true + }, + "sweepOverlay": { + "enableSweepOverlay": true, + "enableThrownAbilityOverlay": true, + "sweepOverlayColor": 1090491904 + } + }, + "crimsonIsle": { + "kuudra": { + "supplyWaypoints": true, + "fuelWaypoints": true, + "suppliesAndFuelWaypointType": "WAYPOINT", + "ballistaBuildWaypoints": true, + "safeSpotWaypoints": true, + "pearlWaypoints": true, + "noArrowPoisonWarning": true, + "arrowPoisonThreshold": 16, + "kuudraGlow": true, + "dangerWarning": true + }, + "dojo": { + "enableForceHelper": true, + "enableStaminaHelper": true, + "enableMasteryHelper": true, + "enableDisciplineHelper": true, + "enableSwiftnessHelper": true, + "enableControlHelper": true, + "enableTenacityHelper": true + }, + "extendNetherFog": true + }, + "mining": { + "enableDrillFuel": true, + "commissionHighlight": true, + "callMismyla": true, + "redialOnBadSignal": true, + "enablePickobulusHelper": true, + "pickobulusHelper": { + "enablePickobulusHud": true, + "hideHudOnCooldown": false + }, + "dwarvenMines": { + "solveFetchur": true, + "solvePuzzler": true, + "enableCarpetHighlighter": true, + "carpetHighlightColor": 1291780096 + }, + "crystalHollows": { + "metalDetectorHelper": true, + "nucleusWaypoints": false, + "chestHighlighter": true, + "chestHighlightColor": -2147483393, + "enablePowderTracker": true, + "countNaturalChestsInTracker": true, + "powderTrackerFilter": [] + }, + "crystalsHud": { + "enabled": true, + "showLocations": true, + "locationSize": 8, + "x": 10, + "y": 130, + "mapScaling": 1.0 + }, + "crystalsWaypoints": { + "enabled": true, + "findInChat": true, + "wishingCompassSolver": true, + "shareFairyGrotto": true + }, + "commissionWaypoints": { + "mode": "BOTH", + "useColor": true, + "showBaseCamp": false, + "showEmissary": true, + "hideEmissaryOnPigeon": true + }, + "glacite": { + "coldOverlay": true, + "fossilSolver": true, + "enableCorpseFinder": true, + "enableParsingChatCorpseFinder": true, + "autoShareCorpses": false, + "enableCorpseProfitTracker": true, + "forceEnglishCorpseProfitTracker": true + }, + "blockBreakPrediction": { + "enabled": false, + "playSound": false + } + }, + "farming": { + "garden": { + "farmingHud": { + "enableHud": true, + "x": 180, + "y": 0, + "type": "BOTH" + }, + "pestHighlighter": true, + "vinylHighlighter": true, + "lockMouseTool": true, + "lockMouseGroundOnly": true, + "gardenPlotsWidget": true, + "closeScreenOnPlotClick": false, + "enableStereoHarmonyHelperForContest": true + }, + "visitorHelper": { + "visitorHelper": true, + "visitorHelperGardenOnly": true, + "showStacksInVisitorHelper": false + } + }, + "hunting": { + "huntingBox": { + "enabled": true + }, + "huntingMobs": { + "silencePhantoms": true, + "highlightHideonleaf": true, + "hideonleafGlowColor": -256, + "highlightShellwise": true, + "shellwiseGlowColor": -38881, + "highlightCoralot": true, + "coralotGlowColor": -16776961 + }, + "lassoHud": { + "enabled": true + } + }, + "otherLocations": { + "barn": { + "enableGlowingMushroomHelper": true, + "solveHungryHiker": true, + "solveTreasureHunter": true, + "enableCallTrevorMessage": true + }, + "rift": { + "mirrorverseWaypoints": true, + "blobbercystGlow": true, + "enigmaSoulWaypoints": false, + "highlightFoundEnigmaSouls": true, + "mcGrubberStacks": 0 + }, + "end": { + "enableEnderNodeHelper": true, + "enderNodeWaypointType": "OUTLINED_HIGHLIGHT", + "hudEnabled": true, + "zealotKillsEnabled": true, + "protectorLocationEnabled": true, + "waypoint": true, + "muteEndermanSounds": true, + "x": 10, + "y": 10 + }, + "spidersDen": { + "relics": { + "enableRelicsHelper": true, + "highlightFoundRelics": false + } + } + }, + "slayers": { + "highlightMinis": "GLOW", + "highlightBosses": "GLOW", + "highlightColor": -47104, + "displayBossbar": true, + "bossSpawnAlert": true, + "miniBossSpawnAlert": true, + "alertOtherMinibosses": false, + "showMiniBossNameInAlert": false, + "slainTime": true, + "enableHud": true, + "hideSlayerMinibossSpawn": "PASS", + "highlightUnclaimedRewards": true, + "callMaddox": { + "sendMessageOnFail": true, + "sendMessageOnKill": false + }, + "endermanSlayer": { + "enableYangGlyphsNotification": true, + "highlightBeacons": true, + "highlightNukekubiHeads": true, + "lazerTimer": true + }, + "vampireSlayer": { + "enableEffigyWaypoints": true, + "compactEffigyWaypoints": false, + "effigyUpdateFrequency": 5, + "enableHolyIceIndicator": true, + "holyIceIndicatorTickDelay": 10, + "holyIceUpdateFrequency": 5, + "enableHealingMelonIndicator": true, + "healingMelonHealthThreshold": 4.0, + "enableSteakStakeIndicator": true, + "steakStakeUpdateFrequency": 5, + "enableManiaIndicator": true, + "maniaUpdateFrequency": 5 + }, + "blazeSlayer": { + "firePillarCountdown": "SOUND_AND_VISUAL", + "attunementHighlights": true, + "muteBlazeSounds": true, + "hideHellionShield": "PASS" + }, + "wolfSlayer": { + "muteWolfSounds": false, + "hideSvenPupNametag": true + }, + "spiderSlayer": { + "muteSpiderSounds": false + } + }, + "chat": { + "skyblockXpMessages": true, + "confirmationPromptHelper": false, + "toastDisplayDuration": 4.0, + "hideAbility": "ACTION_BAR", + "hideHeal": "PASS", + "hideAOTE": "ACTION_BAR", + "hideImplosion": "PASS", + "hideMoltenWave": "PASS", + "hideAds": "FILTER", + "hideTeleportPad": "PASS", + "hideCombo": "PASS", + "hideAutopet": "PASS", + "hideShowOff": "FILTER", + "hideToggleSkyMall": "PASS", + "hideToggleLottery": "PASS", + "hideMimicKill": "PASS", + "hideDeath": "PASS", + "hideMana": false, + "hideDungeonBreaker": "PASS", + "chatRuleConfig": { + "announcementLength": 60 + } + }, + "quickNav": { + "enableQuickNav": true, + "button1": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:diamond_sword", + "count": 1, + "components": "[]" + }, + "uiTitle": "Your Skills", + "tooltip": "", + "clickEvent": "/skills" + }, + "button2": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:painting", + "count": 1, + "components": "[]" + }, + "uiTitle": "Collections", + "tooltip": "", + "clickEvent": "/collection" + }, + "button3": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:bone", + "count": 1, + "components": "[]" + }, + "uiTitle": "Pets(:? \\(\\d+\\/\\d+\\))?", + "tooltip": "", + "clickEvent": "/pets" + }, + "button4": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:leather_chestplate", + "count": 1, + "components": "[minecraft:dyed_color\u003d8991416]" + }, + "uiTitle": "Wardrobe \\([12]/2\\)", + "tooltip": "", + "clickEvent": "/wardrobe" + }, + "button5": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:player_head", + "count": 1, + "components": "[minecraft:profile\u003d{id:[I;-2081424676,-57521078,-2073572414,158072763],name:\"\",properties:[{name:\"textures\",value:\"ewogICJ0aW1lc3RhbXAiIDogMTU5MTMxMDU4NTYwOSwKICAicHJvZmlsZUlkIiA6ICI0MWQzYWJjMmQ3NDk0MDBjOTA5MGQ1NDM0ZDAzODMxYiIsCiAgInByb2ZpbGVOYW1lIiA6ICJNZWdha2xvb24iLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODBhMDc3ZTI0OGQxNDI3NzJlYTgwMDg2NGY4YzU3OGI5ZDM2ODg1YjI5ZGFmODM2YjY0YTcwNjg4MmI2ZWMxMCIKICAgIH0KICB9Cn0\u003d\"}]}]" + }, + "uiTitle": "Sack of Sacks", + "tooltip": "", + "clickEvent": "/sacks" + }, + "button6": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:ender_chest", + "count": 1, + "components": "[]" + }, + "uiTitle": "Storage", + "tooltip": "", + "clickEvent": "/storage" + }, + "button7": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:ender_chest", + "count": 1, + "components": "[]" + }, + "uiTitle": "(?:Rift )?Storage(?: \\(\\d/\\d\\))?", + "tooltip": "Storage", + "clickEvent": "/storage" + }, + "button8": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:player_head", + "count": 1, + "components": "[minecraft:profile\u003d{id:[I;-300151517,-631415889,-1193921967,-1821784279],name:\"\",properties:[{name:\"textures\",value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDdjYzY2ODc0MjNkMDU3MGQ1NTZhYzUzZTA2NzZjYjU2M2JiZGQ5NzE3Y2Q4MjY5YmRlYmVkNmY2ZDRlN2JmOCJ9fX0\u003d\"}]}]" + }, + "uiTitle": "none", + "tooltip": "", + "clickEvent": "/hub" + }, + "button9": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:player_head", + "count": 1, + "components": "[minecraft:profile\u003d{id:[I;1605800870,415127827,-1236127084,15358548],name:\"\",properties:[{name:\"textures\",value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzg5MWQ1YjI3M2ZmMGJjNTBjOTYwYjJjZDg2ZWVmMWM0MGExYjk0MDMyYWU3MWU3NTQ3NWE1NjhhODI1NzQyMSJ9fX0\u003d\"}]}]" + }, + "uiTitle": "none", + "tooltip": "", + "clickEvent": "/warp dungeon_hub" + }, + "button10": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:player_head", + "count": 1, + "components": "[minecraft:profile\u003d{id:[I;-562285948,532499670,-1705302742,775653035],name:\"\",properties:[{name:\"textures\",value:\"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjVkZjU1NTkyNjQzMGQ1ZDc1YWRlZDIxZGQ5NjE5Yjc2YzViN2NhMmM3ZjU0MDE0NDA1MjNkNTNhOGJjZmFhYiJ9fX0\u003d\"}]}]" + }, + "uiTitle": "Visit prtl", + "tooltip": "", + "clickEvent": "/visit prtl" + }, + "button11": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:enchanting_table", + "count": 1, + "components": "[]" + }, + "uiTitle": "Enchant Item", + "tooltip": "", + "clickEvent": "/etable" + }, + "button12": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:anvil", + "count": 1, + "components": "[]" + }, + "uiTitle": "Anvil", + "tooltip": "", + "clickEvent": "/anvil" + }, + "button13": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:crafting_table", + "count": 1, + "components": "[]" + }, + "uiTitle": "Craft Item", + "tooltip": "", + "clickEvent": "/craft" + }, + "button14": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:crafting_table", + "count": 1, + "components": "[]" + }, + "uiTitle": "Craft Item", + "tooltip": "Crafting Table", + "clickEvent": "/craft" + } + }, + "eventNotifications": { + "criterion": "SKYBLOCK", + "reminderSound": "PLING", + "eventsReminderTimes": {} + }, + "misc": { + "richPresence": { + "enableRichPresence": false, + "info": "LOCATION", + "cycleMode": false, + "customMessage": "Playing Skyblock" + }, + "configBackend": "MOUL_CONFIG", + "cat": true + }, + "debug": { + "dumpRange": 5, + "dumpFormat": "SNBT", + "showInvisibleArmorStands": false, + "webSocketDebug": false, + "corpseFinderDebug": false + } +} diff --git a/src/test/resources/assets/skyblocker/config/skyblocker-v8.json b/src/test/resources/assets/skyblocker/config/skyblocker-v8.json new file mode 100644 index 00000000000..f2d51221138 --- /dev/null +++ b/src/test/resources/assets/skyblocker/config/skyblocker-v8.json @@ -0,0 +1,1003 @@ +{ + "version": 8, + "general": { + "enableTips": true, + "acceptReparty": true, + "speedPresets": { + "enableSpeedPresets": true + }, + "shortcuts": { + "enableShortcuts": true, + "enableCommandShortcuts": true, + "enableCommandArgShortcuts": true, + "enableKeyBindingShortcuts": true + }, + "quiverWarning": { + "enableQuiverWarning": true, + "enableQuiverWarningInDungeons": true, + "enableQuiverWarningAfterDungeon": true + }, + "itemList": { + "enableItemList": true, + "enableCollapsibleEntries": true + }, + "itemTooltip": { + "enableNPCPrice": true, + "enableMotesPrice": true, + "enableAvgBIN": true, + "avg": "THREE_DAY", + "enableLowestBIN": true, + "enableBazaarPrice": true, + "enableCraftingCost": "OFF", + "enableObtainedDate": true, + "enableMuseumInfo": true, + "enableExoticTooltip": true, + "enableAccessoriesHelper": true, + "dungeonQuality": true, + "showEssenceCost": true, + "enableEstimatedItemValue": true, + "enableStackingEnchantProgress": true, + "enableEvolvingItemProgress": true + }, + "itemInfoDisplay": { + "itemBackgroundStyle": "CIRCULAR", + "itemBackgroundOpacity": 0.5, + "itemRarityBackgrounds": true, + "jacobMedalBackgrounds": true, + "legacyAttributeBackgrounds": true + }, + "itemProtection": { + "slotLockStyle": "FANCY", + "displayChatNotification": true, + "protectValuableConsumables": true + }, + "wikiLookup": { + "enableWikiLookup": true + }, + "specialEffects": { + "rareDungeonDropEffects": true, + "rareDropEffects": true, + "rareDyeDropEffects": true + }, + "lockedSlots": [ + 3, + 8, + 0 + ], + "protectedItems": [ + "10f84455-c063-4e3e-b6eb-cc485fe74a06", + "64e491fa-64ed-4abf-829a-940e1fb295d2", + "23a619b6-f487-419e-8598-10b8f21dc80a", + "416aa42d-27d4-4284-913f-d03fa1f528c3", + "4e2a7f16-7d93-4069-bfbd-a8ff8e42f285", + "63ec4f84-2005-45e5-a4b7-0c9ae84dc612", + "aba2b017-91e8-4263-ae9e-5a10f8dc91fe", + "f1391873-5126-496d-b0fe-c861faeaf681", + "bb84cfea-3fdd-4579-b5fa-907cd8123593", + "a604f533-49f6-4190-b971-08f725231229", + "333cba8d-3136-4494-9fa0-40dff482ef66", + "91f49338-fc0b-4601-a704-aabc44853318", + "d76e5eca-be47-4d0b-973c-3ec30fd176dc", + "301c58a7-9b8a-4c4e-9e8d-3e8a9471a916", + "c8ab629e-fc5b-4af0-8053-acb155411c9b", + "333a079f-93d4-48f1-af9f-862b1ecc417c", + "0843d8b0-b6a6-47fc-afde-8eee8c5455d9", + "8bcf2a99-68e6-4646-ac04-4c72e55c6818", + "214333db-d71c-4080-8487-00b4666bb9a4", + "5f6090c8-cbc4-4030-97ac-5018c151cc15", + "6b42c77f-1891-43a4-a9ea-4454e299a059", + "71ce1812-d1fd-4e71-98ad-8b863759a82f", + "253489d9-49d0-46c8-b3f8-b70c3663c5d2", + "1eba38b5-e0f6-4862-bf19-e2df33e21ce4", + "6033eff2-879d-494f-8dae-696fc8a3c82e", + "64162e02-91fb-4ec3-a57c-866436a99a7a", + "a299c718-c66b-4de5-9747-71c172ac4601", + "e21172ce-0a41-426a-a445-84a28677cd65", + "4bfd23bf-ceb8-4951-874d-e61633e088d8", + "575ce2c9-251e-4435-9020-de1a2e24b1d0", + "b06b8fe2-470a-43f3-b844-658472f20996", + "e54dea3d-ca45-451e-9ae4-0e5fb87e97b2", + "67b47348-da46-4257-833a-dd23fb074cc6", + "9f7597ec-c3c9-46df-9f36-8e76c8745a9d", + "e297dcef-2f3d-4fb3-9781-aaff6017178c", + "ad9a598d-e5c9-4293-92c8-5e41bebe913c", + "fa51c660-b262-4826-bed8-6138236919cb" + ], + "customItemNames": {}, + "customDyeColors": {}, + "customArmorTrims": { + "f1391873-5126-496d-b0fe-c861faeaf681": { + "material": "minecraft:amethyst", + "pattern": "minecraft:raiser" + }, + "81409da1-610c-445a-aba2-4c95a3cabbf2": { + "material": "minecraft:amethyst", + "pattern": "minecraft:coast" + } + }, + "customAnimatedDyes": { + "f1391873-5126-496d-b0fe-c861faeaf681": { + "keyframes": [ + { + "color": -16777216, + "time": 0.0 + }, + { + "color": -16777216, + "time": 1.0 + } + ], + "cycleBack": true, + "delay": 0.0, + "duration": 1.0 + } + }, + "customHelmetTextures": {}, + "customGlint": {}, + "customItemModel": {}, + "customArmorModel": {}, + "customAnimatedHelmetTextures": {} + }, + "uiAndVisuals": { + "swingOnAbilities": false, + "nightVisionStrength": 100, + "compactorDeletorPreview": true, + "dontStripSkinAlphaValues": true, + "backpackPreviewWithoutShift": true, + "hideEmptyTooltips": true, + "fancyCraftingTable": true, + "hideStatusEffectOverlay": false, + "showEquipmentInInventory": true, + "cancelComponentUpdateAnimation": true, + "showCustomizeButton": true, + "showConfigButton": false, + "trueQuiverCount": true, + "chestValue": { + "enableChestValue": true, + "color": "DARK_GREEN", + "incompleteColor": "BLUE" + }, + "itemCooldown": { + "enableItemCooldowns": true + }, + "museumOverlay": true, + "slotText": { + "slotTextMode": "ENABLED", + "textEnabled": {}, + "slotTextToggled": true + }, + "radialMenu": { + "enabled": false, + "tooltipsWithoutShift": false, + "enabledMenus": {} + }, + "inventorySearch": { + "enabled": "SKYBLOCK", + "ctrlK": false, + "clickableText": false + }, + "titleContainer": { + "titleContainerScale": 100.0, + "x": 482, + "y": 170, + "direction": "VERTICAL", + "alignment": "MIDDLE" + }, + "tabHud": { + "tabHudEnabled": true, + "tabHudScale": 100, + "showVanillaTabByDefault": true, + "style": "FANCY", + "displayIcons": true, + "compactWidgets": false, + "enableHudBackground": true, + "effectsFromFooter": false, + "defaultPositioning": "CENTERED", + "nameSorting": "ALPHABETICAL" + }, + "fancyAuctionHouse": { + "enabled": true, + "highlightCheapBIN": true + }, + "bars": { + "enableBars": true, + "enableBarsRift": true, + "riftHealthHP": false, + "enableVanillaStyleManaBar": false, + "intelligenceDisplay": "ORIGINAL", + "barPositions": { + "healthBarPosition": "LAYER1", + "manaBarPosition": "LAYER1", + "defenceBarPosition": "RIGHT", + "experienceBarPosition": "RIGHT" + } + }, + "waypoints": { + "enableWaypoints": true, + "waypointType": "WAYPOINT", + "renderLine": true, + "lineColor": -16711936, + "lineWidth": 5.0, + "allowSkippingWaypoints": true, + "allowGoingBackwards": true, + "enableChatWaypoints": true + }, + "teleportOverlay": { + "enableTeleportOverlays": true, + "showWhenInAir": false, + "teleportOverlayColor": 2138445204, + "enableWeirdTransmission": true, + "enableInstantTransmission": true, + "enableEtherTransmission": true, + "enableSinrecallTransmission": true, + "enableWitherImpact": true + }, + "smoothAOTE": { + "predictive": false, + "enableWeirdTransmission": false, + "enableInstantTransmission": false, + "enableEtherTransmission": false, + "enableSinrecallTransmission": false, + "enableWitherImpact": false, + "maximumAddedLag": 100 + }, + "searchOverlay": { + "enableBazaar": true, + "enableAuctionHouse": true, + "enableMuseum": true, + "keepPreviousSearches": false, + "maxSuggestions": 5, + "historyLength": 5, + "enableCommands": false, + "bazaarHistory": [ + "Enchanted Snow Block", + "Recombobulator 3000", + "Enchanted Snow Block", + "Recombobulator 3000", + "Enchanted Snow Block" + ], + "auctionHistory": [ + "God Potion", + "New Year Cake (Year 30", + "New Year Cake (Year 31", + "New Year Cake (Year 32", + "New Year Cake (Year 2" + ], + "museumHistory": [] + }, + "bazaarQuickQuantities": { + "enabled": false, + "closeSignOnUse": false, + "slot1Quantity": 28, + "slot2Quantity": 2240, + "slot3Quantity": 256 + }, + "inputCalculator": { + "enabled": true, + "requiresEquals": false, + "closeSignsWithEnter": true + }, + "flameOverlay": { + "flameHeight": 0, + "flameOpacity": 0 + }, + "compactDamage": { + "enabled": true, + "maxPrecision": 4, + "normalDamageColor": -1, + "critDamageGradientStart": -171, + "critDamageGradientEnd": -43691 + }, + "healthBars": { + "enabled": false, + "scale": 1.5, + "removeHealthFromName": true, + "removeMaxHealthFromName": true, + "applyToHealthOnlyMobs": true, + "hideFullHealth": false, + "fullBarColor": -16711936, + "halfBarColor": -256, + "emptyBarColor": -65536 + }, + "gyroOverlay": { + "gyroOverlayMode": "OFF", + "gyroOverlayColor": 2138445204 + }, + "itemPickup": { + "enabled": false, + "sackNotifications": false, + "showItemName": true, + "lifeTime": 3, + "splitNotifications": false + } + }, + "helpers": { + "enableNewYearCakesHelper": true, + "enableBitsTooltip": true, + "enableWardrobeHelper": true, + "enableDateCalculator": true, + "enableCopyUnderbidPrice": false, + "enableBuildersWandPreview": true, + "enableAnvilHelper": true, + "enableAccessoriesHelperWidget": true, + "mythologicalRitual": { + "enableMythologicalRitualHelper": true + }, + "jerry": { + "enableJerryTimer": false + }, + "experiments": { + "enableChronomatronSolver": true, + "enableSuperpairsSolver": true, + "enableUltrasequencerSolver": true, + "blockIncorrectClicks": false + }, + "fishing": { + "enableFishingHelper": true, + "enableFishingTimer": false, + "hideOtherPlayersRods": false, + "enableFishingHud": true, + "fishingHudEnabledLocations": [ + "PRIVATE_ISLAND", + "GARDEN", + "HUB", + "THE_FARMING_ISLAND", + "THE_PARK", + "SPIDERS_DEN", + "BLAZING_FORTRESS", + "THE_END", + "CRIMSON_ISLE", + "GOLD_MINE", + "DEEP_CAVERNS", + "DWARVEN_MINES", + "BACKWATER_BAYOU", + "DUNGEON_HUB", + "WINTER_ISLAND", + "THE_RIFT", + "DARK_AUCTION", + "CRYSTAL_HOLLOWS", + "DUNGEON", + "KUUDRAS_HOLLOW", + "GLACITE_MINESHAFTS", + "GALATEA", + "UNKNOWN" + ], + "enableSeaCreatureCounter": true, + "fishingHookDisplay": "HUD", + "onlyShowHudInBarn": true, + "timerLength": 340, + "seaCreatureTimerNotification": true, + "seaCreatureCap": 30, + "seaCreatureCapNotification": true, + "minimumNotificationRarity": "EPIC" + }, + "fairySouls": { + "enableFairySoulsHelper": true, + "highlightFoundSouls": false, + "highlightOnlyNearbySouls": false + }, + "chocolateFactory": { + "enableChocolateFactoryHelper": true, + "enableTimeTowerReminder": true, + "straySound": true, + "enableEggFinder": true, + "sendEggFoundMessages": true, + "waypointType": "WAYPOINT", + "showThroughWalls": false + }, + "carnival": { + "catchAFishHelper": true, + "zombieShootoutHelper": true + }, + "bazaar": { + "enableBazaarHelper": true, + "enableReorderHelper": true, + "enableOrderTracker": true + }, + "itemPrice": { + "enableItemPriceLookup": true, + "enableItemPriceRefresh": true + }, + "greatSpookEvent": { + "enableMathTeacherHelper": true + }, + "buildersWand": { + "enableBuildersWandPreview": true + } + }, + "dungeons": { + "fancyPartyFinder": true, + "croesusHelper": true, + "salvageHelper": true, + "onlyHighlightDonatedItems": false, + "sellableItemsHighlighter": true, + "bloodCampHelper": false, + "playerSecretsTracker": true, + "classBasedPlayerGlow": true, + "starredMobGlow": true, + "starredMobBoundingBoxes": true, + "highlightDoorKeys": true, + "allowDroppingProtectedItems": false, + "dungeonSplits": false, + "hideSoulweaverSkulls": false, + "dungeonMap": { + "enableMap": true, + "fancyMap": true, + "showSelfHead": true, + "showRoomLabels": true, + "roomLabelType": "ROOM_NAME_AND_SECRETS_FOUND", + "hideCheckmarks": true, + "showOutline": true, + "backgroundBlur": false, + "mapScaling": 1.0, + "mapX": 2, + "mapY": 2 + }, + "leapOverlay": { + "enableLeapOverlay": true, + "leapKeybinds": true, + "showMap": true, + "scale": 1.2, + "enableLeapMessage": false, + "leapMessage": "Leaped to [name]!" + }, + "puzzleSolvers": { + "solveTicTacToe": true, + "solveThreeWeirdos": true, + "creeperSolver": true, + "waterboardOneFlow": true, + "previewWaterPath": true, + "previewLeverEffects": true, + "blazeSolver": true, + "solveBoulder": true, + "solveIceFill": true, + "solveSilverfish": true, + "solveTrivia": true, + "solveTeleportMaze": true + }, + "theProfessor": { + "fireFreezeStaffTimer": true, + "floor3GuardianHealthDisplay": true + }, + "livid": { + "enableSolidColor": false, + "customColor": -65536, + "enableLividColorGlow": true, + "enableLividColorBoundingBox": true, + "enableLividColorText": true, + "enableLividColorTitle": true, + "lividColorText": "[color] is sus" + }, + "terminals": { + "solveColor": true, + "solveSameColor": true, + "solveOrder": true, + "solveStartsWith": true, + "blockIncorrectClicks": false + }, + "devices": { + "solveSimonSays": true, + "solveLightsOn": true, + "solveArrowAlign": true, + "solveTargetPractice": true + }, + "goldor": { + "enableGoldorWaypoints": true, + "waypointType": "WAYPOINT" + }, + "terminalHud": { + "enableTerminalHud": false, + "showTerminalStatus": true, + "showPlayerAtTerminal": true, + "showTerminals": true, + "showDevice": true, + "showLevers": true, + "showGate": true + }, + "secretWaypoints": { + "enableSecretWaypoints": true, + "waypointType": "OUTLINED_HIGHLIGHT", + "adaptiveBoxSize": false, + "showSecretText": true, + "enableEntranceWaypoints": true, + "enableSuperboomWaypoints": true, + "enableChestWaypoints": true, + "enableItemWaypoints": true, + "enableBatWaypoints": true, + "enableWitherWaypoints": true, + "enableRedstoneKeyWaypoints": true, + "enableLeverWaypoints": true, + "enableFairySoulWaypoints": true, + "enableStonkWaypoints": false, + "enableAotvWaypoints": true, + "enablePearlWaypoints": true, + "enablePrinceWaypoints": true, + "enableDefaultWaypoints": true + }, + "secretSync": { + "receiveRoomMatch": true, + "receiveRoomSecretCount": true, + "hideReceivedWaypoints": true + }, + "mimicMessage": { + "sendMimicMessage": true + }, + "princeMessage": { + "sendPrinceMessage": true + }, + "doorHighlight": { + "enableDoorHighlight": true, + "doorHighlightType": "OUTLINED_HIGHLIGHT" + }, + "dungeonScore": { + "enableDungeonScore270Message": false, + "enableDungeonScore270Title": false, + "enableDungeonScore270Sound": false, + "dungeonScore270Message": "270 Score Reached!", + "enableDungeonScore300Message": true, + "enableDungeonScore300Title": true, + "enableDungeonScore300Sound": true, + "dungeonScore300Message": "[做得好] 300 Social Credit has been added to your account. Enjoy your boss fight.", + "enableDungeonCryptsMessage": true, + "dungeonCryptsMessageThreshold": 250, + "dungeonCryptsMessage": "We only have [crypts] crypts out of 5, we need more!", + "enableScoreHUD": true, + "scoreX": 25, + "scoreY": 134, + "scoreScaling": 1.0 + }, + "dungeonChestProfit": { + "enableProfitCalculator": true, + "includeKismet": true, + "includeEssence": false, + "croesusProfit": true, + "neutralThreshold": 1000, + "neutralColor": "DARK_GRAY", + "profitColor": "DARK_GREEN", + "lossColor": "RED", + "incompleteColor": "BLUE" + } + }, + "foraging": { + "galatea": { + "enableForestNodeHelper": true, + "solveForestTemplePuzzle": true, + "enableLushlilacHighlighter": true, + "enableSeaLumiesHighlighter": true, + "seaLumiesMinimumCount": 3, + "enableTreeBreakProgress": true, + "enableTunerSolver": true, + "enableSweepDetailsWidget": true + }, + "sweepOverlay": { + "enableSweepOverlay": true, + "enableThrownAbilityOverlay": true, + "sweepOverlayColor": 1090491904 + } + }, + "crimsonIsle": { + "kuudra": { + "supplyWaypoints": true, + "fuelWaypoints": true, + "suppliesAndFuelWaypointType": "WAYPOINT", + "ballistaBuildWaypoints": true, + "safeSpotWaypoints": true, + "pearlWaypoints": true, + "noArrowPoisonWarning": true, + "arrowPoisonThreshold": 16, + "kuudraGlow": true, + "dangerWarning": true + }, + "dojo": { + "enableForceHelper": true, + "enableStaminaHelper": true, + "enableMasteryHelper": true, + "enableDisciplineHelper": true, + "enableSwiftnessHelper": true, + "enableControlHelper": true, + "enableTenacityHelper": true + }, + "extendNetherFog": true + }, + "mining": { + "enableDrillFuel": true, + "commissionHighlight": true, + "callMismyla": true, + "redialOnBadSignal": true, + "enablePickobulusHelper": true, + "pickobulusHelper": { + "enablePickobulusHud": true, + "hideHudOnCooldown": false + }, + "dwarvenMines": { + "solveFetchur": true, + "solvePuzzler": true, + "enableCarpetHighlighter": true, + "carpetHighlightColor": 1291780096 + }, + "crystalHollows": { + "metalDetectorHelper": true, + "nucleusWaypoints": false, + "chestHighlighter": true, + "chestHighlightColor": -2147483393, + "enablePowderTracker": true, + "countNaturalChestsInTracker": true, + "powderTrackerFilter": [] + }, + "crystalsHud": { + "enabled": true, + "showLocations": true, + "locationSize": 8, + "x": 10, + "y": 130, + "mapScaling": 1.0 + }, + "crystalsWaypoints": { + "enabled": true, + "findInChat": true, + "wishingCompassSolver": true, + "shareFairyGrotto": true + }, + "commissionWaypoints": { + "mode": "BOTH", + "useColor": true, + "showBaseCamp": false, + "showEmissary": true, + "hideEmissaryOnPigeon": true + }, + "glacite": { + "coldOverlay": true, + "fossilSolver": true, + "enableCorpseFinder": true, + "enableParsingChatCorpseFinder": true, + "autoShareCorpses": false, + "enableCorpseProfitTracker": true, + "forceEnglishCorpseProfitTracker": true + }, + "blockBreakPrediction": { + "enabled": false, + "playSound": false + } + }, + "farming": { + "visitorHelper": { + "enabled": true, + "showInGardenOnly": true, + "showInStacks": false + }, + "farmingHud": { + "enabled": true, + "type": "BOTH" + }, + "pestHighlighter": { + "enabled": true, + "vinylHighlighter": true, + "enableStereoHarmonyHelperForContest": true + }, + "mouseLock": { + "lockMouseTool": true, + "lockMouseGroundOnly": true + }, + "plotsWidget": { + "enabled": true, + "closeScreenOnPlotClick": false + } + }, + "hunting": { + "huntingBox": { + "enabled": true + }, + "huntingMobs": { + "silencePhantoms": true, + "highlightHideonleaf": true, + "hideonleafGlowColor": -256, + "highlightShellwise": true, + "shellwiseGlowColor": -38881, + "highlightCoralot": true, + "coralotGlowColor": -16776961 + }, + "lassoHud": { + "enabled": true + } + }, + "otherLocations": { + "barn": { + "enableGlowingMushroomHelper": true, + "solveHungryHiker": true, + "solveTreasureHunter": true, + "enableCallTrevorMessage": true + }, + "rift": { + "mirrorverseWaypoints": true, + "blobbercystGlow": true, + "enigmaSoulWaypoints": false, + "highlightFoundEnigmaSouls": true, + "mcGrubberStacks": 0 + }, + "end": { + "enableEnderNodeHelper": true, + "enderNodeWaypointType": "OUTLINED_HIGHLIGHT", + "hudEnabled": true, + "zealotKillsEnabled": true, + "protectorLocationEnabled": true, + "waypoint": true, + "muteEndermanSounds": true, + "x": 10, + "y": 10 + }, + "spidersDen": { + "relics": { + "enableRelicsHelper": true, + "highlightFoundRelics": false + } + } + }, + "slayers": { + "highlightMinis": "GLOW", + "highlightBosses": "GLOW", + "highlightColor": -47104, + "displayBossbar": true, + "bossSpawnAlert": true, + "miniBossSpawnAlert": true, + "alertOtherMinibosses": false, + "showMiniBossNameInAlert": false, + "slainTime": true, + "enableHud": true, + "hideSlayerMinibossSpawn": "PASS", + "highlightUnclaimedRewards": true, + "callMaddox": { + "sendMessageOnFail": true, + "sendMessageOnKill": false + }, + "endermanSlayer": { + "enableYangGlyphsNotification": true, + "highlightBeacons": true, + "highlightNukekubiHeads": true, + "lazerTimer": true + }, + "vampireSlayer": { + "enableEffigyWaypoints": true, + "compactEffigyWaypoints": false, + "effigyUpdateFrequency": 5, + "enableHolyIceIndicator": true, + "holyIceIndicatorTickDelay": 10, + "holyIceUpdateFrequency": 5, + "enableHealingMelonIndicator": true, + "healingMelonHealthThreshold": 4.0, + "enableSteakStakeIndicator": true, + "steakStakeUpdateFrequency": 5, + "enableManiaIndicator": true, + "maniaUpdateFrequency": 5 + }, + "blazeSlayer": { + "firePillarCountdown": "SOUND_AND_VISUAL", + "attunementHighlights": true, + "muteBlazeSounds": true, + "hideHellionShield": "PASS" + }, + "wolfSlayer": { + "muteWolfSounds": false, + "hideSvenPupNametag": true + }, + "spiderSlayer": { + "muteSpiderSounds": false + } + }, + "chat": { + "skyblockXpMessages": true, + "confirmationPromptHelper": false, + "toastDisplayDuration": 4.0, + "hideAbility": "ACTION_BAR", + "hideHeal": "PASS", + "hideAOTE": "ACTION_BAR", + "hideImplosion": "PASS", + "hideMoltenWave": "PASS", + "hideAds": "FILTER", + "hideTeleportPad": "PASS", + "hideCombo": "PASS", + "hideAutopet": "PASS", + "hideShowOff": "FILTER", + "hideToggleSkyMall": "PASS", + "hideToggleLottery": "PASS", + "hideMimicKill": "PASS", + "hideDeath": "PASS", + "hideMana": false, + "hideDungeonBreaker": "PASS", + "chatRuleConfig": { + "announcementLength": 60 + } + }, + "quickNav": { + "enableQuickNav": true, + "button1": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:diamond_sword", + "count": 1, + "components": "[]" + }, + "uiTitle": "Your Skills", + "tooltip": "", + "clickEvent": "/skills" + }, + "button2": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:painting", + "count": 1, + "components": "[]" + }, + "uiTitle": "Collections", + "tooltip": "", + "clickEvent": "/collection" + }, + "button3": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:bone", + "count": 1, + "components": "[]" + }, + "uiTitle": "Pets(:? \\(\\d+\\/\\d+\\))?", + "tooltip": "", + "clickEvent": "/pets" + }, + "button4": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:leather_chestplate", + "count": 1, + "components": "[minecraft:dyed_color\u003d8991416]" + }, + "uiTitle": "Wardrobe \\([12]/2\\)", + "tooltip": "", + "clickEvent": "/wardrobe" + }, + "button5": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:player_head", + "count": 1, + "components": "[minecraft:profile\u003d{id:[I;-2081424676,-57521078,-2073572414,158072763],name:\"\",properties:[{name:\"textures\",value:\"ewogICJ0aW1lc3RhbXAiIDogMTU5MTMxMDU4NTYwOSwKICAicHJvZmlsZUlkIiA6ICI0MWQzYWJjMmQ3NDk0MDBjOTA5MGQ1NDM0ZDAzODMxYiIsCiAgInByb2ZpbGVOYW1lIiA6ICJNZWdha2xvb24iLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODBhMDc3ZTI0OGQxNDI3NzJlYTgwMDg2NGY4YzU3OGI5ZDM2ODg1YjI5ZGFmODM2YjY0YTcwNjg4MmI2ZWMxMCIKICAgIH0KICB9Cn0\u003d\"}]}]" + }, + "uiTitle": "Sack of Sacks", + "tooltip": "", + "clickEvent": "/sacks" + }, + "button6": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:ender_chest", + "count": 1, + "components": "[]" + }, + "uiTitle": "Storage", + "tooltip": "", + "clickEvent": "/storage" + }, + "button7": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:ender_chest", + "count": 1, + "components": "[]" + }, + "uiTitle": "(?:Rift )?Storage(?: \\(\\d/\\d\\))?", + "tooltip": "Storage", + "clickEvent": "/storage" + }, + "button8": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:player_head", + "count": 1, + "components": "[minecraft:profile\u003d{id:[I;-300151517,-631415889,-1193921967,-1821784279],name:\"\",properties:[{name:\"textures\",value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDdjYzY2ODc0MjNkMDU3MGQ1NTZhYzUzZTA2NzZjYjU2M2JiZGQ5NzE3Y2Q4MjY5YmRlYmVkNmY2ZDRlN2JmOCJ9fX0\u003d\"}]}]" + }, + "uiTitle": "none", + "tooltip": "", + "clickEvent": "/hub" + }, + "button9": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:player_head", + "count": 1, + "components": "[minecraft:profile\u003d{id:[I;1605800870,415127827,-1236127084,15358548],name:\"\",properties:[{name:\"textures\",value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzg5MWQ1YjI3M2ZmMGJjNTBjOTYwYjJjZDg2ZWVmMWM0MGExYjk0MDMyYWU3MWU3NTQ3NWE1NjhhODI1NzQyMSJ9fX0\u003d\"}]}]" + }, + "uiTitle": "none", + "tooltip": "", + "clickEvent": "/warp dungeon_hub" + }, + "button10": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:player_head", + "count": 1, + "components": "[minecraft:profile\u003d{id:[I;-562285948,532499670,-1705302742,775653035],name:\"\",properties:[{name:\"textures\",value:\"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjVkZjU1NTkyNjQzMGQ1ZDc1YWRlZDIxZGQ5NjE5Yjc2YzViN2NhMmM3ZjU0MDE0NDA1MjNkNTNhOGJjZmFhYiJ9fX0\u003d\"}]}]" + }, + "uiTitle": "Visit prtl", + "tooltip": "", + "clickEvent": "/visit prtl" + }, + "button11": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:enchanting_table", + "count": 1, + "components": "[]" + }, + "uiTitle": "Enchant Item", + "tooltip": "", + "clickEvent": "/etable" + }, + "button12": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:anvil", + "count": 1, + "components": "[]" + }, + "uiTitle": "Anvil", + "tooltip": "", + "clickEvent": "/anvil" + }, + "button13": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:crafting_table", + "count": 1, + "components": "[]" + }, + "uiTitle": "Craft Item", + "tooltip": "", + "clickEvent": "/craft" + }, + "button14": { + "render": true, + "doubleClick": false, + "itemData": { + "item": "minecraft:crafting_table", + "count": 1, + "components": "[]" + }, + "uiTitle": "Craft Item", + "tooltip": "Crafting Table", + "clickEvent": "/craft" + } + }, + "eventNotifications": { + "criterion": "SKYBLOCK", + "reminderSound": "PLING", + "eventsReminderTimes": {} + }, + "misc": { + "richPresence": { + "enableRichPresence": false, + "info": "LOCATION", + "cycleMode": false, + "customMessage": "Playing Skyblock" + }, + "configBackend": "MOUL_CONFIG", + "cat": true + }, + "debug": { + "dumpRange": 5, + "dumpFormat": "SNBT", + "showInvisibleArmorStands": false, + "webSocketDebug": false, + "corpseFinderDebug": false + } +}