aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/Features.java40
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/ChatConfig.java212
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/CombatConfig.java721
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/CommandsConfig.java115
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/CrimsonIsleConfig.java157
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/DevConfig.java225
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/DungeonConfig.java256
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/EventConfig.java421
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/FishingConfig.java309
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/GUIConfig.java174
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/GardenConfig.java1488
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/InventoryConfig.java480
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/ItemAbilityConfig.java74
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/MiningConfig.java128
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/MinionsConfig.java96
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/MiscConfig.java834
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/RiftConfig.java720
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/SlayerConfig.java529
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/bazaar/BazaarConfig.java (renamed from src/main/java/at/hannibal2/skyhanni/config/features/BazaarConfig.java)2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/chat/ChatConfig.java91
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/chat/ChatSymbols.java24
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/chat/CompactPotionConfig.java20
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/chat/FilterTypesConfig.java83
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/chat/PlayerMessagesConfig.java21
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/chroma/ChromaConfig.java (renamed from src/main/java/at/hannibal2/skyhanni/config/features/ChromaConfig.java)2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/combat/BestiaryConfig.java48
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/combat/CombatConfig.java47
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/combat/EnderNodeConfig.java64
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/combat/MobsConfig.java94
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/combat/SummoningsConfig.java38
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/combat/damageindicator/DamageIndicatorConfig.java102
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/combat/damageindicator/EnderSlayerConfig.java18
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/combat/damageindicator/VampireSlayerConfig.java23
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/combat/ghostcounter/GhostCounterConfig.java96
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/combat/ghostcounter/textformatting/BestiaryFormattingConfig.java41
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/combat/ghostcounter/textformatting/ETAFormattingConfig.java42
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/combat/ghostcounter/textformatting/KillHourFormattingConfig.java24
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/combat/ghostcounter/textformatting/TextFormattingConfig.java148
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/combat/ghostcounter/textformatting/XPHourFormattingConfig.java26
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/commands/CommandsConfig.java39
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/commands/FandomWikiCommandConfig.java27
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/commands/TabCompleteConfig.java61
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/CrimsonIsleConfig.java34
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/ReputationHelperConfig.java38
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/ashfang/AshfangConfig.java50
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/ashfang/BlazingSoulsColor.java21
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/ashfang/GravityOrbsConfig.java21
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/ashfang/HideAshfangConfig.java27
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/dev/DebugConfig.java88
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/dev/DevConfig.java46
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/dev/WaypointsConfig.java26
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/dev/minecraftconsole/ConsoleFiltersConfig.java53
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/dev/minecraftconsole/MinecraftConsoleConfig.java40
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/dungeon/CleanEndConfig.java21
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/dungeon/DungeonConfig.java102
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/dungeon/DungeonCopilotConfig.java18
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/dungeon/LividFinderConfig.java20
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/dungeon/MessageFilterConfig.java14
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/dungeon/ObjectHiderConfig.java65
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/dungeon/PartyFinderConfig.java44
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/dungeon/TabListConfig.java15
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/event/CenturyConfig.java24
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/event/CityProjectConfig.java31
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/event/EventConfig.java51
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/event/GreatSpookConfig.java44
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/event/HalloweenBasketConfig.java25
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/event/MayorJerryConfig.java16
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/event/bingo/BingoCardConfig.java45
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/event/bingo/BingoConfig.java30
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/event/bingo/CompactChatConfig.java27
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/event/diana/DianaConfig.java60
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/event/diana/IgnoredWarpsConfig.java19
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/event/diana/InquisitorSharingConfig.java37
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/event/winter/FrozenTreasureConfig.java72
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/event/winter/WinterConfig.java26
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/fishing/BarnTimerConfig.java62
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/fishing/ChumBucketHiderConfig.java26
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/fishing/FishedItemNameConfig.java21
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/fishing/FishingBaitWarningsConfig.java20
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/fishing/FishingConfig.java76
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/fishing/FishingHookDisplayConfig.java27
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/fishing/RareCatchesConfig.java32
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/fishing/ThunderSparkConfig.java20
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/fishing/trophyfishing/ChatMessagesConfig.java56
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/fishing/trophyfishing/TrophyFishingConfig.java27
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/AnitaShopConfig.java30
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/CropStartLocationConfig.java16
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/DicerCounterConfig.java24
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/EliteFarmingWeightConfig.java53
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/FarmingArmorDropsConfig.java24
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/FarmingFortuneConfig.java36
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/GardenConfig.java205
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/GardenLevelConfig.java18
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/KeyBindConfig.java87
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/MoneyPerHourConfig.java126
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/NextJacobContestConfig.java59
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/NumbersConfig.java32
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/PlotIconConfig.java24
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/SkyMartConfig.java23
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/TooltipTweaksConfig.java47
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/YawPitchDisplayConfig.java64
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/composter/ComposterConfig.java108
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/composter/NotifyLowConfig.java38
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/cropmilestones/CropMilestonesConfig.java101
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/cropmilestones/MushroomPetPerkConfig.java43
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/cropmilestones/NextConfig.java66
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/optimalspeed/CustomSpeedConfig.java79
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/optimalspeed/OptimalSpeedConfig.java39
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/DropsStatisticsConfig.java78
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/InventoryConfig.java37
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/NeedsConfig.java40
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/RewardWarningConfig.java62
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/TimerConfig.java37
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/VisitorConfig.java118
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/gui/GUIConfig.java74
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/gui/InGameDateConfig.java63
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/gui/ModifyWordsConfig.java28
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/gui/TextBoxConfig.java26
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/inventory/ChestValueConfig.java88
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/inventory/HideNotClickableConfig.java43
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/inventory/InventoryConfig.java127
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/inventory/JacobFarmingContestConfig.java32
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/inventory/RngMeterConfig.java26
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/inventory/SackDisplayConfig.java84
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/inventory/StatsTuningConfig.java32
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/inventory/helper/HarpConfigKeyBinds.java37
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/inventory/helper/HelperConfig.java37
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/inventory/helper/TiaRelayConfig.java32
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/itemability/ChickenHeadConfig.java25
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/itemability/FireVeilWandConfig.java21
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/itemability/ItemAbilityConfig.java38
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/markedplayer/MarkedPlayerConfig.java (renamed from src/main/java/at/hannibal2/skyhanni/config/features/MarkedPlayerConfig.java)2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/mining/KingTalismanConfig.java25
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningConfig.java32
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/mining/PowderTrackerConfig.java84
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/minion/EmptiedTimeConfig.java27
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/minion/LastClickedMinionConfig.java36
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/minion/MinionsConfig.java46
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/misc/DiscordRPCConfig.java97
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/misc/EstimatedItemValueConfig.java52
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/misc/GlowingDroppedItemsConfig.java26
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/misc/HideArmorConfig.java20
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/misc/HighlightPartyMembersConfig.java25
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/misc/KickDurationConfig.java34
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/misc/MiscConfig.java209
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/misc/ParticleHiderConfig.java50
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/misc/PocketSackInASackConfig.java21
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/misc/PotionEffectsConfig.java24
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/misc/QuickModMenuSwitchConfig.java29
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/misc/TeleportPadConfig.java21
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/misc/TrevorTheTrapperConfig.java110
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/misc/compacttablist/AdvancedPlayerListConfig.java73
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/misc/compacttablist/CompactTabListConfig.java27
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/misc/cosmetic/ArrowTrailConfig.java46
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/misc/cosmetic/CosmeticConfig.java18
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/misc/cosmetic/FollowingLineConfig.java37
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/misc/pets/PetConfig.java24
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/misc/pets/PetExperienceToolTipConfig.java27
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/CruxTalismanDisplayConfig.java30
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/EnigmaSoulConfig.java22
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/MotesOrbsConfig.java28
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/RiftConfig.java53
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/RiftTimerConfig.java30
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/area/RiftAreasConfig.java60
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/area/colosseum/ColosseumConfig.java15
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/area/dreadfarm/DreadfarmConfig.java26
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/area/dreadfarm/VoltCruxConfig.java33
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/area/dreadfarm/WiltedBerberisConfig.java26
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/area/livingcave/DefenseBlockConfig.java29
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/area/livingcave/LivingCaveConfig.java23
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/area/livingcave/LivingCaveLivingMetalConfig.java22
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/area/livingcave/LivingMetalSuitProgressConfig.java24
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/LavaMazeConfig.java39
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/MirrorVerseConfig.java29
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/TubulatorConfig.java44
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/UpsideDownParkourConfig.java44
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/danceroomhelper/DanceRoomHelperConfig.java48
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/danceroomhelper/danceroomformatting/ColorConfig.java42
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/danceroomhelper/danceroomformatting/DanceRoomFormattingConfig.java29
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/area/stillgorechateau/EffigiesConfig.java37
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/area/stillgorechateau/StillgoreChateauConfig.java14
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/area/westvillage/KloonHackingConfig.java27
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/area/westvillage/WestVillageConfig.java13
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/area/wyldwoods/LarvasConfig.java22
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/area/wyldwoods/OdonataConfig.java23
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/area/wyldwoods/WyldWoodsConfig.java27
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/motes/InventoryValueConfig.java25
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/rift/motes/MotesConfig.java27
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/slayer/ItemProfitTrackerConfig.java50
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/slayer/ItemsOnGroundConfig.java21
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/slayer/RngMeterDisplayConfig.java30
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/slayer/SlayerBossWarningConfig.java26
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/slayer/SlayerConfig.java77
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/slayer/blaze/BlazeConfig.java32
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/slayer/blaze/BlazeHellionConfig.java45
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/slayer/endermen/EndermanBeaconConfig.java46
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/slayer/endermen/EndermanConfig.java31
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/slayer/vampire/BloodIchorConfig.java38
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/slayer/vampire/CoopBossHighlightConfig.java44
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/slayer/vampire/KillerSpringConfig.java31
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/slayer/vampire/OthersBossConfig.java39
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/slayer/vampire/OwnBossConfig.java39
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/slayer/vampire/VampireConfig.java80
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/cosmetics/ArrowTrail.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/cosmetics/CosmeticFollowingLine.kt10
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/visitor/HighlightVisitorsOutsideOfGarden.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/visitor/VisitorTooltipParser.kt10
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/misc/CurrentPetDisplay.kt3
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/rift/RiftAPI.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/rift/area/colosseum/BlobbercystsHighlight.kt10
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/rift/area/dreadfarm/RiftAgaricusCap.kt8
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/rift/area/dreadfarm/RiftWiltedBerberisHelper.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/rift/area/dreadfarm/VoltHighlighter.kt4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/rift/area/livingcave/LivingCaveDefenseBlocks.kt8
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/rift/area/livingcave/LivingCaveLivingMetalHelper.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/rift/area/livingcave/LivingMetalSuitProgress.kt4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/rift/area/mirrorverse/DanceRoomHelper.kt8
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/rift/area/mirrorverse/RiftLavaMazeParkour.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/rift/area/mirrorverse/RiftUpsideDownParkour.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/rift/area/mirrorverse/TubulatorParkour.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/rift/area/stillgorechateau/RiftBloodEffigies.kt8
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/rift/area/westvillage/KloonHacking.kt8
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/rift/area/wyldwoods/RiftLarva.kt (renamed from src/main/java/at/hannibal2/skyhanni/features/rift/area/RiftLarva.kt)4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/rift/area/wyldwoods/RiftOdonata.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/rift/area/wyldwoods/ShyCruxWarnings.kt10
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/rift/everywhere/motes/RiftMotesOrb.kt8
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/slayer/VampireSlayerFeatures.kt8
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/slayer/enderman/EndermanSlayerFeatures.kt3
-rw-r--r--src/test/java/at/hannibal2/skyhanni/test/garden/VisitorToolTipParserTest.kt16
231 files changed, 8215 insertions, 7003 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt
index 84bbb2e26..5309a4e2e 100644
--- a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt
+++ b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt
@@ -249,7 +249,7 @@ import at.hannibal2.skyhanni.features.nether.ashfang.AshfangHideParticles
import at.hannibal2.skyhanni.features.nether.ashfang.AshfangNextResetCooldown
import at.hannibal2.skyhanni.features.nether.reputationhelper.CrimsonIsleReputationHelper
import at.hannibal2.skyhanni.features.rift.RiftAPI
-import at.hannibal2.skyhanni.features.rift.area.RiftLarva
+import at.hannibal2.skyhanni.features.rift.area.wyldwoods.RiftLarva
import at.hannibal2.skyhanni.features.rift.area.colosseum.BlobbercystsHighlight
import at.hannibal2.skyhanni.features.rift.area.dreadfarm.RiftAgaricusCap
import at.hannibal2.skyhanni.features.rift.area.dreadfarm.RiftWiltedBerberisHelper
diff --git a/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt b/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt
index 19b77abf3..6227b0ea9 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt
+++ b/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt
@@ -9,7 +9,7 @@ import com.google.gson.JsonPrimitive
object ConfigUpdaterMigrator {
val logger = LorenzLogger("ConfigMigration")
- const val CONFIG_VERSION = 8
+ const val CONFIG_VERSION = 9
fun JsonElement.at(chain: List<String>, init: Boolean): JsonElement? {
if (chain.isEmpty()) return this
if (this !is JsonObject) return null
diff --git a/src/main/java/at/hannibal2/skyhanni/config/Features.java b/src/main/java/at/hannibal2/skyhanni/config/Features.java
index 33d766fdf..4085eb069 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/Features.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/Features.java
@@ -2,26 +2,26 @@ package at.hannibal2.skyhanni.config;
import at.hannibal2.skyhanni.SkyHanniMod;
import at.hannibal2.skyhanni.config.features.About;
-import at.hannibal2.skyhanni.config.features.BazaarConfig;
-import at.hannibal2.skyhanni.config.features.ChatConfig;
-import at.hannibal2.skyhanni.config.features.ChromaConfig;
-import at.hannibal2.skyhanni.config.features.CombatConfig;
-import at.hannibal2.skyhanni.config.features.CommandsConfig;
-import at.hannibal2.skyhanni.config.features.CrimsonIsleConfig;
-import at.hannibal2.skyhanni.config.features.DevConfig;
-import at.hannibal2.skyhanni.config.features.DungeonConfig;
-import at.hannibal2.skyhanni.config.features.EventConfig;
-import at.hannibal2.skyhanni.config.features.FishingConfig;
-import at.hannibal2.skyhanni.config.features.GUIConfig;
-import at.hannibal2.skyhanni.config.features.GardenConfig;
-import at.hannibal2.skyhanni.config.features.InventoryConfig;
-import at.hannibal2.skyhanni.config.features.ItemAbilityConfig;
-import at.hannibal2.skyhanni.config.features.MarkedPlayerConfig;
-import at.hannibal2.skyhanni.config.features.MiningConfig;
-import at.hannibal2.skyhanni.config.features.MinionsConfig;
-import at.hannibal2.skyhanni.config.features.MiscConfig;
-import at.hannibal2.skyhanni.config.features.RiftConfig;
-import at.hannibal2.skyhanni.config.features.SlayerConfig;
+import at.hannibal2.skyhanni.config.features.bazaar.BazaarConfig;
+import at.hannibal2.skyhanni.config.features.chat.ChatConfig;
+import at.hannibal2.skyhanni.config.features.chroma.ChromaConfig;
+import at.hannibal2.skyhanni.config.features.combat.CombatConfig;
+import at.hannibal2.skyhanni.config.features.commands.CommandsConfig;
+import at.hannibal2.skyhanni.config.features.crimsonisle.CrimsonIsleConfig;
+import at.hannibal2.skyhanni.config.features.dev.DevConfig;
+import at.hannibal2.skyhanni.config.features.dungeon.DungeonConfig;
+import at.hannibal2.skyhanni.config.features.event.EventConfig;
+import at.hannibal2.skyhanni.config.features.fishing.FishingConfig;
+import at.hannibal2.skyhanni.config.features.gui.GUIConfig;
+import at.hannibal2.skyhanni.config.features.garden.GardenConfig;
+import at.hannibal2.skyhanni.config.features.inventory.InventoryConfig;
+import at.hannibal2.skyhanni.config.features.itemability.ItemAbilityConfig;
+import at.hannibal2.skyhanni.config.features.markedplayer.MarkedPlayerConfig;
+import at.hannibal2.skyhanni.config.features.mining.MiningConfig;
+import at.hannibal2.skyhanni.config.features.minion.MinionsConfig;
+import at.hannibal2.skyhanni.config.features.misc.MiscConfig;
+import at.hannibal2.skyhanni.config.features.rift.RiftConfig;
+import at.hannibal2.skyhanni.config.features.slayer.SlayerConfig;
import com.google.gson.annotations.Expose;
import io.github.moulberry.moulconfig.Config;
import io.github.moulberry.moulconfig.Social;
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/ChatConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/ChatConfig.java
deleted file mode 100644
index 9ce9cc5a3..000000000
--- a/src/main/java/at/hannibal2/skyhanni/config/features/ChatConfig.java
+++ /dev/null
@@ -1,212 +0,0 @@
-package at.hannibal2.skyhanni.config.features;
-
-import at.hannibal2.skyhanni.config.FeatureToggle;
-import com.google.gson.annotations.Expose;
-import io.github.moulberry.moulconfig.annotations.Accordion;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
-import io.github.moulberry.moulconfig.annotations.ConfigOption;
-import org.lwjgl.input.Keyboard;
-
-public class ChatConfig {
-
- @Expose
- @ConfigOption(name = "Peek Chat", desc = "Hold this key to keep the chat open.")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_Z)
- public int peekChat = Keyboard.KEY_Z;
-
- @Expose
- @ConfigOption(name = "Chat Filter Types", desc = "")
- @Accordion
- public FilterTypesConfig filterType = new FilterTypesConfig();
-
- public static class FilterTypesConfig {
- @Expose
- @ConfigOption(name = "Hypixel Hub", desc = "Block messages outside SkyBlock in the Hypixel lobby: player joins, loot boxes, prototype lobby messages, radiating generosity and Hypixel tournaments.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hypixelHub = true;
-
- @Expose
- @ConfigOption(name = "Empty", desc = "Hide all the empty messages from the chat.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean empty = true;
-
- @Expose
- @ConfigOption(name = "Warping", desc = "Block 'Sending request to join...' and 'Warping...' messages.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean warping = true;
-
- @Expose
- @ConfigOption(name = "Welcome", desc = "Hide the 'Welcome to SkyBlock' message.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean welcome = true;
-
- @Expose
- @ConfigOption(name = "Guild Exp", desc = "Hide Guild EXP messages.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean guildExp = true;
-
- @Expose
- @ConfigOption(name = "Friend Join Left", desc = "Hide friend join/left messages.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean friendJoinLeft = false;
-
- @Expose
- @ConfigOption(name = "Winter Gifts", desc = "Hide useless Winter Gift messages.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean winterGift = false;
-
- @Expose
- @ConfigOption(name = "Powder Mining", desc = "Hide messages while opening chests in the Crystal Hollows. " +
- "(Except powder numbers over 1k, essence numbers over 2, Prehistoric Eggs, and Automaton Parts)")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean powderMining = true;
-
- @Expose
- @ConfigOption(name = "Kill Combo", desc = "Hide messages about the current Kill Combo from the Grandma Wolf Pet.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean killCombo = false;
-
- @Expose
- @ConfigOption(name = "Watchdog", desc = "Hide the message where Hypixel is flexing how many players they have banned over the last week.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean watchDog = true;
-
- @Expose
- @ConfigOption(name = "Profile Join", desc = "Hide 'You are playing on profile' and 'Profile ID' chat messages.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean profileJoin = true;
-
- //TODO remove
- @Expose
- @ConfigOption(name = "Others", desc = "Hide other annoying messages.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean others = false;
- }
-
- @Expose
- @ConfigOption(name = "Player Messages", desc = "")
- @Accordion
- public PlayerMessagesConfig playerMessage = new PlayerMessagesConfig();
-
- public static class PlayerMessagesConfig {
- @Expose
- @ConfigOption(name = "Player Rank Hider", desc = "Hide player ranks in all chat messages.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean playerRankHider = false;
-
- @Expose
- @ConfigOption(name = "Chat Filter", desc = "Scan messages sent by players for blacklisted words and gray out the message if any are found.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean chatFilter = false;
- }
-
- @Expose
- @ConfigOption(name = "Player Chat Symbols", desc = "")
- @Accordion
- public ChatSymbols chatSymbols = new ChatSymbols();
-
- public static class ChatSymbols {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Adds extra symbols to the chat such as those from ironman, " +
- "stranded, bingo or nether factions and places them next to your regular player emblems. " +
- "§cDoes not work with hide rank hider!")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(name = "Chat Symbol Location", desc = "Determines where the symbols should go in chat in relation to the " +
- "player's name. Hidden will hide all emblems from the chat. §eRequires above setting to be on to hide the symbols.")
- @ConfigEditorDropdown(values = {"Left", "Right", "Hidden"})
- public int symbolLocation = 0;
- }
-
- @Expose
- @ConfigOption(name = "Dungeon Filter", desc = "Hide annoying messages in Dungeons.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean dungeonMessages = true;
-
- @Expose
- @ConfigOption(name = "Dungeon Boss Messages", desc = "Hide messages from the Watcher and bosses in the Dungeon.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean dungeonBossMessages = false;
-
- @Expose
- @ConfigOption(name = "Hide Far Deaths", desc = "Hide other players' death messages, " +
- "except for players who are nearby or during Dungeons/a Kuudra fight.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideFarDeathMessages = false;
- //TODO jawbus + thunder
-
- @Expose
- @ConfigOption(name = "Compact Potion Messages", desc = "")
- @Accordion
- public CompactPotionConfig compactPotionMessages = new CompactPotionConfig();
-
- public static class CompactPotionConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Shorten chat messages about player potion effects.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(name = "Clickable Chat Message", desc = "Makes the Compact Potion message open the Potion effects menu on click.")
- @ConfigEditorBoolean
- public boolean clickableChatMessage = true;
- }
-
- @Expose
- @ConfigOption(name = "Compact Bestiary Message", desc = "Shorten the Bestiary level up message, showing additional information when hovering.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean compactBestiaryMessage = true;
-
- @Expose
- @ConfigOption(name = "Arachne Hider", desc = "Hide chat messages about the Arachne Fight while outside of §eArachne's Sanctuary§7.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideArachneMessages = false;
-
- @Expose
- @ConfigOption(
- name = "Sacks Hider",
- desc = "Hide the chat's sack change message with this, " +
- "not in Hypixel settings, for mods to access sack data in new features."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideSacksChange = false;
-
- @Expose
- @ConfigOption(
- name = "Translator",
- desc = "Click on a message to translate it into English. " +
- "Use §e/shcopytranslation§7 to get the translation from English. " +
- "§cTranslation is not guaranteed to be 100% accurate."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean translator = false;
-}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/CombatConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/CombatConfig.java
deleted file mode 100644
index d0d69afba..000000000
--- a/src/main/java/at/hannibal2/skyhanni/config/features/CombatConfig.java
+++ /dev/null
@@ -1,721 +0,0 @@
-package at.hannibal2.skyhanni.config.features;
-
-import at.hannibal2.skyhanni.config.FeatureToggle;
-import at.hannibal2.skyhanni.config.core.config.Position;
-import at.hannibal2.skyhanni.features.combat.ghostcounter.GhostFormatting;
-import at.hannibal2.skyhanni.features.combat.ghostcounter.GhostUtil;
-import com.google.gson.annotations.Expose;
-import io.github.moulberry.moulconfig.annotations.Accordion;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorButton;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorDraggableList;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorInfoText;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorText;
-import io.github.moulberry.moulconfig.annotations.ConfigOption;
-import io.github.moulberry.moulconfig.observer.Property;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-public class CombatConfig {
-
- @Expose
- @ConfigOption(name = "Damage Indicator", desc = "")
- @Accordion
- public DamageIndicatorConfig damageIndicator = new DamageIndicatorConfig();
-
- public static class DamageIndicatorConfig {
-
- @Expose
- @ConfigOption(name = "Damage Indicator Enabled", desc = "Show the boss' remaining health.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(name = "Healing Chat Message", desc = "Sends a chat message when a boss heals themself.")
- @ConfigEditorBoolean
- public boolean healingMessage = false;
-
- @Expose
- @ConfigOption(
- name = "Boss Name",
- desc = "Change how the boss name should be displayed.")
- @ConfigEditorDropdown(values = {"Hidden", "Full Name", "Short Name"})
- public int bossName = 1;
-
- @Expose
- @ConfigOption(
- name = "Select Boss",
- desc = "Change what type of boss you want the damage indicator be enabled for."
- )
- @ConfigEditorDraggableList(
- exampleText = {
- "§bDungeon All",
- "§bNether Mini Bosses",
- "§bVanquisher",
- "§bEndstone Protector (not tested)",
- "§bEnder Dragon (not finished)",
- "§bRevenant Horror",
- "§bTarantula Broodfather",
- "§bSven Packmaster",
- "§bVoidgloom Seraph",
- "§bInferno Demonlord",
- "§bHeadless Horseman (bugged)",
- "§bDungeon Floor 1",
- "§bDungeon Floor 2",
- "§bDungeon Floor 3",
- "§bDungeon Floor 4",
- "§bDungeon Floor 5",
- "§bDungeon Floor 6",
- "§bDungeon Floor 7",
- "§bDiana Mobs",
- "§bSea Creatures",
- "Dummy",
- "§bArachne",
- "§bThe Rift Bosses",
- "§bRiftstalker Bloodfiend",
- "§6Reindrake"
- }
- )
- //TODO only show currently working and tested features
- public List<Integer> bossesToShow = new ArrayList<>(Arrays.asList(0, 1, 2, 5, 6, 7, 8, 9, 18, 19, 21, 22, 23, 24));
-
- @Expose
- @ConfigOption(name = "Hide Damage Splash", desc = "Hiding damage splashes near the damage indicator.")
- @ConfigEditorBoolean
- public boolean hideDamageSplash = false;
-
- @Expose
- @ConfigOption(name = "Damage Over Time", desc = "Show damage and health over time below the damage indicator.")
- @ConfigEditorBoolean
- public boolean showDamageOverTime = false;
-
- @Expose
- @ConfigOption(name = "Hide Nametag", desc = "Hide the vanilla nametag of damage indicator bosses.")
- @ConfigEditorBoolean
- public boolean hideVanillaNametag = false;
-
- @Expose
- @ConfigOption(name = "Time to Kill", desc = "Show the time it takes to kill the slayer boss.")
- @ConfigEditorBoolean
- public boolean timeToKillSlayer = true;
-
-
- @Expose
- @ConfigOption(name = "Ender Slayer", desc = "")
- @Accordion
- public EnderSlayerConfig enderSlayer = new EnderSlayerConfig();
-
- public static class EnderSlayerConfig {
-
- @Expose
- @ConfigOption(name = "Laser Phase Timer", desc = "Show a timer when the laser phase will end.")
- @ConfigEditorBoolean
- public boolean laserPhaseTimer = false;
-
- @Expose
- @ConfigOption(name = "Health During Laser", desc = "Show the health of Voidgloom Seraph 4 during the laser phase.")
- @ConfigEditorBoolean
- public boolean showHealthDuringLaser = false;
- }
-
- @Expose
- @ConfigOption(name = "Vampire Slayer", desc = "")
- @Accordion
- public VampireSlayerConfig vampireSlayer = new VampireSlayerConfig();
-
- public static class VampireSlayerConfig {
- @Expose
- @ConfigOption(name = "HP Until Steak", desc = "Show the amount of HP missing until the Steak can be used on the Vampire Slayer on top of the boss.")
- @ConfigEditorBoolean
- public boolean hpTillSteak = false;
-
- @Expose
- @ConfigOption(name = "Mania Circles", desc = "Show a timer until the boss leaves the invincible Mania Circles state.")
- @ConfigEditorBoolean
- public boolean maniaCircles = false;
-
- @Expose
- @ConfigOption(name = "Percentage HP", desc = "Show the percentage of HP next to the HP.")
- @ConfigEditorBoolean
- public boolean percentage = false;
- }
- }
-
- @Expose
- @ConfigOption(name = "Ghost Counter", desc = "")
- @Accordion
- public GhostCounterConfig ghostCounter = new GhostCounterConfig();
-
- public static class GhostCounterConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Enable the ghost counter (invisible creepers in the Dwarven Mines The Mist area).")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(
- name = "Display Text",
- desc = "Drag text to change the appearance of the overlay."
- )
- @ConfigEditorDraggableList(
- exampleText = {
- "§6Ghosts Counter",
- " §bGhost Killed: 42",
- " §bSorrow: 6",
- " §bGhost since Sorrow: 1",
- " §bGhosts/Sorrow: 5",
- " §bVolta: 6",
- " §bPlasma: 8",
- " §bGhostly Boots: 1",
- " §bBag Of Cash: 4",
- " §bAvg Magic Find: 271",
- " §bScavenger Coins: 15,000",
- " §bKill Combo: 14",
- " §bHighest Kill Combo: 96",
- " §bSkill XP Gained: 145,648",
- " §bBestiary 1: 0/10",
- " §bXP/h: 810,410",
- " §bKills/h: 420",
- " §bETA: 14d",
- " §bMoney/h: 13,420,069",
- " §bMoney made: 14B"
- }
- )
- public List<Integer> ghostDisplayText = new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4, 9, 10, 11, 12));
-
- @ConfigOption(name = "Text Formatting", desc = "")
- @Accordion
- @Expose
- public TextFormattingConfig textFormatting = new TextFormattingConfig();
-
- public static class TextFormattingConfig {
-
- @ConfigOption(name = "§eText Formatting Info", desc = "§e%session% §ris §e§lalways §rreplaced with\n" +
- "§7the count for your current session.\n" +
- "§7Reset when restarting the game.\n" +
- "§7You can use §e&Z §7color code to use SBA chroma.")
- @ConfigEditorInfoText
- public boolean formatInfo = false;
-
- @ConfigOption(name = "Reset Formatting", desc = "Reset formatting to default text.")
- @ConfigEditorButton(buttonText = "Reset")
- public Runnable resetFormatting = GhostFormatting.INSTANCE::reset;
-
- @ConfigOption(name = "Export Formatting", desc = "Export current formatting to clipboard.")
- @ConfigEditorButton(buttonText = "Export")
- public Runnable exportFormatting = GhostFormatting.INSTANCE::export;
-
- @ConfigOption(name = "Import Formatting", desc = "Import formatting from clipboard.")
- @ConfigEditorButton(buttonText = "Import")
- public Runnable importFormatting = GhostFormatting.INSTANCE::importFormat;
-
- @Expose
- @ConfigOption(name = "Title", desc = "Title Line.")
- @ConfigEditorText
- public String titleFormat = "&6Ghost Counter";
-
- @Expose
- @ConfigOption(name = "Ghost Killed", desc = "Ghost Killed line.\n§e%value% §ris replaced with\n" +
- "Ghost Killed.\n" +
- "§e%session% §7is replaced with Ghost killed")
- @ConfigEditorText
- public String ghostKilledFormat = " &6Ghost Killed: &b%value% &7(%session%)";
-
- @Expose
- @ConfigOption(name = "Sorrows", desc = "Sorrows drop line.\n" +
- "§e%value% §7is replaced with\nsorrows dropped.")
- @ConfigEditorText
- public String sorrowsFormat = " &6Sorrow: &b%value% &7(%session%)";
-
- @Expose
- @ConfigOption(name = "Ghost Since Sorrow", desc = "Ghost Since Sorrow line.\n" +
- "§e%value% §7is replaced with\nGhost since last sorrow drop.")
- @ConfigEditorText
- public String ghostSinceSorrowFormat = " &6Ghost since Sorrow: &b%value%";
-
- @Expose
- @ConfigOption(name = "Ghost Kill Per Sorrow", desc = "Ghost Kill Per Sorrow line.\n" +
- "§e%value% §7is replaced with\naverage ghost kill per sorrow drop.")
- @ConfigEditorText
- public String ghostKillPerSorrowFormat = " &6Ghosts/Sorrow: &b%value%";
-
- @Expose
- @ConfigOption(name = "Voltas", desc = "Voltas drop line.\n" +
- "§e%value% §7is replaced with\nvoltas dropped.")
- @ConfigEditorText
- public String voltasFormat = " &6Voltas: &b%value% &7(%session%)";
-
- @Expose
- @ConfigOption(name = "Plasmas", desc = "Plasmas drop line.\n" +
- "§e%value% §7is replaced with\nplasmas dropped.")
- @ConfigEditorText
- public String plasmasFormat = " &6Plasmas: &b%value% &7(%session%)";
-
- @Expose
- @ConfigOption(name = "Ghostly Boots", desc = "Ghostly Boots drop line.\n" +
- "§e%value% §7is replaced with\nGhostly Boots dropped.")
- @ConfigEditorText
- public String ghostlyBootsFormat = " &6Ghostly Boots: &b%value% &7(%session%)";
-
- @Expose
- @ConfigOption(name = "Bag Of Cash", desc = "Bag Of Cash drop line.\n" +
- "§e%value% §7is replaced with\nBag Of Cash dropped.")
- @ConfigEditorText
- public String bagOfCashFormat = " &6Bag Of Cash: &b%value% &7(%session%)";
-
- @Expose
- @ConfigOption(name = "Average Magic Find", desc = "Average Magic Find line.\n" +
- "§e%value% §7is replaced with\nAverage Magic Find.")
- @ConfigEditorText
- public String avgMagicFindFormat = " &6Avg Magic Find: &b%value%";
-
- @Expose
- @ConfigOption(name = "Scavenger Coins", desc = "Scavenger Coins line.\n" +
- "§e%value% §7is replaced with\nCoins earned from kill ghosts.\nInclude: Scavenger Enchant, Scavenger Talismans, Kill Combo.")
- @ConfigEditorText
- public String scavengerCoinsFormat = " &6Scavenger Coins: &b%value% &7(%session%)";
-
- @Expose
- @ConfigOption(name = "Kill Combo", desc = "Kill Combo line.\n" +
- "§e%value% §7is replaced with\nYour current kill combo.")
- @ConfigEditorText
- public String killComboFormat = " &6Kill Combo: &b%value%";
-
- @Expose
- @ConfigOption(name = "Highest Kill Combo", desc = "Highest Kill Combo line.\n" +
- "§e%value% §7is replaced with\nYour current highest kill combo.")
- @ConfigEditorText
- public String highestKillComboFormat = " &6Highest Kill Combo: &b%value% &7(%session%)";
-
- @Expose
- @ConfigOption(name = "Skill XP Gained", desc = "Skill XP Gained line.\n" +
- "§e%value% §7is replaced with\nSkill XP Gained from killing Ghosts.")
- @ConfigEditorText
- public String skillXPGainFormat = " &6Skill XP Gained: &b%value% &7(%session%)";
-
- @ConfigOption(name = "Bestiary Formatting", desc = "")
- @Accordion
- @Expose
- public BestiaryFormattingConfig bestiaryFormatting = new BestiaryFormattingConfig();
-
- public static class BestiaryFormattingConfig {
-
- @Expose
- @ConfigOption(name = "Bestiary", desc = "Bestiary Progress line.\n§e%value% §7is replaced with\n" +
- "Your current progress to next level.\n" +
- "§e%currentLevel% &7is replaced with your current bestiary level\n" +
- "§e%nextLevel% §7is replaced with your current bestiary level +1.\n" +
- "§e%value% §7is replaced with one of the text below.")
- @ConfigEditorText
- public String base = " &6Bestiary %display%: &b%value%";
-
- @Expose
- @ConfigOption(name = "No Data", desc = "Text to show when you need to open the\nBestiary Menu to gather data.")
- @ConfigEditorText
- public String openMenu = "§cOpen Bestiary Menu !";
-
- @Expose
- @ConfigOption(name = "Maxed", desc = "Text to show when your bestiary for ghost is at max level.\n" +
- "§e%currentKill% §7is replaced with your current total kill.")
- @ConfigEditorText
- public String maxed = "%currentKill% (&c&lMaxed!)";
-
- @Expose
- @ConfigOption(name = "Progress to Max", desc = "Text to show progress when the §eMaxed Bestiary §7option is §aON\n" +
- "§e%currentKill% §7is replaced with your current total kill.")
- @ConfigEditorText
- public String showMax_progress = "%currentKill%/250k (%percentNumber%%)";
-
- @Expose
- @ConfigOption(name = "Progress", desc = "Text to show progress when the §eMaxed Bestiary§7 option is §cOFF\n" +
- "§e%currentKill% §7is replaced with how many kill you have to the next level.\n" +
- "§e%killNeeded% §7is replaced with how many kill you need to reach the next level.")
- @ConfigEditorText
- public String progress = "%currentKill%/%killNeeded%";
- }
-
-
- @ConfigOption(name = "XP Per Hour Formatting", desc = "")
- @Accordion
- @Expose
- public XPHourFormattingConfig xpHourFormatting = new XPHourFormattingConfig();
-
- public static class XPHourFormattingConfig {
-
- @Expose
- @ConfigOption(name = "XP/h", desc = "XP Per Hour line.\n" +
- "§e%value% §7is replaced with one of the text below.")
- @ConfigEditorText
- public String base = " &6XP/h: &b%value%";
-
- @Expose
- @ConfigOption(name = "No Data", desc = "XP Per Hour line.\n§e%value% §7is replaced with\nEstimated amount of combat xp you gain per hour.")
- @ConfigEditorText
- public String noData = "&bN/A";
-
- @Expose
- @ConfigOption(name = "Paused", desc = "Text displayed next to the time \n" +
- "when you are doing nothing for a given amount of seconds")
- @ConfigEditorText
- public String paused = "&c(PAUSED)";
- }
-
-
- @ConfigOption(name = "ETA Formatting", desc = "")
- @Accordion
- @Expose
- public ETAFormattingConfig etaFormatting = new ETAFormattingConfig();
-
- public static class ETAFormattingConfig {
- @Expose
- @ConfigOption(name = "ETA to next level", desc = "ETA To Next Level Line.\n" +
- "§e%value% §7is replaced with one of the text below.")
- @ConfigEditorText
- public String base = " &6ETA: &b%value%";
-
- @Expose
- @ConfigOption(name = "Maxed!", desc = "So you really maxed ghost bestiary ?")
- @ConfigEditorText
- public String maxed = "&c&lMAXED!";
-
- @Expose
- @ConfigOption(name = "No Data", desc = "Start killing some ghosts !")
- @ConfigEditorText
- public String noData = "&bN/A";
-
- @Expose
- @ConfigOption(name = "Progress", desc = "Text to show progress to next level.")
- @ConfigEditorText
- public String progress = "&b%value%";
-
- @Expose
- @ConfigOption(name = "Paused", desc = "Text displayed next to the time \n" +
- "when you are doing nothing for a given amount of seconds")
- @ConfigEditorText
- public String paused = "&c(PAUSED)";
-
- @Expose
- @ConfigOption(name = "Time", desc = "§e%days% §7is replaced with days remaining.\n" +
- "§e%hours% §7is replaced with hours remaining.\n" +
- "§e%minutes% §7is replaced with minutes remaining.\n" +
- "§e%seconds% §7is replaced with seconds remaining.")
- @ConfigEditorText
- public String time = "&6%days%%hours%%minutes%%seconds%";
- }
-
- @ConfigOption(name = "Kill Per Hour Formatting", desc = "")
- @Expose
- @Accordion
- public KillHourFormattingConfig killHourFormatting = new KillHourFormattingConfig();
-
- public static class KillHourFormattingConfig {
- @Expose
- @ConfigOption(name = "Kill/h", desc = "Kill Per Hour line.\n§e%value% §7is replaced with\nEstimated kills per hour you get.")
- @ConfigEditorText
- public String base = " &6Kill/h: &b%value%";
-
- @Expose
- @ConfigOption(name = "No Data", desc = "Start killing some ghosts !")
- @ConfigEditorText
- public String noData = "&bN/A";
-
- @Expose
- @ConfigOption(name = "Paused", desc = "Text displayed next to the time \n" +
- "when you are doing nothing for a given amount of seconds")
- @ConfigEditorText
- public String paused = "&c(PAUSED)";
- }
-
-
- @Expose
- @ConfigOption(name = "Money Per Hour", desc = "Money Per Hour.\n§e%value% §7is replaced with\nEstimated money you get per hour\n" +
- "Calculated with your kill per hour and your average magic find.")
- @ConfigEditorText
- public String moneyHourFormat = " &6$/h: &b%value%";
-
- @Expose
- @ConfigOption(name = "Money made", desc = "Calculate the money you made.\nInclude §eSorrow§7, §ePlasma§7, §eVolta§7, §e1M coins drop\n" +
- "§eGhostly Boots§7, §eScavenger coins.\n" +
- "§cUsing current Sell Offer value.")
- @ConfigEditorText
- public String moneyMadeFormat = " &6Money made: &b%value%";
- }
-
- @Expose
- @ConfigOption(name = "Extra space", desc = "Space between each line of text.")
- @ConfigEditorSlider(
- minValue = -5,
- maxValue = 10,
- minStep = 1)
- public int extraSpace = 1;
-
- @Expose
- @ConfigOption(name = "Pause Timer", desc = "How many seconds does it wait before pausing.")
- @ConfigEditorSlider(
- minValue = 1,
- maxValue = 20,
- minStep = 1
- )
- public int pauseTimer = 3;
-
- @Expose
- @ConfigOption(name = "Show only in The Mist", desc = "Show the overlay only when you are in The Mist.")
- @ConfigEditorBoolean
- public boolean onlyOnMist = true;
-
- @Expose
- @ConfigOption(name = "Maxed Bestiary", desc = "Show progress to max bestiary instead of next level.")
- @ConfigEditorBoolean
- public boolean showMax = false;
-
- @ConfigOption(name = "Reset", desc = "Reset the counter.")
- @ConfigEditorButton(buttonText = "Reset")
- public Runnable resetCounter = GhostUtil.INSTANCE::reset;
-
- @Expose
- public Position position = new Position(50, 50, false, true);
- }
-
- @Expose
- @ConfigOption(name = "Summonings", desc = "")
- @Accordion
- public SummoningsConfig summonings = new SummoningsConfig();
-
- public static class SummoningsConfig {
-
- @Expose
- @ConfigOption(name = "Summoning Soul Display", desc = "Show the name of dropped Summoning Souls laying on the ground. " +
- "§cNot working in Dungeons if Skytils' 'Hide Non-Starred Mobs Nametags' feature is enabled!")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean summoningSoulDisplay = false;
-
- @Expose
- @ConfigOption(name = "Summoning Mob Display", desc = "Show the health of your spawned summons.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean summoningMobDisplay = false;
-
- @Expose
- public Position summoningMobDisplayPos = new Position(10, 10, false, true);
-
- @Expose
- @ConfigOption(name = "Summoning Mob Nametag", desc = "Hide the nametag of your spawned summons.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean summoningMobHideNametag = false;
-
- @Expose
- @ConfigOption(name = "Summoning Mob Color", desc = "Marks own summons green.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean summoningMobColored = false;
- }
-
- @Expose
- @ConfigOption(name = "Mobs", desc = "")
- @Accordion
- public MobsConfig mobs = new MobsConfig();
-
- public static class MobsConfig {
-
- @Expose
- @ConfigOption(name = "Highlighters", desc = "")
- public boolean highlighters = false;
-
- @Expose
- @ConfigOption(name = "Area Boss", desc = "Highlight Golden Ghoul, Old Wolf, Voidling Extremist and Millenia-Aged Blaze.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean areaBossHighlight = true;
-
- @Expose
- @ConfigOption(name = "Arachne Keeper", desc = "Highlight the Arachne Keeper in the Spider's Den in purple color.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean arachneKeeperHighlight = true;
-
- @Expose
- @ConfigOption(name = "Corleone", desc = "Highlight Boss Corleone in the Crystal Hollows.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean corleoneHighlighter = true;
-
- @Expose
- @ConfigOption(name = "Zealot", desc = "Highlight Zealots and Bruisers in The End.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean zealotBruiserHighlighter = false;
-
- @Expose
- @ConfigOption(
- name = "Special Zealots",
- desc = "Highlight Special Zealots (the ones that drop Summoning Eyes) in the End."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean specialZealotHighlighter = true;
-
- @Expose
- @ConfigOption(name = "Corrupted Mob", desc = "Highlight corrupted mobs in purple color.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean corruptedMobHighlight = false;
-
- @Expose
- @ConfigOption(name = "Arachne Boss", desc = "Highlight the Arachne boss in red and mini-bosses in orange.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean arachneBossHighlighter = true;
-
- @Expose
- @ConfigOption(name = "Respawn Timers", desc = "")
- public boolean timers = false;
-
- @Expose
- @ConfigOption(
- name = "Area Boss",
- desc = "Show a timer when Golden Ghoul, Old Wolf, Voidling Extremist or Millenia-Aged Blaze respawns. " +
- "§cSometimes it takes 20-30 seconds to calibrate correctly."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean areaBossRespawnTimer = false;
-
- @Expose
- @ConfigOption(
- name = "Arachne Spawn Timer",
- desc = "Show a timer when Arachne fragments or crystals are placed to indicate how long " +
- "until the boss will spawn. §cTimer may be 1-2 seconds off."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean showArachneSpawnTimer = true;
-
- @Expose
- @ConfigOption(name = "Enderman TP Hider", desc = "Stops the Enderman Teleportation animation.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean endermanTeleportationHider = true;
-
- @Expose
- @ConfigOption(name = "Arachne Minis Hider", desc = "Hides the nametag above Arachne minis.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideNameTagArachneMinis = true;
- }
-
- @Expose
- @ConfigOption(name = "Bestiary", desc = "")
- @Accordion
- public BestiaryConfig bestiary = new BestiaryConfig();
-
- public static class BestiaryConfig {
- @Expose
- @ConfigOption(name = "Enable", desc = "Show Bestiary Data overlay in the Bestiary menu.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(name = "Number format", desc = "Short: 1.1k\nLong: 1.100")
- @ConfigEditorDropdown(values = {"Short", "Long"})
- public int numberFormat = 0;
-
- @Expose
- @ConfigOption(name = "Display type", desc = "Choose what the display should show")
- @ConfigEditorDropdown(values = {
- "Global to max",
- "Global to next tier",
- "Lowest total kills",
- "Highest total kills",
- "Lowest kills needed to max",
- "Highest kills needed to max",
- "Lowest kills needed to next tier",
- "Highest kills needed to next tier"
- })
- public int displayType = 0;
-
- @Expose
- @ConfigOption(name = "Hide maxed", desc = "Hide maxed mobs.")
- @ConfigEditorBoolean
- public boolean hideMaxed = false;
-
- @Expose
- @ConfigOption(name = "Replace Romans", desc = "Replace Roman numerals (IX) with regular numbers (9)")
- @ConfigEditorBoolean
- public boolean replaceRoman = false;
-
- @Expose
- public Position position = new Position(100, 100, false, true);
- }
-
- @Expose
- @ConfigOption(name = "Ender Node Tracker", desc = "")
- @Accordion
- public EnderNodeConfig enderNodeTracker = new EnderNodeConfig();
-
- public static class EnderNodeConfig {
- @Expose
- @ConfigOption(
- name = "Enabled",
- desc = "Tracks all of your drops from mining Ender Nodes in the End.\n" +
- "Also tracks drops from Endermen."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(
- name = "Text Format",
- desc = "Drag text to change the appearance of the overlay."
- )
- @ConfigEditorDraggableList(
- exampleText = {
- "§5§lEnder Node Tracker",
- "§d1,303 Ender Nodes Mined",
- "§615.3M Coins Made",
- " ",
- "§b123 §cEndermite Nest",
- "§b832 §aEnchanted End Stone",
- "§b230 §aEnchanted Obsidian",
- "§b1630 §aEnchanted Ender Pearl",
- "§b85 §aGrand Experience Bottle",
- "§b4 §9Titanic Experience Bottle",
- "§b15 §9End Stone Shulker",
- "§b53 §9End Stone Geode",
- "§b10 §d◆ Magical Rune I",
- "§b24 §5Ender Gauntlet",
- "§b357 §5Mite Gel",
- "§b2 §cShrimp The Fish",
- " ",
- "§b200 §5Ender Armor",
- "§b24 §5Ender Helmet",
- "§b24 §5Ender Chestplate",
- "§b24 §5Ender Leggings",
- "§b24 §5Ender Boots",
- "§b24 §5Ender Necklace",
- "§f10§7-§a8§7-§93§7-§52§7-§61 §fEnderman Pet",
- " "
- }
- )
- public Property<List<Integer>> textFormat = Property.of(new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 14, 15, 16, 17, 23)));
-
- @Expose
- public Position position = new Position(10, 80, false, true);
- }
-
- @Expose
- @ConfigOption(name = "Hide Damage Splash", desc = "Hide all damage splashes anywhere in SkyBlock.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideDamageSplash = false;
-}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/CommandsConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/CommandsConfig.java
deleted file mode 100644
index cb127dc11..000000000
--- a/src/main/java/at/hannibal2/skyhanni/config/features/CommandsConfig.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package at.hannibal2.skyhanni.config.features;
-
-import at.hannibal2.skyhanni.config.FeatureToggle;
-import com.google.gson.annotations.Expose;
-import io.github.moulberry.moulconfig.annotations.Accordion;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
-import io.github.moulberry.moulconfig.annotations.ConfigOption;
-import org.lwjgl.input.Keyboard;
-
-public class CommandsConfig {
-
- @ConfigOption(name = "Tab Complete", desc = "")
- @Accordion
- @Expose
- public TabCompleteConfig tabComplete = new TabCompleteConfig();
-
- public static class TabCompleteConfig {
-
- @Expose
- @ConfigOption(name = "Warps", desc = "Tab complete the warp-point names when typing §e/warp <TAB>§7.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean warps = true;
-
- @Expose
- @ConfigOption(name = "Island Players", desc = "Tab complete other players on the same island.")
- public boolean islandPlayers = true;
-
- @Expose
- @ConfigOption(name = "Friends", desc = "Tab complete friends from your friends list.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean friends = true;
-
- @Expose
- @ConfigOption(name = "Only Best Friends", desc = "Only Tab Complete best friends.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean onlyBestFriends = false;
-
- @Expose
- @ConfigOption(name = "Party", desc = "Tab complete Party Members.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean party = true;
-
- @Expose
- @ConfigOption(name = "VIP Visits", desc = "Tab complete the visit to special users with cake souls on it.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean vipVisits = true;
-
- @Expose
- @ConfigOption(name = "/gfs Sack", desc = "Tab complete §e/gfs §7sack items.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean gfsSack = true;
-
- @Expose
- @ConfigOption(name = "Party Commands", desc = "Tab complete commonly used party commands.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean partyCommands = true;
-
- @Expose
- @ConfigOption(name = "View Recipe", desc = "Tab complete item IDs in the the Hypixel command §e/viewrecipe§7. Only items with recipes are tab completed.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean viewrecipeItems = true;
- }
-
- @ConfigOption(name = "Fandom Wiki for §e/wiki", desc = "")
- @Accordion
- @Expose
- public FandomWikiCommmandConfig fandomWiki = new FandomWikiCommmandConfig();
-
- public static class FandomWikiCommmandConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Use Fandom Wiki (§ehypixel-skyblock.fandom.com§7) instead of the Hypixel wiki (§ewiki.hypixel.net§7) in most wiki-related chat messages.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(name = "Skip Chat", desc = "Directly opens the Fandom Wiki instead of sending the §e\"Click to search for this thing on the Fandom Wiki\"§7 message beforehand.")
- @ConfigEditorBoolean
- public boolean skipWikiChat = false;
-
- @Expose
- @ConfigOption(name = "Fandom Wiki Key", desc = "Search for an item on Fandom Wiki with this keybind.\n§4For optimal experiences, do §lNOT§r §4bind this to a mouse button.")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
- public int fandomWikiKeybind = Keyboard.KEY_NONE;
- }
-
- @ConfigOption(name = "Party Commands", desc = "Shortens party commands and allows tab-completing for them. " +
- "\n§eCommands: /pt /pp /pko /pk §7SkyBlock command §e/pt §7to check the play time still works.")
- @Expose
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean shortCommands = true;
-
- @Expose
- @ConfigOption(name = "Replace Warp Is", desc = "Adds §e/warp is §7alongside §e/is§7. Idk why. Ask §cKaeso")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean replaceWarpIs = false;
-
- @Expose
- @ConfigOption(name = "/viewrecipe Lower Case", desc = "Adds support for lower case item IDs to the Hypixel command §e/viewrecipe§7.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean viewRecipeLowerCase = true;
-}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/CrimsonIsleConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/CrimsonIsleConfig.java
deleted file mode 100644
index cb94035a7..000000000
--- a/src/main/java/at/hannibal2/skyhanni/config/features/CrimsonIsleConfig.java
+++ /dev/null
@@ -1,157 +0,0 @@
-package at.hannibal2.skyhanni.config.features;
-
-import at.hannibal2.skyhanni.config.FeatureToggle;
-import at.hannibal2.skyhanni.config.core.config.Position;
-import com.google.gson.annotations.Expose;
-import io.github.moulberry.moulconfig.annotations.Accordion;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
-import io.github.moulberry.moulconfig.annotations.ConfigOption;
-import org.lwjgl.input.Keyboard;
-
-public class CrimsonIsleConfig {
-
- @ConfigOption(name = "Ashfang", desc = "")
- @Accordion
- @Expose
- public AshfangConfig ashfang = new AshfangConfig();
-
- public static class AshfangConfig {
-
- @ConfigOption(name = "Gravity Orbs", desc = "")
- @Accordion
- @Expose
- public GravityOrbsConfig gravityOrbs = new GravityOrbsConfig();
-
- public static class GravityOrbsConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Shows the Gravity Orbs more clearly.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(name = "Color", desc = "Color of the Gravity Orbs.")
- @ConfigEditorColour
- public String color = "0:120:255:85:85";
- }
-
- @ConfigOption(name = "Blazing Souls", desc = "")
- @Accordion
- @Expose
- public BlazingSoulsColor blazingSouls = new BlazingSoulsColor();
-
- public static class BlazingSoulsColor {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Shows the Blazing Souls more clearly.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(name = "Souls Color", desc = "Color of the Blazing Souls.")
- @ConfigEditorColour
- public String color = "0:245:85:255:85";
- }
-
- @ConfigOption(name = "Hide Stuff", desc = "")
- @Accordion
- @Expose
- public HideAshfangConfig hide = new HideAshfangConfig();
-
- public static class HideAshfangConfig {
-
- @Expose
- @ConfigOption(name = "Hide Particles", desc = "Hide particles around the Ashfang boss.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean particles = false;
-
- @Expose
- @ConfigOption(name = "Hide Full Names", desc = "Hide the names of full health blazes around Ashfang (only useful when highlight blazes is enabled)")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean fullNames = false;
-
- @Expose
- @ConfigOption(name = "Hide Damage Splash", desc = "Hide damage splashes around Ashfang.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean damageSplash = false;
- }
-
- @Expose
- @ConfigOption(name = "Highlight Blazes", desc = "Highlight the different blazes in their respective colors.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlightBlazes = false;
-
- @Expose
- @ConfigOption(name = "Freeze Cooldown", desc = "Show the cooldown for how long Ashfang blocks your abilities.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean freezeCooldown = false;
-
- @Expose
- public Position freezeCooldownPos = new Position(10, 10, false, true);
-
- @Expose
- @ConfigOption(name = "Reset Time", desc = "Show the cooldown until Ashfang pulls his underlings back.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean nextResetCooldown = false;
-
- @Expose
- public Position nextResetCooldownPos = new Position(10, 10, false, true);
- }
-
- @ConfigOption(name = "Reputation Helper", desc = "")
- @Accordion
- @Expose
- public ReputationHelperConfig reputationHelper = new ReputationHelperConfig();
-
- public static class ReputationHelperConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Enable features around Reputation features in the Crimson Isle.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(name = "Use Hotkey", desc = "Only show the Reputation Helper while pressing the hotkey.")
- @ConfigEditorBoolean
- public boolean useHotkey = false;
-
- @Expose
- @ConfigOption(name = "Hotkey", desc = "Press this hotkey to show the Reputation Helper.")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
- public int hotkey = Keyboard.KEY_NONE;
-
-
- @Expose
- public Position position = new Position(10, 10, false, true);
-
- @Expose
- @ConfigOption(name = "Show Locations", desc = "Crimson Isles waypoints for locations to get reputation.")
- @ConfigEditorDropdown(values = {"Always", "Only With Hotkey", "Never"})
- public int showLocation = 1;
- }
-
- @Expose
- @ConfigOption(name = "Quest Item Helper", desc = "When you open the fetch item quest in the town board, " +
- "it shows a clickable chat message that will grab the items needed from the sacks.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean questItemHelper = false;
-
- @Expose
- @ConfigOption(name = "Pablo NPC Helper", desc = "Similar to Quest Item Helper, shows a clickable message that grabs the flower needed from sacks.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean pabloHelper = false;
-}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/DevConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/DevConfig.java
deleted file mode 100644
index 4ee5f9469..000000000
--- a/src/main/java/at/hannibal2/skyhanni/config/features/DevConfig.java
+++ /dev/null
@@ -1,225 +0,0 @@
-package at.hannibal2.skyhanni.config.features;
-
-import at.hannibal2.skyhanni.config.core.config.Position;
-import com.google.gson.annotations.Expose;
-import io.github.moulberry.moulconfig.annotations.Accordion;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
-import io.github.moulberry.moulconfig.annotations.ConfigOption;
-import org.lwjgl.input.Keyboard;
-
-public class DevConfig {
-
- @Expose
- @ConfigOption(name = "Repo Auto Update", desc = "Update the repository on every startup.\n" +
- "§cOnly disable this if you know what you are doing!")
- @ConfigEditorBoolean
- public boolean repoAutoUpdate = true;
-
- @Expose
- @ConfigOption(name = "Debug", desc = "")
- @Accordion
- public DebugConfig debug = new DebugConfig();
-
- public static class DebugConfig {
- @Expose
- @ConfigOption(name = "Enable Debug", desc = "Enable Test logic")
- @ConfigEditorBoolean
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(name = "Command Logging", desc = "Logs stack trace information into the console when a command gets sent to Hypixel. (by any mod or the player)")
- @ConfigEditorBoolean
- public boolean commandLogs = false;
-
- @Expose
- @ConfigOption(
- name = "Mod Menu Log",
- desc = "Enables debug messages when the currently opened GUI changes, with the path to the gui class. " +
- "Useful for adding more mods to quick mod menu switch."
- )
- @ConfigEditorBoolean
- public boolean modMenuLog = false;
-
- @Expose
- @ConfigOption(name = "Show Internal Name", desc = "Show internal names in item lore.")
- @ConfigEditorBoolean
- public boolean showInternalName = false;
-
- @Expose
- @ConfigOption(name = "Show Empty Internal Names", desc = "Shows internal name even for items with none.")
- @ConfigEditorBoolean
- public boolean showEmptyNames = false;
-
- @Expose
- @ConfigOption(name = "Show Item Rarity", desc = "Show item rarities in item lore.")
- @ConfigEditorBoolean
- public boolean showItemRarity = false;
-
- @Expose
- @ConfigOption(name = "Copy Internal Name", desc = "Copies the internal name of an item on key press in the clipboard.")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
- public int copyInternalName = Keyboard.KEY_NONE;
-
- @Expose
- @ConfigOption(name = "Show NPC Price", desc = "Show NPC price in item lore.")
- @ConfigEditorBoolean
- public boolean showNpcPrice = false;
-
- @Expose
- @ConfigOption(name = "Show Item UUID", desc = "Show the Unique Identifier of items in the lore.")
- @ConfigEditorBoolean
- public boolean showItemUuid = false;
-
- @Expose
- @ConfigOption(name = "Copy Item Data", desc = "Copies item NBT data on key press in a GUI to clipboard.")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
- public int copyItemData = Keyboard.KEY_NONE;
-
- @Expose
- @ConfigOption(name = "Copy Compressed Item Data", desc = "Copies compressed item NBT data on key press in a GUI to clipboard.")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
- public int copyItemDataCompressed = Keyboard.KEY_NONE;
-
- @Expose
- @ConfigOption(name = "Copy RNG Meter", desc = "Copies internal names and maxed XP needed from RNG meter inventories as json to clipboard.")
- @ConfigEditorBoolean
- public boolean copyRngMeter = false;
-
- @Expose
- @ConfigOption(name = "Copy Bestiary Data", desc = "Copies the bestiary data from the inventory as json to clipboard.")
- @ConfigEditorBoolean
- public boolean copyBestiaryData = false;
-
- @Expose
- @ConfigOption(name = "Highlight Missing Repo Items", desc = "Highlights each item in the current inventory that is not in your current NEU repo.")
- @ConfigEditorBoolean
- public boolean highlightMissingRepo = false;
-
- @Expose
- @ConfigOption(name = "Hot Swap Detection", desc = "Show chat messages when Hot Swap starts and ends.")
- @ConfigEditorBoolean
- public boolean hotSwapDetection = false;
- }
-
- @Expose
- @ConfigOption(name = "Slot Number", desc = "Show slot number in inventory while pressing this key.")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
- public int showSlotNumberKey = Keyboard.KEY_NONE;
-
- @ConfigOption(name = "Parkour Waypoints", desc = "")
- @Accordion
- @Expose
- public WaypointsConfig waypoint = new WaypointsConfig();
-
- public static class WaypointsConfig {
-
- @Expose
- @ConfigOption(name = "Save Hotkey", desc = "Saves block location to a temporarily parkour and copies everything to your clipboard.")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
- public int saveKey = Keyboard.KEY_NONE;
-
- @Expose
- @ConfigOption(name = "Delete Hotkey", desc = "Deletes the last saved location for when you make a mistake.")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
- public int deleteKey = Keyboard.KEY_NONE;
-
- @Expose
- @ConfigOption(name = "Show Platform Number", desc = "Show the index number over the platform for every parkour.")
- @ConfigEditorBoolean
- public boolean showPlatformNumber = false;
-
- }
-
- @Expose
- public Position debugPos = new Position(10, 10, false, true);
-
- @Expose
- public Position debugLocationPos = new Position(1, 160, false, true);
-
- @Expose
- @ConfigOption(name = "Minecraft Console", desc = "")
- @Accordion
- public MinecraftConsoleConfig minecraftConsoles = new MinecraftConsoleConfig();
-
- public static class MinecraftConsoleConfig {
- @Expose
- @ConfigOption(name = "Unfiltered Debug", desc = "Print the debug information for unfiltered console messages.")
- @ConfigEditorBoolean
- public boolean printUnfilteredDebugs = false;
-
- @Expose
- @ConfigOption(name = "Unfiltered Debug File", desc = "Print the debug information into log files instead of into the console for unfiltered console messages.")
- @ConfigEditorBoolean
- public boolean logUnfilteredFile = false;
-
- @Expose
- @ConfigOption(
- name = "Outside SkyBlock",
- desc = "Print the debug information for unfiltered console messages outside SkyBlock too."
- )
- @ConfigEditorBoolean
- public boolean printUnfilteredDebugsOutsideSkyBlock = false;
-
- @Expose
- @ConfigOption(
- name = "Log Filtered",
- desc = "Log the filtered messages into the console."
- )
- @ConfigEditorBoolean
- public boolean printFilteredReason = false;
-
- @Expose
- @ConfigOption(name = "Console Filters", desc = "")
- @Accordion
- public ConsoleFiltersConfig consoleFilter = new ConsoleFiltersConfig();
-
- public static class ConsoleFiltersConfig {
- @Expose
- @ConfigOption(name = "Filter Chat", desc = "Filter chat messages.")
- @ConfigEditorBoolean
- public boolean filterChat = false;
-
- @Expose
- @ConfigOption(name = "Filter Grow Buffer", desc = "Filter 'Needed to grow BufferBuilder buffer:'")
- @ConfigEditorBoolean
- public boolean filterGrowBuffer = true;
-
- @Expose
- @ConfigOption(name = "Filter Sound Error", desc = "Filter 'Unable to play unknown soundEvent'.")
- @ConfigEditorBoolean
- public boolean filterUnknownSound = true;
-
- @Expose
- @ConfigOption(name = "Filter Scoreboard Errors", desc = "Filter error messages with Scoreboard: removeTeam, createTeam, " +
- "removeObjective and 'scoreboard team already exists'.")
- @ConfigEditorBoolean
- public boolean filterScoreboardErrors = true;
-
- @Expose
- @ConfigOption(name = "Filter Particle", desc = "Filter message 'Could not spawn particle effect VILLAGER_HAPPY'.")
- @ConfigEditorBoolean
- public boolean filterParticleVillagerHappy = true;
-
- @Expose
- @ConfigOption(name = "Filter OptiFine", desc = "Filter OptiFine messages CustomItems and ConnectedTextures during loading.")
- @ConfigEditorBoolean
- public boolean filterOptiFine = true;
-
- @Expose
- @ConfigOption(name = "Filter AsmHelper Transformer", desc = "Filter messages when AsmHelper is Transforming a class during loading.")
- @ConfigEditorBoolean
- public boolean filterAmsHelperTransformer = true;
-
- @Expose
- @ConfigOption(name = "Filter Applying AsmWriter", desc = "Filter messages when AsmHelper is applying AsmWriter ModifyWriter.")
- @ConfigEditorBoolean
- public boolean filterAsmHelperApplying = true;
-
- @Expose
- @ConfigOption(name = "Filter Biome ID Bounds", desc = "Filter message 'Biome ID is out of bounds'.")
- @ConfigEditorBoolean
- public boolean filterBiomeIdBounds = true;
- }
- }
-}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/DungeonConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/DungeonConfig.java
deleted file mode 100644
index 90eee882a..000000000
--- a/src/main/java/at/hannibal2/skyhanni/config/features/DungeonConfig.java
+++ /dev/null
@@ -1,256 +0,0 @@
-package at.hannibal2.skyhanni.config.features;
-
-import at.hannibal2.skyhanni.config.FeatureToggle;
-import at.hannibal2.skyhanni.config.core.config.Position;
-import com.google.gson.annotations.Expose;
-import io.github.moulberry.moulconfig.annotations.Accordion;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
-import io.github.moulberry.moulconfig.annotations.ConfigOption;
-
-public class DungeonConfig {
-
- @Expose
- @ConfigOption(name = "Clicked Blocks", desc = "Highlight levers, chests, and Wither Essence when clicked in Dungeons.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlightClickedBlocks = false;
-
- @Expose
- @ConfigOption(name = "Milestones Display", desc = "Show the current milestone in Dungeons.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean showMilestonesDisplay = false;
-
- @Expose
- public Position showMileStonesDisplayPos = new Position(10, 10, false, true);
-
- @Expose
- @ConfigOption(name = "Death Counter Display", desc = "Display the total amount of deaths in the current Dungeon.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean deathCounterDisplay = false;
-
- @Expose
- public Position deathCounterPos = new Position(10, 10, false, true);
-
- @Expose
- @ConfigOption(name = "Clean End", desc = "")
- @Accordion
- public CleanEndConfig cleanEnd = new CleanEndConfig();
- public static class CleanEndConfig {
- @Expose
- @ConfigOption(name = "Enabled", desc = "After the last Dungeon boss has died, all entities and " +
- "particles are no longer displayed and the music stops playing, but the loot chests are still displayed.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(name = "Ignore Guardians", desc = "Ignore F3 and M3 Guardians from the clean end feature when " +
- "sneaking. Makes it easier to kill them after the boss died already. Thanks Hypixel.")
- @ConfigEditorBoolean
- public boolean F3IgnoreGuardians = false;
- }
-
- @Expose
- @ConfigOption(name = "Boss Damage Splash", desc = "Hides damage splashes while inside the boss room (fixes a Skytils feature).")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean damageSplashBoss = false;
-
- @Expose
- @ConfigOption(name = "Highlight Deathmites", desc = "Highlight Deathmites in Dungeons in red color.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlightDeathmites = true;
-
- @Expose
- @ConfigOption(name = "Highlight Teammates", desc = "Highlight Dungeon teammates with a glowing outline.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlightTeammates = true;
-
-
- @Expose
- @ConfigOption(name = "Object Hider", desc = "Hide various things in Dungeons.")
- @Accordion
- public ObjectHiderConfig objectHider = new ObjectHiderConfig();
- public static class ObjectHiderConfig {
- @Expose
- @ConfigOption(name = "Hide Superboom TNT", desc = "Hide Superboom TNT laying around in Dungeons.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideSuperboomTNT = false;
-
- @Expose
- @ConfigOption(name = "Hide Blessings", desc = "Hide Blessings laying around in Dungeons.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideBlessing = false;
-
- @Expose
- @ConfigOption(name = "Hide Revive Stones", desc = "Hide Revive Stones laying around in Dungeons.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideReviveStone = false;
-
- @Expose
- @ConfigOption(name = "Hide Premium Flesh", desc = "Hide Premium Flesh laying around in Dungeons.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hidePremiumFlesh = false;
-
- @Expose
- @ConfigOption(name = "Hide Journal Entry", desc = "Hide Journal Entry pages laying around in Dungeons.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideJournalEntry = false;
-
- @Expose
- @ConfigOption(name = "Hide Skeleton Skull", desc = "Hide Skeleton Skulls laying around in Dungeons.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideSkeletonSkull = true;
-
- @Expose
- @ConfigOption(name = "Hide Healer Orbs", desc = "Hides the damage, ability damage and defensive orbs that spawn when the Healer kills mobs.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideHealerOrbs = false;
-
- @Expose
- @ConfigOption(name = "Hide Healer Fairy", desc = "Hide the Golden Fairy that follows the Healer in Dungeons.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideHealerFairy = false;
-
- @Expose
- @ConfigOption(
- name = "Hide Soulweaver Skulls",
- desc = "Hide the annoying soulweaver skulls that float around you if you have the soulweaver gloves equipped.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideSoulweaverSkulls = false;
-
- }
-
- @Expose
- @ConfigOption(name = "Message Filter", desc = "")
- @Accordion
- public MessageFilterConfig messageFilter = new MessageFilterConfig();
-
- public static class MessageFilterConfig{
- @Expose
- @ConfigOption(name = "Keys and Doors", desc = "Hides the chat message when picking up keys or opening doors in Dungeons.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean keysAndDoors = false;
- }
-
- @Expose
- @ConfigOption(name = "Dungeon Copilot", desc = "")
- @Accordion
- public DungeonCopilotConfig dungeonCopilot = new DungeonCopilotConfig();
-
- public static class DungeonCopilotConfig{
- @Expose
- @ConfigOption(name = "Copilot Enabled", desc = "Suggests what to do next in Dungeons.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- public Position pos = new Position(10, 10, false, true);
- }
-
-
- @Expose
- @ConfigOption(name = "Party Finder", desc = "")
- @Accordion
- public PartyFinderConfig partyFinder = new PartyFinderConfig();
-
- public static class PartyFinderConfig {
- @Expose
- @ConfigOption(name = "Colored Class Level", desc = "Color class levels in Party Finder.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean coloredClassLevel = true;
-
- @Expose
- @ConfigOption(name = "Floor Stack Size", desc = "Display the party finder floor as the item stack size.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean floorAsStackSize = true;
-
- @Expose
- @ConfigOption(name = "Mark Paid Carries", desc = "Highlight paid carries with a red background to make them easier to find/skip.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean markPaidCarries = true;
-
- @Expose
- @ConfigOption(name = "Mark Low Levels", desc = "Highlight groups with players at or below the specified class level to make them easier to find/skip.")
- @ConfigEditorSlider(minValue = 0, maxValue = 50, minStep = 1)
- public int markBelowClassLevel = 0;
-
- @Expose
- @ConfigOption(name = "Mark Ineligible Groups", desc = "Highlight groups with requirements that you do not meet.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean markIneligibleGroups = true;
-
- @Expose
- @ConfigOption(name = "Mark Missing Class", desc = "Highlight groups that don't currently have any members of your selected dungeon class.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean markMissingClass = true;
- }
-
- @Expose
- @ConfigOption(name = "Tab List", desc = "")
- @Accordion
- public TabListConfig tabList = new TabListConfig();
-
- public static class TabListConfig {
-
- @Expose
- @ConfigOption(name = "Colored Class Level", desc = "Color class levels in tab list. (Also hides rank colors and emblems, because who needs that in Dungeons anyway?)")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean coloredClassLevel = true;
- }
-
- @Expose
- @ConfigOption(name = "Livid Finder", desc = "")
- @Accordion
- public LividFinderConfig lividFinder = new LividFinderConfig();
-
- public static class LividFinderConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Helps find the correct livid in F5 and in M5.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(name = "Hide Wrong Livids", desc = "Hide wrong livids entirely.")
- @ConfigEditorBoolean
- public boolean hideWrong = false;
- }
-
- @Expose
- @ConfigOption(name = "Moving Skeleton Skulls", desc = "Highlight Skeleton Skulls when combining into an " +
- "orange Skeletor (not useful when combined with feature Hide Skeleton Skull).")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlightSkeletonSkull = true;
-
- @Expose
- @ConfigOption(name = "Croesus Chest", desc = "Adds a visual highlight to the Croesus inventory that " +
- "shows unopened chests.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean croesusUnopenedChestTracker = true;
-}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/EventConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/EventConfig.java
deleted file mode 100644
index fe7e36440..000000000
--- a/src/main/java/at/hannibal2/skyhanni/config/features/EventConfig.java
+++ /dev/null
@@ -1,421 +0,0 @@
-package at.hannibal2.skyhanni.config.features;
-
-import at.hannibal2.skyhanni.config.FeatureToggle;
-import at.hannibal2.skyhanni.config.core.config.Position;
-import com.google.gson.annotations.Expose;
-import io.github.moulberry.moulconfig.annotations.Accordion;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorDraggableList;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
-import io.github.moulberry.moulconfig.annotations.ConfigOption;
-import io.github.moulberry.moulconfig.observer.Property;
-import org.lwjgl.input.Keyboard;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-public class EventConfig {
-
- @ConfigOption(name = "Monthly Bingo", desc = "")
- @Accordion
- @Expose
- public BingoConfig bingo = new BingoConfig();
-
- public static class BingoConfig {
-
- @Expose
- @ConfigOption(name = "Bingo Card", desc = "")
- @Accordion
- public BingoCardConfig bingoCard = new BingoCardConfig();
-
- public static class BingoCardConfig {
- @Expose
- @ConfigOption(name = "Enable", desc = "Displays the Bingo Card.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
- @Expose
- @ConfigOption(name = "Quick Toggle", desc = "Quickly toggle the Bingo Card or the step helper by sneaking with SkyBlock Menu in hand.")
- @ConfigEditorBoolean
- public boolean quickToggle = true;
-
- @Expose
- @ConfigOption(name = "Bingo Steps", desc = "Show help with the next step in Bingo instead of the Bingo Card. " +
- "§cThis feature is in early development. Expect bugs and missing goals.")
- @ConfigEditorBoolean
- public boolean stepHelper = false;
-
- @Expose
- @ConfigOption(name = "Hide Community Goals", desc = "Hide Community Goals from the Bingo Card display.")
- @ConfigEditorBoolean
- public Property<Boolean> hideCommunityGoals = Property.of(false);
-
- @Expose
- @ConfigOption(
- name = "Show Guide",
- desc = "Show tips and difficulty for bingo goals inside the Bingo Card inventory.\n" +
- "These tips are made from inspirations and guides from the community,\n"+
- "aiming to help you to complete the bingo card."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean bingoSplashGuide = true;
-
- @Expose
- public Position bingoCardPos = new Position(10, 10, false, true);
- }
-
- @Expose
- @ConfigOption(name = "Compact Chat Messages", desc = "")
- @Accordion
- public CompactChatConfig compactChat = new CompactChatConfig();
-
- public static class CompactChatConfig {
-
- @Expose
- @ConfigOption(name = "Enable", desc = "Shortens chat messages about skill level ups, collection gains, " +
- "new area discoveries and SkyBlock level up messages while on Bingo.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(name = "Hide Border", desc = "Hide the border messages before and after the compact level up messages.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideBorder = true;
-
- @Expose
- @ConfigOption(name = "Outside Bingo", desc = "Compact the level up chat messages outside of an Bingo profile as well.")
- @ConfigEditorBoolean
- public boolean outsideBingo = false;
- }
-
- @Expose
- @ConfigOption(name = "Minion Craft Helper", desc = "Show how many more items you need to upgrade the minion in your inventory. Especially useful for Bingo.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean minionCraftHelperEnabled = true;
-
- @Expose
- public Position minionCraftHelperPos = new Position(10, 10, false, true);
- }
-
- @ConfigOption(name = "Diana's Mythological Burrows", desc = "")
- @Accordion
- @Expose
- public DianaConfig diana = new DianaConfig();
-
- public static class DianaConfig {
-
-
- @Expose
- @ConfigOption(name = "Soopy Guess", desc = "Uses §eSoopy's Guess Logic §7to find the next burrow. Does not require SoopyV2 or ChatTriggers to be installed.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean burrowsSoopyGuess = false;
-
- @Expose
- @ConfigOption(name = "Nearby Detection", desc = "Show burrows near you.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean burrowsNearbyDetection = false;
-
- @Expose
- @ConfigOption(name = "Smooth Transition", desc = "Show the way from one burrow to another smoothly.")
- @ConfigEditorBoolean
- public boolean burrowSmoothTransition = false;
-
- @Expose
- @ConfigOption(name = "Nearest Warp", desc = "Warps to the nearest warp point on the hub, if closer to the next burrow.")
- @ConfigEditorBoolean
- public boolean burrowNearestWarp = false;
-
- @Expose
- @ConfigOption(name = "Warp Key", desc = "Press this key to warp to nearest burrow waypoint.")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
- public int keyBindWarp = Keyboard.KEY_NONE;
-
- @Expose
- @ConfigOption(name = "Ignored Warps", desc = "")
- @Accordion
- public IgnoredWarpsConfig ignoredWarps = new IgnoredWarpsConfig();
-
- public static class IgnoredWarpsConfig {
-
- @Expose
- @ConfigOption(name = "Crypt", desc = "Ignore the Crypt warp point (Because it takes a long time to leave).")
- @ConfigEditorBoolean
- public boolean crypt = false;
-
- @Expose
- @ConfigOption(name = "Wizard", desc = "Ignore the Wizard Tower warp point (Because it is easy to fall into the rift).")
- @ConfigEditorBoolean
- public boolean wizard = false;
-
- }
-
- @Expose
- @ConfigOption(name = "Inquisitor Waypoint Sharing", desc = "")
- @Accordion
- public InquisitorSharingConfig inquisitorSharing = new InquisitorSharingConfig();
-
- public static class InquisitorSharingConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Shares your Inquisitor and receiving other Inquisitors via Party Chat.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(name = "Focus", desc = "Hide other waypoints when your Party finds an Inquisitor.")
- @ConfigEditorBoolean
- public boolean focusInquisitor = false;
-
- @Expose
- @ConfigOption(name = "Instant Share", desc = "Share the waypoint as soon as you find an Inquisitor. As an alternative, you can share it only via key press.")
- @ConfigEditorBoolean
- public boolean instantShare = true;
-
- @Expose
- @ConfigOption(name = "Share Key", desc = "Press this key to share your Inquisitor Waypoint.")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_Y)
- public int keyBindShare = Keyboard.KEY_Y;
-
- @Expose
- @ConfigOption(name = "Show Despawn Time", desc = "Show the time until the shared Inquisitor will despawn.")
- @ConfigEditorBoolean
- public boolean showDespawnTime = true;
- }
-
- @Expose
- @ConfigOption(name = "Griffin Pet Warning", desc = "Warn when holding an Ancestral Spade if a Griffin Pet is not equipped.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean petWarning = true;
-
- @Expose
- @ConfigOption(name = "Always Diana", desc = "Forcefully set the Diana event to be active. This is useful if the auto mayor detection fails.")
- @ConfigEditorBoolean
- public boolean alwaysDiana = false;
- }
-
- @ConfigOption(name = "Winter Season on Jerry's Island", desc = "")
- @Accordion
- @Expose
- public WinterConfig winter = new WinterConfig();
-
- public static class WinterConfig {
-
- @Expose
- @ConfigOption(name = "Frozen Treasure Tracker", desc = "")
- @Accordion
- public FrozenTreasureConfig frozenTreasureTracker = new FrozenTreasureConfig();
-
- public static class FrozenTreasureConfig {
-
- @Expose
- @ConfigOption(
- name = "Enabled",
- desc = "Tracks all of your drops from Frozen Treasure in the Glacial Caves.\n" +
- "§eIce calculations are an estimate but are relatively accurate."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(
- name = "Text Format",
- desc = "Drag text to change the appearance of the overlay."
- )
- @ConfigEditorDraggableList(
- exampleText = {
- "§1§lFrozen Treasure Tracker",
- "§61,636 Treasures Mined",
- "§33.2m Total Ice",
- "§3342,192 Ice/hr",
- "§81,002 Compact Procs",
- " ",
- "§b182 §fWhite Gift",
- "§b94 §aGreen Gift",
- "§b17 §9§cRed Gift",
- "§b328 §fPacked Ice",
- "§b80 §aEnchanted Ice",
- "§b4 §9Enchanted Packed Ice",
- "§b182 §aIce Bait",
- "§b3 §aGlowy Chum Bait",
- "§b36 §5Glacial Fragment",
- "§b6 §fGlacial Talisman",
- " ",
- }
- )
- public List<Integer> textFormat = new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 14, 15));
-
- @Expose
- @ConfigOption(name = "Only in Glacial Cave", desc = "Only shows the overlay while in the Glacial Cave.")
- @ConfigEditorBoolean
- public boolean onlyInCave = true;
-
- @Expose
- @ConfigOption(name = "Show as Drops", desc = "Multiplies the numbers on the display by the base drop. \n" +
- "E.g. 3 Ice Bait -> 48 Ice Bait")
- @ConfigEditorBoolean
- public boolean showAsDrops = false;
-
- @Expose
- @ConfigOption(name = "Hide Chat Messages", desc = "Hides the chat messages from Frozen Treasures.")
- @ConfigEditorBoolean
- public boolean hideMessages = false;
-
- @Expose
- public Position position = new Position(10, 80, false, true);
- }
-
- @Expose
- @ConfigOption(name = "Island Close Time", desc = "While on the Winter Island, show a timer until Jerry's Workshop closes.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean islandCloseTime = true;
-
- @Expose
- public Position islandCloseTimePosition = new Position(10, 10, false, true);
-
- }
-
- @ConfigOption(name = "City Project", desc = "")
- @Accordion
- @Expose
- public CityProjectConfig cityProject = new CityProjectConfig();
-
- public static class CityProjectConfig {
-
- @Expose
- @ConfigOption(name = "Show Materials", desc = "Show materials needed for contributing to the City Project.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean showMaterials = true;
-
- @Expose
- @ConfigOption(name = "Show Ready", desc = "Mark contributions that are ready to participate.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean showReady = true;
-
- @Expose
- @ConfigOption(name = "Daily Reminder", desc = "Remind every 24 hours to participate.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean dailyReminder = true;
-
- @Expose
- public Position pos = new Position(150, 150, false, true);
- }
-
- @ConfigOption(name = "Mayor Jerry's Jerrypocalypse", desc = "")
- @Accordion
- @Expose
- public MayorJerryConfig jerry = new MayorJerryConfig();
-
- public static class MayorJerryConfig {
-
- @Expose
- @ConfigOption(name = "Highlight Jerries", desc = "Highlights Jerries found from the Jerrypocalypse perk. Highlight color is based on color of the Jerry.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlightJerries = true;
-
- }
-
- @ConfigOption(name = "The Great Spook", desc = "")
- @Accordion
- @Expose
- public GreatSpookConfig spook = new GreatSpookConfig();
-
- public static class GreatSpookConfig {
-
- @Expose
- @ConfigOption(name = "Primal Fear Timer", desc = "Shows cooldown timer for next primal fear.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean primalFearTimer = false;
-
- @Expose
- @ConfigOption(name = "Primal Fear Notify", desc = "Plays a notification sound when the next primal fear can spawn.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean primalFearNotification = false;
-
- @Expose
- public Position positionTimer = new Position(20, 20, false, true);
-
- @Expose
- @ConfigOption(name = "Fear Stat Display", desc = "Shows your current Fear stat value.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean fearStatDisplay = false;
-
- @Expose
- public Position positionFear = new Position(30, 30, false, true);
-
- @Expose
- @ConfigOption(name = "IRL Time Left", desc = "Shows the IRL time left before The Great Spook ends.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean greatSpookTimeLeft = false;
-
- @Expose
- public Position positionTimeLeft = new Position(40, 40, false, true);
-
- }
-
- // comment in if the event is needed again
-// @ConfigOption(name = "300þ Anniversary Celebration", desc = "Features for the 300þ year of SkyBlock")
- @Accordion
- @Expose
- public CenturyConfig century = new CenturyConfig();
-
- public static class CenturyConfig {
-
- @ConfigOption(name = "Enable Active Player Timer", desc = "Show a HUD telling you how much longer you have to wait to be eligible for another free ticket.")
- @Expose
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enableActiveTimer = true;
-
- @Expose
- public Position activeTimerPosition = new Position(100, 100, false, true);
-
- @ConfigOption(name = "Enable Active Player Alert", desc = "Loudly proclaim when it is time to break some wheat.")
- @Expose
- @ConfigEditorBoolean
- public boolean enableActiveAlert = false;
- }
-
- @Expose
- @ConfigOption(name = "Main Lobby Halloween Basket Waypoints", desc = "")
- @Accordion
- public halloweenBasketConfig halloweenBasket = new halloweenBasketConfig();
-
- public static class halloweenBasketConfig {
-
- @Expose
- @ConfigOption(name = "Basket Waypoints", desc = "Show all Halloween Basket waypoints.\nShoutout to §bTobbbb §7for the coordinates.\n(AS OF 2023)")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean allWaypoints = false;
-
- @Expose
- @ConfigOption(name = "Entrance Waypoints", desc = "Show helper waypoints to Baskets #23, #24, and #25. Coordinates by §bErymanthus§7.")
- @ConfigEditorBoolean
- public boolean allEntranceWaypoints = false;
-
- @Expose
- @ConfigOption(name = "Only Closest", desc = "Only show the closest waypoint")
- @ConfigEditorBoolean
- public boolean onlyClosest = true;
- }
-
-}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/FishingConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/FishingConfig.java
deleted file mode 100644
index 11a21d083..000000000
--- a/src/main/java/at/hannibal2/skyhanni/config/features/FishingConfig.java
+++ /dev/null
@@ -1,309 +0,0 @@
-package at.hannibal2.skyhanni.config.features;
-
-import at.hannibal2.skyhanni.config.FeatureToggle;
-import at.hannibal2.skyhanni.config.core.config.Position;
-import com.google.gson.annotations.Expose;
-import io.github.moulberry.moulconfig.annotations.Accordion;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
-import io.github.moulberry.moulconfig.annotations.ConfigOption;
-import io.github.moulberry.moulconfig.observer.Property;
-import org.lwjgl.input.Keyboard;
-
-public class FishingConfig {
-
- @Expose
- @ConfigOption(name = "Trophy Fishing", desc = "")
- @Accordion
- public TrophyFishingConfig trophyFishing = new TrophyFishingConfig();
-
- public static class TrophyFishingConfig {
-
- @Expose
- @ConfigOption(name = "Trophy Fishing Chat Messages", desc = "")
- @Accordion
- public ChatMessagesConfig chatMessages = new ChatMessagesConfig();
-
- public static class ChatMessagesConfig {
-
- @Expose
- @ConfigOption(
- name = "Trophy Counter",
- desc = "Counts Trophy messages from chat and tells you how many you have found."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(
- name = "Trophy Counter Design",
- desc = "§fStyle 1: §72. §6§lGOLD §5Moldfin\n" +
- "§fStyle 2: §bYou caught a §5Moldfin §6§lGOLD§b. §7(2)\n" +
- "§fStyle 3: §bYou caught your 2nd §6§lGOLD §5Moldfin§b."
- )
- @ConfigEditorDropdown(values = {"Style 1", "Style 2", "Style 3"})
- public int design = 0;
-
- @Expose
- @ConfigOption(name = "Show Total Amount", desc = "Show total amount of all rarities at the end of the chat message.")
- @ConfigEditorBoolean
- public boolean totalAmount = false;
-
- @Expose
- @ConfigOption(name = "Trophy Fish Info", desc = "Show information and stats about a Trophy Fish when hovering over a catch message in chat.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean tooltip = true;
-
- @Expose
- @ConfigOption(name = "Hide Repeated Catches", desc = "Delete past catches of the same Trophy Fish from chat.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean duplicateHider = false;
-
- @Expose
- @ConfigOption(name = "Bronze Duplicates", desc = "Hide duplicate messages for bronze Trophy Fishes from chat.")
- @ConfigEditorBoolean
- public boolean bronzeHider = false;
-
- @Expose
- @ConfigOption(name = "Silver Duplicates", desc = "Hide duplicate messages for silver Trophy Fishes from chat.")
- @ConfigEditorBoolean
- public boolean silverHider = false;
- }
-
- @Expose
- @ConfigOption(name = "Fillet Tooltip", desc = "Show fillet value of Trophy Fish in tooltip.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean filletTooltip = true;
-
- @Expose
- @ConfigOption(name = "Odger Waypoint", desc = "Show the Odger waypoint when Trophy Fishes are in the inventory and no lava rod in hand.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean odgerLocation = true;
- }
-
- @Expose
- @ConfigOption(name = "Thunder Spark", desc = "")
- @Accordion
- public ThunderSparkConfig thunderSpark = new ThunderSparkConfig();
-
- public static class ThunderSparkConfig {
- @Expose
- @ConfigOption(name = "Thunder Spark Highlight", desc = "Highlight Thunder Sparks after killing a Thunder.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlight = false;
-
- @Expose
- @ConfigOption(name = "Thunder Spark Color", desc = "Color of the Thunder Sparks.")
- @ConfigEditorColour
- public String color = "0:255:255:255:255";
- }
-
- @Expose
- @ConfigOption(name = "Barn Fishing Timer", desc = "")
- @Accordion
- public BarnTimerConfig barnTimer = new BarnTimerConfig();
-
- public static class BarnTimerConfig {
- @Expose
- @ConfigOption(
- name = "Barn Fishing Timer",
- desc = "Show the time and amount of sea creatures while fishing on the barn via hub."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(
- name = "Worm Fishing",
- desc = "Show the Barn Fishing Timer even for worms or other sea creatures in the Crystal Hollows."
- )
- @ConfigEditorBoolean
- public boolean crystalHollows = true;
-
- @Expose
- @ConfigOption(
- name = "Stranded Fishing",
- desc = "Show the Barn Fishing Timer even on all the different islands Stranded players can visit."
- )
- @ConfigEditorBoolean
- public boolean forStranded = true;
-
- @Expose
- @ConfigOption(
- name = "Worm Cap Alert",
- desc = "Alerts you with title and sound if you hit the Worm Sea Creature limit of 60."
- )
- @ConfigEditorBoolean
- public boolean wormLimitAlert = true;
-
- @Expose
- @ConfigOption(name = "Reset Timer Hotkey", desc = "Press this key to reset the timer manualy")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
- public int manualResetTimer = Keyboard.KEY_NONE;
-
- @Expose
- @ConfigOption(name = "Fishing Timer Alert", desc = "Change the amount of time in seconds until the timer dings.")
- @ConfigEditorSlider(
- minValue = 240,
- maxValue = 360,
- minStep = 10
- )
- public int alertTime = 330;
-
- @Expose
- public Position pos = new Position(10, 10, false, true);
- }
-
- @Expose
- @ConfigOption(name = "Chum/Chumcap Bucket Hider", desc = "")
- @Accordion
- public ChumBucketHiderConfig chumBucketHider = new ChumBucketHiderConfig();
-
- public static class ChumBucketHiderConfig {
-
- @Expose
- @ConfigOption(name = "Enable", desc = "Hide the Chum/Chumcap Bucket name tags for other players.")
- @ConfigEditorBoolean
- @FeatureToggle
- public Property<Boolean> enabled = Property.of(true);
-
- @Expose
- @ConfigOption(name = "Hide Bucket", desc = "Hide the Chum/Chumcap Bucket.")
- @ConfigEditorBoolean
- public Property<Boolean> hideBucket = Property.of(false);
-
- @Expose
- @ConfigOption(name = "Hide Own", desc = "Hides your own Chum/Chumcap Bucket.")
- @ConfigEditorBoolean
- public Property<Boolean> hideOwn = Property.of(false);
- }
-
- @Expose
- @ConfigOption(name = "Fished Item Name", desc = "")
- @Accordion
- public FishedItemNameConfig fishedItemName = new FishedItemNameConfig();
-
- public static class FishedItemNameConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Show the fished item name above the item when fishing.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(name = "Show Bait", desc = "Also show the name of the consumed bait.")
- @ConfigEditorBoolean
- public boolean showBaits = false;
-
- }
-
- @Expose
- @ConfigOption(name = "Fishing Hook Display", desc = "")
- @Accordion
- public FishingHookDisplayConfig fishingHookDisplay = new FishingHookDisplayConfig();
-
- public static class FishingHookDisplayConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Display the Hypixel timer until the fishing hook can be pulled out of the water/lava, only bigger and on your screen.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(
- name = "Hide Armor Stand",
- desc = "Hide the original armor stand from Hypixel when the SkyHanni display is enabled."
- )
- @ConfigEditorBoolean
- public boolean hideArmorStand = true;
-
- @Expose
- public Position position = new Position(460, -240, 3.4f);
- }
-
- @Expose
- @ConfigOption(name = "Bait Warnings", desc = "")
- @Accordion
- public FishingBaitWarningsConfig fishingBaitWarnings = new FishingBaitWarningsConfig();
-
- public static class FishingBaitWarningsConfig {
- @Expose
- @ConfigOption(name = "Bait Change Warning", desc = "Show warning when fishing bait is changed")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean baitChangeWarning = false;
-
- @Expose
- @ConfigOption(name = "No Bait Warning", desc = "Show warning when no bait is used")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean noBaitWarning = false;
- }
-
- @Expose
- @ConfigOption(name = "Rare Sea Creatures", desc = "")
- @Accordion
- public RareCatches rareCatches = new RareCatches();
-
- public static class RareCatches {
-
- @Expose
- @ConfigOption(name = "Alert (Own Sea Creatures)", desc = "Show an alert on screen when you catch a rare sea creature.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean alertOwnCatches = true;
-
- @Expose
- @ConfigOption(name = "Alert (Other Sea Creatures)", desc = "Show an alert on screen when other players nearby catch a rare sea creature.")
- @ConfigEditorBoolean
- public boolean alertOtherCatches = false;
-
- @Expose
- @ConfigOption(name = "Play Sound Alert", desc = "Play a sound effect when rare sea creature alerts are displayed.")
- @ConfigEditorBoolean
- public boolean playSound = true;
-
- @Expose
- @ConfigOption(name = "Highlight", desc = "Highlight nearby rare sea creatures.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlight = false;
-
- }
-
- @Expose
- @ConfigOption(
- name = "Shark Fish Counter",
- desc = "Counts how many Sharks have been caught."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean sharkFishCounter = false;
-
- @Expose
- public Position sharkFishCounterPos = new Position(10, 10, false, true);
-
- @Expose
- @ConfigOption(name = "Shorten Fishing Message", desc = "Shortens the chat message that says what type of Sea Creature you have fished.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean shortenFishingMessage = false;
-
- @Expose
- @ConfigOption(name = "Compact Double Hook", desc = "Adds Double Hook to the Sea Creature chat message instead of in a previous line.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean compactDoubleHook = true;
-}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/GUIConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/GUIConfig.java
deleted file mode 100644
index 992ef03d9..000000000
--- a/src/main/java/at/hannibal2/skyhanni/config/features/GUIConfig.java
+++ /dev/null
@@ -1,174 +0,0 @@
-package at.hannibal2.skyhanni.config.features;
-
-import at.hannibal2.skyhanni.config.FeatureToggle;
-import at.hannibal2.skyhanni.config.commands.Commands;
-import at.hannibal2.skyhanni.config.core.config.Position;
-import at.hannibal2.skyhanni.data.GuiEditManager;
-import com.google.gson.annotations.Expose;
-import io.github.moulberry.moulconfig.annotations.Accordion;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorButton;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorText;
-import io.github.moulberry.moulconfig.annotations.ConfigOption;
-import io.github.moulberry.moulconfig.observer.Property;
-import org.lwjgl.input.Keyboard;
-
-public class GUIConfig {
-
- @ConfigOption(name = "Edit GUI Locations", desc = "Change the position of SkyHanni's overlays.")
- @ConfigEditorButton(buttonText = "Edit")
- public Runnable positions = GuiEditManager::openGuiPositionEditor;
-
- @Expose
- @ConfigOption(name = "Open Hotkey", desc = "Press this key to open the GUI Editor.")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
- public int keyBindOpen = Keyboard.KEY_NONE;
-
- @Expose
- @ConfigOption(name = "Global GUI Scale", desc = "Globally scale all SkyHanni GUIs.")
- @ConfigEditorSlider(minValue = 0.1F, maxValue = 10, minStep = 0.05F)
- public float globalScale = 1F;
-
-
- @Expose
- @ConfigOption(name = "Modify Visual Words", desc = "")
- @Accordion
- public ModifyWords modifyWords = new ModifyWords();
-
- public static class ModifyWords {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Enables replacing all instances of a word or phrase with another word or phrase.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(name = "Work Outside SkyBlock", desc = "Allows modifying visual words anywhere on Hypixel.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean workOutside = false;
-
- @ConfigOption(name = "Open Config", desc = "Opens the menu to setup the visual words.\n§eCommand: /shwords")
- @ConfigEditorButton(buttonText = "Open")
- public Runnable open = Commands::openVisualWords;
-
- }
-
- @Expose
- @ConfigOption(name = "Custom Text Box", desc = "")
- @Accordion
- public TextBoxConfig customTextBox = new TextBoxConfig();
-
- public static class TextBoxConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Enables showing the textbox while in SkyBlock.")
- @ConfigEditorBoolean
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(name = "Text", desc = "Enter text you want to display here.\n" +
- "§eUse '&' as the colour code character.\n" +
- "§eUse '\\n' as the line break character.")
- @ConfigEditorText
- public Property<String> text = Property.of("&aYour Text Here\\n&bYour new line here");
-
- @Expose
- public Position position = new Position(10, 80, false, true);
- }
-
- @Expose
- @ConfigOption(name = "Real Time", desc = "Display the current computer time, a handy feature when playing in full-screen mode.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean realTime = false;
-
- @Expose
- @ConfigOption(name = "Real Time 12h Format", desc = "Display the current computer time in 12hr Format rather than 24h Format.")
- @ConfigEditorBoolean
- public boolean realTimeFormatToggle = false;
-
- @Expose
- public Position realTimePosition = new Position(10, 10, false, true);
-
-
- @Expose
- @ConfigOption(name = "In-Game Date", desc = "")
- @Accordion
- public InGameDateConfig inGameDate = new InGameDateConfig();
-
- public static class InGameDateConfig {
-
- @Expose
- @ConfigOption(
- name = "Enabled",
- desc = "Show the in-game date of SkyBlock (like in Apec, §ebut with mild delays§7).\n" +
- "(Though this one includes the SkyBlock year!)"
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- public Position position = new Position(10, 10, false, true);
-
- @Expose
- @ConfigOption(
- name = "Use Scoreboard for Date",
- desc = "Uses the scoreboard instead to find the current month, date, and time. Greater \"accuracy\", depending on who's asking."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean useScoreboard = true;
-
- @Expose
- @ConfigOption(
- name = "Show Sun/Moon",
- desc = "Show the sun or moon symbol seen on the scoreboard."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean includeSunMoon = true;
-
- @Expose
- @ConfigOption(
- name = "Show Date Ordinal",
- desc = "Show the date's ordinal suffix. Ex: (1st <-> 1, 22nd <-> 22, 23rd <-> 3, 24th <-> 24, etc.)"
- )
- @ConfigEditorBoolean
- //@FeatureToggle
- public boolean includeOrdinal = false;
-
- @Expose
- @ConfigOption(
- name = "Refresh Rate",
- desc = "Change the time in seconds you would like to refresh the In-Game Date Display." +
- "\n§eNOTE: If \"Use Scoreboard for Date\" is enabled, this setting is ignored."
- )
- @ConfigEditorSlider(
- minValue = 1,
- maxValue = 60,
- minStep = 1
- )
- public int refreshSeconds = 30;
- }
-
-
- @Expose
- @ConfigOption(name = "TPS Display", desc = "Show the TPS of the current server, like in Soopy.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean tpsDisplay = false;
-
- @Expose
- public Position tpsDisplayPosition = new Position(10, 10, false, true);
-
- @Expose
- @ConfigOption(name = "Config Button", desc = "Add a button to the pause menu to configure SkyHanni.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean configButtonOnPause = true;
-}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/GardenConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/GardenConfig.java
deleted file mode 100644
index 3deaec46f..000000000
--- a/src/main/java/at/hannibal2/skyhanni/config/features/GardenConfig.java
+++ /dev/null
@@ -1,1488 +0,0 @@
-package at.hannibal2.skyhanni.config.features;
-
-import at.hannibal2.skyhanni.config.FeatureToggle;
-import at.hannibal2.skyhanni.config.commands.Commands;
-import at.hannibal2.skyhanni.config.core.config.Position;
-import at.hannibal2.skyhanni.features.garden.inventory.GardenPlotIcon;
-import at.hannibal2.skyhanni.utils.LorenzUtils;
-import com.google.gson.annotations.Expose;
-import io.github.moulberry.moulconfig.annotations.Accordion;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorButton;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorDraggableList;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorText;
-import io.github.moulberry.moulconfig.annotations.ConfigOption;
-import io.github.moulberry.moulconfig.observer.Property;
-import net.minecraft.client.Minecraft;
-import org.lwjgl.input.Keyboard;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-public class GardenConfig {
-
- @Expose
- @ConfigOption(name = "SkyMart", desc = "")
- @Accordion
- public SkyMartConfig skyMart = new SkyMartConfig();
-
- public static class SkyMartConfig {
- @Expose
- @ConfigOption(name = "Copper Price", desc = "Show copper to coin prices inside the SkyMart inventory.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean copperPrice = true;
-
- @Expose
- @ConfigOption(name = "Advanced Stats", desc = "Show the BIN price and copper price for every item.")
- @ConfigEditorBoolean
- public boolean copperPriceAdvancedStats = false;
-
- @Expose
- public Position copperPricePos = new Position(211, 132, false, true);
- }
-
- @Expose
- @ConfigOption(name = "Visitor", desc = "")
- @Accordion
- public VisitorConfig visitors = new VisitorConfig();
-
- public static class VisitorConfig {
- @Expose
- @ConfigOption(name = "Visitor Timer", desc = "")
- @Accordion
- public TimerConfig timer = new TimerConfig();
-
- public static class TimerConfig {
- @Expose
- @ConfigOption(name = "Visitor Timer", desc = "Timer when the next visitor will appear, " +
- "and a number for how many visitors are already waiting.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(name = "Sixth Visitor Estimate", desc = "Estimate when the sixth visitor in the queue will arrive. " +
- "May be inaccurate with co-op members farming simultaneously.")
- @ConfigEditorBoolean
- public boolean sixthVisitorEnabled = true;
-
- @Expose
- @ConfigOption(name = "Sixth Visitor Warning", desc = "Notifies when it is believed that the sixth visitor has arrived. " +
- "May be inaccurate with co-op members farming simultaneously.")
- @ConfigEditorBoolean
- public boolean sixthVisitorWarning = true;
-
- @Expose
- @ConfigOption(name = "New Visitor Ping", desc = "Pings you when you are less than 10 seconds away from getting a new visitor. " +
- "§eUseful for getting Ephemeral Gratitudes during the 2023 Halloween event.")
- @ConfigEditorBoolean
- public boolean newVisitorPing = false;
-
- @Expose
- public Position pos = new Position(390, 65, false, true);
- }
-
- @Expose
- @ConfigOption(name = "Visitor Items Needed", desc = "")
- @Accordion
- public NeedsConfig needs = new NeedsConfig();
-
- public static class NeedsConfig {
- @Expose
- @ConfigOption(name = "Items Needed", desc = "Show all items needed for the visitors.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean display = true;
-
- @Expose
- public Position pos = new Position(180, 170, false, true);
-
- @Expose
- @ConfigOption(name = "Only when Close", desc = "Only show the needed items when close to the visitors.")
- @ConfigEditorBoolean
- public boolean onlyWhenClose = false;
-
- @Expose
- @ConfigOption(name = "Bazaar Alley", desc = "Show the Visitor Items List while inside the Bazaar Alley in the Hub. " +
- "This helps buying the correct amount when not having a Booster Cookie Buff active.")
- @ConfigEditorBoolean
- public boolean inBazaarAlley = true;
-
- @Expose
- @ConfigOption(name = "Show Price", desc = "Show the coin price in the items needed list.")
- @ConfigEditorBoolean
- public boolean showPrice = true;
-
- @Expose
- @ConfigOption(name = "Item Preview", desc = "Show the base type for the required items next to new visitors. §cNote that some visitors may require any crop.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean itemPreview = true;
- }
-
- @Expose
- @ConfigOption(name = "Visitor Inventory", desc = "")
- @Accordion
- public InventoryConfig inventory = new InventoryConfig();
-
- public static class InventoryConfig {
- @Expose
- @ConfigOption(name = "Visitor Price", desc = "Show the Bazaar price of the items required for the visitors, like in NEU.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean showPrice = false;
-
- @Expose
- @ConfigOption(name = "Amount and Time", desc = "Show the exact item amount and the remaining time when farmed manually. Especially useful for Ironman.")
- @ConfigEditorBoolean
- public boolean exactAmountAndTime = true;
-
- @Expose
- @ConfigOption(name = "Copper Price", desc = "Show the price per copper inside the visitor GUI.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean copperPrice = true;
-
- @Expose
- @ConfigOption(name = "Copper Time", desc = "Show the time required per copper inside the visitor GUI.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean copperTime = false;
-
- @Expose
- @ConfigOption(name = "Garden Exp Price", desc = "Show the price per garden experience inside the visitor GUI.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean experiencePrice = false;
- }
-
- @Expose
- @ConfigOption(name = "Visitor Reward Warning", desc = "")
- @Accordion
- public RewardWarningConfig rewardWarning = new RewardWarningConfig();
-
- public static class RewardWarningConfig {
-
- @Expose
- @ConfigOption(name = "Notify in Chat", desc = "Send a chat message once you talk to a visitor with reward.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean notifyInChat = true;
-
- @Expose
- @ConfigOption(name = "Show over Name", desc = "Show the reward name above the visitor name.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean showOverName = true;
-
- @Expose
- @ConfigOption(name = "Prevent Refusing", desc = "Prevent the refusal of a visitor with reward.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean preventRefusing = true;
-
- @Expose
- @ConfigOption(name = "Bypass Key", desc = "Hold that key to bypass the Prevent Refusing feature.")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
- public int bypassKey = Keyboard.KEY_NONE;
-
-
- /**
- * Sync up with {at.hannibal2.skyhanni.features.garden.visitor.VisitorReward}
- */
- @Expose
- @ConfigOption(
- name = "Items",
- desc = "Warn for these reward items."
- )
- @ConfigEditorDraggableList(
- exampleText = {
- "§9Flowering Bouquet",
- "§9Overgrown Grass",
- "§9Green Bandana",
- "§9Dedication IV",
- "§9Music Rune",
- "§cSpace Helmet",
- "§9Cultivating I",
- "§9Replenish I",
- }
- )
- public List<Integer> drops = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6));
- }
-
- @Expose
- @ConfigOption(name = "Notification Chat", desc = "Show in chat when a new visitor is visiting your island.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean notificationChat = true;
-
- @Expose
- @ConfigOption(name = "Notification Title", desc = "Show a title when a new visitor is visiting your island.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean notificationTitle = true;
-
- @Expose
- @ConfigOption(name = "Highlight Status", desc = "Highlight the status for visitors with a text above or with color.")
- @ConfigEditorDropdown(values = {"Color Only", "Name Only", "Both", "Disabled"})
- public int highlightStatus = 2;
-
- @Expose
- @ConfigOption(name = "Colored Name", desc = "Show the visitor name in the color of the rarity.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean coloredName = true;
-
- @Expose
- @ConfigOption(name = "Hypixel Message", desc = "Hide the chat message from Hypixel that a new visitor has arrived at your garden.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hypixelArrivedMessage = true;
-
- @Expose
- @ConfigOption(name = "Hide Chat", desc = "Hide chat messages from the visitors in garden. (Except Beth and Spaceman)")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideChat = true;
-
- @Expose
- @ConfigOption(name = "Visitor Drops Statistics Counter", desc = "")
- @Accordion
- public DropsStatisticsConfig dropsStatistics = new DropsStatisticsConfig();
-
- public static class DropsStatisticsConfig {
-
- @Expose
- @ConfigOption(
- name = "Enabled",
- desc = "Tallies up statistic about visitors and the rewards you have received from them."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(
- name = "Text Format",
- desc = "Drag text to change the appearance of the overlay."
- )
- @ConfigEditorDraggableList(
- exampleText = {
- "§e§lVisitor Statistics",
- "§e1,636 Total",
- "§a1,172§f-§9382§f-§681§f-§c1",
- "§21,382 Accepted",
- "§c254 Denied",
- " ",
- "§c62,072 Copper",
- "§33.2m Farming EXP",
- "§647.2m Coins Spent",
- "§b23 §9Flowering Bouquet",
- "§b4 §9Overgrown Grass",
- "§b2 §5Green Bandana",
- "§b1 §9Dedication IV",
- "§b6 §b◆ Music Rune I",
- "§b1 §cSpace Helmet",
- "§b1 §9Cultivating I",
- "§b1 §9Replenish I",
- " ", // If they want another empty row
- "§212,600 Garden EXP",
- "§b4.2k Bits",
- "§220k Mithril Powder",
- "§d18k Gemstone Powder",
- }
- )
- public List<Integer> textFormat = new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12));
-
-
- @Expose
- @ConfigOption(name = "Display Numbers First", desc = "Determines whether the number or drop name displays first. " +
- "§eNote: Will not update the preview above!")
- @ConfigEditorBoolean
- public boolean displayNumbersFirst = true;
-
- @Expose
- @ConfigOption(name = "Display Icons", desc = "Replaces the drop names with icons. " +
- "§eNote: Will not update the preview above!")
- @ConfigEditorBoolean
- public boolean displayIcons = false;
-
- @Expose
- @ConfigOption(name = "Only on Barn Plot", desc = "Only shows the overlay while on the Barn plot.")
- @ConfigEditorBoolean
- public boolean onlyOnBarn = true;
-
- @Expose
- public Position pos = new Position(5, 20, false, true);
- }
-
- @Expose
- @ConfigOption(
- name = "Accept Hotkey",
- desc = "Accept a visitor when you press this keybind while in the visitor GUI. " +
- "§eUseful for getting Ephemeral Gratitudes during the 2023 Halloween event."
- )
- @ConfigEditorKeybind(
- defaultKey = Keyboard.KEY_NONE
- )
- public int acceptHotkey = Keyboard.KEY_NONE;
-
-
- @Expose
- @ConfigOption(
- name = "Highlight Visitors in SkyBlock",
- desc = "Highlights Visitors outside of the Garden"
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlightVisitors = false;
-
-
- @Expose
- @ConfigOption(
- name = "Block Interacting with Visitors",
- desc = "Blocks you from interacting with / unlocking Visitors to allow for Dedication Cycling"
- )
- @ConfigEditorDropdown
- public VisitorBlockBehaviour blockInteracting = VisitorBlockBehaviour.ONLY_ON_BINGO;
-
- public enum VisitorBlockBehaviour {
- DONT("Don't"), ALWAYS("Always"), ONLY_ON_BINGO("Only on Bingo");
-
- final String str;
-
- VisitorBlockBehaviour(String str) {
- this.str = str;
- }
-
- @Override
- public String toString() {
- return str;
- }
- }
-
- }
-
- @Expose
- @ConfigOption(name = "Numbers", desc = "")
- @Accordion
- public NumbersConfig number = new NumbersConfig();
-
- public static class NumbersConfig {
- @Expose
- @ConfigOption(name = "Crop Milestone", desc = "Show the number of crop milestones in the inventory.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean cropMilestone = true;
-
- @Expose
- @ConfigOption(name = "Average Milestone", desc = "Show the average crop milestone in the crop milestone inventory.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean averageCropMilestone = true;
-
- @Expose
- @ConfigOption(name = "Crop Upgrades", desc = "Show the number of upgrades in the crop upgrades inventory.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean cropUpgrades = true;
-
- @Expose
- @ConfigOption(name = "Composter Upgrades", desc = "Show the number of upgrades in the Composter upgrades inventory.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean composterUpgrades = true;
- }
-
- @Expose
- @ConfigOption(name = "Crop Milestones", desc = "")
- @Accordion
- public CropMilestonesConfig cropMilestones = new CropMilestonesConfig();
-
- public static class CropMilestonesConfig {
- @Expose
- @ConfigOption(
- name = "Progress Display",
- desc = "Shows the progress and ETA until the next crop milestone is reached and the current crops/minute value. " +
- "§eRequires a tool with either a counter or Cultivating enchantment for full accuracy."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean progress = true;
-
- @Expose
- @ConfigOption(
- name = "Warn When Close",
- desc = "Warn with title and sound when the next crop milestone upgrade happens in 5 seconds. " +
- "Useful for switching to a different pet for leveling.")
- @ConfigEditorBoolean
- public boolean warnClose = false;
-
- @Expose
- @ConfigOption(
- name = "Time Format",
- desc = "Change the highest time unit to show (1h30m vs 90min)")
- @ConfigEditorDropdown(values = {"Year", "Day", "Hour", "Minute", "Second"})
- public Property<Integer> highestTimeFormat = Property.of(0);
-
- @Expose
- @ConfigOption(
- name = "Maxed Milestone",
- desc = "Calculate the progress and ETA till maxed milestone (46) instead of next milestone.")
- @ConfigEditorBoolean
- public Property<Boolean> bestShowMaxedNeeded = Property.of(false);
-
- @Expose
- @ConfigOption(
- name = "Milestone Text",
- desc = "Drag text to change the appearance of the overlay.\n" +
- "Hold a farming tool to show the overlay."
- )
- @ConfigEditorDraggableList(
- exampleText = {
- "§6Crop Milestones",
- "§7Pumpkin Tier 22",
- "§e12,300§8/§e100,000",
- "§7In §b12m 34s",
- "§7Crops/Minute§8: §e12,345",
- "§7Blocks/Second§8: §e19.85",
- "§7Percentage: §e12.34%",
- }
- )
- public List<Integer> text = new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4, 5));
-
- @Expose
- @ConfigOption(name = "Block Broken Precision", desc = "The amount of decimals displayed in blocks/second.")
- @ConfigEditorSlider(
- minValue = 0,
- maxValue = 6,
- minStep = 1
- )
- public int blocksBrokenPrecision = 2;
-
- @Expose
- @ConfigOption(name = "Seconds Before Reset", desc = "How many seconds of not farming until blocks/second resets.")
- @ConfigEditorSlider(
- minValue = 2,
- maxValue = 60,
- minStep = 1
- )
- public int blocksBrokenResetTime = 5;
-
- @Expose
- public Position progressDisplayPos = new Position(-400, -200, false, true);
-
- @Expose
- @ConfigOption(name = "Best Crop", desc = "")
- @Accordion
- public NextConfig next = new NextConfig();
-
- // TODO moulconfig runnable support
- public static class NextConfig {
- @Expose
- @ConfigOption(
- name = "Best Display",
- desc = "Lists all crops and their ETA till next milestone. Sorts for best crop for getting garden or SkyBlock levels.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean bestDisplay = true;
-
- // TODO moulconfig runnable support
- @Expose
- @ConfigOption(name = "Sort Type", desc = "Sort the crops by either garden or SkyBlock EXP.")
- @ConfigEditorDropdown(values = {"Garden Exp", "SkyBlock Exp"})
- public int bestType = 0;
-
- // TODO moulconfig runnable support
- @Expose
- @ConfigOption(name = "Only Show Top", desc = "Only show the top # crops.")
- @ConfigEditorSlider(
- minValue = 1,
- maxValue = 10,
- minStep = 1
- )
- public int showOnlyBest = 10;
-
- @Expose
- @ConfigOption(name = "Extend Top List", desc = "Add current crop to the list if its lower ranked than the set limit by extending the list.")
- @ConfigEditorBoolean
- public boolean showCurrent = true;
-
- // TODO moulconfig runnable support
- @Expose
- @ConfigOption(
- name = "Always On",
- desc = "Show the Best Display always while on the garden.")
- @ConfigEditorBoolean
- public boolean bestAlwaysOn = false;
-
- @Expose
- @ConfigOption(
- name = "Compact Display",
- desc = "A more compact best crop time: Removing the crop name and exp, hide the # number and using a more compact time format.")
- @ConfigEditorBoolean
- public boolean bestCompact = false;
-
- @Expose
- @ConfigOption(
- name = "Hide Title",
- desc = "Hides the 'Best Crop Time' line entirely.")
- @ConfigEditorBoolean
- public boolean bestHideTitle = false;
-
-
- @Expose
- public Position displayPos = new Position(-200, -200, false, true);
- }
-
- @Expose
- @ConfigOption(name = "Mushroom Pet Perk", desc = "")
- @Accordion
- public MushroomPetPerkConfig mushroomPetPerk = new MushroomPetPerkConfig();
-
- // TODO moulconfig runnable support
- public static class MushroomPetPerkConfig {
- @Expose
- @ConfigOption(
- name = "Display Enabled",
- desc = "Show the progress and ETA for mushroom crops when farming other crops because of the Mooshroom Cow perk.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(
- name = "Mushroom Text",
- desc = "Drag text to change the appearance of the overlay.\n" +
- "Hold a farming tool to show the overlay."
- )
- @ConfigEditorDraggableList(
- exampleText = {
- "§6Mooshroom Cow Perk",
- "§7Mushroom Tier 8",
- "§e6,700§8/§e15,000",
- "§7In §b12m 34s",
- "§7Percentage: §e12.34%",
- }
- )
- public List<Integer> text = new ArrayList<>(Arrays.asList(0, 1, 2, 3));
-
- @Expose
- public Position pos = new Position(-112, -143, false, true);
- }
- }
-
- // TODO moulconfig runnable support
- @Expose
- @ConfigOption(name = "Custom Keybinds", desc = "")
- @Accordion
- public KeyBindConfig keyBind = new KeyBindConfig();
-
- public static class KeyBindConfig {
- @Expose
- @ConfigOption(name = "Enabled", desc = "Use custom keybinds while holding a farming tool or Daedalus Axe in the hand.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @ConfigOption(name = "Disable All", desc = "Disable all keys.")
- @ConfigEditorButton(buttonText = "Disable")
- public Runnable presetDisable = () -> {
- attack = Keyboard.KEY_NONE;
- useItem = Keyboard.KEY_NONE;
- left = Keyboard.KEY_NONE;
- right = Keyboard.KEY_NONE;
- forward = Keyboard.KEY_NONE;
- back = Keyboard.KEY_NONE;
- jump = Keyboard.KEY_NONE;
- sneak = Keyboard.KEY_NONE;
-
- Minecraft.getMinecraft().thePlayer.closeScreen();
- };
-
- @ConfigOption(name = "Set Default", desc = "Reset all keys to default.")
- @ConfigEditorButton(buttonText = "Default")
- public Runnable presetDefault = () -> {
- attack = -100;
- useItem = -99;
- left = Keyboard.KEY_A;
- right = Keyboard.KEY_D;
- forward = Keyboard.KEY_W;
- back = Keyboard.KEY_S;
- jump = Keyboard.KEY_SPACE;
- sneak = Keyboard.KEY_LSHIFT;
- Minecraft.getMinecraft().thePlayer.closeScreen();
- };
-
- @Expose
- @ConfigOption(name = "Attack", desc = "")
- @ConfigEditorKeybind(defaultKey = -100)
- public int attack = -100;
-
- @Expose
- @ConfigOption(name = "Use Item", desc = "")
- @ConfigEditorKeybind(defaultKey = -99)
- public int useItem = -99;
-
- @Expose
- @ConfigOption(name = "Move Left", desc = "")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_A)
- public int left = Keyboard.KEY_A;
-
- @Expose
- @ConfigOption(name = "Move Right", desc = "")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_D)
- public int right = Keyboard.KEY_D;
-
- @Expose
- @ConfigOption(name = "Move Forward", desc = "")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_W)
- public int forward = Keyboard.KEY_W;
-
- @Expose
- @ConfigOption(name = "Move Back", desc = "")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_S)
- public int back = Keyboard.KEY_S;
-
- @Expose
- @ConfigOption(name = "Jump", desc = "")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_SPACE)
- public int jump = Keyboard.KEY_SPACE;
-
- @Expose
- @ConfigOption(name = "Sneak", desc = "")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_LSHIFT)
- public int sneak = Keyboard.KEY_LSHIFT;
- }
-
- @Expose
- @ConfigOption(name = "Optimal Speed", desc = "")
- @Accordion
- public OptimalSpeedConfig optimalSpeeds = new OptimalSpeedConfig();
-
- public static class OptimalSpeedConfig {
- @Expose
- @ConfigOption(name = "Enabled", desc = "Show the optimal speed for your current tool in the hand.\n" +
- "(Thanks MelonKingDE for the default values).")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(name = "Warning Title", desc = "Warn via title when you don't have the optimal speed.")
- @ConfigEditorBoolean
- public boolean warning = false;
-
- @Expose
- @ConfigOption(name = "Rancher Boots", desc = "Allows you to set the optimal speed in the Rancher Boots overlay by clicking on the presets.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean signEnabled = true;
-
- @Expose
- public Position signPosition = new Position(20, -195, false, true);
-
- @Expose
- @ConfigOption(name = "Custom Speed", desc = "Change the exact speed for every single crop.")
- @Accordion
- public CustomSpeedConfig customSpeed = new CustomSpeedConfig();
-
- public static class CustomSpeedConfig {
-
- @Expose
- @ConfigOption(name = "Wheat", desc = "Suggested farm speed:\n" +
- "§e5 Blocks§7: §f✦ 93 speed\n" +
- "§e4 Blocks§7: §f✦ 116 speed")
- @ConfigEditorSlider(minValue = 1, maxValue = 400, minStep = 1)
- public int wheat = 93;
-
- @Expose
- @ConfigOption(name = "Carrot", desc = "Suggested farm speed:\n" +
- "§e5 Blocks§7: §f✦ 93 speed\n" +
- "§e4 Blocks§7: §f✦ 116 speed")
- @ConfigEditorSlider(minValue = 1, maxValue = 400, minStep = 1)
- public int carrot = 93;
-
- @Expose
- @ConfigOption(name = "Potato", desc = "Suggested farm speed:\n" +
- "§e5 Blocks§7: §f✦ 93 speed\n" +
- "§e4 Blocks§7: §f✦ 116 speed")
- @ConfigEditorSlider(minValue = 1, maxValue = 400, minStep = 1)
- public int potato = 93;
-
- @Expose
- @ConfigOption(name = "Nether Wart", desc = "Suggested farm speed:\n" +
- "§e5 Blocks§7: §f✦ 93 speed\n" +
- "§e4 Blocks§7: §f✦ 116 speed")
- @ConfigEditorSlider(minValue = 1, maxValue = 400, minStep = 1)
- public int netherWart = 93;
-
- @Expose
- @ConfigOption(name = "Pumpkin", desc = "Suggested farm speed:\n" +
- "§e3 Blocks§7: §f✦ 155 speed\n" +
- "§e2 Blocks§7: §f✦ 265 §7or §f400 speed")
- @ConfigEditorSlider(minValue = 1, maxValue = 400, minStep = 1)
- public int pumpkin = 155;
-
- @Expose
- @ConfigOption(name = "Melon", desc = "Suggested farm speed:\n" +
- "§e3 Blocks§7: §f✦ 155 speed\n" +
- "§e2 Blocks§7: §f✦ 265 or 400 speed")
- @ConfigEditorSlider(minValue = 1, maxValue = 400, minStep = 1)
- public int melon = 155;
-
- @Expose
- @ConfigOption(name = "Cocoa Beans", desc = "Suggested farm speed:\n" +
- "§e3 Blocks§7: §f✦ 155 speed\n" +
- "§e4 Blocks§7: §f✦ 116 speed")
- @ConfigEditorSlider(minValue = 1, maxValue = 400, minStep = 1)
- public int cocoaBeans = 155;
-
- // TODO does other speed settings exist?
- @Expose
- @ConfigOption(name = "Sugar Cane", desc = "Suggested farm speed:\n" +
- "§eYaw 45§7: §f✦ 328 speed")
- @ConfigEditorSlider(minValue = 1, maxValue = 400, minStep = 1)
- public int sugarCane = 328;
-
- @Expose
- @ConfigOption(name = "Cactus", desc = "Suggested farm speed:\n" +
- "§eNormal§7: §f✦ 400 speed\n" +
- "§eRacing Helmet§7: §f✦ 464 speed\n" +
- "§eBlack Cat§7: §f✦ 464 speed")
- @ConfigEditorSlider(minValue = 1, maxValue = 500, minStep = 1)
- public int cactus = 400;
-
- // TODO does other speed settings exist?
- @Expose
- @ConfigOption(name = "Mushroom", desc = "Suggested farm speed:\n" +
- "§eYaw 60§7: §f✦ 233 speed")
- @ConfigEditorSlider(minValue = 1, maxValue = 400, minStep = 1)
- public int mushroom = 233;
- }
-
- @Expose
- public Position pos = new Position(5, -200, false, true);
- }
-
- @Expose
- @ConfigOption(name = "Garden Level", desc = "")
- @Accordion
- public GardenLevelConfig gardenLevels = new GardenLevelConfig();
-
- public static class GardenLevelConfig {
- @Expose
- @ConfigOption(name = "Display", desc = "Show the current Garden level and progress to the next level.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean display = true;
-
- @Expose
- public Position pos = new Position(390, 40, false, true);
- }
-
- @Expose
- @ConfigOption(name = "Farming Weight", desc = "")
- @Accordion
- public EliteFarmingWeightConfig eliteFarmingWeights = new EliteFarmingWeightConfig();
-
- public static class EliteFarmingWeightConfig {
- @Expose
- @ConfigOption(name = "Display", desc = "Display your farming weight on screen. " +
- "The calculation and API is provided by The Elite SkyBlock farmers. " +
- "See §ehttps://elitebot.dev/info §7for more info.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean display = true;
-
- @Expose
- public Position pos = new Position(180, 10, false, true);
-
- @Expose
- @ConfigOption(name = "Leaderboard Ranking", desc = "Show your position in the farming weight leaderboard. " +
- "Only if your farming weight is high enough! Updates every 10 minutes.")
- @ConfigEditorBoolean
- public boolean leaderboard = true;
-
- @Expose
- @ConfigOption(name = "Overtake ETA", desc = "Show a timer estimating when you'll move up a spot in the leaderboard! " +
- "Will show an ETA to rank #10,000 if you're not on the leaderboard yet.")
- @ConfigEditorBoolean
- public boolean overtakeETA = false;
-
- @Expose
- @ConfigOption(name = "Offscreen Drop Message", desc = "Show a chat message when joining Garden how many spots you have dropped since last Garden join.")
- @ConfigEditorBoolean
- public boolean offScreenDropMessage = true;
-
- @Expose
- @ConfigOption(name = "Always ETA", desc = "Show the Overtake ETA always, even when not farming at the moment.")
- @ConfigEditorBoolean
- public boolean overtakeETAAlways = true;
-
- @Expose
- @ConfigOption(name = "ETA Goal", desc = "Override the Overtake ETA to show when you'll reach the specified rank (if not there yet). (Default: \"10,000\")")
- @ConfigEditorText
- public String ETAGoalRank = "10000";
-
- @Expose
- @ConfigOption(name = "Show below 200", desc = "Show the farming weight data even if you are below 200 weight.")
- @ConfigEditorBoolean
- public boolean ignoreLow = false;
- }
-
- @Expose
- @ConfigOption(name = "Dicer Counter", desc = "")
- @Accordion
- public DicerCounterConfig dicerCounters = new DicerCounterConfig();
-
- public static class DicerCounterConfig {
- @Expose
- @ConfigOption(name = "RNG Drop Counter", desc = "Count RNG drops for Melon Dicer and Pumpkin Dicer.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean display = true;
-
- @Expose
- @ConfigOption(name = "Hide Chat", desc = "Hide the chat message when dropping a RNG Dicer drop.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideChat = false;
-
- @Expose
- public Position pos = new Position(16, -232, false, true);
- }
-
- @Expose
- @ConfigOption(name = "Money per Hour", desc = "")
- @Accordion
- public MoneyPerHourConfig moneyPerHours = new MoneyPerHourConfig();
-
- public static class MoneyPerHourConfig {
- @Expose
- @ConfigOption(name = "Show Money per Hour",
- desc = "Displays the money per hour YOU get with YOUR crop/minute value when selling the item to bazaar. " +
- "Supports Bountiful, Mushroom Cow Perk, Armor Crops and Dicer Drops. Their toggles are below.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean display = true;
-
- // TODO moulconfig runnable support
- @Expose
- @ConfigOption(name = "Only Show Top", desc = "Only show the best # items.")
- @ConfigEditorSlider(
- minValue = 1,
- maxValue = 25,
- minStep = 1
- )
- public int showOnlyBest = 5;
-
- @Expose
- @ConfigOption(name = "Extend Top List", desc = "Add current crop to the list if its lower ranked than the set limit by extending the list.")
- @ConfigEditorBoolean
- public boolean showCurrent = true;
-
- // TODO moulconfig runnable support
- @Expose
- @ConfigOption(
- name = "Always On",
- desc = "Always show the money/hour Display while on the garden.")
- @ConfigEditorBoolean
- public boolean alwaysOn = false;
-
- @Expose
- @ConfigOption(
- name = "Compact Mode",
- desc = "Hide the item name and the position number.")
- @ConfigEditorBoolean
- public boolean compact = false;
-
- @Expose
- @ConfigOption(
- name = "Compact Price",
- desc = "Show the price more compact.")
- @ConfigEditorBoolean
- public boolean compactPrice = false;
-
- @Expose
- @ConfigOption(
- name = "Use Custom",
- desc = "Use the custom format below instead of classic ➜ §eSell Offer §7and other profiles ➜ §eNPC Price.")
- @ConfigEditorBoolean
- public boolean useCustomFormat = false;
-
- @Expose
- @ConfigOption(
- name = "Custom Format",
- desc = "Set what prices to show")
- @ConfigEditorDraggableList(
- exampleText = {
- "§eSell Offer",
- "§eInstant Sell",
- "§eNPC Price"
- },
- requireNonEmpty = true
- )
- public List<Integer> customFormat = new ArrayList<>(Arrays.asList(0, 1, 2));
-
- @Expose
- @ConfigOption(
- name = "Merge Seeds",
- desc = "Merge the seeds price with the wheat price.")
- @ConfigEditorBoolean
- public boolean mergeSeeds = true;
-
- @Expose
- @ConfigOption(
- name = "Include Bountiful",
- desc = "Includes the coins from Bountiful in the calculation.")
- @ConfigEditorBoolean
- public boolean bountiful = true;
-
- @Expose
- @ConfigOption(
- name = "Include Mooshroom Cow",
- desc = "Includes the coins you get from selling the mushrooms from your Mooshroom Cow pet.")
- @ConfigEditorBoolean
- public boolean mooshroom = true;
-
- @Expose
- @ConfigOption(
- name = "Include Armor Drops",
- desc = "Includes the average coins/hr from your armor.")
- @ConfigEditorBoolean
- public boolean armor = true;
-
- @Expose
- @ConfigOption(
- name = "Include Dicer Drops",
- desc = "Includes the average coins/hr from your melon or pumpkin dicer.")
- @ConfigEditorBoolean
- public boolean dicer = true;
-
- @Expose
- @ConfigOption(
- name = "Hide Title",
- desc = "Hides the first line of 'Money Per Hour' entirely.")
- @ConfigEditorBoolean
- public boolean hideTitle = false;
-
- @Expose
- public Position pos = new Position(-330, 170, false, true);
- }
-
- @Expose
- @ConfigOption(name = "Next Jacob's Contest", desc = "")
- @Accordion
- public NextJacobContestConfig nextJacobContests = new NextJacobContestConfig();
-
- public static class NextJacobContestConfig {
- @Expose
- @ConfigOption(name = "Show Jacob's Contest", desc = "Show the current or next Jacob's farming contest time and crops.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean display = true;
-
- @Expose
- @ConfigOption(name = "Outside Garden", desc = "Show the timer not only in Garden but everywhere in SkyBlock.")
- @ConfigEditorBoolean
- public boolean everywhere = false;
-
- @Expose
- @ConfigOption(name = "In Other Guis", desc = "Mark the current or next Farming Contest crops in other farming GUIs as underlined.")
- @ConfigEditorBoolean
- public boolean otherGuis = false;
-
- @Expose
- @ConfigOption(name = "Fetch Contests", desc = "Automatically fetch Contests from elitebot.dev for the current year if they're uploaded already.")
- @ConfigEditorBoolean
- public boolean fetchAutomatically = true;
-
- @Expose
- @ConfigOption(name = "Share Contests", desc = "Share the list of upcoming Contests to elitebot.dev for everyone else to then fetch automatically.")
- @ConfigEditorDropdown(values = {"Ask When Needed", "Share Automatically", "Disabled"})
- public int shareAutomatically = 0;
-
- @Expose
- @ConfigOption(name = "Warning", desc = "Show a warning shortly before a new Jacob's Contest starts.")
- @ConfigEditorBoolean
- public boolean warn = false;
-
- @Expose
- @ConfigOption(name = "Warning Time", desc = "Set the warning time in seconds before a Jacob's Contest begins.")
- @ConfigEditorSlider(
- minValue = 10,
- maxValue = 60 * 5,
- minStep = 1
- )
- public int warnTime = 60 * 2;
-
- @Expose
- @ConfigOption(name = "Popup Warning", desc = "Opens a popup when the warning time is reached and Minecraft is not in focus.")
- @ConfigEditorBoolean
- public boolean warnPopup = false;
-
- @Expose
- public Position pos = new Position(-200, 10, false, true);
- }
-
- @Expose
- @ConfigOption(name = "Farming Armor Drops", desc = "")
-
- @Accordion
- public FarmingArmorDropsConfig farmingArmorDrop = new FarmingArmorDropsConfig();
-
- public static class FarmingArmorDropsConfig {
- @Expose
- @ConfigOption(name = "Show Counter", desc = "Count all §9Cropie§7, §5Squash §7and §6Fermento §7dropped.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(name = "Hide Chat", desc = "Hide the chat message when receiving a farming armor drop.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideChat = false;
-
- @Expose
- public Position pos = new Position(16, -232, false, true);
- }
-
- @Expose
- @ConfigOption(name = "Anita Shop", desc = "")
- @Accordion
- public AnitaShopConfig anitaShop = new AnitaShopConfig();
-
- public static class AnitaShopConfig {
- @Expose
- @ConfigOption(
- name = "Medal Prices",
- desc = "Helps to identify profitable items to buy at the Anita item shop " +
- "and potential profit from selling the item in the Auction House."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean medalProfitEnabled = true;
-
- @Expose
- @ConfigOption(
- name = "Extra Farming Fortune",
- desc = "Show current tier and cost to max out in the item tooltip.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean extraFarmingFortune = true;
-
- @Expose
- public Position medalProfitPos = new Position(206, 158, false, true);
- }
-
- @Expose
- @ConfigOption(name = "Composter", desc = "")
- @Accordion
- public ComposterConfig composters = new ComposterConfig();
-
- public static class ComposterConfig {
- @Expose
- @ConfigOption(
- name = "Composter Overlay",
- desc = "Show organic matter, fuel, and profit prices while inside the Composter Inventory."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean overlay = true;
-
- @Expose
- @ConfigOption(name = "Overlay Price", desc = "Toggle for Bazaar 'buy order' vs 'instant buy' price in composter overlay.")
- @ConfigEditorDropdown(values = {"Instant Buy", "Buy Order"})
- public int overlayPriceType = 0;
-
- @Expose
- @ConfigOption(name = "Retrieve From", desc = "Change where to retrieve the materials from in the composter overlay: The Bazaar or Sacks.")
- @ConfigEditorDropdown(values = {"Bazaar", "Sacks"})
- public int retrieveFrom = 0;
-
- @Expose
- public Position overlayOrganicMatterPos = new Position(140, 152, false, true);
-
- @Expose
- public Position overlayFuelExtrasPos = new Position(-320, 152, false, true);
-
- @Expose
- @ConfigOption(
- name = "Display Element",
- desc = "Displays the Compost data from the tab list as GUI element."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean displayEnabled = true;
-
- @Expose
- @ConfigOption(
- name = "Outside Garden",
- desc = "Show Time till Composter is empty outside Garden"
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean displayOutsideGarden = false;
-
- @Expose
- @ConfigOption(
- name = "Composter Warning",
- desc = "Warn when the Composter gets close to empty, even outside Garden."
- )
- @ConfigEditorBoolean
- public boolean warnAlmostClose = false;
-
- @Expose
- @ConfigOption(
- name = "Upgrade Price",
- desc = "Show the price for the Composter Upgrade in the lore."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean upgradePrice = true;
-
- @Expose
- @ConfigOption(
- name = "Round Amount Needed",
- desc = "Rounds the amount needed to fill your Composter down so that you don't overspend."
- )
- @ConfigEditorBoolean
- public boolean roundDown = true;
-
- @Expose
- @ConfigOption(
- name = "Highlight Upgrade",
- desc = "Highlight Upgrades that can be bought right now."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlightUpgrade = true;
-
- @Expose
- @ConfigOption(
- name = "Inventory Numbers",
- desc = "Show the amount of Organic Matter, Fuel and Composts Available while inside the Composter Inventory."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean inventoryNumbers = true;
-
- @Expose
- @ConfigOption(name = "Notification When Low Composter", desc = "")
- @Accordion
- public NotifyLowConfig notifyLow = new NotifyLowConfig();
-
- public static class NotifyLowConfig {
- @Expose
- @ConfigOption(name = "Enable", desc = "Show a notification when Organic Matter or Fuel runs low in your Composter.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(name = "Show Title", desc = "Send a title to notify.")
- @ConfigEditorBoolean
- public boolean title = false;
-
- @Expose
- @ConfigOption(name = "Min Organic Matter", desc = "Warn when Organic Matter is below this value.")
- @ConfigEditorSlider(
- minValue = 1_000,
- maxValue = 80_000,
- minStep = 1
- )
- public int organicMatter = 20_000;
-
- @Expose
- @ConfigOption(name = "Min Fuel Cap", desc = "Warn when Fuel is below this value.")
- @ConfigEditorSlider(
- minValue = 500,
- maxValue = 40_000,
- minStep = 1
- )
- public int fuel = 10_000;
- }
-
- @Expose
- public Position displayPos = new Position(-390, 10, false, true);
-
- @Expose
- public Position outsideGardenPos = new Position(-363, 13, false, true);
- }
-
- @Expose
- @ConfigOption(name = "Farming Fortune Display", desc = "")
- @Accordion
- public FarmingFortuneConfig farmingFortunes = new FarmingFortuneConfig();
-
- public static class FarmingFortuneConfig {
- @Expose
- @ConfigOption(
- name = "FF Display",
- desc = "Displays the true Farming Fortune for the current crop, including all crop-specific and hidden bonuses."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean display = true;
-
- @Expose
- @ConfigOption(
- name = "Show As Drop Multiplier",
- desc = "Adds 100 to the displayed Farming Fortune so that it represents a drop multiplier rather than" +
- " the chance for bonus drops. "
- )
- @ConfigEditorBoolean
- public boolean dropMultiplier = true;
-
- @ConfigOption(name = "Farming Fortune Guide", desc = "Opens a guide that breaks down your Farming Fortune.\n§eCommand: /ff")
- @ConfigEditorButton(buttonText = "Open")
- public Runnable open = Commands::openFortuneGuide;
-
- @Expose
- public Position pos = new Position(5, -180, false, true);
- }
-
- @Expose
- @ConfigOption(name = "Tooltip Tweaks", desc = "")
- @Accordion
- public TooltipTweaksConfig tooltipTweak = new TooltipTweaksConfig();
-
- public static class TooltipTweaksConfig {
- @Expose
- @ConfigOption(
- name = "Compact Descriptions",
- desc = "Hides redundant parts of reforge descriptions, generic counter description, and Farmhand perk explanation."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean compactToolTooltips = false;
-
- @Expose
- @ConfigOption(
- name = "Breakdown Hotkey",
- desc = "When the keybind is pressed, show a breakdown of all fortune sources on a tool."
- )
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_LSHIFT)
- public int fortuneTooltipKeybind = Keyboard.KEY_LSHIFT;
-
- @Expose
- @ConfigOption(
- name = "Tooltip Format",
- desc = "Show crop-specific Farming Fortune in tooltip.\n" +
- "§fShow: §7Crop-specific Fortune indicated as §6[+196]\n" +
- "§fReplace: §7Edits the total Fortune to include crop-specific Fortune."
- )
- @ConfigEditorDropdown(values = {"Default", "Show", "Replace"})
- public int cropTooltipFortune = 1;
-
- @Expose
- @ConfigOption(
- name = "Total Crop Milestone",
- desc = "Shows the progress bar till maxed crop milestone in the crop milestone inventory."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean cropMilestoneTotalProgress = true;
- }
-
- @Expose
- @ConfigOption(name = "Yaw and Pitch", desc = "")
- @Accordion
- public YawPitchDisplayConfig yawPitchDisplay = new YawPitchDisplayConfig();
-
- public static class YawPitchDisplayConfig {
-
- @Expose
- @ConfigOption(name = "Enable", desc = "Displays yaw and pitch while holding a farming tool. Automatically fades out if there is no movement.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(name = "Yaw Precision", desc = "Yaw precision up to specified decimal.")
- @ConfigEditorSlider(
- minValue = 1,
- maxValue = 10,
- minStep = 1
- )
- public int yawPrecision = 4;
-
- @Expose
- @ConfigOption(name = "Pitch Precision", desc = "Pitch precision up to specified decimal.")
- @ConfigEditorSlider(
- minValue = 1,
- maxValue = 10,
- minStep = 1
- )
- public int pitchPrecision = 4;
-
- @Expose
- @ConfigOption(name = "Display Timeout", desc = "Duration in seconds for which the overlay is being displayed after moving.")
- @ConfigEditorSlider(
- minValue = 1,
- maxValue = 20,
- minStep = 1
- )
- public int timeout = 5;
-
- @Expose
- @ConfigOption(name = "Show Without Tool", desc = "Does not require you to hold a tool for the overlay to show.")
- @ConfigEditorBoolean
- public boolean showWithoutTool = false;
-
- @Expose
- @ConfigOption(name = "Show Outside Garden", desc = "The overlay will work outside of the Garden.")
- @ConfigEditorBoolean
- public boolean showEverywhere = false;
-
- @Expose
- @ConfigOption(name = "Ignore Timeout", desc = "Ignore the timeout after not moving mouse.")
- @ConfigEditorBoolean
- public boolean showAlways = false;
-
- @Expose
- public Position pos = new Position(445, 225, false, true);
- @Expose
- public Position posOutside = new Position(445, 225, false, true);
- }
-
- @Expose
- @ConfigOption(name = "Crop Start Location", desc = "")
- @Accordion
- public CropStartLocationConfig cropStartLocation = new CropStartLocationConfig();
-
- public static class CropStartLocationConfig {
-
- @Expose
- @ConfigOption(name = "Enable", desc = "Show the start waypoint for your farm with the currently holding tool.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- }
-
- @Expose
- @ConfigOption(name = "Garden Plot Icon", desc = "")
- @Accordion
- public PlotIconConfig plotIcon = new PlotIconConfig();
-
- public static class PlotIconConfig {
- @Expose
- @ConfigOption(name = "Enable", desc = "Enable icon replacement in the Configure Plots menu.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @ConfigOption(name = "Hard Reset", desc = "Reset every slot to its original item.")
- @ConfigEditorButton(buttonText = "Reset")
- public Runnable hardReset = () -> {
- GardenPlotIcon.INSTANCE.setHardReset(true);
- LorenzUtils.INSTANCE.sendCommandToServer("desk");
- };
- }
-
- @Expose
- @ConfigOption(name = "Plot Price", desc = "Show the price of the plot in coins when inside the Configure Plots inventory.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean plotPrice = true;
-
- @Expose
- @ConfigOption(name = "Desk in Menu", desc = "Show a Desk button in the SkyBlock Menu. Opens the /desk command on click.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean deskInSkyBlockMenu = true;
-
-
- @Expose
- @ConfigOption(name = "Fungi Cutter Warning", desc = "Warn when breaking mushroom with the wrong Fungi Cutter mode.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean fungiCutterWarn = true;
-
- @Expose
- @ConfigOption(name = "Burrowing Spores", desc = "Show a notification when a Burrowing Spores spawns while farming mushrooms.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean burrowingSporesNotification = true;
-
- @Expose
- @ConfigOption(name = "Wild Strawberry", desc = "Show a notification when a Wild Strawberry Dye drops while farming.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean wildStrawberryDyeNotification = true;
-
- @Expose
- @ConfigOption(
- name = "FF for Contest",
- desc = "Show the minimum needed Farming Fortune for reaching each medal in Jacob's Farming Contest inventory."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean farmingFortuneForContest = true;
-
- @Expose
- public Position farmingFortuneForContestPos = new Position(180, 156, false, true);
-
- @Expose
- @ConfigOption(
- name = "Contest Time Needed",
- desc = "Show the time and missing FF for every crop inside Jacob's Farming Contest inventory."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- // TODO rename to jacobContestTimes
- public boolean jacobContextTimes = true;
-
- @Expose
- @ConfigOption(
- name = "Custom BPS",
- desc = "Use custom Blocks per Second value in some GUIs instead of the real one."
- )
- @ConfigEditorBoolean
- public boolean jacobContestCustomBps = true;
-
- // TODO moulconfig runnable support
- @Expose
- @ConfigOption(name = "Custom BPS Value", desc = "Set a custom Blocks per Second value.")
- @ConfigEditorSlider(
- minValue = 15,
- maxValue = 20,
- minStep = 0.1f
- )
- public double jacobContestCustomBpsValue = 19.9;
-
- @Expose
- // TODO rename to jacobContestTimesPos
- public Position jacobContextTimesPos = new Position(-359, 149, false, true);
-
- @Expose
- @ConfigOption(
- name = "Contest Summary",
- desc = "Show the average Blocks Per Second and blocks clicked at the end of a Jacob Farming Contest in chat."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean jacobContestSummary = true;
-
- @Expose
- @ConfigOption(name = "Always Finnegan", desc = "Forcefully set the Finnegan Farming Simulator perk to be active. This is useful if the auto mayor detection fails.")
- @ConfigEditorBoolean
- public boolean forcefullyEnabledAlwaysFinnegan = false;
-
- @Expose
- public Position cropSpeedMeterPos = new Position(278, -236, false, true);
-
- @Expose
- @ConfigOption(name = "Enable Plot Borders", desc = "Enable the use of F3 + G hotkey to show Garden plot borders. Similar to how later Minecraft version render chunk borders.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean plotBorders = true;
-}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/InventoryConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/InventoryConfig.java
deleted file mode 100644
index 50128e85e..000000000
--- a/src/main/java/at/hannibal2/skyhanni/config/features/InventoryConfig.java
+++ /dev/null
@@ -1,480 +0,0 @@
-package at.hannibal2.skyhanni.config.features;
-
-import at.hannibal2.skyhanni.config.FeatureToggle;
-import at.hannibal2.skyhanni.config.core.config.Position;
-import com.google.gson.annotations.Expose;
-import io.github.moulberry.moulconfig.annotations.Accordion;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorDraggableList;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
-import io.github.moulberry.moulconfig.annotations.ConfigOption;
-import org.lwjgl.input.Keyboard;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-public class InventoryConfig {
-
- @Expose
- @ConfigOption(name = "Not Clickable Items", desc = "")
- @Accordion
- public HideNotClickableConfig hideNotClickable = new HideNotClickableConfig();
-
- public static class HideNotClickableConfig {
- @Expose
- @ConfigOption(name = "Enabled", desc = "Hide items that are not clickable in the current inventory: ah, bz, accessory bag, etc.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean items = false;
-
- @Expose
- @ConfigOption(name = "Block Clicks", desc = "Block the clicks on these items.")
- @ConfigEditorBoolean
- public boolean itemsBlockClicks = true;
-
- @Expose
- @ConfigOption(
- name = "Opacity",
- desc = "How strong should the items be grayed out?"
- )
- @ConfigEditorSlider(
- minValue = 0,
- maxValue = 255,
- minStep = 5
- )
- public int opacity = 180;
-
- @Expose
- @ConfigOption(name = "Bypass With Control", desc = "Adds the ability to bypass not clickable items when holding the control key.")
- @ConfigEditorBoolean
- public boolean itemsBypass = true;
-
- @Expose
- @ConfigOption(name = "Green Line", desc = "Adds green line around items that are clickable.")
- @ConfigEditorBoolean
- public boolean itemsGreenLine = true;
-
- }
-
- @Expose
- @ConfigOption(name = "RNG Meter", desc = "")
- @Accordion
- public RngMeterConfig rngMeter = new RngMeterConfig();
-
- public static class RngMeterConfig {
- @Expose
- @ConfigOption(name = "Floor Names", desc = "Show the Floor names in the Catacombs RNG Meter inventory.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean floorName = false;
-
- @Expose
- @ConfigOption(name = "No Drop", desc = "Highlight floors without a drop selected in the Catacombs RNG Meter inventory.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean noDrop = false;
-
- @Expose
- @ConfigOption(name = "Selected Drop", desc = "Highlight the selected drop in the Catacombs or Slayer RNG Meter inventory.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean selectedDrop = false;
- }
-
- @Expose
- @ConfigOption(name = "Stats Tuning", desc = "")
- @Accordion
- public StatsTuningConfig statsTuning = new StatsTuningConfig();
-
- public static class StatsTuningConfig {
- @Expose
- @ConfigOption(name = "Selected Stats", desc = "Show the tuning stats in the Thaumaturgy inventory.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean selectedStats = true;
-
- @Expose
- @ConfigOption(name = "Tuning Points", desc = "Show the amount of selected Tuning Points in the Stats Tuning inventory.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean points = true;
-
- @Expose
- @ConfigOption(name = "Selected Template", desc = "Highlight the selected template in the Stats Tuning inventory.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean selectedTemplate = true;
-
- @Expose
- @ConfigOption(name = "Template Stats", desc = "Show the type of stats for the Tuning Point templates.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean templateStats = true;
- }
-
- @Expose
- @ConfigOption(name = "Jacob Farming Contest", desc = "")
- @Accordion
- public JacobFarmingContestConfig jacobFarmingContests = new JacobFarmingContestConfig();
-
- public static class JacobFarmingContestConfig {
- @Expose
- @ConfigOption(name = "Unclaimed Rewards", desc = "Highlight contests with unclaimed rewards in the Jacob inventory.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlightRewards = true;
-
- @Expose
- @ConfigOption(name = "Contest Time", desc = "Adds the real time format to the Contest description.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean realTime = true;
-
- @Expose
- @ConfigOption(name = "Medal Icon", desc = "Adds a symbol that shows what medal you received in this Contest. " +
- "§eIf you use a texture pack this may cause conflicting icons.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean medalIcon = true;
-
- @Expose
- @ConfigOption(name = "Finnegan Icon", desc = "Uses a different indicator for when the Contest happened during Mayor Finnegan.")
- @ConfigEditorBoolean
- public boolean finneganIcon = true;
- }
-
-
- @Expose
- @ConfigOption(name = "Sack Items Display", desc = "")
- @Accordion
- public SackDisplayConfig sackDisplay = new SackDisplayConfig();
-
- public static class SackDisplayConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Show contained items inside a sack inventory.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(
- name = "Highlight Full",
- desc = "Highlight items that are full in red.\n" +
- "§eDoes not need the option above to be enabled."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlightFull = true;
-
- @Expose
- @ConfigOption(name = "Number Format", desc = "Either show Default, Formatted or Unformatted numbers.\n" +
- "§eDefault: §72,240/2.2k\n" +
- "§eFormatted: §72.2k/2.2k\n" +
- "§eUnformatted: §72,240/2,200")
- @ConfigEditorDropdown(values = {"Default", "Formatted", "Unformatted"})
- public int numberFormat = 1;
-
- @Expose
- @ConfigOption(name = "Extra space", desc = "Space between each line of text.")
- @ConfigEditorSlider(
- minValue = 0,
- maxValue = 10,
- minStep = 1)
- public int extraSpace = 1;
-
- @Expose
- @ConfigOption(name = "Sorting Type", desc = "Sorting type of items in sack.")
- @ConfigEditorDropdown(values = {"Descending (Stored)", "Ascending (Stored)", "Descending (Price)", "Ascending (Price)"})
- public int sortingType = 0;
-
- @Expose
- @ConfigOption(name = "Item To Show", desc = "Choose how many items are displayed. (Some sacks have too many items to fit\n" +
- "in larger GUI scales, like the nether sack.)")
- @ConfigEditorSlider(
- minValue = 0,
- maxValue = 45,
- minStep = 1
- )
- public int itemToShow = 15;
-
- @Expose
- @ConfigOption(name = "Show Empty Item", desc = "Show empty item quantity in the display.")
- @ConfigEditorBoolean
- public boolean showEmpty = true;
-
- @Expose
- @ConfigOption(name = "Show Price", desc = "Show price for each item in sack.")
- @ConfigEditorBoolean
- public boolean showPrice = true;
-
- @Expose
- @ConfigOption(name = "Price Format", desc = "Format of the price displayed.\n" +
- "§eFormatted: §7(12k)\n" +
- "§eUnformatted: §7(12,421)")
- @ConfigEditorDropdown(values = {"Formatted", "Unformatted"})
- public int priceFormat = 0;
-
- @Expose
- @ConfigOption(name = "Show Price From", desc = "Show price from Bazaar or NPC.")
- @ConfigEditorDropdown(values = {"Bazaar", "NPC"})
- public int priceFrom = 0;
-
- @Expose
- public Position position = new Position(144, 139, false, true);
- }
-
- @Expose
- @ConfigOption(name = "Chest Value", desc = "")
- @Accordion
- public ChestValueConfig chestValueConfig = new ChestValueConfig();
-
- public static class ChestValueConfig {
- @Expose
- @ConfigOption(name = "Enabled", desc = "Enable estimated value of chest.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(name = "Enabled in dungeons", desc = "Enable the feature in dungeons.")
- @ConfigEditorBoolean
- public boolean enableInDungeons = false;
-
- @Expose
- @ConfigOption(name = "Enable during Item Value", desc = "Show this display even if the Estimated Item Value is visible.")
- @ConfigEditorBoolean
- public boolean showDuringEstimatedItemValue = false;
-
- @Expose
- @ConfigOption(name = "Show Stacks", desc = "Show the item icon before name.")
- @ConfigEditorBoolean
- public boolean showStacks = true;
-
- @Expose
- @ConfigOption(name = "Display Type", desc = "Try to align everything to look nicer.")
- @ConfigEditorBoolean
- public boolean alignedDisplay = true;
-
- @Expose
- @ConfigOption(name = "Name Length", desc = "Reduce item name length to gain extra space on screen.\n§cCalculated in pixels!")
- @ConfigEditorSlider(minStep = 1, minValue = 100, maxValue = 150)
- public int nameLength = 100;
-
- @Expose
- @ConfigOption(name = "Highlight Slot", desc = "Highlight slot where the item is when you hover over it in the display.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enableHighlight = true;
-
- @Expose
- @ConfigOption(name = "Highlight Color", desc = "Choose the highlight color.")
- @ConfigEditorColour
- public String highlightColor = "0:249:0:255:88";
-
- @Expose
- @ConfigOption(name = "Sorting Type", desc = "Price sorting type.")
- @ConfigEditorDropdown(values = {"Descending", "Ascending"})
- public int sortingType = 0;
-
- @Expose
- @ConfigOption(name = "Value formatting Type", desc = "Format of the price.")
- @ConfigEditorDropdown(values = {"Short", "Long"})
- public int formatType = 0;
-
- @Expose
- @ConfigOption(name = "Item To Show", desc = "Choose how many items are displayed.\n" +
- "All items in the chest are still counted for the total value.")
- @ConfigEditorSlider(
- minValue = 0,
- maxValue = 54,
- minStep = 1
- )
- public int itemToShow = 15;
-
- @Expose
- @ConfigOption(name = "Hide below", desc = "Item item value below configured amount.\n" +
- "Items are still counted for the total value.")
- @ConfigEditorSlider(
- minValue = 50_000,
- maxValue = 10_000_000,
- minStep = 50_000
- )
- public int hideBelow = 100_000;
-
-
- @Expose
- public Position position = new Position(107, 141, false, true);
- }
-
- @Expose
- @ConfigOption(name = "Helper", desc = "")
- @Accordion
- public HelperConfig helper = new HelperConfig();
-
- public static class HelperConfig {
- @Expose
- @ConfigOption(name = "Melody's Hair Harp", desc = "")
- @Accordion
- public HarpConfig harp = new HarpConfig();
-
- public static class HarpConfig {
- @Expose
- @ConfigOption(name = "Use Keybinds", desc = "In the Harp, press buttons with your number row on the keyboard instead of clicking.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean keybinds = false;
-
- @Expose
- @ConfigOption(name = "Show Numbers", desc = "In the Harp, show buttons as stack size (intended to be used with the Keybinds).")
- @ConfigEditorBoolean
- public boolean showNumbers = false;
-
- @Expose
- @ConfigOption(name = "Keybinds", desc = "")
- @Accordion
- public HarpConfigKeyBinds harpKeybinds = new HarpConfigKeyBinds();
-
- public static class HarpConfigKeyBinds {
- @Expose
- @ConfigOption(name = "Key 1", desc = "Key for the first Node")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_1)
- public int key1 = Keyboard.KEY_1;
- @Expose
- @ConfigOption(name = "Key 2", desc = "Key for the second Node")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_2)
- public int key2 = Keyboard.KEY_2;
- @Expose
- @ConfigOption(name = "Key 3", desc = "Key for the third Node")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_3)
- public int key3 = Keyboard.KEY_3;
- @Expose
- @ConfigOption(name = "Key 4", desc = "Key for the fourth Node")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_4)
- public int key4 = Keyboard.KEY_4;
- @Expose
- @ConfigOption(name = "Key 5", desc = "Key for the fifth Node")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_5)
- public int key5 = Keyboard.KEY_5;
- @Expose
- @ConfigOption(name = "Key 6", desc = "Key for the sixth Node")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_6)
- public int key6 = Keyboard.KEY_6;
- @Expose
- @ConfigOption(name = "Key 7", desc = "Key for the seventh Node")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_7)
- public int key7 = Keyboard.KEY_7;
- }
- }
-
- @Expose
- @ConfigOption(name = "Tia Relay Abiphone Network Maintenance", desc = "")
- @Accordion
- public TiaRelayConfig tiaRelay = new TiaRelayConfig();
-
- public static class TiaRelayConfig {
-
- @Expose
- @ConfigOption(name = "Sound Puzzle Helper", desc = "Helps with solving the sound puzzle for Tia (The 9 Operator Chips to do maintainance for the Abiphone Network).")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean soundHelper = true;
-
- @Expose
- @ConfigOption(name = "Next Waypoint", desc = "Show the next relay waypoint for Tia the Fairy, where maintenance for the Abiphone network needs to be done.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean nextWaypoint = true;
-
- @Expose
- @ConfigOption(name = "All Waypoints", desc = "Show all relay waypoints at once (intended for debugging).")
- @ConfigEditorBoolean
- public boolean allWaypoints = false;
-
- @Expose
- @ConfigOption(name = "Mute Sound", desc = "Mutes the sound when close to the relay.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean tiaRelayMute = true;
- }
- }
-
- @Expose
- @ConfigOption(
- name = "Item Number",
- desc = "Showing the item number as a stack size for these items."
- )
- @ConfigEditorDraggableList(
- exampleText = {
- "§bMaster Star Tier",
- "§bMaster Skull Tier",
- "§bDungeon Head Floor Number",
- "§bNew Year Cake",
- "§bPet Level",
- "§bMinion Tier",
- "§bCrimson Armor",
- "§7(Removed)",
- "§bKuudra Key",
- "§bSkill Level",
- "§bCollection Level",
- "§bRancher's Boots speed",
- "§bLarva Hook",
- "§bDungeon Potion Level"
- }
- )
- public List<Integer> itemNumberAsStackSize = new ArrayList<>(Arrays.asList(3, 9, 11, 12));
-
- @Expose
- @ConfigOption(
- name = "Quick Craft Confirmation",
- desc = "Require Ctrl+Click to craft items that aren't often quick crafted " +
- "(e.g. armor, weapons, accessories). Sack items can be crafted normally."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean quickCraftingConfirmation = false;
-
- @Expose
- @ConfigOption(name = "Sack Name", desc = "Show an abbreviation of the sack name.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean displaySackName = false;
-
- @Expose
- @ConfigOption(name = "Anvil Combine Helper", desc = "Suggests the same item in the inventory when trying to combine two items in the anvil.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean anvilCombineHelper = false;
-
- @Expose
- @ConfigOption(name = "Item Stars",
- desc = "Show a compact star count in the item name for all items.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean itemStars = false;
-
- @Expose
- @ConfigOption(name = "Missing Tasks",
- desc = "Highlight missing tasks in the SkyBlock Level Guide inventory.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlightMissingSkyBlockLevelGuide = true;
-
- @Expose
- @ConfigOption(name = "Highlight Auctions",
- desc = "Highlight own items that are sold in green and that are expired in red.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlightAuctions = true;
-
- @Expose
- @ConfigOption(name = "Shift Click Equipment", desc = "Makes normal clicks to shift clicks in equipment inventory")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean shiftClickForEquipment = false;
-
-}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/ItemAbilityConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/ItemAbilityConfig.java
deleted file mode 100644
index 30ba1227f..000000000
--- a/src/main/java/at/hannibal2/skyhanni/config/features/ItemAbilityConfig.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package at.hannibal2.skyhanni.config.features;
-
-import at.hannibal2.skyhanni.config.FeatureToggle;
-import at.hannibal2.skyhanni.config.core.config.Position;
-import com.google.gson.annotations.Expose;
-import io.github.moulberry.moulconfig.annotations.Accordion;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
-import io.github.moulberry.moulconfig.annotations.ConfigOption;
-
-public class ItemAbilityConfig {
-
- @Expose
- @ConfigOption(name = "Ability Cooldown", desc = "Show the cooldown of item abilities.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean itemAbilityCooldown = false;
-
- @Expose
- @ConfigOption(name = "Ability Cooldown Background", desc = "Show the cooldown color of item abilities in the background.")
- @ConfigEditorBoolean
- public boolean itemAbilityCooldownBackground = false;
-
- @Expose
- @ConfigOption(name = "Fire Veil", desc = "")
- @Accordion
- public FireVeilWandConfig fireVeilWands = new FireVeilWandConfig();
-
- public static class FireVeilWandConfig {
- @Expose
- @ConfigOption(name = "Fire Veil Design", desc = "Changes the flame particles of the Fire Veil Wand ability.")
- @ConfigEditorDropdown(values = {"Particles", "Line", "Off"})
- public int display = 0;
-
- @Expose
- @ConfigOption(
- name = "Line Color",
- desc = "Changes the color of the Fire Veil Wand line."
- )
- @ConfigEditorColour
- public String displayColor = "0:245:255:85:85";
- }
-
- @ConfigOption(name = "Chicken Head", desc = "")
- @Accordion
- @Expose
- public ChickenHeadConfig chickenHead = new ChickenHeadConfig();
-
- public static class ChickenHeadConfig {
-
- @Expose
- @ConfigOption(name = "Checken Head Timer", desc = "Show the cooldown until the next time you can lay an egg with the Chicken Head.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean displayTimer = false;
-
- @Expose
- public Position position = new Position(-372, 73, false, true);
-
- @Expose
- @ConfigOption(name = "Hide Chat", desc = "Hide the 'You laid an egg!' chat message.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideChat = true;
- }
-
- @Expose
- @ConfigOption(name = "Depleted Bonzo's Masks",
- desc = "Highlights used Bonzo's Masks and Spirit Masks with a background.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean depletedBonzosMasks = false;
-}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/MiningConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/MiningConfig.java
deleted file mode 100644
index 5272336df..000000000
--- a/src/main/java/at/hannibal2/skyhanni/config/features/MiningConfig.java
+++ /dev/null
@@ -1,128 +0,0 @@
-package at.hannibal2.skyhanni.config.features;
-
-import at.hannibal2.skyhanni.config.FeatureToggle;
-import at.hannibal2.skyhanni.config.core.config.Position;
-import com.google.gson.annotations.Expose;
-import io.github.moulberry.moulconfig.annotations.Accordion;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorDraggableList;
-import io.github.moulberry.moulconfig.annotations.ConfigOption;
-import io.github.moulberry.moulconfig.observer.Property;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-public class MiningConfig {
-
- @Expose
- @ConfigOption(name = "Powder Tracker", desc = "")
- @Accordion
- public PowderTrackerConfig powderTracker = new PowderTrackerConfig();
-
- public static class PowderTrackerConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Enable the Powder Tracker overlay for mining.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(name = "Only when Grinding", desc = "Only show the overlay when powder grinding.")
- @ConfigEditorBoolean
- public boolean onlyWhenPowderGrinding = false;
-
- @Expose
- @ConfigOption(name = "Great Explorer", desc = "Enable this if your Great Explorer perk is maxed.")
- @ConfigEditorBoolean
- public boolean greatExplorerMaxed = false;
-
- @Expose
- @ConfigOption(
- name = "Text Format",
- desc = "Drag text to change the appearance of the overlay."
- )
- @ConfigEditorDraggableList(
- exampleText = {
- "§b§lPowder Tracker",
- "§7Display Mode: §a[Total] §e[This Session]",
- "§d852 Total chests Picked §7(950/h)",
- "§bx2 Powder: §aActive!",
- "§b250,420 §aMithril Powder §7(350,000/h)",
- "§b250,420 §dGemstone Powder §7(350,000/h)",
- "",
- "§b129 §bDiamond Essence §7(600/h)",
- "§b234 §6Gold Essence §7(700/h)",
- "",
- "§50§7-§90§7-§a0§f-0 §cRuby Gemstone",
- "§50§7-§90§7-§a0§f-0 §bSapphire Gemstone",
- "§50§7-§90§7-§a0§f-0 §6Amber Gemstone",
- "§50§7-§90§7-§a0§f-0 §5Amethyst Gemstone",
- "§50§7-§90§7-§a0§f-0 §aJade Gemstone",
- "§50§7-§90§7-§a0§f-0 §eTopaz Gemstone",
-
- "§b14 §9FTX 3070",
- "§b14 §9Electron Transmitter",
- "§b14 §9Robotron Reflector",
- "§b14 §9Superlite Motor",
- "§b14 §9Control Switch",
- "§b14 §9Synthetic Heart",
- "§b14 §9Total Robot Parts",
-
- "§90§7-§a0§7-§c0§f-§e0§f-§30 §fGoblin Egg",
-
- "§b12 §aWishing Compass",
-
- "§b320 §aSludge Juice",
- "§b2 §9Ascension Rope",
- "§b6 §5Treasurite",
- "§b4 §6Jungle Heart",
- "§b1 §5Pickonimbus 2000",
- "§b14 §aYoggie",
- "§b9 §fPrehistoric Egg",
- "§b25 §aOil Barrel"
- }
- )
- public Property<List<Integer>> textFormat = Property.of(new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)));
-
- @Expose
- public Position position = new Position(-274, 0, false, true);
-
- }
-
- @Expose
- @ConfigOption(name = "King Talisman", desc = "")
- @Accordion
- public KingTalismanConfig kingTalisman = new KingTalismanConfig();
-
- public static class KingTalismanConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Show kings you have not talked to yet, and when the next missing king will appear.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(name = "Outside Mines", desc = "Show the display even while outside the Dwarven Mines.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean outsideMines = false;
-
- @Expose
- public Position position = new Position(-400, 220, false, true);
- }
-
- @Expose
- @ConfigOption(name = "Highlight Commission Mobs", desc = "Highlight Mobs that are part of active commissions.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlightCommissionMobs = false;
-
- @Expose
- @ConfigOption(name = "Names in Core", desc = "Show the names of the 4 areas while in the center of the Crystal Hollows.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean crystalHollowsNamesInCore = false;
-}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/MinionsConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/MinionsConfig.java
deleted file mode 100644
index a05b913dc..000000000
--- a/src/main/java/at/hannibal2/skyhanni/config/features/MinionsConfig.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package at.hannibal2.skyhanni.config.features;
-
-import at.hannibal2.skyhanni.config.FeatureToggle;
-import at.hannibal2.skyhanni.config.core.config.Position;
-import com.google.gson.annotations.Expose;
-import io.github.moulberry.moulconfig.annotations.Accordion;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
-import io.github.moulberry.moulconfig.annotations.ConfigOption;
-
-public class MinionsConfig {
-
- @Expose
- @ConfigOption(name = "Name Display", desc = "Show the minion name and tier over the minion.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean nameDisplay = true;
-
- @Expose
- @ConfigOption(name = "Only Tier", desc = "Show only the tier number over the minion. (Useful for Bingo)")
- @ConfigEditorBoolean
- public boolean nameOnlyTier = false;
-
- @Expose
- @ConfigOption(name = "Last Clicked", desc = "")
- @Accordion
- public LastClickedMinionConfig lastClickedMinion = new LastClickedMinionConfig();
-
- public static class LastClickedMinionConfig {
- @Expose
- @ConfigOption(name = "Last Minion Display", desc = "Marks the location of the last clicked minion, even through walls.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean display = false;
-
- @Expose
- @ConfigOption(
- name = "Last Minion Color",
- desc = "The color in which the last minion should be displayed."
- )
- @ConfigEditorColour
- public String color = "0:245:85:255:85";
-
- @Expose
- @ConfigOption(
- name = "Last Minion Time",
- desc = "Time in seconds how long the last minion should be displayed."
- )
- @ConfigEditorSlider(
- minValue = 3,
- maxValue = 120,
- minStep = 1
- )
- public int time = 20;
- }
-
- @Expose
- @ConfigOption(name = "Emptied Time", desc = "")
- @Accordion
- public EmptiedTimeConfig emptiedTime = new EmptiedTimeConfig();
-
- public static class EmptiedTimeConfig {
- @Expose
- @ConfigOption(name = "Emptied Time Display", desc = "Show the time when the hopper in the minion was last emptied.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean display = false;
-
- @Expose
- @ConfigOption(
- name = "Distance",
- desc = "Maximum distance to display minion data."
- )
- @ConfigEditorSlider(
- minValue = 3,
- maxValue = 30,
- minStep = 1
- )
- public int distance = 10;
- }
-
- @Expose
- @ConfigOption(name = "Hopper Profit Display", desc = "Use the hopper's held coins and the last empty time to calculate the coins per day.")
- @ConfigEditorBoolean
- public boolean hopperProfitDisplay = true;
-
- @Expose
- public Position hopperProfitPos = new Position(360, 90, false, true);
-
- @Expose
- @ConfigOption(name = "Hide Mob Nametag", desc = "Hiding the nametag of mobs close to minions.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideMobsNametagNearby = false;
-}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/MiscConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/MiscConfig.java
deleted file mode 100644
index 2fc113216..000000000
--- a/src/main/java/at/hannibal2/skyhanni/config/features/MiscConfig.java
+++ /dev/null
@@ -1,834 +0,0 @@
-package at.hannibal2.skyhanni.config.features;
-
-import at.hannibal2.skyhanni.config.FeatureToggle;
-import at.hannibal2.skyhanni.config.core.config.Position;
-import com.google.gson.annotations.Expose;
-import io.github.moulberry.moulconfig.annotations.Accordion;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorDraggableList;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorText;
-import io.github.moulberry.moulconfig.annotations.ConfigOption;
-import io.github.moulberry.moulconfig.observer.Property;
-import org.lwjgl.input.Keyboard;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-public class MiscConfig {
-
- @Expose
- @ConfigOption(name = "Pet", desc = "")
- @Accordion
- public PetConfig pets = new PetConfig();
-
- public static class PetConfig {
- @Expose
- @ConfigOption(name = "Pet Display", desc = "Show the currently active pet.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean display = false;
-
- @Expose
- @ConfigOption(name = "Pet Experience Tooltip", desc = "")
- @Accordion
- public PetExperienceToolTipConfig petExperienceToolTip = new PetExperienceToolTipConfig();
-
- public static class PetExperienceToolTipConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Show the full pet exp and the progress to level 100 (ignoring rarity) when hovering over a pet while pressing shift key.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean petDisplay = true;
-
- @Expose
- @ConfigOption(name = "Show Always", desc = "Show this info always, even if not pressing shift key.")
- @ConfigEditorBoolean
- public boolean showAlways = false;
-
- @Expose
- @ConfigOption(name = "Dragon Egg", desc = "For a Golden Dragon Egg, show progress to level 100 instead of 200.")
- @ConfigEditorBoolean
- public boolean showGoldenDragonEgg = true;
-
- }
- }
-
- @Expose
- public Position petDisplayPos = new Position(-330, -15, false, true);
-
- @ConfigOption(name = "Hide Armor", desc = "")
- @Accordion
- @Expose
- public HideArmor hideArmor2 = new HideArmor();
-
- public static class HideArmor {
-
- @Expose
- @ConfigOption(name = "Mode", desc = "Hide the armor of players.")
- @ConfigEditorDropdown(values = {"All", "Own Armor", "Other's Armor", "Off"})
- public int mode = 3;
-
- @Expose
- @ConfigOption(name = "Only Helmet", desc = "Only hide the helmet.")
- @ConfigEditorBoolean()
- public Boolean onlyHelmet = false;
-
- }
-
- @Expose
- @ConfigOption(name = "Potion Effects", desc = "")
- @Accordion
- public PotionEffectsConfig potionEffect = new PotionEffectsConfig();
-
- public static class PotionEffectsConfig {
- @Expose
- @ConfigOption(name = "Non God Pot Effects", desc = "Display the active potion effects that are not part of the God Pot.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean nonGodPotEffectDisplay = false;
-
- @Expose
- @ConfigOption(name = "Show Mixins", desc = "Include God Pot mixins in the Non God Pot Effects display.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean nonGodPotEffectShowMixins = false;
-
- @Expose
- public Position nonGodPotEffectPos = new Position(10, 10, false, true);
- }
-
- @Expose
- @ConfigOption(name = "Particle Hider", desc = "")
- @Accordion
- public ParticleHiderConfig particleHiders = new ParticleHiderConfig();
-
- public static class ParticleHiderConfig {
- @Expose
- @ConfigOption(name = "Blaze Particles", desc = "Hide Blaze particles.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideBlazeParticles = false;
-
- @Expose
- @ConfigOption(name = "Enderman Particles", desc = "Hide Enderman particles.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideEndermanParticles = false;
-
- @Expose
- @ConfigOption(name = "Fireball Particles", desc = "Hide fireball particles.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideFireballParticles = true;
-
- @Expose
- @ConfigOption(name = "Fire Particles", desc = "Hide particles from the fire block.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideFireBlockParticles = true;
-
- @Expose
- @ConfigOption(name = "Smoke Particles", desc = "Hide smoke particles.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideSmokeParticles = false;
-
- @Expose
- @ConfigOption(name = "Far Particles", desc = "Hide particles that are more than 40 blocks away.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideFarParticles = true;
-
- @Expose
- @ConfigOption(name = "Close Redstone Particles", desc = "Hide Redstone particles around the player (appear for some potion effects).")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideCloseRedstoneParticles = true;
- }
-
- @Expose
- @ConfigOption(name = "Estimated Item Value", desc = "(Prices for Enchantments, Reforge Stones, Gemstones, Drill Parts and more)")
- @Accordion
- public EstimatedItemValueConfig estimatedItemValues = new EstimatedItemValueConfig();
-
- public static class EstimatedItemValueConfig {
- @Expose
- @ConfigOption(name = "Enable Estimated Price", desc = "Displays an Estimated Item Value for the item you hover over.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(name = "Hotkey", desc = "Press this key to show the Estimated Item Value.")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
- public int hotkey = Keyboard.KEY_NONE;
-
- @Expose
- @ConfigOption(name = "Show Always", desc = "Ignore the hotkey and always display the item value.")
- @ConfigEditorBoolean
- public boolean alwaysEnabled = true;
-
- @Expose
- @ConfigOption(name = "Enchantments Cap", desc = "Only show the top # most expensive enchantments.")
- @ConfigEditorSlider(
- minValue = 1,
- maxValue = 30,
- minStep = 1
- )
- public Property<Integer> enchantmentsCap = Property.of(7);
-
- @Expose
- @ConfigOption(name = "Show Exact Price", desc = "Show the exact total price instead of the compact number.")
- @ConfigEditorBoolean
- public boolean exactPrice = false;
-
- @Expose
- @ConfigOption(name = "Show Armor Value", desc = "Show the value of the full armor set in the Wardrobe inventory.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean armor = true;
-
- @Expose
- public Position itemPriceDataPos = new Position(140, 90, false, true);
- }
-
- @ConfigOption(name = "Discord Rich Presence", desc = "")
- @Accordion
- @Expose
- public DiscordRPC discordRPC = new DiscordRPC();
-
- public static class DiscordRPC {
-
- @Expose
- @ConfigOption(name = "Enable Discord RPC", desc = "Details about your SkyBlock session displayed through Discord.")
- @ConfigEditorBoolean
- @FeatureToggle
- public Property<Boolean> enabled = Property.of(false);
-
- @Expose
- @ConfigOption(name = "First Line", desc = "Decide what to show in the first line.")
- @ConfigEditorDropdown(values = {
- "Nothing",
- "Location",
- "Purse",
- "Bits",
- "Stats",
- "Held Item",
- "SkyBlock Date",
- "Profile",
- "Slayer",
- "Custom",
- "Dynamic",
- "Crop Milestone",
- "Current Pet"
- })
- public Property<Integer> firstLine = Property.of(0);
-
- @Expose
- @ConfigOption(name = "Second Line", desc = "Decide what to show in the second line.")
- @ConfigEditorDropdown(values = {
- "Nothing",
- "Location",
- "Purse",
- "Bits",
- "Stats",
- "Held Item",
- "SkyBlock Date",
- "Profile",
- "Slayer",
- "Custom",
- "Dynamic",
- "Crop Milestone",
- "Current Pet"
- })
- public Property<Integer> secondLine = Property.of(0);
-
- @Expose
- @ConfigOption(name = "Custom", desc = "What should be displayed if you select \"Custom\" above.")
- @ConfigEditorText
- public Property<String> customText = Property.of("");
-
- @Expose
- @ConfigOption(name = "Dynamic Priority", desc = "Disable certain dynamic statuses, or change the priority in case two are triggered at the same time (higher up means higher priority).")
- @ConfigEditorDraggableList(
- exampleText = {
- "Crop Milestones",
- "Slayer",
- "Stacking Enchantment",
- "Dungeon",
- "AFK Indicator"
- }
- )
- public List<Integer> autoPriority = new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4));
-
- @Expose
- @ConfigOption(name = "Dynamic Fallback", desc = "What to show when none of your \"Dynamic Priority\" statuses are active.")
- @ConfigEditorDropdown(values = {
- "Nothing",
- "Location",
- "Purse",
- "Bits",
- "Stats",
- "Held Item",
- "SkyBlock Date",
- "Profile",
- "Slayer",
- "Custom",
- "Crop Milestone",
- "Current Pet"
- })
- public Property<Integer> auto = Property.of(0);
- }
-
- @ConfigOption(name = "Trevor The Trapper", desc = "")
- @Accordion
- @Expose
- public TrevorTheTrapper trevorTheTrapper = new TrevorTheTrapper();
-
- public static class TrevorTheTrapper {
-
- @Expose
- @ConfigOption(
- name = "Enable Data Tracker",
- desc = "Tracks all of your data from doing Trevor Quests.\n" +
- "Shows based on the setting below."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean dataTracker = true;
-
- @Expose
- @ConfigOption(
- name = "Show Between Quests",
- desc = "Shows the tracker during and between quests otherwise it will only show during them." +
- "Will show in the Trapper's Den regardless. §cToggle 'Enable Data Tracker' above."
- )
- @ConfigEditorBoolean
- public boolean displayType = true;
-
- @Expose
- @ConfigOption(
- name = "Text Format",
- desc = "Drag text to change the appearance of the overlay."
- )
- @ConfigEditorDraggableList(
- exampleText = {
- "§b§lTrevor Data Tracker",
- "§b1,428 §9Quests Started",
- "§b11,281 §5Total Pelts Gained",
- "§b2,448 §5Pelts Per Hour",
- "",
- "§b850 §cKilled Animals",
- "§b153 §cSelf Killing Animals",
- "§b788 §fTrackable Animals",
- "§b239 §aUntrackable Animals",
- "§b115 §9Undetected Animals",
- "§b73 §5Endangered Animals",
- "§b12 §6Elusive Animals"
- }
- )
- public List<Integer> textFormat = new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11));
-
- @Expose
- public Position position = new Position(10, 80, false, true);
-
- @Expose
- @ConfigOption(name = "Trapper Solver", desc = "Assists you in finding Trevor's mobs. §eNote: May not always work as expected. " +
- "§cWill not help you to find rabbits or sheep in the Oasis!")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean trapperSolver = true;
-
- @Expose
- @ConfigOption(name = "Mob Dead Warning", desc = "Show a message when Trevor's mob dies.")
- @ConfigEditorBoolean
- public boolean trapperMobDiedMessage = true;
-
- @Expose
- @ConfigOption(name = "Warp to Trapper", desc = "Warp to Trevor's Den. Works only inside the Farming Islands.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean warpToTrapper = false;
-
- @Expose
- @ConfigOption(name = "Accept Trapper Quest", desc = "Click this key after the chat prompt to accept Trevor's quest.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean acceptQuest = false;
-
- @Expose
- @ConfigOption(name = "Trapper Hotkey", desc = "Press this key to warp to Trevor's Den or to accept the quest. " +
- "§eRequires the relevant above settings to be toggled")
- @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
- public int keyBindWarpTrapper = Keyboard.KEY_NONE;
-
-
- @Expose
- @ConfigOption(name = "Trapper Cooldown", desc = "Change the color of Trevor and adds a cooldown over his head.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean trapperTalkCooldown = true;
-
- @Expose
- @ConfigOption(
- name = "Trapper Cooldown GUI",
- desc = "Show the cooldown on screen in an overlay (intended for Abiphone users)."
- )
- @ConfigEditorBoolean
- public boolean trapperCooldownGui = false;
-
- @Expose
- public Position trapperCooldownPos = new Position(10, 10, false, true);
- }
-
- @ConfigOption(name = "Teleport Pads On Private Island", desc = "")
- @Accordion
- @Expose
- public TeleportPad teleportPad = new TeleportPad();
-
- public static class TeleportPad {
-
- @Expose
- @ConfigOption(name = "Compact Name", desc = "Hide the 'Warp to' and 'No Destination' texts over teleport pads.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean compactName = false;
-
- @Expose
- @ConfigOption(name = "Inventory Numbers", desc = "Show the number of the teleport pads inside the 'Change Destination' inventory as stack size.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean inventoryNumbers = false;
- }
-
- @ConfigOption(name = "Pocket Sack-In-A-Sack", desc = "")
- @Accordion
- @Expose
- public PocketSackInASack pocketSackInASack = new PocketSackInASack();
-
- public static class PocketSackInASack {
-
- @Expose
- @ConfigOption(name = "Show in Overlay", desc = "Show the number of Pocket Sack-In-A-Sack applied on a sack icon as an overlay.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean showOverlay = false;
-
- @Expose
- @ConfigOption(name = "Replace In Lore", desc = "Replace how text is displayed in lore.\nShow §eis stitched with 2/3...\n§7Instead of §eis stitched with two...")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean replaceLore = true;
- }
-
- @ConfigOption(name = "Quick Mod Menu Switch", desc = "")
- @Accordion
- @Expose
- public QuickModMenuSwitch quickModMenuSwitch = new QuickModMenuSwitch();
-
- public static class QuickModMenuSwitch {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Adding a mod list, allowing to quickly switch between different mod menus.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(name = "Inside Escape Menu", desc = "Show the mod list while inside the Escape menu.")
- @ConfigEditorBoolean
- public boolean insideEscapeMenu = true;
-
- @Expose
- @ConfigOption(name = "Inside Inventory", desc = "Show the mod list while inside the player inventory (no chest inventory).")
- @ConfigEditorBoolean
- public boolean insidePlayerInventory = false;
-
- @Expose
- public Position pos = new Position(-178, 143, false, true);
- }
-
- @Expose
- @ConfigOption(name = "Cosmetic", desc = "")
- @Accordion
- public CosmeticConfig cosmeticConfig = new CosmeticConfig();
-
- public static class CosmeticConfig {
-
- @Expose
- @ConfigOption(name = "Following Line", desc = "")
- @Accordion
- public FollowingLineConfig followingLineConfig = new FollowingLineConfig();
-
- public static class FollowingLineConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Draw a colored line behind the player.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(name = "Line Color", desc = "Color of the line.")
- @ConfigEditorColour
- public String lineColor = "0:255:255:255:255";
-
- @Expose
- @ConfigOption(name = "Time Alive", desc = "Time in seconds until the line fades out.")
- @ConfigEditorSlider(minStep = 1, minValue = 1, maxValue = 30)
- public int secondsAlive = 3;
-
- @Expose
- @ConfigOption(name = "Max Line Width", desc = "Max width of the line.")
- @ConfigEditorSlider(minStep = 1, minValue = 1, maxValue = 10)
- public int lineWidth = 4;
-
- @Expose
- @ConfigOption(name = "Behind Blocks", desc = "Show behind blocks.")
- @ConfigEditorBoolean
- public boolean behindBlocks = false;
- }
-
- @Expose
- @ConfigOption(name = "Arrow Trail", desc = "")
- @Accordion
- public ArrowTrailConfig arrowTrailConfig = new ArrowTrailConfig();
-
- public static class ArrowTrailConfig {
- @Expose
- @ConfigOption(name = "Enabled", desc = "Draw a colored line behind arrows in the air.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(name = "Hide Nonplayer Arrows", desc = "Only shows for arrows the player has shot.")
- @ConfigEditorBoolean
- public boolean hideOtherArrows = true;
-
- @Expose
- @ConfigOption(name = "Arrow Color", desc = "Color of the line.")
- @ConfigEditorColour
- public String arrowColor = "0:200:85:255:85";
-
- @Expose
- @ConfigOption(name = "Player Arrows", desc = "Different color for the line of arrows that you have shot.")
- @ConfigEditorBoolean
- public boolean handlePlayerArrowsDifferently = false;
-
- @Expose
- @ConfigOption(name = "Player Arrow Color", desc = "Color of the line of your own arrows.")
- @ConfigEditorColour
- public String playerArrowColor = "0:200:85:255:255";
-
- @Expose
- @ConfigOption(name = "Time Alive", desc = "Time in seconds until the trail fades out.")
- @ConfigEditorSlider(minStep = 0.1f, minValue = 0.1f, maxValue = 10)
- public float secondsAlive = 0.5f;
-
- @Expose
- @ConfigOption(name = "Line Width", desc = "Width of the line.")
- @ConfigEditorSlider(minStep = 1, minValue = 1, maxValue = 10)
- public int lineWidth = 4;
- }
- }
-
-
- @Expose
- @ConfigOption(name = "Glowing Dropped Items", desc = "")
- @Accordion
- public GlowingDroppedItems glowingDroppedItems = new GlowingDroppedItems();
-
- public static class GlowingDroppedItems {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Draws a glowing outline around all dropped items on the ground.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(name = "Highlight Showcase Items", desc = "Draws a glowing outline around showcase items.")
- @ConfigEditorBoolean
- public boolean highlightShowcase = false;
-
- @Expose
- @ConfigOption(name = "Highlight Fishing Bait", desc = "Draws a glowing outline around fishing bait.")
- @ConfigEditorBoolean
- public boolean highlightFishingBait = false;
-
- }
-
-
- @Expose
- @ConfigOption(name = "Highlight Party Members", desc = "")
- @Accordion
- public HighlightPartyMembers highlightPartyMembers = new HighlightPartyMembers();
-
- public static class HighlightPartyMembers {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Marking party members with a bright outline to better find them in the world.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(
- name = "Outline Color",
- desc = "The color to outline party members in."
- )
- @ConfigEditorColour
- public String outlineColor = "0:245:85:255:85";
-
- }
-
-
- @Expose
- @ConfigOption(name = "Compact Tab List", desc = "")
- @Accordion
- public CompactTabListConfig compactTabList = new CompactTabListConfig();
-
- public static class CompactTabListConfig {
- @Expose
- @ConfigOption(name = "Enabled", desc = "Compacts the tablist to make it look much nicer like SBA did. Also " +
- "doesn't break god-pot detection and shortens some other lines.")
- //made tablist one word here so both searches will pick it up
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(name = "Hide Hypixel Adverts", desc = "Hides text from advertising the Hypixel server or store in the tablist.")
- @ConfigEditorBoolean
- public boolean hideAdverts = false;
-
- @Expose
- @ConfigOption(name = "Advanced Player List", desc = "")
- @Accordion
- public AdvancedPlayerList advancedPlayerList = new AdvancedPlayerList();
-
- public static class AdvancedPlayerList {
-
- @Expose
- @ConfigOption(name = "Player Sort", desc = "Change the sort order of player names in the tab list.")
- @ConfigEditorDropdown(values = {"Rank (Default)", "SB Level", "Name (Abc)", "Ironman/Bingo", "Party/Friends/Guild", "Random"})
- public int playerSortOrder = 0;
-
- @Expose
- @ConfigOption(name = "Invert Sort", desc = "Flip the player list order on its head (also works with default rank).")
- @ConfigEditorBoolean
- public boolean reverseSort = false;
-
- @Expose
- @ConfigOption(name = "Hide Player Icons", desc = "Hide the icons/skins of player in the tab list.")
- @ConfigEditorBoolean
- public boolean hidePlayerIcons = false;
-
- @Expose
- @ConfigOption(name = "Hide Rank Color", desc = "Hide the player rank color.")
- @ConfigEditorBoolean
- public boolean hideRankColor = false;
-
- @Expose
- @ConfigOption(name = "Hide Emblems", desc = "Hide the emblems behind the player name.")
- @ConfigEditorBoolean
- public boolean hideEmblem = false;
-
- @Expose
- @ConfigOption(name = "Hide Level", desc = "Hide the SkyBlock level numbers.")
- @ConfigEditorBoolean
- public boolean hideLevel = false;
-
- @Expose
- @ConfigOption(name = "Hide Level Brackets", desc = "Hide the gray brackets in front of and behind the level numbers.")
- @ConfigEditorBoolean
- public boolean hideLevelBrackets = false;
-
- @Expose
- @ConfigOption(name = "Level Color As Name", desc = "Use the color of the SkyBlock level for the player color.")
- @ConfigEditorBoolean
- public boolean useLevelColorForName = false;
-
- @Expose
- @ConfigOption(name = "Bingo Rank Number", desc = "Show the number of the bingo rank next to the icon. Useful if you are not so familar with bingo.")
- @ConfigEditorBoolean
- public boolean showBingoRankNumber = false;
-
- @Expose
- @ConfigOption(name = "Hide Factions", desc = "Hide the icon of the Crimson Isle Faction in the tab list.")
- @ConfigEditorBoolean
- public boolean hideFactions = false;
-
- @Expose
- @ConfigOption(name = "Mark Special Persons", desc = "Show speical icons behind the name of guild members, party members, friends, and marked players.")
- @ConfigEditorBoolean
- public boolean markSpecialPersons = false;
-
- @Expose
- @ConfigOption(
- name = "Mark SkyHanni Devs",
- desc = "Adds a §c:O §7behind the tablist name of §cSkyHanni's contributors§7. " +
- "§eThose are the folks that coded the mod for you for free :)"
- )
- @ConfigEditorBoolean
- public boolean markSkyHanniContributors = false;
- }
- }
-
- @Expose
- @ConfigOption(name = "Kick Duration", desc = "")
- @Accordion
- public KickDurationConfig kickDuration = new KickDurationConfig();
-
- public static class KickDurationConfig {
-
- @Expose
- @ConfigOption(
- name = "Enabled",
- desc = "Show in the Hypixel lobby since when you were last kicked from SkyBlock (" +
- "useful if you get blocked because of '§cYou were kicked while joining that server!§7')."
- )
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(name = "Warn Time", desc = "Send warning and sound this seconds after a SkyBlock kick.")
- @ConfigEditorSlider(
- minValue = 5,
- maxValue = 300,
- minStep = 1
- )
- public Property<Integer> warnTime = Property.of(60);
-
- @Expose
- public Position position = new Position(400, 200, 1.3f);
- }
-
- @Expose
- @ConfigOption(name = "Exp Bottles", desc = "Hides all the experience orbs lying on the ground.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideExpBottles = false;
-
- @Expose
- public Position collectionCounterPos = new Position(10, 10, false, true);
-
- @Expose
- @ConfigOption(name = "Brewing Stand Overlay", desc = "Display the Item names directly inside the Brewing Stand.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean brewingStandOverlay = true;
-
- @Expose
- @ConfigOption(name = "Red Scoreboard Numbers", desc = "Hide the red scoreboard numbers on the right side of the screen.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideScoreboardNumbers = false;
-
- @Expose
- @ConfigOption(name = "Hide Piggy", desc = "Replacing 'Piggy' with 'Purse' in the Scoreboard.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hidePiggyScoreboard = true;
-
- @Expose
- @ConfigOption(name = "Explosions Hider", desc = "Hide explosions.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideExplosions = false;
-
- @Expose
- @ConfigOption(name = "CH Join", desc = "Helps buy a Pass for accessing the Crystal Hollows if needed.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean crystalHollowsJoin = true;
-
- @Expose
- @ConfigOption(name = "Fire Overlay Hider", desc = "Hide the fire overlay (Like in Skytils).")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideFireOverlay = false;
-
- @Expose
- @ConfigOption(name = "Paste Into Signs", desc = "Allows you to paste the clipboard into signs when you press Ctrl + V.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean pasteIntoSigns = true;
-
- @Expose
- @ConfigOption(name = "Movement Speed", desc = "Show the player movement speed in blocks per second.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean playerMovementSpeed = false;
-
- @Expose
- public Position playerMovementSpeedPos = new Position(394, 124, false, true);
-
- @Expose
- @ConfigOption(name = "Pet Candy Used", desc = "Show the number of Pet Candy used on a pet.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean petCandyUsed = true;
-
- @Expose
- @ConfigOption(name = "Server Restart Title", desc = "Show a title with seconds remaining until the server restarts after a Game Update or Scheduled Restart.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean serverRestartTitle = true;
-
- @Expose
- @ConfigOption(name = "Piece Of Wizard Portal", desc = "Restore the Earned By lore line on bought Piece Of Wizard Portal.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean restorePieceOfWizardPortalLore = true;
-
- @Expose
- @ConfigOption(name = "Patcher Coords Waypoint", desc = "Highlight the coordinates sent by Patcher.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean patcherSendCoordWaypoint = false;
-
-
- @Expose
- @ConfigOption(name = "Account Upgrade Reminder", desc = "Remind you to claim account upgrades when complete.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean accountUpgradeReminder = true;
-
- @Expose
- @ConfigOption(name = "Superpairs Clicks Alert", desc = "Display an alert when you reach the maximum clicks gained from Chronomatron or Ultrasequencer.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean superpairsClicksAlert = false;
-
- @Expose
- @ConfigOption(name = "NEU Heavy Pearls", desc = "Fixing NEU Heavy Pearl detection.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean fixNeuHeavyPearls = true;
-
- @Expose
- @ConfigOption(
- name = "Time In Limbo",
- desc = "Show the time since you entered the limbo.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean showTimeInLimbo = true;
-
- @Expose
- public Position showTimeInLimboPosition = new Position(400, 200, 1.3f);
-
- @Expose
- public Position lockedMouseDisplay = new Position(400, 200, 0.8f);
-
- @Expose
- public Position inventoryLoadPos = new Position(394, 124, false, true);
-}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/RiftConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/RiftConfig.java
deleted file mode 100644
index 9021ec9be..000000000
--- a/src/main/java/at/hannibal2/skyhanni/config/features/RiftConfig.java
+++ /dev/null
@@ -1,720 +0,0 @@
-package at.hannibal2.skyhanni.config.features;
-
-import at.hannibal2.skyhanni.config.FeatureToggle;
-import at.hannibal2.skyhanni.config.core.config.Position;
-import com.google.gson.annotations.Expose;
-import io.github.moulberry.moulconfig.annotations.Accordion;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorText;
-import io.github.moulberry.moulconfig.annotations.ConfigOption;
-import io.github.moulberry.moulconfig.observer.Property;
-
-public class RiftConfig {
-
- @ConfigOption(name = "Rift Timer", desc = "")
- @Accordion
- @Expose
- public RiftTimerConfig timer = new RiftTimerConfig();
-
- public static class RiftTimerConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Show the remaining rift time, max time, percentage, and extra time changes.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(name = "Max Time", desc = "Show max time.")
- @ConfigEditorBoolean
- public boolean maxTime = true;
-
- @Expose
- @ConfigOption(name = "Percentage", desc = "Show percentage.")
- @ConfigEditorBoolean
- public boolean percentage = true;
-
- @Expose
- public Position timerPosition = new Position(10, 10, false, true);
-
- }
-
- @ConfigOption(name = "Crux Talisman Progress", desc = "")
- @Accordion
- @Expose
- public CruxTalismanDisplayConfig cruxTalisman = new CruxTalismanDisplayConfig();
-
- public static class CruxTalismanDisplayConfig {
- @Expose
- @ConfigOption(name = "Crux Talisman Display", desc = "Display progress of the Crux Talisman on screen.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(name = "Compact", desc = "Show a compacted version of the overlay when the talisman is maxed.")
- @ConfigEditorBoolean
- public boolean compactWhenMaxed = false;
-
- @Expose
- @ConfigOption(name = "Show Bonuses", desc = "Show bonuses you get from the talisman.")
- @ConfigEditorBoolean
- @FeatureToggle
- public Property<Boolean> showBonuses = Property.of(true);
-
- @Expose
- public Position position = new Position(144, 139, false, true);
- }
-
- @ConfigOption(name = "Enigma Soul Waypoints", desc = "")
- @Accordion
- @Expose
- public EnigmaSoulConfig enigmaSoulWaypoints = new EnigmaSoulConfig();
-
- public static class EnigmaSoulConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Click on Enigma Souls in Rift Guides to highlight their location.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(name = "Color", desc = "Color of the Enigma Souls.")
- @ConfigEditorColour
- public String color = "0:120:13:49:255";
-
- }
-
- @ConfigOption(name = "Rift Areas", desc = "")
- @Accordion
- @Expose
- public RiftAreasConfig area = new RiftAreasConfig();
-
- public static class RiftAreasConfig {
-
- @ConfigOption(name = "Wyld Woods", desc = "")
- @Accordion
- @Expose
- public WyldWoodsConfig wyldWoodsConfig = new WyldWoodsConfig();
-
- public static class WyldWoodsConfig {
-
- @Expose
- @ConfigOption(name = "Shy Crux Warning", desc = "Shows a warning when a Shy Crux is going to steal your time. " +
- "Useful if you play without volume.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean shyWarning = true;
-
- @ConfigOption(name = "Larvas", desc = "")
- @Accordion
- @Expose
- public LarvasConfig larvas = new LarvasConfig();
-
- public static class LarvasConfig {
-
- @Expose
- @ConfigOption(name = "Highlight", desc = "Highlight §cLarvas on trees §7while holding a §eLarva Hook §7in the hand.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlight = true;
-
- @Expose
- @ConfigOption(name = "Color", desc = "Color of the Larvas.")
- @ConfigEditorColour
- public String highlightColor = "0:120:13:49:255";
-
- }
-
- @ConfigOption(name = "Odonatas", desc = "")
- @Accordion
- @Expose
- public OdonataConfig odonata = new OdonataConfig();
-
- public static class OdonataConfig {
-
- @Expose
- @ConfigOption(name = "Highlight", desc = "Highlight the small §cOdonatas §7flying around the trees while holding an " +
- "§eEmpty Odonata Bottle §7in the hand.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlight = true;
-
- @Expose
- @ConfigOption(name = "Color", desc = "Color of the Odonatas.")
- @ConfigEditorColour
- public String highlightColor = "0:120:13:49:255";
-
- }
- }
-
- @ConfigOption(name = "West Village", desc = "")
- @Accordion
- @Expose
- public WestVillageConfig westVillageConfig = new WestVillageConfig();
-
- public static class WestVillageConfig {
-
- @ConfigOption(name = "Kloon Hacking", desc = "")
- @Accordion
- @Expose
- public KloonHackingConfig hacking = new KloonHackingConfig();
-
- public static class KloonHackingConfig {
-
- @Expose
- @ConfigOption(name = "Hacking Solver", desc = "Highlights the correct button to click in the hacking inventory.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean solver = true;
-
- @Expose
- @ConfigOption(name = "Color Guide", desc = "Tells you which color to pick.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean colour = true;
-
- @Expose
- @ConfigOption(name = "Terminal Waypoints", desc = "While wearing the helmet, waypoints will appear at each terminal location.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean waypoints = true;
- }
- }
-
- @Expose
- @ConfigOption(name = "Dreadfarm", desc = "")
- @Accordion
- public DreadfarmConfig dreadfarmConfig = new DreadfarmConfig();
-
- public static class DreadfarmConfig {
- @Expose
- @ConfigOption(name = "Agaricus Cap", desc = "Counts down the time until §eAgaricus Cap (Mushroom) " +
- "§7changes color from brown to red and is breakable.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean agaricusCap = true;
-
- @ConfigOption(name = "Volt Crux", desc = "")
- @Accordion
- @Expose
- public VoltCruxConfig voltCrux = new VoltCruxConfig();
-
- public static class VoltCruxConfig {
-
- @Expose
- @ConfigOption(name = "Volt Warning", desc = "Shows a warning while a Volt is discharging lightning.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean voltWarning = true;
-
- @Expose
- @ConfigOption(name = "Volt Range Highlighter", desc = "Shows the area in which a Volt might strike lightning.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean voltRange = true;
-
- @Expose
- @ConfigOption(name = "Volt Range Highlighter Color", desc = "In which color should the Volt range be highlighted?")
- @ConfigEditorColour
- public String voltColour = "0:60:0:0:255";
-
- @Expose
- @ConfigOption(name = "Volt Mood Color", desc = "Change the color of the Volt enemy depending on their mood.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean voltMoodMeter = false;
- }
-
- @ConfigOption(name = "Wilted Berberis", desc = "")
- @Accordion
- @Expose
- public WiltedBerberisConfig wiltedBerberis = new WiltedBerberisConfig();
-
- public static class WiltedBerberisConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Show Wilted Berberis helper.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(name = "Only on Farmland", desc = "Only show the helper while standing on Farmland blocks.")
- @ConfigEditorBoolean
- public boolean onlyOnFarmland = false;
-
- @Expose
- @ConfigOption(name = "Hide Particles", desc = "Hide the Wilted Berberis particles.")
- @ConfigEditorBoolean
- public boolean hideparticles = false;
-
- }
- }
-
- @ConfigOption(name = "Mirrorverse", desc = "")
- @Accordion
- @Expose
- public MirrorVerseConfig mirrorVerseConfig = new MirrorVerseConfig();
-
- public static class MirrorVerseConfig {
-
- @ConfigOption(name = "Lava Maze", desc = "")
- @Accordion
- @Expose
- public LavaMazeConfig lavaMazeConfig = new LavaMazeConfig();
-
- public static class LavaMazeConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Helps solving the lava maze in the Mirrorverse by showing the correct way.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(name = "Look Ahead", desc = "Change how many platforms should be shown in front of you.")
- @ConfigEditorSlider(minStep = 1, maxValue = 30, minValue = 1)
- public Property<Integer> lookAhead = Property.of(3);
-
- @Expose
- @ConfigOption(name = "Rainbow Color", desc = "Show the rainbow color effect instead of a boring monochrome.")
- @ConfigEditorBoolean
- public Property<Boolean> rainbowColor = Property.of(true);
-
- @Expose
- @ConfigOption(name = "Monochrome Color", desc = "Set a boring monochrome color for the parkour platforms.")
- @ConfigEditorColour
- public Property<String> monochromeColor = Property.of("0:60:0:0:255");
-
- @Expose
- @ConfigOption(name = "Hide Others Players", desc = "Hide other players while doing the lava maze.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hidePlayers = false;
- }
-
-
- @ConfigOption(name = "Upside Down Parkour", desc = "")
- @Accordion
- @Expose
- public UpsideDownParkourConfig upsideDownParkour = new UpsideDownParkourConfig();
-
- public static class UpsideDownParkourConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Helps solving the upside down parkour in the Mirrorverse by showing the correct way.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(name = "Look Ahead", desc = "Change how many platforms should be shown in front of you.")
- @ConfigEditorSlider(minStep = 1, maxValue = 9, minValue = 1)
- public Property<Integer> lookAhead = Property.of(3);
-
- @Expose
- @ConfigOption(name = "Outline", desc = "Outlines the top edge of the platforms.")
- @ConfigEditorBoolean
- public boolean outline = true;
-
- @Expose
- @ConfigOption(name = "Rainbow Color", desc = "Show the rainbow color effect instead of a boring monochrome.")
- @ConfigEditorBoolean
- public Property<Boolean> rainbowColor = Property.of(true);
-
- @Expose
- @ConfigOption(name = "Monochrome Color", desc = "Set a boring monochrome color for the parkour platforms.")
- @ConfigEditorColour
- public Property<String> monochromeColor = Property.of("0:60:0:0:255");
-
- @Expose
- @ConfigOption(name = "Hide Others Players", desc = "Hide other players while doing the upside down parkour.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hidePlayers = false;
- }
-
-
- @ConfigOption(name = "Dance Room Helper", desc = "")
- @Accordion
- @Expose
- public DanceRoomHelperConfig danceRoomHelper = new DanceRoomHelperConfig();
-
- public static class DanceRoomHelperConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Helps to solve the dance room in the Mirrorverse by showing multiple tasks at once.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(name = "Lines to Show", desc = "How many tasks you should see.")
- @ConfigEditorSlider(minStep = 1, maxValue = 49, minValue = 1)
- public int lineToShow = 3;
-
- @Expose
- @ConfigOption(name = "Space", desc = "Change the space between each line.")
- @ConfigEditorSlider(minStep = 1, maxValue = 10, minValue = -5)
- public int extraSpace = 0;
-
- @Expose
- @ConfigOption(name = "Hide Other Players", desc = "Hide other players inside the dance room.")
- @ConfigEditorBoolean
- public boolean hidePlayers = false;
-
- @Expose
- @ConfigOption(name = "Hide Title", desc = "Hide Instructions, \"§aIt's happening!\" §7and \"§aKeep it up!\" §7titles.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideOriginalTitle = false;
-
- @Expose
- @ConfigOption(name = "Formatting", desc = "")
- @Accordion
- public DanceRoomFormattingConfig danceRoomFormatting = new DanceRoomFormattingConfig();
-
- public static class DanceRoomFormattingConfig {
-
- @Expose
- @ConfigOption(name = "Now", desc = "Formatting for \"Now:\"")
- @ConfigEditorText
- public String now = "&7Now:";
-
- @Expose
- @ConfigOption(name = "Next", desc = "Formatting for \"Next:\"")
- @ConfigEditorText
- public String next = "&7Next:";
-
- @Expose
- @ConfigOption(name = "Later", desc = "Formatting for \"Later:\"")
- @ConfigEditorText
- public String later = "&7Later:";
-
- @Expose
- @ConfigOption(name = "Color Option", desc = "")
- @Accordion
- public ColorConfig color = new ColorConfig();
-
- public static class ColorConfig {
- @Expose
- @ConfigOption(name = "Move", desc = "Color for the Move instruction")
- @ConfigEditorText
- public String move = "&e";
-
- @Expose
- @ConfigOption(name = "Stand", desc = "Color for the Stand instruction")
- @ConfigEditorText
- public String stand = "&e";
-
- @Expose
- @ConfigOption(name = "Sneak", desc = "Color for the Sneak instruction")
- @ConfigEditorText
- public String sneak = "&5";
-
- @Expose
- @ConfigOption(name = "Jump", desc = "Color for the Jump instruction")
- @ConfigEditorText
- public String jump = "&b";
-
- @Expose
- @ConfigOption(name = "Punch", desc = "Color for the Punch instruction")
- @ConfigEditorText
- public String punch = "&d";
-
- @Expose
- @ConfigOption(name = "Countdown", desc = "Color for the Countdown")
- @ConfigEditorText
- public String countdown = "&f";
-
- @Expose
- @ConfigOption(name = "Default", desc = "Fallback color")
- @ConfigEditorText
- public String fallback = "&f";
- }
- }
-
- @Expose
- public Position position = new Position(442, 239, false, true);
- }
-
-
- @ConfigOption(name = "Tubulator", desc = "")
- @Accordion
- @Expose
- public TubulatorConfig tubulatorConfig = new TubulatorConfig();
-
- public static class TubulatorConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Highlights the location of the invisible Tubulator blocks (Laser Parkour).")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(name = "Look Ahead", desc = "Change how many platforms should be shown in front of you.")
- @ConfigEditorSlider(minStep = 1, maxValue = 30, minValue = 1)
- public Property<Integer> lookAhead = Property.of(2);
-
- @Expose
- @ConfigOption(name = "Outline", desc = "Outlines the top edge of the platforms.")
- @ConfigEditorBoolean
- public boolean outline = true;
-
- @Expose
- @ConfigOption(name = "Rainbow Color", desc = "Show the rainbow color effect instead of a boring monochrome.")
- @ConfigEditorBoolean
- public Property<Boolean> rainbowColor = Property.of(true);
-
- @Expose
- @ConfigOption(name = "Monochrome Color", desc = "Set a boring monochrome color for the parkour platforms.")
- @ConfigEditorColour
- public Property<String> monochromeColor = Property.of("0:60:0:0:255");
-
- @Expose
- @ConfigOption(name = "Hide Other Players", desc = "Hide other players while doing the lava maze.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hidePlayers = false;
- }
- }
-
-// @Expose
-// @ConfigOption(name = "Village Plaza", desc = "")
-// @Accordion
-// public VillagePlazaConfig villagePlazaConfig = new VillagePlazaConfig();
-//
-// public static class VillagePlazaConfig {
-//
-// }
-
- @Expose
- @ConfigOption(name = "Living Cave", desc = "")
- @Accordion
- public LivingCaveConfig livingCaveConfig = new LivingCaveConfig();
-
- public static class LivingCaveConfig {
-
- @Expose
- @ConfigOption(name = "Living Metal Suit Progress", desc = "")
- @Accordion
- public LivingMetalSuitProgressConfig livingMetalSuitProgress = new LivingMetalSuitProgressConfig();
-
- public static class LivingMetalSuitProgressConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Display Living Metal Suit progress.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(name = "Compact", desc = "Show a compacted version of the overlay when the set is maxed.")
- @ConfigEditorBoolean
- public boolean compactWhenMaxed = false;
-
- @Expose
- public Position position = new Position(100, 100);
- }
-
- @Expose
- @ConfigOption(name = "Defense Blocks", desc = "")
- @Accordion
- public DefenseBlockConfig defenseBlockConfig = new DefenseBlockConfig();
-
- public static class DefenseBlockConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Show a line between Defense blocks and the mob and highlight the blocks.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(name = "Hide Particles", desc = "Hide particles around Defense Blocks.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideParticles = false;
-
- @Expose
- @ConfigOption(name = "Color", desc = "Set the color of the lines, blocks and the entity.")
- @ConfigEditorColour
- public Property<String> color = Property.of("0:255:77:104:255");
-
- }
-
- @Expose
- @ConfigOption(name = "Living Metal Helper", desc = "")
- @Accordion
- public LivingCaveLivingMetalConfig livingCaveLivingMetalConfig = new LivingCaveLivingMetalConfig();
-
- public static class LivingCaveLivingMetalConfig {
-
- @Expose
- @ConfigOption(name = "Living Metal", desc = "Show a moving animation between Living Metal and the next block.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(name = "Hide Particles", desc = "Hide Living Metal particles.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideParticles = false;
-
- }
- }
-
- @Expose
- @ConfigOption(name = "Colosseum", desc = "")
- @Accordion
- public ColosseumConfig colosseumConfig = new ColosseumConfig();
-
- public static class ColosseumConfig {
-
- @Expose
- @ConfigOption(name = "Highlight Blobbercysts", desc = "Highlight Blobbercysts in Bacte fight.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlightBlobbercysts = true;
- }
-
- @Expose
- @ConfigOption(name = "Stillgore Chateau", desc = "")
- @Accordion
- public StillgoreChateauConfig stillgoreChateauConfig = new StillgoreChateauConfig();
-
- public static class StillgoreChateauConfig {
-
- @Expose
- @ConfigOption(name = "Blood Effigies", desc = "")
- @Accordion
- public EffigiesConfig bloodEffigies = new EffigiesConfig();
-
- public static class EffigiesConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Show locations of inactive Blood Effigies.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(name = "Respawning Soon", desc = "Show effigies that are about to respawn.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean respawningSoon = false;
-
- @Expose
- @ConfigOption(name = "Respawning Time", desc = "Time before effigies respawn to show.")
- @ConfigEditorSlider(
- minValue = 1,
- maxValue = 15,
- minStep = 1
- )
- public int respwningSoonTime = 3;
-
- @Expose
- @ConfigOption(name = "Unknown Times", desc = "Show effigies without known time.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean unknownTime = false;
- }
- }
-
-// @Expose
-// @ConfigOption(name = "Mountaintop", desc = "")
-// @Accordion
-// public MountaintopConfig mountaintopConfig = new MountaintopConfig();
-//
-// public static class MountaintopConfig {
-//
-// }
-
- }
-
- @Expose
- @ConfigOption(name = "Motes Sell Price", desc = "")
- @Accordion
- public MotesConfig motes = new MotesConfig();
-
- public static class MotesConfig {
-
- @Expose
- @ConfigOption(name = "Show Motes Price", desc = "Show the Motes NPC price in the item lore.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean showPrice = true;
-
- @Expose
- @ConfigOption(name = "Burger Stacks", desc = "Set your McGrubber's burger stacks.")
- @ConfigEditorSlider(minStep = 1, minValue = 0, maxValue = 5)
- public int burgerStacks = 0;
-
- @Expose
- @ConfigOption(name = "Inventory Value", desc = "")
- @Accordion
- public InventoryValueConfig inventoryValue = new InventoryValueConfig();
-
- public static class InventoryValueConfig {
- @Expose
- @ConfigOption(name = "Inventory Value", desc = "Show total Motes NPC price for the current opened inventory.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(name = "Number Format Type", desc = "Short: 1.2M\n" +
- "Long: 1,200,000")
- @ConfigEditorDropdown(values = {"Short", "Long"})
- public int formatType = 0;
-
- @Expose
- public Position position = new Position(126, 156, false, true);
- }
- }
-
- @Expose
- @ConfigOption(name = "Motes Orbs", desc = "")
- @Accordion
- public MotesOrbsConfig motesOrbsConfig = new MotesOrbsConfig();
-
- public static class MotesOrbsConfig {
-
- @Expose
- @ConfigOption(name = "Highlight Motes Orbs", desc = "Highlight flying Motes Orbs.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(name = "Highlight Size", desc = "Set render size for highlighted Motes Orbs.")
- @ConfigEditorSlider(minStep = 1, minValue = 1, maxValue = 5)
- public int size = 3;
-
- @Expose
- @ConfigOption(name = "Hide Particles", desc = "Hide normal Motes Orbs particles.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideParticles = false;
-
- }
-
- @Expose
- @ConfigOption(name = "Highlight Guide", desc = "Highlight things to do in the Rift Guide.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlightGuide = true;
-
- @Expose
- @ConfigOption(name = "Horsezooka Hider", desc = "Hide horses while holding the Horsezooka in the hand.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean horsezookaHider = false;
-}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/SlayerConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/SlayerConfig.java
deleted file mode 100644
index 1c0003eab..000000000
--- a/src/main/java/at/hannibal2/skyhanni/config/features/SlayerConfig.java
+++ /dev/null
@@ -1,529 +0,0 @@
-package at.hannibal2.skyhanni.config.features;
-
-import at.hannibal2.skyhanni.config.FeatureToggle;
-import at.hannibal2.skyhanni.config.core.config.Position;
-import com.google.gson.annotations.Expose;
-import io.github.moulberry.moulconfig.annotations.Accordion;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
-import io.github.moulberry.moulconfig.annotations.ConfigEditorText;
-import io.github.moulberry.moulconfig.annotations.ConfigOption;
-
-public class SlayerConfig {
-
- @Expose
- @ConfigOption(name = "Enderman Slayer Features", desc = "")
- @Accordion
- public EndermanConfig endermen = new EndermanConfig();
-
- public static class EndermanConfig {
- @Expose
- @ConfigOption(name = "Yang Glyph (beacon)", desc = "")
- @Accordion
- public EndermanBeaconConfig endermanBeaconConfig = new EndermanBeaconConfig();
-
- public static class EndermanBeaconConfig {
-
- @Expose
- @ConfigOption(name = "Highlight Beacon",
- desc = "Highlight the Enderman Slayer Yang Glyph (beacon) in red color and added a timer for when he explodes. " +
- "Supports beacon in hand and beacon flying.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlightBeacon = true;
-
- @Expose
- @ConfigOption(name = "Beacon Color", desc = "Color of the beacon.")
- @ConfigEditorColour
- public String beaconColor = "0:255:255:0:88";
-
- @Expose
- @ConfigOption(name = "Show Warning", desc = "Displays a warning mid-screen when the Enderman Slayer throws a Yang Glyph (beacon).")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean showWarning = false;
-
- @Expose
- @ConfigOption(name = "Show Line", desc = "Draw a line starting at your crosshair to the beacon.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean showLine = false;
-
- @Expose
- @ConfigOption(name = "Line Color", desc = "Color of the line.")
- @ConfigEditorColour
- public String lineColor = "0:255:255:0:88";
-
- @Expose
- @ConfigOption(name = "Line Width", desc = "Width of the line.")
- @ConfigEditorSlider(minStep = 1, minValue = 1, maxValue = 10)
- public int lineWidth = 3;
- }
-
- @Expose
- @ConfigOption(name = "Highlight Nukekubi Skulls", desc = "Highlights the Enderman Slayer Nukekubi Skulls (Eyes).")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlightNukekebi = false;
-
- @Expose
- @ConfigOption(name = "Phase Display", desc = "Show the current phase of the Enderman Slayer in damage indcator.")
- @ConfigEditorBoolean
- public boolean phaseDisplay = false;
-
- @Expose
- @ConfigOption(name = "Hide Particles", desc = "Hide particles around Enderman Slayer bosses and Mini-Bosses.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideParticles = false;
- }
-
-
- @Expose
- @ConfigOption(name = "Blaze", desc = "")
- @Accordion
- public BlazeConfig blazes = new BlazeConfig();
-
- public static class BlazeConfig {
- @Expose
- @ConfigOption(name = "Hellion Shields", desc = "")
- @Accordion
- public BlazeHellionConfig hellion = new BlazeHellionConfig();
-
- public static class BlazeHellionConfig {
- @Expose
- @ConfigOption(name = "Colored Mobs", desc = "Color the Blaze Slayer boss and the demons in the right hellion shield color.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean coloredMobs = false;
-
- @Expose
- @ConfigOption(name = "Blaze Daggers", desc = "Faster and permanent display for the Blaze Slayer daggers.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean daggers = false;
-
- @Expose
- @ConfigOption(name = "Right Dagger", desc = "Mark the right dagger to use for Blaze Slayer in the dagger overlay.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean markRightHellionShield = false;
-
- @Expose
- @ConfigOption(name = "First Dagger", desc = "Select the first, left sided dagger for the display.")
- @ConfigEditorDropdown(values = {"Spirit/Crystal", "Ashen/Auric"})
- public int firstDagger = 0;
-
- @Expose
- @ConfigOption(name = "Hide Chat", desc = "Remove the wrong Blaze Slayer dagger messages from chat.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideDaggerWarning = false;
-
- @Expose
- public Position positionTop = new Position(-475, 173, 4.4f, true);
-
- @Expose
- public Position positionBottom = new Position(-475, 230, 3.2f, true);
- }
-
-
- @Expose
- @ConfigOption(name = "Fire Pits", desc = "Warning when the fire pit phase starts for the Blaze Slayer tier 3 and 4.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean firePitsWarning = false;
-
- @Expose
- @ConfigOption(name = "Phase Display", desc = "Show the current phase of the Blaze Slayer boss.")
- @ConfigEditorBoolean
- public boolean phaseDisplay = false;
-
- @Expose
- @ConfigOption(name = "Clear View", desc = "Hide particles and fireballs near Blaze Slayer bosses and demons.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean clearView = false;
- }
-
-
- @Expose
- @ConfigOption(name = "Vampire Slayer Features", desc = "")
- @Accordion
- public VampireSlayerConfig vampireSlayerConfig = new VampireSlayerConfig();
-
- public static class VampireSlayerConfig {
-
- @Expose
- @ConfigOption(name = "Your Boss", desc = "")
- @Accordion
- public OwnBossConfig ownBoss = new OwnBossConfig();
-
- public static class OwnBossConfig {
-
- @Expose
- @ConfigOption(name = "Highlight Your Boss", desc = "Highlight your own Vampire Slayer boss.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlight = true;
-
- @Expose
- @ConfigOption(name = "Highlight Color", desc = "What color to highlight the boss in.")
- @ConfigEditorColour
- public String highlightColor = "0:249:0:255:88";
-
- @Expose
- @ConfigOption(name = "Steak Alert", desc = "Show a title when you can steak your boss.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean steakAlert = true;
-
- @Expose
- @ConfigOption(name = "Twinclaws Title", desc = "Send a title when Twinclaws is about to happen.\nWork on others highlighted people boss.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean twinClawsTitle = true;
-
- @Expose
- @ConfigOption(name = "Twinclaws Sound", desc = "Play a sound when Twinclaws is about to happen.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean twinClawsSound = true;
- }
-
- @Expose
- @ConfigOption(name = "Others Boss", desc = "")
- @Accordion
- public OthersBossConfig othersBoss = new OthersBossConfig();
-
- public static class OthersBossConfig {
-
- @Expose
- @ConfigOption(name = "Highlight Others Boss", desc = "Highlight others players boss.\nYou need to hit them first.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlight = true;
-
- @Expose
- @ConfigOption(name = "Highlight Color", desc = "What color to highlight the boss in.")
- @ConfigEditorColour
- public String highlightColor = "0:249:0:255:88";
-
- @Expose
- @ConfigOption(name = "Steak Alert", desc = "Show a title when you can steak the boss.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean steakAlert = true;
-
- @Expose
- @ConfigOption(name = "Twinclaws Title", desc = "Send a title when Twinclaws is about to happen.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean twinClawsTitle = true;
-
- @Expose
- @ConfigOption(name = "Twinclaws Sound", desc = "Play a sound when Twinclaws is about to happen.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean twinClawsSound = true;
- }
-
- @Expose
- @ConfigOption(name = "Co-op Boss", desc = "")
- @Accordion
- public CoopBossHighlightConfig coopBoss = new CoopBossHighlightConfig();
-
- public static class CoopBossHighlightConfig {
- @Expose
- @ConfigOption(name = "Highlight Co-op Boss", desc = "Highlight boss of your co-op member.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlight = true;
-
- @Expose
- @ConfigOption(name = "Highlight Color", desc = "What color to highlight the boss in.")
- @ConfigEditorColour
- public String highlightColor = "0:249:0:255:88";
-
- @Expose
- @ConfigOption(name = "Co-op Members", desc = "Add your co-op member here.\n§eFormat: §7Name1,Name2,Name3")
- @ConfigEditorText
- public String coopMembers = "";
-
- @Expose
- @ConfigOption(name = "Steak Alert", desc = "Show a title when you can steak the boss.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean steakAlert = true;
-
- @Expose
- @ConfigOption(name = "Twinclaws Title", desc = "Send a title when Twinclaws is about to happen.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean twinClawsTitle = true;
-
- @Expose
- @ConfigOption(name = "Twinclaws Sound", desc = "Play a sound when Twinclaws is about to happen.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean twinClawsSound = true;
- }
-
- @Expose
- @ConfigOption(name = "Transparency", desc = "Choose the transparency of the color.")
- @ConfigEditorSlider(minStep = 1, minValue = 1, maxValue = 250)
- public int withAlpha = 80;
-
- @Expose
- @ConfigOption(name = "See Through Blocks", desc = "Highlight even when behind others mobs/players.")
- @ConfigEditorBoolean
- public boolean seeThrough = false;
-
- @Expose
- @ConfigOption(name = "Low Health", desc = "Change color when the boss is below 20% health.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean changeColorWhenCanSteak = true;
-
- @Expose
- @ConfigOption(name = "Can use Steak Color", desc = "Color when the boss is below 20% health.")
- @ConfigEditorColour
- public String steakColor = "0:255:255:0:88";
-
- @Expose
- @ConfigOption(name = "Twinclaws", desc = "Delay the sound and title of Twinclaws alert for a given amount in milliseconds.")
- @ConfigEditorSlider(minStep = 1, minValue = 0, maxValue = 1000)
- public int twinclawsDelay = 0;
-
- @Expose
- @ConfigOption(name = "Draw Line", desc = "Draw a line starting at your crosshair to the boss head.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean drawLine = false;
-
- @Expose
- @ConfigOption(name = "Line Color", desc = "Color of the line.")
- @ConfigEditorColour
- public String lineColor = "0:255:255:0:88";
-
- @Expose
- @ConfigOption(name = "Line Width", desc = "Width of the line.")
- @ConfigEditorSlider(minStep = 1, minValue = 1, maxValue = 10)
- public int lineWidth = 1;
-
-
- @Expose
- @ConfigOption(name = "Blood Ichor", desc = "")
- @Accordion
- public BloodIchorConfig bloodIchor = new BloodIchorConfig();
-
- public static class BloodIchorConfig {
- @Expose
- @ConfigOption(name = "Highlight Blood Ichor", desc = "Highlight the Blood Ichor.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlight = false;
-
- @Expose
- @ConfigOption(name = "Beacon Beam", desc = "Render a beacon beam where the Blood Ichor is.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean renderBeam = true;
-
- @Expose
- @ConfigOption(name = "Color", desc = "Highlight color.")
- @ConfigEditorColour
- public String color = "0:199:100:0:88";
-
- @Expose
- @ConfigOption(name = "Show Lines", desc = "Draw lines that start from the head of the boss and end on the Blood Ichor.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean showLines = false;
-
- @Expose
- @ConfigOption(name = "Lines Start Color", desc = "Starting color of the lines.")
- @ConfigEditorColour
- public String linesColor = "0:255:255:13:0";
-
- }
-
- @Expose
- @ConfigOption(name = "Killer Spring", desc = "")
- @Accordion
- public KillerSpringConfig killerSpring = new KillerSpringConfig();
-
- public static class KillerSpringConfig {
- @Expose
- @ConfigOption(name = "Highlight Killer Spring", desc = "Highlight the Killer Spring tower.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean highlight = false;
-
- @Expose
- @ConfigOption(name = "Color", desc = "Highlight color.")
- @ConfigEditorColour
- public String color = "0:199:100:0:88";
-
- @Expose
- @ConfigOption(name = "Show Lines", desc = "Draw lines that start from the head of the boss and end on the Killer Spring tower.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean showLines = false;
-
- @Expose
- @ConfigOption(name = "Lines Start Color", desc = "Starting color of the lines.")
- @ConfigEditorColour
- public String linesColor = "0:255:255:13:0";
- }
- }
-
- @Expose
- @ConfigOption(name = "Item Profit Tracker", desc = "")
- @Accordion
- public ItemProfitTrackerConfig itemProfitTracker = new ItemProfitTrackerConfig();
-
- public static class ItemProfitTrackerConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Count all items you pick up while doing slayer, " +
- "keep track of how much you pay for starting slayers and calculating the overall profit.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- public Position pos = new Position(20, 20, false, true);
-
- @Expose
- @ConfigOption(name = "Price in Chat", desc = "Show an extra chat message when you pick up an item. " +
- "(This contains name, amount and price)")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean priceInChat = false;
-
- @Expose
- @ConfigOption(name = "Show Price From", desc = "Show price from Bazaar or NPC.")
- @ConfigEditorDropdown(values = {"Instant Sell", "Sell Offer", "NPC"})
- public int priceFrom = 1;
-
- @Expose
- @ConfigOption(name = "Minimum Price", desc = "Items below this price will not show up in chat.")
- @ConfigEditorSlider(minValue = 1, maxValue = 5_000_000, minStep = 1)
- public int minimumPrice = 100_000;
-
- @Expose
- @ConfigOption(name = "Title Warning", desc = "Show a title for expensive item pickups.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean titleWarning = false;
-
- @Expose
- @ConfigOption(name = "Title Price", desc = "Items above this price will show up as a title.")
- @ConfigEditorSlider(minValue = 1, maxValue = 20_000_000, minStep = 1)
- public int minimumPriceWarning = 500_000;
- }
-
- @Expose
- @ConfigOption(name = "Items on Ground", desc = "")
- @Accordion
- public ItemsOnGroundConfig itemsOnGround = new ItemsOnGroundConfig();
-
- public static class ItemsOnGroundConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Show the name and price of items laying on the ground. §cOnly in slayer areas!")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(name = "Minimum Price", desc = "Items below this price will be ignored.")
- @ConfigEditorSlider(minValue = 1, maxValue = 1_000_000, minStep = 1)
- public int minimumPrice = 50_000;
- }
-
- @Expose
- @ConfigOption(name = "RNG Meter Display", desc = "")
- @Accordion
- public RngMeterDisplayConfig rngMeterDisplay = new RngMeterDisplayConfig();
-
- public static class RngMeterDisplayConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Display amount of bosses needed until next RNG meter drop.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = true;
-
- @Expose
- @ConfigOption(name = "Warn Empty", desc = "Warn when no item is set in the RNG Meter.")
- @ConfigEditorBoolean
- public boolean warnEmpty = false;
-
- @Expose
- @ConfigOption(name = "Hide Chat", desc = "Hide the RNG meter message from chat if current item is selected.")
- @ConfigEditorBoolean
- public boolean hideChat = true;
-
- @Expose
- public Position pos = new Position(410, 110, false, true);
-
- }
-
- @Expose
- @ConfigOption(name = "Boss Spawn Warning", desc = "")
- @Accordion
- public SlayerBossWarningConfig slayerBossWarning = new SlayerBossWarningConfig();
-
- public static class SlayerBossWarningConfig {
-
- @Expose
- @ConfigOption(name = "Enabled", desc = "Send a title when your boss is about to spawn.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean enabled = false;
-
- @Expose
- @ConfigOption(name = "Percent", desc = "The percentage at which the title and sound should be sent.")
- @ConfigEditorSlider(minStep = 1, minValue = 50, maxValue = 90)
- public int percent = 80;
-
- @Expose
- @ConfigOption(name = "Repeat", desc = "Resend the title and sound on every kill after reaching the configured percent value.")
- @ConfigEditorBoolean
- public boolean repeat = false;
- }
-
- @Expose
- @ConfigOption(name = "Miniboss Highlight", desc = "Highlight Slayer Mini-Boss in blue color.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean slayerMinibossHighlight = false;
-
- @Expose
- @ConfigOption(name = "Line to Miniboss", desc = "Adds a line to every Slayer Mini-Boss around you.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean slayerMinibossLine = false;
-
- @Expose
- @ConfigOption(name = "Hide Mob Names", desc = "Hide the name of the mobs you need to kill in order for the Slayer boss to spawn. Exclude mobs that are damaged, corrupted, runic or semi rare.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean hideMobNames = false;
-
- @Expose
- @ConfigOption(name = "Quest Warning", desc = "Warning when wrong Slayer quest is selected, or killing mobs for the wrong Slayer.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean questWarning = true;
-
- @Expose
- @ConfigOption(name = "Quest Warning Title", desc = "Sends a title when warning.")
- @ConfigEditorBoolean
- @FeatureToggle
- public boolean questWarningTitle = true;
-}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/BazaarConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/bazaar/BazaarConfig.java
index b02c0ef40..515255e4b 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/BazaarConfig.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/bazaar/BazaarConfig.java
@@ -1,4 +1,4 @@
-package at.hannibal2.skyhanni.config.features;
+package at.hannibal2.skyhanni.config.features.bazaar;
import at.hannibal2.skyhanni.config.FeatureToggle;
import at.hannibal2.skyhanni.config.core.config.Position;
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/chat/ChatConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/chat/ChatConfig.java
new file mode 100644
index 000000000..09df4f5e7
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/chat/ChatConfig.java
@@ -0,0 +1,91 @@
+package at.hannibal2.skyhanni.config.features.chat;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import org.lwjgl.input.Keyboard;
+
+public class ChatConfig {
+
+ @Expose
+ @ConfigOption(name = "Peek Chat", desc = "Hold this key to keep the chat open.")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_Z)
+ public int peekChat = Keyboard.KEY_Z;
+
+ @Expose
+ @ConfigOption(name = "Chat Filter Types", desc = "")
+ @Accordion
+ public FilterTypesConfig filterType = new FilterTypesConfig();
+
+
+ @Expose
+ @ConfigOption(name = "Player Messages", desc = "")
+ @Accordion
+ public PlayerMessagesConfig playerMessage = new PlayerMessagesConfig();
+
+ @Expose
+ @ConfigOption(name = "Player Chat Symbols", desc = "")
+ @Accordion
+ public ChatSymbols chatSymbols = new ChatSymbols();
+
+ @Expose
+ @ConfigOption(name = "Dungeon Filter", desc = "Hide annoying messages in Dungeons.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean dungeonMessages = true;
+
+ @Expose
+ @ConfigOption(name = "Dungeon Boss Messages", desc = "Hide messages from the Watcher and bosses in the Dungeon.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean dungeonBossMessages = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Far Deaths", desc = "Hide other players' death messages, " +
+ "except for players who are nearby or during Dungeons/a Kuudra fight.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideFarDeathMessages = false;
+ //TODO jawbus + thunder
+
+ @Expose
+ @ConfigOption(name = "Compact Potion Messages", desc = "")
+ @Accordion
+ public CompactPotionConfig compactPotionMessages = new CompactPotionConfig();
+
+ @Expose
+ @ConfigOption(name = "Compact Bestiary Message", desc = "Shorten the Bestiary level up message, showing additional information when hovering.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean compactBestiaryMessage = true;
+
+ @Expose
+ @ConfigOption(name = "Arachne Hider", desc = "Hide chat messages about the Arachne Fight while outside of §eArachne's Sanctuary§7.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideArachneMessages = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Sacks Hider",
+ desc = "Hide the chat's sack change message with this, " +
+ "not in Hypixel settings, for mods to access sack data in new features."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideSacksChange = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Translator",
+ desc = "Click on a message to translate it into English. " +
+ "Use §e/shcopytranslation§7 to get the translation from English. " +
+ "§cTranslation is not guaranteed to be 100% accurate."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean translator = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/chat/ChatSymbols.java b/src/main/java/at/hannibal2/skyhanni/config/features/chat/ChatSymbols.java
new file mode 100644
index 000000000..c8ea29aee
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/chat/ChatSymbols.java
@@ -0,0 +1,24 @@
+package at.hannibal2.skyhanni.config.features.chat;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class ChatSymbols {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Adds extra symbols to the chat such as those from ironman, " +
+ "stranded, bingo or nether factions and places them next to your regular player emblems. " +
+ "§cDoes not work with hide rank hider!")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(name = "Chat Symbol Location", desc = "Determines where the symbols should go in chat in relation to the " +
+ "player's name. Hidden will hide all emblems from the chat. §eRequires above setting to be on to hide the symbols.")
+ @ConfigEditorDropdown(values = {"Left", "Right", "Hidden"})
+ public int symbolLocation = 0;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/chat/CompactPotionConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/chat/CompactPotionConfig.java
new file mode 100644
index 000000000..c06244b90
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/chat/CompactPotionConfig.java
@@ -0,0 +1,20 @@
+package at.hannibal2.skyhanni.config.features.chat;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class CompactPotionConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Shorten chat messages about player potion effects.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(name = "Clickable Chat Message", desc = "Makes the Compact Potion message open the Potion effects menu on click.")
+ @ConfigEditorBoolean
+ public boolean clickableChatMessage = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/chat/FilterTypesConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/chat/FilterTypesConfig.java
new file mode 100644
index 000000000..42cca5b59
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/chat/FilterTypesConfig.java
@@ -0,0 +1,83 @@
+package at.hannibal2.skyhanni.config.features.chat;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class FilterTypesConfig {
+
+ @Expose
+ @ConfigOption(name = "Hypixel Hub", desc = "Block messages outside SkyBlock in the Hypixel lobby: player joins, loot boxes, prototype lobby messages, radiating generosity and Hypixel tournaments.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hypixelHub = true;
+
+ @Expose
+ @ConfigOption(name = "Empty", desc = "Hide all the empty messages from the chat.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean empty = true;
+
+ @Expose
+ @ConfigOption(name = "Warping", desc = "Block 'Sending request to join...' and 'Warping...' messages.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean warping = true;
+
+ @Expose
+ @ConfigOption(name = "Welcome", desc = "Hide the 'Welcome to SkyBlock' message.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean welcome = true;
+
+ @Expose
+ @ConfigOption(name = "Guild Exp", desc = "Hide Guild EXP messages.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean guildExp = true;
+
+ @Expose
+ @ConfigOption(name = "Friend Join Left", desc = "Hide friend join/left messages.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean friendJoinLeft = false;
+
+ @Expose
+ @ConfigOption(name = "Winter Gifts", desc = "Hide useless Winter Gift messages.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean winterGift = false;
+
+ @Expose
+ @ConfigOption(name = "Powder Mining", desc = "Hide messages while opening chests in the Crystal Hollows. " +
+ "(Except powder numbers over 1k, essence numbers over 2, Prehistoric Eggs, and Automaton Parts)")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean powderMining = true;
+
+ @Expose
+ @ConfigOption(name = "Kill Combo", desc = "Hide messages about the current Kill Combo from the Grandma Wolf Pet.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean killCombo = false;
+
+ @Expose
+ @ConfigOption(name = "Watchdog", desc = "Hide the message where Hypixel is flexing how many players they have banned over the last week.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean watchDog = true;
+
+ @Expose
+ @ConfigOption(name = "Profile Join", desc = "Hide 'You are playing on profile' and 'Profile ID' chat messages.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean profileJoin = true;
+
+ //TODO remove
+ @Expose
+ @ConfigOption(name = "Others", desc = "Hide other annoying messages.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean others = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/chat/PlayerMessagesConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/chat/PlayerMessagesConfig.java
new file mode 100644
index 000000000..93c22adab
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/chat/PlayerMessagesConfig.java
@@ -0,0 +1,21 @@
+package at.hannibal2.skyhanni.config.features.chat;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class PlayerMessagesConfig {
+
+ @Expose
+ @ConfigOption(name = "Player Rank Hider", desc = "Hide player ranks in all chat messages.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean playerRankHider = false;
+
+ @Expose
+ @ConfigOption(name = "Chat Filter", desc = "Scan messages sent by players for blacklisted words and gray out the message if any are found.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean chatFilter = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/ChromaConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/chroma/ChromaConfig.java
index 80c40cd98..81e3b26df 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/ChromaConfig.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/chroma/ChromaConfig.java
@@ -1,4 +1,4 @@
-package at.hannibal2.skyhanni.config.features;
+package at.hannibal2.skyhanni.config.features.chroma;
import at.hannibal2.skyhanni.SkyHanniMod;
import at.hannibal2.skyhanni.config.FeatureToggle;
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/combat/BestiaryConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/combat/BestiaryConfig.java
new file mode 100644
index 000000000..97c41da3d
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/combat/BestiaryConfig.java
@@ -0,0 +1,48 @@
+package at.hannibal2.skyhanni.config.features.combat;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class BestiaryConfig {
+ @Expose
+ @ConfigOption(name = "Enable", desc = "Show Bestiary Data overlay in the Bestiary menu.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(name = "Number format", desc = "Short: 1.1k\nLong: 1.100")
+ @ConfigEditorDropdown(values = {"Short", "Long"})
+ public int numberFormat = 0;
+
+ @Expose
+ @ConfigOption(name = "Display type", desc = "Choose what the display should show")
+ @ConfigEditorDropdown(values = {
+ "Global to max",
+ "Global to next tier",
+ "Lowest total kills",
+ "Highest total kills",
+ "Lowest kills needed to max",
+ "Highest kills needed to max",
+ "Lowest kills needed to next tier",
+ "Highest kills needed to next tier"
+ })
+ public int displayType = 0;
+
+ @Expose
+ @ConfigOption(name = "Hide maxed", desc = "Hide maxed mobs.")
+ @ConfigEditorBoolean
+ public boolean hideMaxed = false;
+
+ @Expose
+ @ConfigOption(name = "Replace Romans", desc = "Replace Roman numerals (IX) with regular numbers (9)")
+ @ConfigEditorBoolean
+ public boolean replaceRoman = false;
+
+ @Expose
+ public Position position = new Position(100, 100, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/combat/CombatConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/combat/CombatConfig.java
new file mode 100644
index 000000000..94780f9dd
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/combat/CombatConfig.java
@@ -0,0 +1,47 @@
+package at.hannibal2.skyhanni.config.features.combat;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.features.combat.damageindicator.DamageIndicatorConfig;
+import at.hannibal2.skyhanni.config.features.combat.ghostcounter.GhostCounterConfig;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.Category;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class CombatConfig {
+
+ @Expose
+ @Category(name = "Damage Indicator", desc = "Damage Indicator settings")
+ public DamageIndicatorConfig damageIndicator = new DamageIndicatorConfig();
+
+ @Expose
+ @Category(name = "Ghost Counter", desc = "Ghost counter settings")
+ public GhostCounterConfig ghostCounter = new GhostCounterConfig();
+
+ @Expose
+ @ConfigOption(name = "Summonings", desc = "")
+ @Accordion
+ public SummoningsConfig summonings = new SummoningsConfig();
+
+ @Expose
+ @ConfigOption(name = "Mobs", desc = "")
+ @Accordion
+ public MobsConfig mobs = new MobsConfig();
+
+ @Expose
+ @ConfigOption(name = "Bestiary", desc = "")
+ @Accordion
+ public BestiaryConfig bestiary = new BestiaryConfig();
+
+ @Expose
+ @ConfigOption(name = "Ender Node Tracker", desc = "")
+ @Accordion
+ public EnderNodeConfig enderNodeTracker = new EnderNodeConfig();
+
+ @Expose
+ @ConfigOption(name = "Hide Damage Splash", desc = "Hide all damage splashes anywhere in SkyBlock.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideDamageSplash = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/combat/EnderNodeConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/combat/EnderNodeConfig.java
new file mode 100644
index 000000000..0fd962084
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/combat/EnderNodeConfig.java
@@ -0,0 +1,64 @@
+package at.hannibal2.skyhanni.config.features.combat;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDraggableList;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import io.github.moulberry.moulconfig.observer.Property;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class EnderNodeConfig {
+ @Expose
+ @ConfigOption(
+ name = "Enabled",
+ desc = "Tracks all of your drops from mining Ender Nodes in the End.\n" +
+ "Also tracks drops from Endermen."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Text Format",
+ desc = "Drag text to change the appearance of the overlay."
+ )
+ @ConfigEditorDraggableList(
+ exampleText = {
+ "§5§lEnder Node Tracker",
+ "§d1,303 Ender Nodes Mined",
+ "§615.3M Coins Made",
+ " ",
+ "§b123 §cEndermite Nest",
+ "§b832 §aEnchanted End Stone",
+ "§b230 §aEnchanted Obsidian",
+ "§b1630 §aEnchanted Ender Pearl",
+ "§b85 §aGrand Experience Bottle",
+ "§b4 §9Titanic Experience Bottle",
+ "§b15 §9End Stone Shulker",
+ "§b53 §9End Stone Geode",
+ "§b10 §d◆ Magical Rune I",
+ "§b24 §5Ender Gauntlet",
+ "§b357 §5Mite Gel",
+ "§b2 §cShrimp The Fish",
+ " ",
+ "§b200 §5Ender Armor",
+ "§b24 §5Ender Helmet",
+ "§b24 §5Ender Chestplate",
+ "§b24 §5Ender Leggings",
+ "§b24 §5Ender Boots",
+ "§b24 §5Ender Necklace",
+ "§f10§7-§a8§7-§93§7-§52§7-§61 §fEnderman Pet",
+ " "
+ }
+ )
+ public Property<List<Integer>> textFormat = Property.of(new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 14, 15, 16, 17, 23)));
+
+ @Expose
+ public Position position = new Position(10, 80, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/combat/MobsConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/combat/MobsConfig.java
new file mode 100644
index 000000000..77731d854
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/combat/MobsConfig.java
@@ -0,0 +1,94 @@
+package at.hannibal2.skyhanni.config.features.combat;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class MobsConfig {
+
+ @Expose
+ @ConfigOption(name = "Highlighters", desc = "")
+ public boolean highlighters = false;
+
+ @Expose
+ @ConfigOption(name = "Area Boss", desc = "Highlight Golden Ghoul, Old Wolf, Voidling Extremist and Millenia-Aged Blaze.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean areaBossHighlight = true;
+
+ @Expose
+ @ConfigOption(name = "Arachne Keeper", desc = "Highlight the Arachne Keeper in the Spider's Den in purple color.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean arachneKeeperHighlight = true;
+
+ @Expose
+ @ConfigOption(name = "Corleone", desc = "Highlight Boss Corleone in the Crystal Hollows.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean corleoneHighlighter = true;
+
+ @Expose
+ @ConfigOption(name = "Zealot", desc = "Highlight Zealots and Bruisers in The End.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean zealotBruiserHighlighter = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Special Zealots",
+ desc = "Highlight Special Zealots (the ones that drop Summoning Eyes) in the End."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean specialZealotHighlighter = true;
+
+ @Expose
+ @ConfigOption(name = "Corrupted Mob", desc = "Highlight corrupted mobs in purple color.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean corruptedMobHighlight = false;
+
+ @Expose
+ @ConfigOption(name = "Arachne Boss", desc = "Highlight the Arachne boss in red and mini-bosses in orange.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean arachneBossHighlighter = true;
+
+ @Expose
+ @ConfigOption(name = "Respawn Timers", desc = "")
+ public boolean timers = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Area Boss",
+ desc = "Show a timer when Golden Ghoul, Old Wolf, Voidling Extremist or Millenia-Aged Blaze respawns. " +
+ "§cSometimes it takes 20-30 seconds to calibrate correctly."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean areaBossRespawnTimer = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Arachne Spawn Timer",
+ desc = "Show a timer when Arachne fragments or crystals are placed to indicate how long " +
+ "until the boss will spawn. §cTimer may be 1-2 seconds off."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean showArachneSpawnTimer = true;
+
+ @Expose
+ @ConfigOption(name = "Enderman TP Hider", desc = "Stops the Enderman Teleportation animation.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean endermanTeleportationHider = true;
+
+ @Expose
+ @ConfigOption(name = "Arachne Minis Hider", desc = "Hides the nametag above Arachne minis.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideNameTagArachneMinis = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/combat/SummoningsConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/combat/SummoningsConfig.java
new file mode 100644
index 000000000..9abe2bf8d
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/combat/SummoningsConfig.java
@@ -0,0 +1,38 @@
+package at.hannibal2.skyhanni.config.features.combat;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class SummoningsConfig {
+
+ @Expose
+ @ConfigOption(name = "Summoning Soul Display", desc = "Show the name of dropped Summoning Souls laying on the ground. " +
+ "§cNot working in Dungeons if Skytils' 'Hide Non-Starred Mobs Nametags' feature is enabled!")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean summoningSoulDisplay = false;
+
+ @Expose
+ @ConfigOption(name = "Summoning Mob Display", desc = "Show the health of your spawned summons.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean summoningMobDisplay = false;
+
+ @Expose
+ public Position summoningMobDisplayPos = new Position(10, 10, false, true);
+
+ @Expose
+ @ConfigOption(name = "Summoning Mob Nametag", desc = "Hide the nametag of your spawned summons.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean summoningMobHideNametag = false;
+
+ @Expose
+ @ConfigOption(name = "Summoning Mob Color", desc = "Marks own summons green.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean summoningMobColored = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/combat/damageindicator/DamageIndicatorConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/combat/damageindicator/DamageIndicatorConfig.java
new file mode 100644
index 000000000..c77e5f3f0
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/combat/damageindicator/DamageIndicatorConfig.java
@@ -0,0 +1,102 @@
+package at.hannibal2.skyhanni.config.features.combat.damageindicator;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDraggableList;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class DamageIndicatorConfig {
+
+ @Expose
+ @ConfigOption(name = "Damage Indicator Enabled", desc = "Show the boss' remaining health.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(name = "Healing Chat Message", desc = "Sends a chat message when a boss heals themself.")
+ @ConfigEditorBoolean
+ public boolean healingMessage = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Boss Name",
+ desc = "Change how the boss name should be displayed.")
+ @ConfigEditorDropdown(values = {"Hidden", "Full Name", "Short Name"})
+ public int bossName = 1;
+
+ @Expose
+ @ConfigOption(
+ name = "Select Boss",
+ desc = "Change what type of boss you want the damage indicator be enabled for."
+ )
+ @ConfigEditorDraggableList(
+ exampleText = {
+ "§bDungeon All",
+ "§bNether Mini Bosses",
+ "§bVanquisher",
+ "§bEndstone Protector (not tested)",
+ "§bEnder Dragon (not finished)",
+ "§bRevenant Horror",
+ "§bTarantula Broodfather",
+ "§bSven Packmaster",
+ "§bVoidgloom Seraph",
+ "§bInferno Demonlord",
+ "§bHeadless Horseman (bugged)",
+ "§bDungeon Floor 1",
+ "§bDungeon Floor 2",
+ "§bDungeon Floor 3",
+ "§bDungeon Floor 4",
+ "§bDungeon Floor 5",
+ "§bDungeon Floor 6",
+ "§bDungeon Floor 7",
+ "§bDiana Mobs",
+ "§bSea Creatures",
+ "Dummy",
+ "§bArachne",
+ "§bThe Rift Bosses",
+ "§bRiftstalker Bloodfiend",
+ "§6Reindrake"
+ }
+ )
+ //TODO only show currently working and tested features
+ public List<Integer> bossesToShow = new ArrayList<>(Arrays.asList(0, 1, 2, 5, 6, 7, 8, 9, 18, 19, 21, 22, 23, 24));
+
+ @Expose
+ @ConfigOption(name = "Hide Damage Splash", desc = "Hiding damage splashes near the damage indicator.")
+ @ConfigEditorBoolean
+ public boolean hideDamageSplash = false;
+
+ @Expose
+ @ConfigOption(name = "Damage Over Time", desc = "Show damage and health over time below the damage indicator.")
+ @ConfigEditorBoolean
+ public boolean showDamageOverTime = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Nametag", desc = "Hide the vanilla nametag of damage indicator bosses.")
+ @ConfigEditorBoolean
+ public boolean hideVanillaNametag = false;
+
+ @Expose
+ @ConfigOption(name = "Time to Kill", desc = "Show the time it takes to kill the slayer boss.")
+ @ConfigEditorBoolean
+ public boolean timeToKillSlayer = true;
+
+
+ @Expose
+ @ConfigOption(name = "Ender Slayer", desc = "")
+ @Accordion
+ public EnderSlayerConfig enderSlayer = new EnderSlayerConfig();
+
+ @Expose
+ @ConfigOption(name = "Vampire Slayer", desc = "")
+ @Accordion
+ public VampireSlayerConfig vampireSlayer = new VampireSlayerConfig();
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/combat/damageindicator/EnderSlayerConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/combat/damageindicator/EnderSlayerConfig.java
new file mode 100644
index 000000000..392505686
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/combat/damageindicator/EnderSlayerConfig.java
@@ -0,0 +1,18 @@
+package at.hannibal2.skyhanni.config.features.combat.damageindicator;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class EnderSlayerConfig {
+
+ @Expose
+ @ConfigOption(name = "Laser Phase Timer", desc = "Show a timer when the laser phase will end.")
+ @ConfigEditorBoolean
+ public boolean laserPhaseTimer = false;
+
+ @Expose
+ @ConfigOption(name = "Health During Laser", desc = "Show the health of Voidgloom Seraph 4 during the laser phase.")
+ @ConfigEditorBoolean
+ public boolean showHealthDuringLaser = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/combat/damageindicator/VampireSlayerConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/combat/damageindicator/VampireSlayerConfig.java
new file mode 100644
index 000000000..ec1d07b92
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/combat/damageindicator/VampireSlayerConfig.java
@@ -0,0 +1,23 @@
+package at.hannibal2.skyhanni.config.features.combat.damageindicator;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class VampireSlayerConfig {
+
+ @Expose
+ @ConfigOption(name = "HP Until Steak", desc = "Show the amount of HP missing until the Steak can be used on the Vampire Slayer on top of the boss.")
+ @ConfigEditorBoolean
+ public boolean hpTillSteak = false;
+
+ @Expose
+ @ConfigOption(name = "Mania Circles", desc = "Show a timer until the boss leaves the invincible Mania Circles state.")
+ @ConfigEditorBoolean
+ public boolean maniaCircles = false;
+
+ @Expose
+ @ConfigOption(name = "Percentage HP", desc = "Show the percentage of HP next to the HP.")
+ @ConfigEditorBoolean
+ public boolean percentage = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/combat/ghostcounter/GhostCounterConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/combat/ghostcounter/GhostCounterConfig.java
new file mode 100644
index 000000000..783c4cda5
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/combat/ghostcounter/GhostCounterConfig.java
@@ -0,0 +1,96 @@
+package at.hannibal2.skyhanni.config.features.combat.ghostcounter;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import at.hannibal2.skyhanni.config.features.combat.ghostcounter.textformatting.TextFormattingConfig;
+import at.hannibal2.skyhanni.features.combat.ghostcounter.GhostUtil;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorButton;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDraggableList;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class GhostCounterConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Enable the ghost counter (invisible creepers in the Dwarven Mines The Mist area).")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Display Text",
+ desc = "Drag text to change the appearance of the overlay."
+ )
+ @ConfigEditorDraggableList(
+ exampleText = {
+ "§6Ghosts Counter",
+ " §bGhost Killed: 42",
+ " §bSorrow: 6",
+ " §bGhost since Sorrow: 1",
+ " §bGhosts/Sorrow: 5",
+ " §bVolta: 6",
+ " §bPlasma: 8",
+ " §bGhostly Boots: 1",
+ " §bBag Of Cash: 4",
+ " §bAvg Magic Find: 271",
+ " §bScavenger Coins: 15,000",
+ " §bKill Combo: 14",
+ " §bHighest Kill Combo: 96",
+ " §bSkill XP Gained: 145,648",
+ " §bBestiary 1: 0/10",
+ " §bXP/h: 810,410",
+ " §bKills/h: 420",
+ " §bETA: 14d",
+ " §bMoney/h: 13,420,069",
+ " §bMoney made: 14B"
+ }
+ )
+ public List<Integer> ghostDisplayText = new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4, 9, 10, 11, 12));
+
+ @ConfigOption(name = "Text Formatting", desc = "")
+ @Accordion
+ @Expose
+ public TextFormattingConfig textFormatting = new TextFormattingConfig();
+
+ @Expose
+ @ConfigOption(name = "Extra space", desc = "Space between each line of text.")
+ @ConfigEditorSlider(
+ minValue = -5,
+ maxValue = 10,
+ minStep = 1)
+ public int extraSpace = 1;
+
+ @Expose
+ @ConfigOption(name = "Pause Timer", desc = "How many seconds does it wait before pausing.")
+ @ConfigEditorSlider(
+ minValue = 1,
+ maxValue = 20,
+ minStep = 1
+ )
+ public int pauseTimer = 3;
+
+ @Expose
+ @ConfigOption(name = "Show only in The Mist", desc = "Show the overlay only when you are in The Mist.")
+ @ConfigEditorBoolean
+ public boolean onlyOnMist = true;
+
+ @Expose
+ @ConfigOption(name = "Maxed Bestiary", desc = "Show progress to max bestiary instead of next level.")
+ @ConfigEditorBoolean
+ public boolean showMax = false;
+
+ @ConfigOption(name = "Reset", desc = "Reset the counter.")
+ @ConfigEditorButton(buttonText = "Reset")
+ public Runnable resetCounter = GhostUtil.INSTANCE::reset;
+
+ @Expose
+ public Position position = new Position(50, 50, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/combat/ghostcounter/textformatting/BestiaryFormattingConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/combat/ghostcounter/textformatting/BestiaryFormattingConfig.java
new file mode 100644
index 000000000..c41b23fe1
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/combat/ghostcounter/textformatting/BestiaryFormattingConfig.java
@@ -0,0 +1,41 @@
+package at.hannibal2.skyhanni.config.features.combat.ghostcounter.textformatting;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorText;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class BestiaryFormattingConfig {
+
+ @Expose
+ @ConfigOption(name = "Bestiary", desc = "Bestiary Progress line.\n§e%value% §7is replaced with\n" +
+ "Your current progress to next level.\n" +
+ "§e%currentLevel% &7is replaced with your current bestiary level\n" +
+ "§e%nextLevel% §7is replaced with your current bestiary level +1.\n" +
+ "§e%value% §7is replaced with one of the text below.")
+ @ConfigEditorText
+ public String base = " &6Bestiary %display%: &b%value%";
+
+ @Expose
+ @ConfigOption(name = "No Data", desc = "Text to show when you need to open the\nBestiary Menu to gather data.")
+ @ConfigEditorText
+ public String openMenu = "§cOpen Bestiary Menu !";
+
+ @Expose
+ @ConfigOption(name = "Maxed", desc = "Text to show when your bestiary for ghost is at max level.\n" +
+ "§e%currentKill% §7is replaced with your current total kill.")
+ @ConfigEditorText
+ public String maxed = "%currentKill% (&c&lMaxed!)";
+
+ @Expose
+ @ConfigOption(name = "Progress to Max", desc = "Text to show progress when the §eMaxed Bestiary §7option is §aON\n" +
+ "§e%currentKill% §7is replaced with your current total kill.")
+ @ConfigEditorText
+ public String showMax_progress = "%currentKill%/250k (%percentNumber%%)";
+
+ @Expose
+ @ConfigOption(name = "Progress", desc = "Text to show progress when the §eMaxed Bestiary§7 option is §cOFF\n" +
+ "§e%currentKill% §7is replaced with how many kill you have to the next level.\n" +
+ "§e%killNeeded% §7is replaced with how many kill you need to reach the next level.")
+ @ConfigEditorText
+ public String progress = "%currentKill%/%killNeeded%";
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/combat/ghostcounter/textformatting/ETAFormattingConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/combat/ghostcounter/textformatting/ETAFormattingConfig.java
new file mode 100644
index 000000000..146b56811
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/combat/ghostcounter/textformatting/ETAFormattingConfig.java
@@ -0,0 +1,42 @@
+package at.hannibal2.skyhanni.config.features.combat.ghostcounter.textformatting;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorText;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class ETAFormattingConfig {
+ @Expose
+ @ConfigOption(name = "ETA to next level", desc = "ETA To Next Level Line.\n" +
+ "§e%value% §7is replaced with one of the text below.")
+ @ConfigEditorText
+ public String base = " &6ETA: &b%value%";
+
+ @Expose
+ @ConfigOption(name = "Maxed!", desc = "So you really maxed ghost bestiary ?")
+ @ConfigEditorText
+ public String maxed = "&c&lMAXED!";
+
+ @Expose
+ @ConfigOption(name = "No Data", desc = "Start killing some ghosts !")
+ @ConfigEditorText
+ public String noData = "&bN/A";
+
+ @Expose
+ @ConfigOption(name = "Progress", desc = "Text to show progress to next level.")
+ @ConfigEditorText
+ public String progress = "&b%value%";
+
+ @Expose
+ @ConfigOption(name = "Paused", desc = "Text displayed next to the time \n" +
+ "when you are doing nothing for a given amount of seconds")
+ @ConfigEditorText
+ public String paused = "&c(PAUSED)";
+
+ @Expose
+ @ConfigOption(name = "Time", desc = "§e%days% §7is replaced with days remaining.\n" +
+ "§e%hours% §7is replaced with hours remaining.\n" +
+ "§e%minutes% §7is replaced with minutes remaining.\n" +
+ "§e%seconds% §7is replaced with seconds remaining.")
+ @ConfigEditorText
+ public String time = "&6%days%%hours%%minutes%%seconds%";
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/combat/ghostcounter/textformatting/KillHourFormattingConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/combat/ghostcounter/textformatting/KillHourFormattingConfig.java
new file mode 100644
index 000000000..41cf0dcdd
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/combat/ghostcounter/textformatting/KillHourFormattingConfig.java
@@ -0,0 +1,24 @@
+package at.hannibal2.skyhanni.config.features.combat.ghostcounter.textformatting;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorText;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class KillHourFormattingConfig {
+ @Expose
+ @ConfigOption(name = "Kill/h", desc = "Kill Per Hour line.\n§e%value% §7is replaced with\nEstimated kills per hour you get.")
+ @ConfigEditorText
+ public String base = " &6Kill/h: &b%value%";
+
+ @Expose
+ @ConfigOption(name = "No Data", desc = "Start killing some ghosts !")
+ @ConfigEditorText
+ public String noData = "&bN/A";
+
+ @Expose
+ @ConfigOption(name = "Paused", desc = "Text displayed next to the time \n" +
+ "when you are doing nothing for a given amount of seconds")
+ @ConfigEditorText
+ public String paused = "&c(PAUSED)";
+}
+
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/combat/ghostcounter/textformatting/TextFormattingConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/combat/ghostcounter/textformatting/TextFormattingConfig.java
new file mode 100644
index 000000000..750b3ae2c
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/combat/ghostcounter/textformatting/TextFormattingConfig.java
@@ -0,0 +1,148 @@
+package at.hannibal2.skyhanni.config.features.combat.ghostcounter.textformatting;
+
+import at.hannibal2.skyhanni.features.combat.ghostcounter.GhostFormatting;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorButton;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorInfoText;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorText;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class TextFormattingConfig {
+
+ @ConfigOption(name = "§eText Formatting Info", desc = "§e%session% §ris §e§lalways §rreplaced with\n" +
+ "§7the count for your current session.\n" +
+ "§7Reset when restarting the game.\n" +
+ "§7You can use §e&Z §7color code to use SBA chroma.")
+ @ConfigEditorInfoText
+ public boolean formatInfo = false;
+
+ @ConfigOption(name = "Reset Formatting", desc = "Reset formatting to default text.")
+ @ConfigEditorButton(buttonText = "Reset")
+ public Runnable resetFormatting = GhostFormatting.INSTANCE::reset;
+
+ @ConfigOption(name = "Export Formatting", desc = "Export current formatting to clipboard.")
+ @ConfigEditorButton(buttonText = "Export")
+ public Runnable exportFormatting = GhostFormatting.INSTANCE::export;
+
+ @ConfigOption(name = "Import Formatting", desc = "Import formatting from clipboard.")
+ @ConfigEditorButton(buttonText = "Import")
+ public Runnable importFormatting = GhostFormatting.INSTANCE::importFormat;
+
+ @Expose
+ @ConfigOption(name = "Title", desc = "Title Line.")
+ @ConfigEditorText
+ public String titleFormat = "&6Ghost Counter";
+
+ @Expose
+ @ConfigOption(name = "Ghost Killed", desc = "Ghost Killed line.\n§e%value% §ris replaced with\n" +
+ "Ghost Killed.\n" +
+ "§e%session% §7is replaced with Ghost killed")
+ @ConfigEditorText
+ public String ghostKilledFormat = " &6Ghost Killed: &b%value% &7(%session%)";
+
+ @Expose
+ @ConfigOption(name = "Sorrows", desc = "Sorrows drop line.\n" +
+ "§e%value% §7is replaced with\nsorrows dropped.")
+ @ConfigEditorText
+ public String sorrowsFormat = " &6Sorrow: &b%value% &7(%session%)";
+
+ @Expose
+ @ConfigOption(name = "Ghost Since Sorrow", desc = "Ghost Since Sorrow line.\n" +
+ "§e%value% §7is replaced with\nGhost since last sorrow drop.")
+ @ConfigEditorText
+ public String ghostSinceSorrowFormat = " &6Ghost since Sorrow: &b%value%";
+
+ @Expose
+ @ConfigOption(name = "Ghost Kill Per Sorrow", desc = "Ghost Kill Per Sorrow line.\n" +
+ "§e%value% §7is replaced with\naverage ghost kill per sorrow drop.")
+ @ConfigEditorText
+ public String ghostKillPerSorrowFormat = " &6Ghosts/Sorrow: &b%value%";
+
+ @Expose
+ @ConfigOption(name = "Voltas", desc = "Voltas drop line.\n" +
+ "§e%value% §7is replaced with\nvoltas dropped.")
+ @ConfigEditorText
+ public String voltasFormat = " &6Voltas: &b%value% &7(%session%)";
+
+ @Expose
+ @ConfigOption(name = "Plasmas", desc = "Plasmas drop line.\n" +
+ "§e%value% §7is replaced with\nplasmas dropped.")
+ @ConfigEditorText
+ public String plasmasFormat = " &6Plasmas: &b%value% &7(%session%)";
+
+ @Expose
+ @ConfigOption(name = "Ghostly Boots", desc = "Ghostly Boots drop line.\n" +
+ "§e%value% §7is replaced with\nGhostly Boots dropped.")
+ @ConfigEditorText
+ public String ghostlyBootsFormat = " &6Ghostly Boots: &b%value% &7(%session%)";
+
+ @Expose
+ @ConfigOption(name = "Bag Of Cash", desc = "Bag Of Cash drop line.\n" +
+ "§e%value% §7is replaced with\nBag Of Cash dropped.")
+ @ConfigEditorText
+ public String bagOfCashFormat = " &6Bag Of Cash: &b%value% &7(%session%)";
+
+ @Expose
+ @ConfigOption(name = "Average Magic Find", desc = "Average Magic Find line.\n" +
+ "§e%value% §7is replaced with\nAverage Magic Find.")
+ @ConfigEditorText
+ public String avgMagicFindFormat = " &6Avg Magic Find: &b%value%";
+
+ @Expose
+ @ConfigOption(name = "Scavenger Coins", desc = "Scavenger Coins line.\n" +
+ "§e%value% §7is replaced with\nCoins earned from kill ghosts.\nInclude: Scavenger Enchant, Scavenger Talismans, Kill Combo.")
+ @ConfigEditorText
+ public String scavengerCoinsFormat = " &6Scavenger Coins: &b%value% &7(%session%)";
+
+ @Expose
+ @ConfigOption(name = "Kill Combo", desc = "Kill Combo line.\n" +
+ "§e%value% §7is replaced with\nYour current kill combo.")
+ @ConfigEditorText
+ public String killComboFormat = " &6Kill Combo: &b%value%";
+
+ @Expose
+ @ConfigOption(name = "Highest Kill Combo", desc = "Highest Kill Combo line.\n" +
+ "§e%value% §7is replaced with\nYour current highest kill combo.")
+ @ConfigEditorText
+ public String highestKillComboFormat = " &6Highest Kill Combo: &b%value% &7(%session%)";
+
+ @Expose
+ @ConfigOption(name = "Skill XP Gained", desc = "Skill XP Gained line.\n" +
+ "§e%value% §7is replaced with\nSkill XP Gained from killing Ghosts.")
+ @ConfigEditorText
+ public String skillXPGainFormat = " &6Skill XP Gained: &b%value% &7(%session%)";
+
+ @ConfigOption(name = "Bestiary Formatting", desc = "")
+ @Accordion
+ @Expose
+ public BestiaryFormattingConfig bestiaryFormatting = new BestiaryFormattingConfig();
+
+ @ConfigOption(name = "XP Per Hour Formatting", desc = "")
+ @Accordion
+ @Expose
+ public XPHourFormattingConfig xpHourFormatting = new XPHourFormattingConfig();
+
+ @ConfigOption(name = "ETA Formatting", desc = "")
+ @Accordion
+ @Expose
+ public ETAFormattingConfig etaFormatting = new ETAFormattingConfig();
+
+ @ConfigOption(name = "Kill Per Hour Formatting", desc = "")
+ @Expose
+ @Accordion
+ public KillHourFormattingConfig killHourFormatting = new KillHourFormattingConfig();
+
+ @Expose
+ @ConfigOption(name = "Money Per Hour", desc = "Money Per Hour.\n§e%value% §7is replaced with\nEstimated money you get per hour\n" +
+ "Calculated with your kill per hour and your average magic find.")
+ @ConfigEditorText
+ public String moneyHourFormat = " &6$/h: &b%value%";
+
+ @Expose
+ @ConfigOption(name = "Money made", desc = "Calculate the money you made.\nInclude §eSorrow§7, §ePlasma§7, §eVolta§7, §e1M coins drop\n" +
+ "§eGhostly Boots§7, §eScavenger coins.\n" +
+ "§cUsing current Sell Offer value.")
+ @ConfigEditorText
+ public String moneyMadeFormat = " &6Money made: &b%value%";
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/combat/ghostcounter/textformatting/XPHourFormattingConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/combat/ghostcounter/textformatting/XPHourFormattingConfig.java
new file mode 100644
index 000000000..d04f4942a
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/combat/ghostcounter/textformatting/XPHourFormattingConfig.java
@@ -0,0 +1,26 @@
+package at.hannibal2.skyhanni.config.features.combat.ghostcounter.textformatting;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorText;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class XPHourFormattingConfig {
+
+ @Expose
+ @ConfigOption(name = "XP/h", desc = "XP Per Hour line.\n" +
+ "§e%value% §7is replaced with one of the text below.")
+ @ConfigEditorText
+ public String base = " &6XP/h: &b%value%";
+
+ @Expose
+ @ConfigOption(name = "No Data", desc = "XP Per Hour line.\n§e%value% §7is replaced with\nEstimated amount of combat xp you gain per hour.")
+ @ConfigEditorText
+ public String noData = "&bN/A";
+
+ @Expose
+ @ConfigOption(name = "Paused", desc = "Text displayed next to the time \n" +
+ "when you are doing nothing for a given amount of seconds")
+ @ConfigEditorText
+ public String paused = "&c(PAUSED)";
+}
+
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/commands/CommandsConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/commands/CommandsConfig.java
new file mode 100644
index 000000000..777d543a3
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/commands/CommandsConfig.java
@@ -0,0 +1,39 @@
+package at.hannibal2.skyhanni.config.features.commands;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class CommandsConfig {
+
+ @ConfigOption(name = "Tab Complete", desc = "")
+ @Accordion
+ @Expose
+ public TabCompleteConfig tabComplete = new TabCompleteConfig();
+
+ @ConfigOption(name = "Fandom Wiki for §e/wiki", desc = "")
+ @Accordion
+ @Expose
+ public FandomWikiCommandConfig fandomWiki = new FandomWikiCommandConfig();
+
+ @ConfigOption(name = "Party Commands", desc = "Shortens party commands and allows tab-completing for them. " +
+ "\n§eCommands: /pt /pp /pko /pk §7SkyBlock command §e/pt §7to check the play time still works.")
+ @Expose
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean shortCommands = true;
+
+ @Expose
+ @ConfigOption(name = "Replace Warp Is", desc = "Adds §e/warp is §7alongside §e/is§7. Idk why. Ask §cKaeso")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean replaceWarpIs = false;
+
+ @Expose
+ @ConfigOption(name = "/viewrecipe Lower Case", desc = "Adds support for lower case item IDs to the Hypixel command §e/viewrecipe§7.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean viewRecipeLowerCase = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/commands/FandomWikiCommandConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/commands/FandomWikiCommandConfig.java
new file mode 100644
index 000000000..c8a25a204
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/commands/FandomWikiCommandConfig.java
@@ -0,0 +1,27 @@
+package at.hannibal2.skyhanni.config.features.commands;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import org.lwjgl.input.Keyboard;
+
+public class FandomWikiCommandConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Use Fandom Wiki (§ehypixel-skyblock.fandom.com§7) instead of the Hypixel wiki (§ewiki.hypixel.net§7) in most wiki-related chat messages.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(name = "Skip Chat", desc = "Directly opens the Fandom Wiki instead of sending the §e\"Click to search for this thing on the Fandom Wiki\"§7 message beforehand.")
+ @ConfigEditorBoolean
+ public boolean skipWikiChat = false;
+
+ @Expose
+ @ConfigOption(name = "Fandom Wiki Key", desc = "Search for an item on Fandom Wiki with this keybind.\n§4For optimal experiences, do §lNOT§r §4bind this to a mouse button.")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
+ public int fandomWikiKeybind = Keyboard.KEY_NONE;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/commands/TabCompleteConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/commands/TabCompleteConfig.java
new file mode 100644
index 000000000..6e3420a59
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/commands/TabCompleteConfig.java
@@ -0,0 +1,61 @@
+package at.hannibal2.skyhanni.config.features.commands;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class TabCompleteConfig {
+
+ @Expose
+ @ConfigOption(name = "Warps", desc = "Tab complete the warp-point names when typing §e/warp <TAB>§7.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean warps = true;
+
+ @Expose
+ @ConfigOption(name = "Island Players", desc = "Tab complete other players on the same island.")
+ public boolean islandPlayers = true;
+
+ @Expose
+ @ConfigOption(name = "Friends", desc = "Tab complete friends from your friends list.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean friends = true;
+
+ @Expose
+ @ConfigOption(name = "Only Best Friends", desc = "Only Tab Complete best friends.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean onlyBestFriends = false;
+
+ @Expose
+ @ConfigOption(name = "Party", desc = "Tab complete Party Members.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean party = true;
+
+ @Expose
+ @ConfigOption(name = "VIP Visits", desc = "Tab complete the visit to special users with cake souls on it.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean vipVisits = true;
+
+ @Expose
+ @ConfigOption(name = "/gfs Sack", desc = "Tab complete §e/gfs §7sack items.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean gfsSack = true;
+
+ @Expose
+ @ConfigOption(name = "Party Commands", desc = "Tab complete commonly used party commands.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean partyCommands = true;
+
+ @Expose
+ @ConfigOption(name = "View Recipe", desc = "Tab complete item IDs in the the Hypixel command §e/viewrecipe§7. Only items with recipes are tab completed.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean viewrecipeItems = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/CrimsonIsleConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/CrimsonIsleConfig.java
new file mode 100644
index 000000000..7dd530bc4
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/CrimsonIsleConfig.java
@@ -0,0 +1,34 @@
+package at.hannibal2.skyhanni.config.features.crimsonisle;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.features.crimsonisle.ashfang.AshfangConfig;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.Category;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class CrimsonIsleConfig {
+
+ @Category(name = "Ashfang", desc = "Ashfang settings")
+ @Expose
+ public AshfangConfig ashfang = new AshfangConfig();
+
+ @ConfigOption(name = "Reputation Helper", desc = "")
+ @Accordion
+ @Expose
+ public ReputationHelperConfig reputationHelper = new ReputationHelperConfig();
+
+ @Expose
+ @ConfigOption(name = "Quest Item Helper", desc = "When you open the fetch item quest in the town board, " +
+ "it shows a clickable chat message that will grab the items needed from the sacks.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean questItemHelper = false;
+
+ @Expose
+ @ConfigOption(name = "Pablo NPC Helper", desc = "Similar to Quest Item Helper, shows a clickable message that grabs the flower needed from sacks.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean pabloHelper = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/ReputationHelperConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/ReputationHelperConfig.java
new file mode 100644
index 000000000..cddce2228
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/ReputationHelperConfig.java
@@ -0,0 +1,38 @@
+package at.hannibal2.skyhanni.config.features.crimsonisle;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import org.lwjgl.input.Keyboard;
+
+public class ReputationHelperConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Enable features around Reputation features in the Crimson Isle.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(name = "Use Hotkey", desc = "Only show the Reputation Helper while pressing the hotkey.")
+ @ConfigEditorBoolean
+ public boolean useHotkey = false;
+
+ @Expose
+ @ConfigOption(name = "Hotkey", desc = "Press this hotkey to show the Reputation Helper.")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
+ public int hotkey = Keyboard.KEY_NONE;
+
+
+ @Expose
+ public Position position = new Position(10, 10, false, true);
+
+ @Expose
+ @ConfigOption(name = "Show Locations", desc = "Crimson Isles waypoints for locations to get reputation.")
+ @ConfigEditorDropdown(values = {"Always", "Only With Hotkey", "Never"})
+ public int showLocation = 1;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/ashfang/AshfangConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/ashfang/AshfangConfig.java
new file mode 100644
index 000000000..6e983e440
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/ashfang/AshfangConfig.java
@@ -0,0 +1,50 @@
+package at.hannibal2.skyhanni.config.features.crimsonisle.ashfang;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class AshfangConfig {
+
+ @ConfigOption(name = "Gravity Orbs", desc = "")
+ @Accordion
+ @Expose
+ public GravityOrbsConfig gravityOrbs = new GravityOrbsConfig();
+
+ @ConfigOption(name = "Blazing Souls", desc = "")
+ @Accordion
+ @Expose
+ public BlazingSoulsColor blazingSouls = new BlazingSoulsColor();
+
+ @ConfigOption(name = "Hide Stuff", desc = "")
+ @Accordion
+ @Expose
+ public HideAshfangConfig hide = new HideAshfangConfig();
+
+ @Expose
+ @ConfigOption(name = "Highlight Blazes", desc = "Highlight the different blazes in their respective colors.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlightBlazes = false;
+
+ @Expose
+ @ConfigOption(name = "Freeze Cooldown", desc = "Show the cooldown for how long Ashfang blocks your abilities.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean freezeCooldown = false;
+
+ @Expose
+ public Position freezeCooldownPos = new Position(10, 10, false, true);
+
+ @Expose
+ @ConfigOption(name = "Reset Time", desc = "Show the cooldown until Ashfang pulls his underlings back.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean nextResetCooldown = false;
+
+ @Expose
+ public Position nextResetCooldownPos = new Position(10, 10, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/ashfang/BlazingSoulsColor.java b/src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/ashfang/BlazingSoulsColor.java
new file mode 100644
index 000000000..6af0547d8
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/ashfang/BlazingSoulsColor.java
@@ -0,0 +1,21 @@
+package at.hannibal2.skyhanni.config.features.crimsonisle.ashfang;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class BlazingSoulsColor {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Shows the Blazing Souls more clearly.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(name = "Souls Color", desc = "Color of the Blazing Souls.")
+ @ConfigEditorColour
+ public String color = "0:245:85:255:85";
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/ashfang/GravityOrbsConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/ashfang/GravityOrbsConfig.java
new file mode 100644
index 000000000..a9e1fddf5
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/ashfang/GravityOrbsConfig.java
@@ -0,0 +1,21 @@
+package at.hannibal2.skyhanni.config.features.crimsonisle.ashfang;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class GravityOrbsConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Shows the Gravity Orbs more clearly.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(name = "Color", desc = "Color of the Gravity Orbs.")
+ @ConfigEditorColour
+ public String color = "0:120:255:85:85";
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/ashfang/HideAshfangConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/ashfang/HideAshfangConfig.java
new file mode 100644
index 000000000..1160988e5
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/ashfang/HideAshfangConfig.java
@@ -0,0 +1,27 @@
+package at.hannibal2.skyhanni.config.features.crimsonisle.ashfang;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class HideAshfangConfig {
+
+ @Expose
+ @ConfigOption(name = "Hide Particles", desc = "Hide particles around the Ashfang boss.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean particles = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Full Names", desc = "Hide the names of full health blazes around Ashfang (only useful when highlight blazes is enabled)")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean fullNames = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Damage Splash", desc = "Hide damage splashes around Ashfang.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean damageSplash = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/dev/DebugConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/dev/DebugConfig.java
new file mode 100644
index 000000000..7f7b9af63
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/dev/DebugConfig.java
@@ -0,0 +1,88 @@
+package at.hannibal2.skyhanni.config.features.dev;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import org.lwjgl.input.Keyboard;
+
+public class DebugConfig {
+ @Expose
+ @ConfigOption(name = "Enable Debug", desc = "Enable Test logic")
+ @ConfigEditorBoolean
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(name = "Command Logging", desc = "Logs stack trace information into the console when a command gets sent to Hypixel. (by any mod or the player)")
+ @ConfigEditorBoolean
+ public boolean commandLogs = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Mod Menu Log",
+ desc = "Enables debug messages when the currently opened GUI changes, with the path to the gui class. " +
+ "Useful for adding more mods to quick mod menu switch."
+ )
+ @ConfigEditorBoolean
+ public boolean modMenuLog = false;
+
+ @Expose
+ @ConfigOption(name = "Show Internal Name", desc = "Show internal names in item lore.")
+ @ConfigEditorBoolean
+ public boolean showInternalName = false;
+
+ @Expose
+ @ConfigOption(name = "Show Empty Internal Names", desc = "Shows internal name even for items with none.")
+ @ConfigEditorBoolean
+ public boolean showEmptyNames = false;
+
+ @Expose
+ @ConfigOption(name = "Show Item Rarity", desc = "Show item rarities in item lore.")
+ @ConfigEditorBoolean
+ public boolean showItemRarity = false;
+
+ @Expose
+ @ConfigOption(name = "Copy Internal Name", desc = "Copies the internal name of an item on key press in the clipboard.")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
+ public int copyInternalName = Keyboard.KEY_NONE;
+
+ @Expose
+ @ConfigOption(name = "Show NPC Price", desc = "Show NPC price in item lore.")
+ @ConfigEditorBoolean
+ public boolean showNpcPrice = false;
+
+ @Expose
+ @ConfigOption(name = "Show Item UUID", desc = "Show the Unique Identifier of items in the lore.")
+ @ConfigEditorBoolean
+ public boolean showItemUuid = false;
+
+ @Expose
+ @ConfigOption(name = "Copy Item Data", desc = "Copies item NBT data on key press in a GUI to clipboard.")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
+ public int copyItemData = Keyboard.KEY_NONE;
+
+ @Expose
+ @ConfigOption(name = "Copy Compressed Item Data", desc = "Copies compressed item NBT data on key press in a GUI to clipboard.")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
+ public int copyItemDataCompressed = Keyboard.KEY_NONE;
+
+ @Expose
+ @ConfigOption(name = "Copy RNG Meter", desc = "Copies internal names and maxed XP needed from RNG meter inventories as json to clipboard.")
+ @ConfigEditorBoolean
+ public boolean copyRngMeter = false;
+
+ @Expose
+ @ConfigOption(name = "Copy Bestiary Data", desc = "Copies the bestiary data from the inventory as json to clipboard.")
+ @ConfigEditorBoolean
+ public boolean copyBestiaryData = false;
+
+ @Expose
+ @ConfigOption(name = "Highlight Missing Repo Items", desc = "Highlights each item in the current inventory that is not in your current NEU repo.")
+ @ConfigEditorBoolean
+ public boolean highlightMissingRepo = false;
+
+ @Expose
+ @ConfigOption(name = "Hot Swap Detection", desc = "Show chat messages when Hot Swap starts and ends.")
+ @ConfigEditorBoolean
+ public boolean hotSwapDetection = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/dev/DevConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/dev/DevConfig.java
new file mode 100644
index 000000000..7c5282cf4
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/dev/DevConfig.java
@@ -0,0 +1,46 @@
+package at.hannibal2.skyhanni.config.features.dev;
+
+import at.hannibal2.skyhanni.config.core.config.Position;
+import at.hannibal2.skyhanni.config.features.dev.minecraftconsole.MinecraftConsoleConfig;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.Category;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import org.lwjgl.input.Keyboard;
+
+public class DevConfig {
+
+ @Expose
+ @ConfigOption(name = "Repo Auto Update", desc = "Update the repository on every startup.\n" +
+ "§cOnly disable this if you know what you are doing!")
+ @ConfigEditorBoolean
+ public boolean repoAutoUpdate = true;
+
+ @Expose
+ @ConfigOption(name = "Debug", desc = "")
+ @Accordion
+ public DebugConfig debug = new DebugConfig();
+
+ @Expose
+ @ConfigOption(name = "Slot Number", desc = "Show slot number in inventory while pressing this key.")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
+ public int showSlotNumberKey = Keyboard.KEY_NONE;
+
+ @ConfigOption(name = "Parkour Waypoints", desc = "")
+ @Accordion
+ @Expose
+ public WaypointsConfig waypoint = new WaypointsConfig();
+
+ @Expose
+ public Position debugPos = new Position(10, 10, false, true);
+
+ @Expose
+ public Position debugLocationPos = new Position(1, 160, false, true);
+
+ @Expose
+ @Category(name = "Minecraft Console", desc = "Minecraft Console Settings")
+ public MinecraftConsoleConfig minecraftConsoles = new MinecraftConsoleConfig();
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/dev/WaypointsConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/dev/WaypointsConfig.java
new file mode 100644
index 000000000..863f91476
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/dev/WaypointsConfig.java
@@ -0,0 +1,26 @@
+package at.hannibal2.skyhanni.config.features.dev;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import org.lwjgl.input.Keyboard;
+
+public class WaypointsConfig {
+
+ @Expose
+ @ConfigOption(name = "Save Hotkey", desc = "Saves block location to a temporarily parkour and copies everything to your clipboard.")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
+ public int saveKey = Keyboard.KEY_NONE;
+
+ @Expose
+ @ConfigOption(name = "Delete Hotkey", desc = "Deletes the last saved location for when you make a mistake.")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
+ public int deleteKey = Keyboard.KEY_NONE;
+
+ @Expose
+ @ConfigOption(name = "Show Platform Number", desc = "Show the index number over the platform for every parkour.")
+ @ConfigEditorBoolean
+ public boolean showPlatformNumber = false;
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/dev/minecraftconsole/ConsoleFiltersConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/dev/minecraftconsole/ConsoleFiltersConfig.java
new file mode 100644
index 000000000..6f537f300
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/dev/minecraftconsole/ConsoleFiltersConfig.java
@@ -0,0 +1,53 @@
+package at.hannibal2.skyhanni.config.features.dev.minecraftconsole;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class ConsoleFiltersConfig {
+ @Expose
+ @ConfigOption(name = "Filter Chat", desc = "Filter chat messages.")
+ @ConfigEditorBoolean
+ public boolean filterChat = false;
+
+ @Expose
+ @ConfigOption(name = "Filter Grow Buffer", desc = "Filter 'Needed to grow BufferBuilder buffer:'")
+ @ConfigEditorBoolean
+ public boolean filterGrowBuffer = true;
+
+ @Expose
+ @ConfigOption(name = "Filter Sound Error", desc = "Filter 'Unable to play unknown soundEvent'.")
+ @ConfigEditorBoolean
+ public boolean filterUnknownSound = true;
+
+ @Expose
+ @ConfigOption(name = "Filter Scoreboard Errors", desc = "Filter error messages with Scoreboard: removeTeam, createTeam, " +
+ "removeObjective and 'scoreboard team already exists'.")
+ @ConfigEditorBoolean
+ public boolean filterScoreboardErrors = true;
+
+ @Expose
+ @ConfigOption(name = "Filter Particle", desc = "Filter message 'Could not spawn particle effect VILLAGER_HAPPY'.")
+ @ConfigEditorBoolean
+ public boolean filterParticleVillagerHappy = true;
+
+ @Expose
+ @ConfigOption(name = "Filter OptiFine", desc = "Filter OptiFine messages CustomItems and ConnectedTextures during loading.")
+ @ConfigEditorBoolean
+ public boolean filterOptiFine = true;
+
+ @Expose
+ @ConfigOption(name = "Filter AsmHelper Transformer", desc = "Filter messages when AsmHelper is Transforming a class during loading.")
+ @ConfigEditorBoolean
+ public boolean filterAmsHelperTransformer = true;
+
+ @Expose
+ @ConfigOption(name = "Filter Applying AsmWriter", desc = "Filter messages when AsmHelper is applying AsmWriter ModifyWriter.")
+ @ConfigEditorBoolean
+ public boolean filterAsmHelperApplying = true;
+
+ @Expose
+ @ConfigOption(name = "Filter Biome ID Bounds", desc = "Filter message 'Biome ID is out of bounds'.")
+ @ConfigEditorBoolean
+ public boolean filterBiomeIdBounds = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/dev/minecraftconsole/MinecraftConsoleConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/dev/minecraftconsole/MinecraftConsoleConfig.java
new file mode 100644
index 000000000..bdca34590
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/dev/minecraftconsole/MinecraftConsoleConfig.java
@@ -0,0 +1,40 @@
+package at.hannibal2.skyhanni.config.features.dev.minecraftconsole;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class MinecraftConsoleConfig {
+ @Expose
+ @ConfigOption(name = "Unfiltered Debug", desc = "Print the debug information for unfiltered console messages.")
+ @ConfigEditorBoolean
+ public boolean printUnfilteredDebugs = false;
+
+ @Expose
+ @ConfigOption(name = "Unfiltered Debug File", desc = "Print the debug information into log files instead of into the console for unfiltered console messages.")
+ @ConfigEditorBoolean
+ public boolean logUnfilteredFile = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Outside SkyBlock",
+ desc = "Print the debug information for unfiltered console messages outside SkyBlock too."
+ )
+ @ConfigEditorBoolean
+ public boolean printUnfilteredDebugsOutsideSkyBlock = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Log Filtered",
+ desc = "Log the filtered messages into the console."
+ )
+ @ConfigEditorBoolean
+ public boolean printFilteredReason = false;
+
+ @Expose
+ @ConfigOption(name = "Console Filters", desc = "")
+ @Accordion
+ public ConsoleFiltersConfig consoleFilter = new ConsoleFiltersConfig();
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/dungeon/CleanEndConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/dungeon/CleanEndConfig.java
new file mode 100644
index 000000000..4dcdc6d7f
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/dungeon/CleanEndConfig.java
@@ -0,0 +1,21 @@
+package at.hannibal2.skyhanni.config.features.dungeon;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class CleanEndConfig {
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "After the last Dungeon boss has died, all entities and " +
+ "particles are no longer displayed and the music stops playing, but the loot chests are still displayed.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(name = "Ignore Guardians", desc = "Ignore F3 and M3 Guardians from the clean end feature when " +
+ "sneaking. Makes it easier to kill them after the boss died already. Thanks Hypixel.")
+ @ConfigEditorBoolean
+ public boolean F3IgnoreGuardians = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/dungeon/DungeonConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/dungeon/DungeonConfig.java
new file mode 100644
index 000000000..84cba4de7
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/dungeon/DungeonConfig.java
@@ -0,0 +1,102 @@
+package at.hannibal2.skyhanni.config.features.dungeon;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class DungeonConfig {
+
+ @Expose
+ @ConfigOption(name = "Clicked Blocks", desc = "Highlight levers, chests, and Wither Essence when clicked in Dungeons.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlightClickedBlocks = false;
+
+ @Expose
+ @ConfigOption(name = "Milestones Display", desc = "Show the current milestone in Dungeons.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean showMilestonesDisplay = false;
+
+ @Expose
+ public Position showMileStonesDisplayPos = new Position(10, 10, false, true);
+
+ @Expose
+ @ConfigOption(name = "Death Counter Display", desc = "Display the total amount of deaths in the current Dungeon.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean deathCounterDisplay = false;
+
+ @Expose
+ public Position deathCounterPos = new Position(10, 10, false, true);
+
+ @Expose
+ @ConfigOption(name = "Clean End", desc = "")
+ @Accordion
+ public CleanEndConfig cleanEnd = new CleanEndConfig();
+
+ @Expose
+ @ConfigOption(name = "Boss Damage Splash", desc = "Hides damage splashes while inside the boss room (fixes a Skytils feature).")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean damageSplashBoss = false;
+
+ @Expose
+ @ConfigOption(name = "Highlight Deathmites", desc = "Highlight Deathmites in Dungeons in red color.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlightDeathmites = true;
+
+ @Expose
+ @ConfigOption(name = "Highlight Teammates", desc = "Highlight Dungeon teammates with a glowing outline.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlightTeammates = true;
+
+ @Expose
+ @ConfigOption(name = "Object Hider", desc = "Hide various things in Dungeons.")
+ @Accordion
+ public ObjectHiderConfig objectHider = new ObjectHiderConfig();
+
+ @Expose
+ @ConfigOption(name = "Message Filter", desc = "")
+ @Accordion
+ public MessageFilterConfig messageFilter = new MessageFilterConfig();
+
+ @Expose
+ @ConfigOption(name = "Dungeon Copilot", desc = "")
+ @Accordion
+ public DungeonCopilotConfig dungeonCopilot = new DungeonCopilotConfig();
+
+ @Expose
+ @ConfigOption(name = "Party Finder", desc = "")
+ @Accordion
+ public PartyFinderConfig partyFinder = new PartyFinderConfig();
+
+ @Expose
+ @ConfigOption(name = "Tab List", desc = "")
+ @Accordion
+ public TabListConfig tabList = new TabListConfig();
+
+ @Expose
+ @ConfigOption(name = "Livid Finder", desc = "")
+ @Accordion
+ public LividFinderConfig lividFinder = new LividFinderConfig();
+
+ @Expose
+ @ConfigOption(name = "Moving Skeleton Skulls", desc = "Highlight Skeleton Skulls when combining into an " +
+ "orange Skeletor (not useful when combined with feature Hide Skeleton Skull).")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlightSkeletonSkull = true;
+
+ @Expose
+ @ConfigOption(name = "Croesus Chest", desc = "Adds a visual highlight to the Croesus inventory that " +
+ "shows unopened chests.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean croesusUnopenedChestTracker = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/dungeon/DungeonCopilotConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/dungeon/DungeonCopilotConfig.java
new file mode 100644
index 000000000..e285fd951
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/dungeon/DungeonCopilotConfig.java
@@ -0,0 +1,18 @@
+package at.hannibal2.skyhanni.config.features.dungeon;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class DungeonCopilotConfig {
+ @Expose
+ @ConfigOption(name = "Copilot Enabled", desc = "Suggests what to do next in Dungeons.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ public Position pos = new Position(10, 10, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/dungeon/LividFinderConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/dungeon/LividFinderConfig.java
new file mode 100644
index 000000000..4525d1c31
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/dungeon/LividFinderConfig.java
@@ -0,0 +1,20 @@
+package at.hannibal2.skyhanni.config.features.dungeon;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class LividFinderConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Helps find the correct livid in F5 and in M5.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Wrong Livids", desc = "Hide wrong livids entirely.")
+ @ConfigEditorBoolean
+ public boolean hideWrong = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/dungeon/MessageFilterConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/dungeon/MessageFilterConfig.java
new file mode 100644
index 000000000..5455ab0f5
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/dungeon/MessageFilterConfig.java
@@ -0,0 +1,14 @@
+package at.hannibal2.skyhanni.config.features.dungeon;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class MessageFilterConfig {
+ @Expose
+ @ConfigOption(name = "Keys and Doors", desc = "Hides the chat message when picking up keys or opening doors in Dungeons.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean keysAndDoors = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/dungeon/ObjectHiderConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/dungeon/ObjectHiderConfig.java
new file mode 100644
index 000000000..690d09249
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/dungeon/ObjectHiderConfig.java
@@ -0,0 +1,65 @@
+package at.hannibal2.skyhanni.config.features.dungeon;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class ObjectHiderConfig {
+ @Expose
+ @ConfigOption(name = "Hide Superboom TNT", desc = "Hide Superboom TNT laying around in Dungeons.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideSuperboomTNT = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Blessings", desc = "Hide Blessings laying around in Dungeons.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideBlessing = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Revive Stones", desc = "Hide Revive Stones laying around in Dungeons.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideReviveStone = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Premium Flesh", desc = "Hide Premium Flesh laying around in Dungeons.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hidePremiumFlesh = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Journal Entry", desc = "Hide Journal Entry pages laying around in Dungeons.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideJournalEntry = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Skeleton Skull", desc = "Hide Skeleton Skulls laying around in Dungeons.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideSkeletonSkull = true;
+
+ @Expose
+ @ConfigOption(name = "Hide Healer Orbs", desc = "Hides the damage, ability damage and defensive orbs that spawn when the Healer kills mobs.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideHealerOrbs = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Healer Fairy", desc = "Hide the Golden Fairy that follows the Healer in Dungeons.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideHealerFairy = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Hide Soulweaver Skulls",
+ desc = "Hide the annoying soulweaver skulls that float around you if you have the soulweaver gloves equipped.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideSoulweaverSkulls = false;
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/dungeon/PartyFinderConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/dungeon/PartyFinderConfig.java
new file mode 100644
index 000000000..2abb3ec22
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/dungeon/PartyFinderConfig.java
@@ -0,0 +1,44 @@
+package at.hannibal2.skyhanni.config.features.dungeon;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class PartyFinderConfig {
+ @Expose
+ @ConfigOption(name = "Colored Class Level", desc = "Color class levels in Party Finder.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean coloredClassLevel = true;
+
+ @Expose
+ @ConfigOption(name = "Floor Stack Size", desc = "Display the party finder floor as the item stack size.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean floorAsStackSize = true;
+
+ @Expose
+ @ConfigOption(name = "Mark Paid Carries", desc = "Highlight paid carries with a red background to make them easier to find/skip.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean markPaidCarries = true;
+
+ @Expose
+ @ConfigOption(name = "Mark Low Levels", desc = "Highlight groups with players at or below the specified class level to make them easier to find/skip.")
+ @ConfigEditorSlider(minValue = 0, maxValue = 50, minStep = 1)
+ public int markBelowClassLevel = 0;
+
+ @Expose
+ @ConfigOption(name = "Mark Ineligible Groups", desc = "Highlight groups with requirements that you do not meet.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean markIneligibleGroups = true;
+
+ @Expose
+ @ConfigOption(name = "Mark Missing Class", desc = "Highlight groups that don't currently have any members of your selected dungeon class.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean markMissingClass = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/dungeon/TabListConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/dungeon/TabListConfig.java
new file mode 100644
index 000000000..221cf4651
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/dungeon/TabListConfig.java
@@ -0,0 +1,15 @@
+package at.hannibal2.skyhanni.config.features.dungeon;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class TabListConfig {
+
+ @Expose
+ @ConfigOption(name = "Colored Class Level", desc = "Color class levels in tab list. (Also hides rank colors and emblems, because who needs that in Dungeons anyway?)")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean coloredClassLevel = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/event/CenturyConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/event/CenturyConfig.java
new file mode 100644
index 000000000..d5636117d
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/event/CenturyConfig.java
@@ -0,0 +1,24 @@
+package at.hannibal2.skyhanni.config.features.event;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class CenturyConfig {
+
+ @ConfigOption(name = "Enable Active Player Timer", desc = "Show a HUD telling you how much longer you have to wait to be eligible for another free ticket.")
+ @Expose
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enableActiveTimer = true;
+
+ @Expose
+ public Position activeTimerPosition = new Position(100, 100, false, true);
+
+ @ConfigOption(name = "Enable Active Player Alert", desc = "Loudly proclaim when it is time to break some wheat.")
+ @Expose
+ @ConfigEditorBoolean
+ public boolean enableActiveAlert = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/event/CityProjectConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/event/CityProjectConfig.java
new file mode 100644
index 000000000..ec0b853bb
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/event/CityProjectConfig.java
@@ -0,0 +1,31 @@
+package at.hannibal2.skyhanni.config.features.event;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class CityProjectConfig {
+
+ @Expose
+ @ConfigOption(name = "Show Materials", desc = "Show materials needed for contributing to the City Project.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean showMaterials = true;
+
+ @Expose
+ @ConfigOption(name = "Show Ready", desc = "Mark contributions that are ready to participate.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean showReady = true;
+
+ @Expose
+ @ConfigOption(name = "Daily Reminder", desc = "Remind every 24 hours to participate.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean dailyReminder = true;
+
+ @Expose
+ public Position pos = new Position(150, 150, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/event/EventConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/event/EventConfig.java
new file mode 100644
index 000000000..ef27a42bd
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/event/EventConfig.java
@@ -0,0 +1,51 @@
+package at.hannibal2.skyhanni.config.features.event;
+
+import at.hannibal2.skyhanni.config.features.event.bingo.BingoConfig;
+import at.hannibal2.skyhanni.config.features.event.diana.DianaConfig;
+import at.hannibal2.skyhanni.config.features.event.winter.WinterConfig;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.Category;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class EventConfig {
+
+ @Category(name = "Bingo", desc = "Monthly Bingo Event settings")
+ @Expose
+ public BingoConfig bingo = new BingoConfig();
+
+ @Category(name = "Diana", desc = "Diana's Mythological Burrows")
+ @Expose
+ public DianaConfig diana = new DianaConfig();
+
+ @Category(name = "Winter", desc = "Winter Season on Jerry's Island")
+ @Expose
+ public WinterConfig winter = new WinterConfig();
+
+ @ConfigOption(name = "City Project", desc = "")
+ @Accordion
+ @Expose
+ public CityProjectConfig cityProject = new CityProjectConfig();
+
+ @ConfigOption(name = "Mayor Jerry's Jerrypocalypse", desc = "")
+ @Accordion
+ @Expose
+ public MayorJerryConfig jerry = new MayorJerryConfig();
+
+ @ConfigOption(name = "The Great Spook", desc = "")
+ @Accordion
+ @Expose
+ public GreatSpookConfig spook = new GreatSpookConfig();
+
+ // comment in if the event is needed again
+// @ConfigOption(name = "300þ Anniversary Celebration", desc = "Features for the 300þ year of SkyBlock")
+ @Accordion
+ @Expose
+ public CenturyConfig century = new CenturyConfig();
+
+ @Expose
+ @ConfigOption(name = "Main Lobby Halloween Basket Waypoints", desc = "")
+ @Accordion
+ public HalloweenBasketConfig halloweenBasket = new HalloweenBasketConfig();
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/event/GreatSpookConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/event/GreatSpookConfig.java
new file mode 100644
index 000000000..69eb0ae06
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/event/GreatSpookConfig.java
@@ -0,0 +1,44 @@
+package at.hannibal2.skyhanni.config.features.event;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class GreatSpookConfig {
+
+ @Expose
+ @ConfigOption(name = "Primal Fear Timer", desc = "Shows cooldown timer for next primal fear.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean primalFearTimer = false;
+
+ @Expose
+ @ConfigOption(name = "Primal Fear Notify", desc = "Plays a notification sound when the next primal fear can spawn.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean primalFearNotification = false;
+
+ @Expose
+ public Position positionTimer = new Position(20, 20, false, true);
+
+ @Expose
+ @ConfigOption(name = "Fear Stat Display", desc = "Shows your current Fear stat value.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean fearStatDisplay = false;
+
+ @Expose
+ public Position positionFear = new Position(30, 30, false, true);
+
+ @Expose
+ @ConfigOption(name = "IRL Time Left", desc = "Shows the IRL time left before The Great Spook ends.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean greatSpookTimeLeft = false;
+
+ @Expose
+ public Position positionTimeLeft = new Position(40, 40, false, true);
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/event/HalloweenBasketConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/event/HalloweenBasketConfig.java
new file mode 100644
index 000000000..5cb2bfef4
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/event/HalloweenBasketConfig.java
@@ -0,0 +1,25 @@
+package at.hannibal2.skyhanni.config.features.event;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class HalloweenBasketConfig {
+
+ @Expose
+ @ConfigOption(name = "Basket Waypoints", desc = "Show all Halloween Basket waypoints.\nShoutout to §bTobbbb §7for the coordinates.\n(AS OF 2023)")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean allWaypoints = false;
+
+ @Expose
+ @ConfigOption(name = "Entrance Waypoints", desc = "Show helper waypoints to Baskets #23, #24, and #25. Coordinates by §bErymanthus§7.")
+ @ConfigEditorBoolean
+ public boolean allEntranceWaypoints = false;
+
+ @Expose
+ @ConfigOption(name = "Only Closest", desc = "Only show the closest waypoint")
+ @ConfigEditorBoolean
+ public boolean onlyClosest = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/event/MayorJerryConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/event/MayorJerryConfig.java
new file mode 100644
index 000000000..b3afe6c1a
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/event/MayorJerryConfig.java
@@ -0,0 +1,16 @@
+package at.hannibal2.skyhanni.config.features.event;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class MayorJerryConfig {
+
+ @Expose
+ @ConfigOption(name = "Highlight Jerries", desc = "Highlights Jerries found from the Jerrypocalypse perk. Highlight color is based on color of the Jerry.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlightJerries = true;
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/event/bingo/BingoCardConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/event/bingo/BingoCardConfig.java
new file mode 100644
index 000000000..44dd23ec4
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/event/bingo/BingoCardConfig.java
@@ -0,0 +1,45 @@
+package at.hannibal2.skyhanni.config.features.event.bingo;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import io.github.moulberry.moulconfig.observer.Property;
+
+public class BingoCardConfig {
+ @Expose
+ @ConfigOption(name = "Enable", desc = "Displays the Bingo Card.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+ @Expose
+ @ConfigOption(name = "Quick Toggle", desc = "Quickly toggle the Bingo Card or the step helper by sneaking with SkyBlock Menu in hand.")
+ @ConfigEditorBoolean
+ public boolean quickToggle = true;
+
+ @Expose
+ @ConfigOption(name = "Bingo Steps", desc = "Show help with the next step in Bingo instead of the Bingo Card. " +
+ "§cThis feature is in early development. Expect bugs and missing goals.")
+ @ConfigEditorBoolean
+ public boolean stepHelper = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Community Goals", desc = "Hide Community Goals from the Bingo Card display.")
+ @ConfigEditorBoolean
+ public Property<Boolean> hideCommunityGoals = Property.of(false);
+
+ @Expose
+ @ConfigOption(
+ name = "Show Guide",
+ desc = "Show tips and difficulty for bingo goals inside the Bingo Card inventory.\n" +
+ "These tips are made from inspirations and guides from the community,\n" +
+ "aiming to help you to complete the bingo card."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean bingoSplashGuide = true;
+
+ @Expose
+ public Position bingoCardPos = new Position(10, 10, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/event/bingo/BingoConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/event/bingo/BingoConfig.java
new file mode 100644
index 000000000..816f8a194
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/event/bingo/BingoConfig.java
@@ -0,0 +1,30 @@
+package at.hannibal2.skyhanni.config.features.event.bingo;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class BingoConfig {
+
+ @Expose
+ @ConfigOption(name = "Bingo Card", desc = "")
+ @Accordion
+ public BingoCardConfig bingoCard = new BingoCardConfig();
+
+ @Expose
+ @ConfigOption(name = "Compact Chat Messages", desc = "")
+ @Accordion
+ public CompactChatConfig compactChat = new CompactChatConfig();
+
+ @Expose
+ @ConfigOption(name = "Minion Craft Helper", desc = "Show how many more items you need to upgrade the minion in your inventory. Especially useful for Bingo.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean minionCraftHelperEnabled = true;
+
+ @Expose
+ public Position minionCraftHelperPos = new Position(10, 10, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/event/bingo/CompactChatConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/event/bingo/CompactChatConfig.java
new file mode 100644
index 000000000..bbf737646
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/event/bingo/CompactChatConfig.java
@@ -0,0 +1,27 @@
+package at.hannibal2.skyhanni.config.features.event.bingo;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class CompactChatConfig {
+
+ @Expose
+ @ConfigOption(name = "Enable", desc = "Shortens chat messages about skill level ups, collection gains, " +
+ "new area discoveries and SkyBlock level up messages while on Bingo.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(name = "Hide Border", desc = "Hide the border messages before and after the compact level up messages.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideBorder = true;
+
+ @Expose
+ @ConfigOption(name = "Outside Bingo", desc = "Compact the level up chat messages outside of an Bingo profile as well.")
+ @ConfigEditorBoolean
+ public boolean outsideBingo = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/event/diana/DianaConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/event/diana/DianaConfig.java
new file mode 100644
index 000000000..b5d21bade
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/event/diana/DianaConfig.java
@@ -0,0 +1,60 @@
+package at.hannibal2.skyhanni.config.features.event.diana;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import org.lwjgl.input.Keyboard;
+
+public class DianaConfig {
+
+ @Expose
+ @ConfigOption(name = "Soopy Guess", desc = "Uses §eSoopy's Guess Logic §7to find the next burrow. Does not require SoopyV2 or ChatTriggers to be installed.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean burrowsSoopyGuess = false;
+
+ @Expose
+ @ConfigOption(name = "Nearby Detection", desc = "Show burrows near you.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean burrowsNearbyDetection = false;
+
+ @Expose
+ @ConfigOption(name = "Smooth Transition", desc = "Show the way from one burrow to another smoothly.")
+ @ConfigEditorBoolean
+ public boolean burrowSmoothTransition = false;
+
+ @Expose
+ @ConfigOption(name = "Nearest Warp", desc = "Warps to the nearest warp point on the hub, if closer to the next burrow.")
+ @ConfigEditorBoolean
+ public boolean burrowNearestWarp = false;
+
+ @Expose
+ @ConfigOption(name = "Warp Key", desc = "Press this key to warp to nearest burrow waypoint.")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
+ public int keyBindWarp = Keyboard.KEY_NONE;
+
+ @Expose
+ @ConfigOption(name = "Ignored Warps", desc = "")
+ @Accordion
+ public IgnoredWarpsConfig ignoredWarps = new IgnoredWarpsConfig();
+
+ @Expose
+ @ConfigOption(name = "Inquisitor Waypoint Sharing", desc = "")
+ @Accordion
+ public InquisitorSharingConfig inquisitorSharing = new InquisitorSharingConfig();
+
+ @Expose
+ @ConfigOption(name = "Griffin Pet Warning", desc = "Warn when holding an Ancestral Spade if a Griffin Pet is not equipped.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean petWarning = true;
+
+ @Expose
+ @ConfigOption(name = "Always Diana", desc = "Forcefully set the Diana event to be active. This is useful if the auto mayor detection fails.")
+ @ConfigEditorBoolean
+ public boolean alwaysDiana = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/event/diana/IgnoredWarpsConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/event/diana/IgnoredWarpsConfig.java
new file mode 100644
index 000000000..2cef22331
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/event/diana/IgnoredWarpsConfig.java
@@ -0,0 +1,19 @@
+package at.hannibal2.skyhanni.config.features.event.diana;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class IgnoredWarpsConfig {
+
+ @Expose
+ @ConfigOption(name = "Crypt", desc = "Ignore the Crypt warp point (Because it takes a long time to leave).")
+ @ConfigEditorBoolean
+ public boolean crypt = false;
+
+ @Expose
+ @ConfigOption(name = "Wizard", desc = "Ignore the Wizard Tower warp point (Because it is easy to fall into the rift).")
+ @ConfigEditorBoolean
+ public boolean wizard = false;
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/event/diana/InquisitorSharingConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/event/diana/InquisitorSharingConfig.java
new file mode 100644
index 000000000..c719a7101
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/event/diana/InquisitorSharingConfig.java
@@ -0,0 +1,37 @@
+package at.hannibal2.skyhanni.config.features.event.diana;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import org.lwjgl.input.Keyboard;
+
+public class InquisitorSharingConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Shares your Inquisitor and receiving other Inquisitors via Party Chat.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(name = "Focus", desc = "Hide other waypoints when your Party finds an Inquisitor.")
+ @ConfigEditorBoolean
+ public boolean focusInquisitor = false;
+
+ @Expose
+ @ConfigOption(name = "Instant Share", desc = "Share the waypoint as soon as you find an Inquisitor. As an alternative, you can share it only via key press.")
+ @ConfigEditorBoolean
+ public boolean instantShare = true;
+
+ @Expose
+ @ConfigOption(name = "Share Key", desc = "Press this key to share your Inquisitor Waypoint.")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_Y)
+ public int keyBindShare = Keyboard.KEY_Y;
+
+ @Expose
+ @ConfigOption(name = "Show Despawn Time", desc = "Show the time until the shared Inquisitor will despawn.")
+ @ConfigEditorBoolean
+ public boolean showDespawnTime = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/event/winter/FrozenTreasureConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/event/winter/FrozenTreasureConfig.java
new file mode 100644
index 000000000..2b41265a6
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/event/winter/FrozenTreasureConfig.java
@@ -0,0 +1,72 @@
+package at.hannibal2.skyhanni.config.features.event.winter;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDraggableList;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class FrozenTreasureConfig {
+
+ @Expose
+ @ConfigOption(
+ name = "Enabled",
+ desc = "Tracks all of your drops from Frozen Treasure in the Glacial Caves.\n" +
+ "§eIce calculations are an estimate but are relatively accurate."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Text Format",
+ desc = "Drag text to change the appearance of the overlay."
+ )
+ @ConfigEditorDraggableList(
+ exampleText = {
+ "§1§lFrozen Treasure Tracker",
+ "§61,636 Treasures Mined",
+ "§33.2m Total Ice",
+ "§3342,192 Ice/hr",
+ "§81,002 Compact Procs",
+ " ",
+ "§b182 §fWhite Gift",
+ "§b94 §aGreen Gift",
+ "§b17 §9§cRed Gift",
+ "§b328 §fPacked Ice",
+ "§b80 §aEnchanted Ice",
+ "§b4 §9Enchanted Packed Ice",
+ "§b182 §aIce Bait",
+ "§b3 §aGlowy Chum Bait",
+ "§b36 §5Glacial Fragment",
+ "§b6 §fGlacial Talisman",
+ " ",
+ }
+ )
+ public List<Integer> textFormat = new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 14, 15));
+
+ @Expose
+ @ConfigOption(name = "Only in Glacial Cave", desc = "Only shows the overlay while in the Glacial Cave.")
+ @ConfigEditorBoolean
+ public boolean onlyInCave = true;
+
+ @Expose
+ @ConfigOption(name = "Show as Drops", desc = "Multiplies the numbers on the display by the base drop. \n" +
+ "E.g. 3 Ice Bait -> 48 Ice Bait")
+ @ConfigEditorBoolean
+ public boolean showAsDrops = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Chat Messages", desc = "Hides the chat messages from Frozen Treasures.")
+ @ConfigEditorBoolean
+ public boolean hideMessages = false;
+
+ @Expose
+ public Position position = new Position(10, 80, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/event/winter/WinterConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/event/winter/WinterConfig.java
new file mode 100644
index 000000000..8af9472b1
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/event/winter/WinterConfig.java
@@ -0,0 +1,26 @@
+package at.hannibal2.skyhanni.config.features.event.winter;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class WinterConfig {
+
+ @Expose
+ @ConfigOption(name = "Frozen Treasure Tracker", desc = "")
+ @Accordion
+ public FrozenTreasureConfig frozenTreasureTracker = new FrozenTreasureConfig();
+
+ @Expose
+ @ConfigOption(name = "Island Close Time", desc = "While on the Winter Island, show a timer until Jerry's Workshop closes.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean islandCloseTime = true;
+
+ @Expose
+ public Position islandCloseTimePosition = new Position(10, 10, false, true);
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/fishing/BarnTimerConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/fishing/BarnTimerConfig.java
new file mode 100644
index 000000000..eb0577135
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/fishing/BarnTimerConfig.java
@@ -0,0 +1,62 @@
+package at.hannibal2.skyhanni.config.features.fishing;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import org.lwjgl.input.Keyboard;
+
+public class BarnTimerConfig {
+ @Expose
+ @ConfigOption(
+ name = "Barn Fishing Timer",
+ desc = "Show the time and amount of sea creatures while fishing on the barn via hub."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Worm Fishing",
+ desc = "Show the Barn Fishing Timer even for worms or other sea creatures in the Crystal Hollows."
+ )
+ @ConfigEditorBoolean
+ public boolean crystalHollows = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Stranded Fishing",
+ desc = "Show the Barn Fishing Timer even on all the different islands Stranded players can visit."
+ )
+ @ConfigEditorBoolean
+ public boolean forStranded = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Worm Cap Alert",
+ desc = "Alerts you with title and sound if you hit the Worm Sea Creature limit of 60."
+ )
+ @ConfigEditorBoolean
+ public boolean wormLimitAlert = true;
+
+ @Expose
+ @ConfigOption(name = "Reset Timer Hotkey", desc = "Press this key to reset the timer manualy")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
+ public int manualResetTimer = Keyboard.KEY_NONE;
+
+ @Expose
+ @ConfigOption(name = "Fishing Timer Alert", desc = "Change the amount of time in seconds until the timer dings.")
+ @ConfigEditorSlider(
+ minValue = 240,
+ maxValue = 360,
+ minStep = 10
+ )
+ public int alertTime = 330;
+
+ @Expose
+ public Position pos = new Position(10, 10, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/fishing/ChumBucketHiderConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/fishing/ChumBucketHiderConfig.java
new file mode 100644
index 000000000..aaf8a891e
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/fishing/ChumBucketHiderConfig.java
@@ -0,0 +1,26 @@
+package at.hannibal2.skyhanni.config.features.fishing;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import io.github.moulberry.moulconfig.observer.Property;
+
+public class ChumBucketHiderConfig {
+
+ @Expose
+ @ConfigOption(name = "Enable", desc = "Hide the Chum/Chumcap Bucket name tags for other players.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public Property<Boolean> enabled = Property.of(true);
+
+ @Expose
+ @ConfigOption(name = "Hide Bucket", desc = "Hide the Chum/Chumcap Bucket.")
+ @ConfigEditorBoolean
+ public Property<Boolean> hideBucket = Property.of(false);
+
+ @Expose
+ @ConfigOption(name = "Hide Own", desc = "Hides your own Chum/Chumcap Bucket.")
+ @ConfigEditorBoolean
+ public Property<Boolean> hideOwn = Property.of(false);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/fishing/FishedItemNameConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/fishing/FishedItemNameConfig.java
new file mode 100644
index 000000000..51c37e5ea
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/fishing/FishedItemNameConfig.java
@@ -0,0 +1,21 @@
+package at.hannibal2.skyhanni.config.features.fishing;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class FishedItemNameConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Show the fished item name above the item when fishing.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(name = "Show Bait", desc = "Also show the name of the consumed bait.")
+ @ConfigEditorBoolean
+ public boolean showBaits = false;
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/fishing/FishingBaitWarningsConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/fishing/FishingBaitWarningsConfig.java
new file mode 100644
index 000000000..ae2dd9c9b
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/fishing/FishingBaitWarningsConfig.java
@@ -0,0 +1,20 @@
+package at.hannibal2.skyhanni.config.features.fishing;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class FishingBaitWarningsConfig {
+ @Expose
+ @ConfigOption(name = "Bait Change Warning", desc = "Show warning when fishing bait is changed")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean baitChangeWarning = false;
+
+ @Expose
+ @ConfigOption(name = "No Bait Warning", desc = "Show warning when no bait is used")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean noBaitWarning = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/fishing/FishingConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/fishing/FishingConfig.java
new file mode 100644
index 000000000..13ef30f84
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/fishing/FishingConfig.java
@@ -0,0 +1,76 @@
+package at.hannibal2.skyhanni.config.features.fishing;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import at.hannibal2.skyhanni.config.features.fishing.trophyfishing.TrophyFishingConfig;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.Category;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class FishingConfig {
+
+ @Expose
+ @Category(name = "Trophy Fishing", desc = "Trophy Fishing Settings")
+ public TrophyFishingConfig trophyFishing = new TrophyFishingConfig();
+
+ @Expose
+ @ConfigOption(name = "Thunder Spark", desc = "")
+ @Accordion
+ public ThunderSparkConfig thunderSpark = new ThunderSparkConfig();
+
+ @Expose
+ @ConfigOption(name = "Barn Fishing Timer", desc = "")
+ @Accordion
+ public BarnTimerConfig barnTimer = new BarnTimerConfig();
+
+ @Expose
+ @ConfigOption(name = "Chum/Chumcap Bucket Hider", desc = "")
+ @Accordion
+ public ChumBucketHiderConfig chumBucketHider = new ChumBucketHiderConfig();
+
+ @Expose
+ @ConfigOption(name = "Fished Item Name", desc = "")
+ @Accordion
+ public FishedItemNameConfig fishedItemName = new FishedItemNameConfig();
+
+ @Expose
+ @ConfigOption(name = "Fishing Hook Display", desc = "")
+ @Accordion
+ public FishingHookDisplayConfig fishingHookDisplay = new FishingHookDisplayConfig();
+
+ @Expose
+ @ConfigOption(name = "Bait Warnings", desc = "")
+ @Accordion
+ public FishingBaitWarningsConfig fishingBaitWarnings = new FishingBaitWarningsConfig();
+
+ @Expose
+ @ConfigOption(name = "Rare Sea Creatures", desc = "")
+ @Accordion
+ public RareCatchesConfig rareCatches = new RareCatchesConfig();
+
+ @Expose
+ @ConfigOption(
+ name = "Shark Fish Counter",
+ desc = "Counts how many Sharks have been caught."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean sharkFishCounter = false;
+
+ @Expose
+ public Position sharkFishCounterPos = new Position(10, 10, false, true);
+
+ @Expose
+ @ConfigOption(name = "Shorten Fishing Message", desc = "Shortens the chat message that says what type of Sea Creature you have fished.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean shortenFishingMessage = false;
+
+ @Expose
+ @ConfigOption(name = "Compact Double Hook", desc = "Adds Double Hook to the Sea Creature chat message instead of in a previous line.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean compactDoubleHook = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/fishing/FishingHookDisplayConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/fishing/FishingHookDisplayConfig.java
new file mode 100644
index 000000000..e2cfdfa05
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/fishing/FishingHookDisplayConfig.java
@@ -0,0 +1,27 @@
+package at.hannibal2.skyhanni.config.features.fishing;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class FishingHookDisplayConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Display the Hypixel timer until the fishing hook can be pulled out of the water/lava, only bigger and on your screen.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Hide Armor Stand",
+ desc = "Hide the original armor stand from Hypixel when the SkyHanni display is enabled."
+ )
+ @ConfigEditorBoolean
+ public boolean hideArmorStand = true;
+
+ @Expose
+ public Position position = new Position(460, -240, 3.4f);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/fishing/RareCatchesConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/fishing/RareCatchesConfig.java
new file mode 100644
index 000000000..b89347c65
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/fishing/RareCatchesConfig.java
@@ -0,0 +1,32 @@
+package at.hannibal2.skyhanni.config.features.fishing;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class RareCatchesConfig {
+
+ @Expose
+ @ConfigOption(name = "Alert (Own Sea Creatures)", desc = "Show an alert on screen when you catch a rare sea creature.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean alertOwnCatches = true;
+
+ @Expose
+ @ConfigOption(name = "Alert (Other Sea Creatures)", desc = "Show an alert on screen when other players nearby catch a rare sea creature.")
+ @ConfigEditorBoolean
+ public boolean alertOtherCatches = false;
+
+ @Expose
+ @ConfigOption(name = "Play Sound Alert", desc = "Play a sound effect when rare sea creature alerts are displayed.")
+ @ConfigEditorBoolean
+ public boolean playSound = true;
+
+ @Expose
+ @ConfigOption(name = "Highlight", desc = "Highlight nearby rare sea creatures.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlight = false;
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/fishing/ThunderSparkConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/fishing/ThunderSparkConfig.java
new file mode 100644
index 000000000..78e75f6c4
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/fishing/ThunderSparkConfig.java
@@ -0,0 +1,20 @@
+package at.hannibal2.skyhanni.config.features.fishing;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class ThunderSparkConfig {
+ @Expose
+ @ConfigOption(name = "Thunder Spark Highlight", desc = "Highlight Thunder Sparks after killing a Thunder.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlight = false;
+
+ @Expose
+ @ConfigOption(name = "Thunder Spark Color", desc = "Color of the Thunder Sparks.")
+ @ConfigEditorColour
+ public String color = "0:255:255:255:255";
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/fishing/trophyfishing/ChatMessagesConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/fishing/trophyfishing/ChatMessagesConfig.java
new file mode 100644
index 000000000..f19fc0d86
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/fishing/trophyfishing/ChatMessagesConfig.java
@@ -0,0 +1,56 @@
+package at.hannibal2.skyhanni.config.features.fishing.trophyfishing;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class ChatMessagesConfig {
+
+ @Expose
+ @ConfigOption(
+ name = "Trophy Counter",
+ desc = "Counts Trophy messages from chat and tells you how many you have found."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Trophy Counter Design",
+ desc = "§fStyle 1: §72. §6§lGOLD §5Moldfin\n" +
+ "§fStyle 2: §bYou caught a §5Moldfin §6§lGOLD§b. §7(2)\n" +
+ "§fStyle 3: §bYou caught your 2nd §6§lGOLD §5Moldfin§b."
+ )
+ @ConfigEditorDropdown(values = {"Style 1", "Style 2", "Style 3"})
+ public int design = 0;
+
+ @Expose
+ @ConfigOption(name = "Show Total Amount", desc = "Show total amount of all rarities at the end of the chat message.")
+ @ConfigEditorBoolean
+ public boolean totalAmount = false;
+
+ @Expose
+ @ConfigOption(name = "Trophy Fish Info", desc = "Show information and stats about a Trophy Fish when hovering over a catch message in chat.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean tooltip = true;
+
+ @Expose
+ @ConfigOption(name = "Hide Repeated Catches", desc = "Delete past catches of the same Trophy Fish from chat.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean duplicateHider = false;
+
+ @Expose
+ @ConfigOption(name = "Bronze Duplicates", desc = "Hide duplicate messages for bronze Trophy Fishes from chat.")
+ @ConfigEditorBoolean
+ public boolean bronzeHider = false;
+
+ @Expose
+ @ConfigOption(name = "Silver Duplicates", desc = "Hide duplicate messages for silver Trophy Fishes from chat.")
+ @ConfigEditorBoolean
+ public boolean silverHider = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/fishing/trophyfishing/TrophyFishingConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/fishing/trophyfishing/TrophyFishingConfig.java
new file mode 100644
index 000000000..ce774a72f
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/fishing/trophyfishing/TrophyFishingConfig.java
@@ -0,0 +1,27 @@
+package at.hannibal2.skyhanni.config.features.fishing.trophyfishing;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class TrophyFishingConfig {
+
+ @Expose
+ @ConfigOption(name = "Trophy Fishing Chat Messages", desc = "")
+ @Accordion
+ public ChatMessagesConfig chatMessages = new ChatMessagesConfig();
+
+ @Expose
+ @ConfigOption(name = "Fillet Tooltip", desc = "Show fillet value of Trophy Fish in tooltip.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean filletTooltip = true;
+
+ @Expose
+ @ConfigOption(name = "Odger Waypoint", desc = "Show the Odger waypoint when Trophy Fishes are in the inventory and no lava rod in hand.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean odgerLocation = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/AnitaShopConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/AnitaShopConfig.java
new file mode 100644
index 000000000..f45f8cbc1
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/AnitaShopConfig.java
@@ -0,0 +1,30 @@
+package at.hannibal2.skyhanni.config.features.garden;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class AnitaShopConfig {
+ @Expose
+ @ConfigOption(
+ name = "Medal Prices",
+ desc = "Helps to identify profitable items to buy at the Anita item shop " +
+ "and potential profit from selling the item in the Auction House."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean medalProfitEnabled = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Extra Farming Fortune",
+ desc = "Show current tier and cost to max out in the item tooltip.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean extraFarmingFortune = true;
+
+ @Expose
+ public Position medalProfitPos = new Position(206, 158, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/CropStartLocationConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/CropStartLocationConfig.java
new file mode 100644
index 000000000..33a797bcb
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/CropStartLocationConfig.java
@@ -0,0 +1,16 @@
+package at.hannibal2.skyhanni.config.features.garden;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class CropStartLocationConfig {
+
+ @Expose
+ @ConfigOption(name = "Enable", desc = "Show the start waypoint for your farm with the currently holding tool.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/DicerCounterConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/DicerCounterConfig.java
new file mode 100644
index 000000000..63087dab1
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/DicerCounterConfig.java
@@ -0,0 +1,24 @@
+package at.hannibal2.skyhanni.config.features.garden;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class DicerCounterConfig {
+ @Expose
+ @ConfigOption(name = "RNG Drop Counter", desc = "Count RNG drops for Melon Dicer and Pumpkin Dicer.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean display = true;
+
+ @Expose
+ @ConfigOption(name = "Hide Chat", desc = "Hide the chat message when dropping a RNG Dicer drop.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideChat = false;
+
+ @Expose
+ public Position pos = new Position(16, -232, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/EliteFarmingWeightConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/EliteFarmingWeightConfig.java
new file mode 100644
index 000000000..c192ac763
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/EliteFarmingWeightConfig.java
@@ -0,0 +1,53 @@
+package at.hannibal2.skyhanni.config.features.garden;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorText;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class EliteFarmingWeightConfig {
+ @Expose
+ @ConfigOption(name = "Display", desc = "Display your farming weight on screen. " +
+ "The calculation and API is provided by The Elite SkyBlock farmers. " +
+ "See §ehttps://elitebot.dev/info §7for more info.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean display = true;
+
+ @Expose
+ public Position pos = new Position(180, 10, false, true);
+
+ @Expose
+ @ConfigOption(name = "Leaderboard Ranking", desc = "Show your position in the farming weight leaderboard. " +
+ "Only if your farming weight is high enough! Updates every 10 minutes.")
+ @ConfigEditorBoolean
+ public boolean leaderboard = true;
+
+ @Expose
+ @ConfigOption(name = "Overtake ETA", desc = "Show a timer estimating when you'll move up a spot in the leaderboard! " +
+ "Will show an ETA to rank #10,000 if you're not on the leaderboard yet.")
+ @ConfigEditorBoolean
+ public boolean overtakeETA = false;
+
+ @Expose
+ @ConfigOption(name = "Offscreen Drop Message", desc = "Show a chat message when joining Garden how many spots you have dropped since last Garden join.")
+ @ConfigEditorBoolean
+ public boolean offScreenDropMessage = true;
+
+ @Expose
+ @ConfigOption(name = "Always ETA", desc = "Show the Overtake ETA always, even when not farming at the moment.")
+ @ConfigEditorBoolean
+ public boolean overtakeETAAlways = true;
+
+ @Expose
+ @ConfigOption(name = "ETA Goal", desc = "Override the Overtake ETA to show when you'll reach the specified rank (if not there yet). (Default: \"10,000\")")
+ @ConfigEditorText
+ public String ETAGoalRank = "10000";
+
+ @Expose
+ @ConfigOption(name = "Show below 200", desc = "Show the farming weight data even if you are below 200 weight.")
+ @ConfigEditorBoolean
+ public boolean ignoreLow = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/FarmingArmorDropsConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/FarmingArmorDropsConfig.java
new file mode 100644
index 000000000..64d04f932
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/FarmingArmorDropsConfig.java
@@ -0,0 +1,24 @@
+package at.hannibal2.skyhanni.config.features.garden;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class FarmingArmorDropsConfig {
+ @Expose
+ @ConfigOption(name = "Show Counter", desc = "Count all §9Cropie§7, §5Squash §7and §6Fermento §7dropped.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(name = "Hide Chat", desc = "Hide the chat message when receiving a farming armor drop.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideChat = false;
+
+ @Expose
+ public Position pos = new Position(16, -232, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/FarmingFortuneConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/FarmingFortuneConfig.java
new file mode 100644
index 000000000..aadf97fee
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/FarmingFortuneConfig.java
@@ -0,0 +1,36 @@
+package at.hannibal2.skyhanni.config.features.garden;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.commands.Commands;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorButton;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class FarmingFortuneConfig {
+ @Expose
+ @ConfigOption(
+ name = "FF Display",
+ desc = "Displays the true Farming Fortune for the current crop, including all crop-specific and hidden bonuses."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean display = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Show As Drop Multiplier",
+ desc = "Adds 100 to the displayed Farming Fortune so that it represents a drop multiplier rather than" +
+ " the chance for bonus drops. "
+ )
+ @ConfigEditorBoolean
+ public boolean dropMultiplier = true;
+
+ @ConfigOption(name = "Farming Fortune Guide", desc = "Opens a guide that breaks down your Farming Fortune.\n§eCommand: /ff")
+ @ConfigEditorButton(buttonText = "Open")
+ public Runnable open = Commands::openFortuneGuide;
+
+ @Expose
+ public Position pos = new Position(5, -180, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/GardenConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/GardenConfig.java
new file mode 100644
index 000000000..65a416dca
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/GardenConfig.java
@@ -0,0 +1,205 @@
+package at.hannibal2.skyhanni.config.features.garden;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import at.hannibal2.skyhanni.config.features.garden.composter.ComposterConfig;
+import at.hannibal2.skyhanni.config.features.garden.cropmilestones.CropMilestonesConfig;
+import at.hannibal2.skyhanni.config.features.garden.optimalspeed.OptimalSpeedConfig;
+import at.hannibal2.skyhanni.config.features.garden.visitor.VisitorConfig;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.Category;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class GardenConfig {
+
+ @Expose
+ @ConfigOption(name = "SkyMart", desc = "")
+ @Accordion
+ public SkyMartConfig skyMart = new SkyMartConfig();
+
+ @Expose
+ @Category(name = "Visitor", desc = "Visitor Settings")
+ public VisitorConfig visitors = new VisitorConfig();
+
+ @Expose
+ @ConfigOption(name = "Numbers", desc = "")
+ @Accordion
+ public NumbersConfig number = new NumbersConfig();
+
+ @Expose
+ @Category(name = "Crop Milestones", desc = "Crop Milestones Settings")
+ public CropMilestonesConfig cropMilestones = new CropMilestonesConfig();
+
+ // TODO moulconfig runnable support
+ @Expose
+ @ConfigOption(name = "Custom Keybinds", desc = "")
+ @Accordion
+ public KeyBindConfig keyBind = new KeyBindConfig();
+
+ @Expose
+ @Category(name = "Optimal Speed", desc = "Optimal Speed Settings")
+ public OptimalSpeedConfig optimalSpeeds = new OptimalSpeedConfig();
+
+ @Expose
+ @ConfigOption(name = "Garden Level", desc = "")
+ @Accordion
+ public GardenLevelConfig gardenLevels = new GardenLevelConfig();
+
+ @Expose
+ @ConfigOption(name = "Farming Weight", desc = "")
+ @Accordion
+ public EliteFarmingWeightConfig eliteFarmingWeights = new EliteFarmingWeightConfig();
+
+ @Expose
+ @ConfigOption(name = "Dicer Counter", desc = "")
+ @Accordion
+ public DicerCounterConfig dicerCounters = new DicerCounterConfig();
+
+ @Expose
+ @ConfigOption(name = "Money per Hour", desc = "")
+ @Accordion
+ public MoneyPerHourConfig moneyPerHours = new MoneyPerHourConfig();
+
+ @Expose
+ @ConfigOption(name = "Next Jacob's Contest", desc = "")
+ @Accordion
+ public NextJacobContestConfig nextJacobContests = new NextJacobContestConfig();
+
+ @Expose
+ @ConfigOption(name = "Farming Armor Drops", desc = "")
+
+ @Accordion
+ public FarmingArmorDropsConfig farmingArmorDrop = new FarmingArmorDropsConfig();
+
+ @Expose
+ @ConfigOption(name = "Anita Shop", desc = "")
+ @Accordion
+ public AnitaShopConfig anitaShop = new AnitaShopConfig();
+
+ @Expose
+ @Category(name = "Composter", desc = "Composter Settings")
+ public ComposterConfig composters = new ComposterConfig();
+
+ @Expose
+ @ConfigOption(name = "Farming Fortune Display", desc = "")
+ @Accordion
+ public FarmingFortuneConfig farmingFortunes = new FarmingFortuneConfig();
+
+ @Expose
+ @ConfigOption(name = "Tooltip Tweaks", desc = "")
+ @Accordion
+ public TooltipTweaksConfig tooltipTweak = new TooltipTweaksConfig();
+
+ @Expose
+ @ConfigOption(name = "Yaw and Pitch", desc = "")
+ @Accordion
+ public YawPitchDisplayConfig yawPitchDisplay = new YawPitchDisplayConfig();
+
+ @Expose
+ @ConfigOption(name = "Crop Start Location", desc = "")
+ @Accordion
+ public CropStartLocationConfig cropStartLocation = new CropStartLocationConfig();
+
+ @Expose
+ @ConfigOption(name = "Garden Plot Icon", desc = "")
+ @Accordion
+ public PlotIconConfig plotIcon = new PlotIconConfig();
+
+ @Expose
+ @ConfigOption(name = "Plot Price", desc = "Show the price of the plot in coins when inside the Configure Plots inventory.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean plotPrice = true;
+
+ @Expose
+ @ConfigOption(name = "Desk in Menu", desc = "Show a Desk button in the SkyBlock Menu. Opens the /desk command on click.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean deskInSkyBlockMenu = true;
+
+ @Expose
+ @ConfigOption(name = "Fungi Cutter Warning", desc = "Warn when breaking mushroom with the wrong Fungi Cutter mode.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean fungiCutterWarn = true;
+
+ @Expose
+ @ConfigOption(name = "Burrowing Spores", desc = "Show a notification when a Burrowing Spores spawns while farming mushrooms.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean burrowingSporesNotification = true;
+
+ @Expose
+ @ConfigOption(name = "Wild Strawberry", desc = "Show a notification when a Wild Strawberry Dye drops while farming.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean wildStrawberryDyeNotification = true;
+
+ @Expose
+ @ConfigOption(
+ name = "FF for Contest",
+ desc = "Show the minimum needed Farming Fortune for reaching each medal in Jacob's Farming Contest inventory."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean farmingFortuneForContest = true;
+
+ @Expose
+ public Position farmingFortuneForContestPos = new Position(180, 156, false, true);
+
+ @Expose
+ @ConfigOption(
+ name = "Contest Time Needed",
+ desc = "Show the time and missing FF for every crop inside Jacob's Farming Contest inventory."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean jacobContextTimes = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Custom BPS",
+ desc = "Use custom Blocks per Second value in some GUIs instead of the real one."
+ )
+ @ConfigEditorBoolean
+ public boolean jacobContestCustomBps = true;
+
+ // TODO moulconfig runnable support
+ @Expose
+ @ConfigOption(name = "Custom BPS Value", desc = "Set a custom Blocks per Second value.")
+ @ConfigEditorSlider(
+ minValue = 15,
+ maxValue = 20,
+ minStep = 0.1f
+ )
+ public double jacobContestCustomBpsValue = 19.9;
+
+ @Expose
+ public Position jacobContextTimesPos = new Position(-359, 149, false, true);
+
+ @Expose
+ @ConfigOption(
+ name = "Contest Summary",
+ desc = "Show the average Blocks Per Second and blocks clicked at the end of a Jacob Farming Contest in chat."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean jacobContestSummary = true;
+
+ @Expose
+ @ConfigOption(name = "Always Finnegan", desc = "Forcefully set the Finnegan Farming Simulator perk to be active. This is useful if the auto mayor detection fails.")
+ @ConfigEditorBoolean
+ public boolean forcefullyEnabledAlwaysFinnegan = false;
+
+ @Expose
+ public Position cropSpeedMeterPos = new Position(278, -236, false, true);
+
+ @Expose
+ @ConfigOption(name = "Enable Plot Borders", desc = "Enable the use of F3 + G hotkey to show Garden plot borders. Similar to how later Minecraft version render chunk borders.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean plotBorders = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/GardenLevelConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/GardenLevelConfig.java
new file mode 100644
index 000000000..07f330dcd
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/GardenLevelConfig.java
@@ -0,0 +1,18 @@
+package at.hannibal2.skyhanni.config.features.garden;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class GardenLevelConfig {
+ @Expose
+ @ConfigOption(name = "Display", desc = "Show the current Garden level and progress to the next level.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean display = true;
+
+ @Expose
+ public Position pos = new Position(390, 40, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/KeyBindConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/KeyBindConfig.java
new file mode 100644
index 000000000..c016cac7c
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/KeyBindConfig.java
@@ -0,0 +1,87 @@
+package at.hannibal2.skyhanni.config.features.garden;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorButton;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import net.minecraft.client.Minecraft;
+import org.lwjgl.input.Keyboard;
+
+public class KeyBindConfig {
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Use custom keybinds while holding a farming tool or Daedalus Axe in the hand.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @ConfigOption(name = "Disable All", desc = "Disable all keys.")
+ @ConfigEditorButton(buttonText = "Disable")
+ public Runnable presetDisable = () -> {
+ attack = Keyboard.KEY_NONE;
+ useItem = Keyboard.KEY_NONE;
+ left = Keyboard.KEY_NONE;
+ right = Keyboard.KEY_NONE;
+ forward = Keyboard.KEY_NONE;
+ back = Keyboard.KEY_NONE;
+ jump = Keyboard.KEY_NONE;
+ sneak = Keyboard.KEY_NONE;
+
+ Minecraft.getMinecraft().thePlayer.closeScreen();
+ };
+
+ @ConfigOption(name = "Set Default", desc = "Reset all keys to default.")
+ @ConfigEditorButton(buttonText = "Default")
+ public Runnable presetDefault = () -> {
+ attack = -100;
+ useItem = -99;
+ left = Keyboard.KEY_A;
+ right = Keyboard.KEY_D;
+ forward = Keyboard.KEY_W;
+ back = Keyboard.KEY_S;
+ jump = Keyboard.KEY_SPACE;
+ sneak = Keyboard.KEY_LSHIFT;
+ Minecraft.getMinecraft().thePlayer.closeScreen();
+ };
+
+ @Expose
+ @ConfigOption(name = "Attack", desc = "")
+ @ConfigEditorKeybind(defaultKey = -100)
+ public int attack = -100;
+
+ @Expose
+ @ConfigOption(name = "Use Item", desc = "")
+ @ConfigEditorKeybind(defaultKey = -99)
+ public int useItem = -99;
+
+ @Expose
+ @ConfigOption(name = "Move Left", desc = "")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_A)
+ public int left = Keyboard.KEY_A;
+
+ @Expose
+ @ConfigOption(name = "Move Right", desc = "")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_D)
+ public int right = Keyboard.KEY_D;
+
+ @Expose
+ @ConfigOption(name = "Move Forward", desc = "")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_W)
+ public int forward = Keyboard.KEY_W;
+
+ @Expose
+ @ConfigOption(name = "Move Back", desc = "")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_S)
+ public int back = Keyboard.KEY_S;
+
+ @Expose
+ @ConfigOption(name = "Jump", desc = "")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_SPACE)
+ public int jump = Keyboard.KEY_SPACE;
+
+ @Expose
+ @ConfigOption(name = "Sneak", desc = "")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_LSHIFT)
+ public int sneak = Keyboard.KEY_LSHIFT;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/MoneyPerHourConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/MoneyPerHourConfig.java
new file mode 100644
index 000000000..5606e5e3d
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/MoneyPerHourConfig.java
@@ -0,0 +1,126 @@
+package at.hannibal2.skyhanni.config.features.garden;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDraggableList;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class MoneyPerHourConfig {
+ @Expose
+ @ConfigOption(name = "Show Money per Hour",
+ desc = "Displays the money per hour YOU get with YOUR crop/minute value when selling the item to bazaar. " +
+ "Supports Bountiful, Mushroom Cow Perk, Armor Crops and Dicer Drops. Their toggles are below.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean display = true;
+
+ // TODO moulconfig runnable support
+ @Expose
+ @ConfigOption(name = "Only Show Top", desc = "Only show the best # items.")
+ @ConfigEditorSlider(
+ minValue = 1,
+ maxValue = 25,
+ minStep = 1
+ )
+ public int showOnlyBest = 5;
+
+ @Expose
+ @ConfigOption(name = "Extend Top List", desc = "Add current crop to the list if its lower ranked than the set limit by extending the list.")
+ @ConfigEditorBoolean
+ public boolean showCurrent = true;
+
+ // TODO moulconfig runnable support
+ @Expose
+ @ConfigOption(
+ name = "Always On",
+ desc = "Always show the money/hour Display while on the garden.")
+ @ConfigEditorBoolean
+ public boolean alwaysOn = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Compact Mode",
+ desc = "Hide the item name and the position number.")
+ @ConfigEditorBoolean
+ public boolean compact = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Compact Price",
+ desc = "Show the price more compact.")
+ @ConfigEditorBoolean
+ public boolean compactPrice = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Use Custom",
+ desc = "Use the custom format below instead of classic ➜ §eSell Offer §7and other profiles ➜ §eNPC Price.")
+ @ConfigEditorBoolean
+ public boolean useCustomFormat = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Custom Format",
+ desc = "Set what prices to show")
+ @ConfigEditorDraggableList(
+ exampleText = {
+ "§eSell Offer",
+ "§eInstant Sell",
+ "§eNPC Price"
+ },
+ requireNonEmpty = true
+ )
+ public List<Integer> customFormat = new ArrayList<>(Arrays.asList(0, 1, 2));
+
+ @Expose
+ @ConfigOption(
+ name = "Merge Seeds",
+ desc = "Merge the seeds price with the wheat price.")
+ @ConfigEditorBoolean
+ public boolean mergeSeeds = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Include Bountiful",
+ desc = "Includes the coins from Bountiful in the calculation.")
+ @ConfigEditorBoolean
+ public boolean bountiful = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Include Mooshroom Cow",
+ desc = "Includes the coins you get from selling the mushrooms from your Mooshroom Cow pet.")
+ @ConfigEditorBoolean
+ public boolean mooshroom = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Include Armor Drops",
+ desc = "Includes the average coins/hr from your armor.")
+ @ConfigEditorBoolean
+ public boolean armor = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Include Dicer Drops",
+ desc = "Includes the average coins/hr from your melon or pumpkin dicer.")
+ @ConfigEditorBoolean
+ public boolean dicer = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Hide Title",
+ desc = "Hides the first line of 'Money Per Hour' entirely.")
+ @ConfigEditorBoolean
+ public boolean hideTitle = false;
+
+ @Expose
+ public Position pos = new Position(-330, 170, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/NextJacobContestConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/NextJacobContestConfig.java
new file mode 100644
index 000000000..f9b0f80e4
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/NextJacobContestConfig.java
@@ -0,0 +1,59 @@
+package at.hannibal2.skyhanni.config.features.garden;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class NextJacobContestConfig {
+ @Expose
+ @ConfigOption(name = "Show Jacob's Contest", desc = "Show the current or next Jacob's farming contest time and crops.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean display = true;
+
+ @Expose
+ @ConfigOption(name = "Outside Garden", desc = "Show the timer not only in Garden but everywhere in SkyBlock.")
+ @ConfigEditorBoolean
+ public boolean everywhere = false;
+
+ @Expose
+ @ConfigOption(name = "In Other Guis", desc = "Mark the current or next Farming Contest crops in other farming GUIs as underlined.")
+ @ConfigEditorBoolean
+ public boolean otherGuis = false;
+
+ @Expose
+ @ConfigOption(name = "Fetch Contests", desc = "Automatically fetch Contests from elitebot.dev for the current year if they're uploaded already.")
+ @ConfigEditorBoolean
+ public boolean fetchAutomatically = true;
+
+ @Expose
+ @ConfigOption(name = "Share Contests", desc = "Share the list of upcoming Contests to elitebot.dev for everyone else to then fetch automatically.")
+ @ConfigEditorDropdown(values = {"Ask When Needed", "Share Automatically", "Disabled"})
+ public int shareAutomatically = 0;
+
+ @Expose
+ @ConfigOption(name = "Warning", desc = "Show a warning shortly before a new Jacob's Contest starts.")
+ @ConfigEditorBoolean
+ public boolean warn = false;
+
+ @Expose
+ @ConfigOption(name = "Warning Time", desc = "Set the warning time in seconds before a Jacob's Contest begins.")
+ @ConfigEditorSlider(
+ minValue = 10,
+ maxValue = 60 * 5,
+ minStep = 1
+ )
+ public int warnTime = 60 * 2;
+
+ @Expose
+ @ConfigOption(name = "Popup Warning", desc = "Opens a popup when the warning time is reached and Minecraft is not in focus.")
+ @ConfigEditorBoolean
+ public boolean warnPopup = false;
+
+ @Expose
+ public Position pos = new Position(-200, 10, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/NumbersConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/NumbersConfig.java
new file mode 100644
index 000000000..106af45c8
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/NumbersConfig.java
@@ -0,0 +1,32 @@
+package at.hannibal2.skyhanni.config.features.garden;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class NumbersConfig {
+ @Expose
+ @ConfigOption(name = "Crop Milestone", desc = "Show the number of crop milestones in the inventory.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean cropMilestone = true;
+
+ @Expose
+ @ConfigOption(name = "Average Milestone", desc = "Show the average crop milestone in the crop milestone inventory.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean averageCropMilestone = true;
+
+ @Expose
+ @ConfigOption(name = "Crop Upgrades", desc = "Show the number of upgrades in the crop upgrades inventory.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean cropUpgrades = true;
+
+ @Expose
+ @ConfigOption(name = "Composter Upgrades", desc = "Show the number of upgrades in the Composter upgrades inventory.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean composterUpgrades = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/PlotIconConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/PlotIconConfig.java
new file mode 100644
index 000000000..cb47862a2
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/PlotIconConfig.java
@@ -0,0 +1,24 @@
+package at.hannibal2.skyhanni.config.features.garden;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.features.garden.inventory.GardenPlotIcon;
+import at.hannibal2.skyhanni.utils.LorenzUtils;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorButton;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class PlotIconConfig {
+ @Expose
+ @ConfigOption(name = "Enable", desc = "Enable icon replacement in the Configure Plots menu.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @ConfigOption(name = "Hard Reset", desc = "Reset every slot to its original item.")
+ @ConfigEditorButton(buttonText = "Reset")
+ public Runnable hardReset = () -> {
+ GardenPlotIcon.INSTANCE.setHardReset(true);
+ LorenzUtils.INSTANCE.sendCommandToServer("desk");
+ };
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/SkyMartConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/SkyMartConfig.java
new file mode 100644
index 000000000..7dfd94b34
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/SkyMartConfig.java
@@ -0,0 +1,23 @@
+package at.hannibal2.skyhanni.config.features.garden;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class SkyMartConfig {
+ @Expose
+ @ConfigOption(name = "Copper Price", desc = "Show copper to coin prices inside the SkyMart inventory.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean copperPrice = true;
+
+ @Expose
+ @ConfigOption(name = "Advanced Stats", desc = "Show the BIN price and copper price for every item.")
+ @ConfigEditorBoolean
+ public boolean copperPriceAdvancedStats = false;
+
+ @Expose
+ public Position copperPricePos = new Position(211, 132, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/TooltipTweaksConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/TooltipTweaksConfig.java
new file mode 100644
index 000000000..560fcaaa7
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/TooltipTweaksConfig.java
@@ -0,0 +1,47 @@
+package at.hannibal2.skyhanni.config.features.garden;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import org.lwjgl.input.Keyboard;
+
+public class TooltipTweaksConfig {
+ @Expose
+ @ConfigOption(
+ name = "Compact Descriptions",
+ desc = "Hides redundant parts of reforge descriptions, generic counter description, and Farmhand perk explanation."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean compactToolTooltips = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Breakdown Hotkey",
+ desc = "When the keybind is pressed, show a breakdown of all fortune sources on a tool."
+ )
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_LSHIFT)
+ public int fortuneTooltipKeybind = Keyboard.KEY_LSHIFT;
+
+ @Expose
+ @ConfigOption(
+ name = "Tooltip Format",
+ desc = "Show crop-specific Farming Fortune in tooltip.\n" +
+ "§fShow: §7Crop-specific Fortune indicated as §6[+196]\n" +
+ "§fReplace: §7Edits the total Fortune to include crop-specific Fortune."
+ )
+ @ConfigEditorDropdown(values = {"Default", "Show", "Replace"})
+ public int cropTooltipFortune = 1;
+
+ @Expose
+ @ConfigOption(
+ name = "Total Crop Milestone",
+ desc = "Shows the progress bar till maxed crop milestone in the crop milestone inventory."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean cropMilestoneTotalProgress = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/YawPitchDisplayConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/YawPitchDisplayConfig.java
new file mode 100644
index 000000000..dd7997fba
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/YawPitchDisplayConfig.java
@@ -0,0 +1,64 @@
+package at.hannibal2.skyhanni.config.features.garden;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class YawPitchDisplayConfig {
+
+ @Expose
+ @ConfigOption(name = "Enable", desc = "Displays yaw and pitch while holding a farming tool. Automatically fades out if there is no movement.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(name = "Yaw Precision", desc = "Yaw precision up to specified decimal.")
+ @ConfigEditorSlider(
+ minValue = 1,
+ maxValue = 10,
+ minStep = 1
+ )
+ public int yawPrecision = 4;
+
+ @Expose
+ @ConfigOption(name = "Pitch Precision", desc = "Pitch precision up to specified decimal.")
+ @ConfigEditorSlider(
+ minValue = 1,
+ maxValue = 10,
+ minStep = 1
+ )
+ public int pitchPrecision = 4;
+
+ @Expose
+ @ConfigOption(name = "Display Timeout", desc = "Duration in seconds for which the overlay is being displayed after moving.")
+ @ConfigEditorSlider(
+ minValue = 1,
+ maxValue = 20,
+ minStep = 1
+ )
+ public int timeout = 5;
+
+ @Expose
+ @ConfigOption(name = "Show Without Tool", desc = "Does not require you to hold a tool for the overlay to show.")
+ @ConfigEditorBoolean
+ public boolean showWithoutTool = false;
+
+ @Expose
+ @ConfigOption(name = "Show Outside Garden", desc = "The overlay will work outside of the Garden.")
+ @ConfigEditorBoolean
+ public boolean showEverywhere = false;
+
+ @Expose
+ @ConfigOption(name = "Ignore Timeout", desc = "Ignore the timeout after not moving mouse.")
+ @ConfigEditorBoolean
+ public boolean showAlways = false;
+
+ @Expose
+ public Position pos = new Position(445, 225, false, true);
+ @Expose
+ public Position posOutside = new Position(445, 225, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/composter/ComposterConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/composter/ComposterConfig.java
new file mode 100644
index 000000000..700c4fc49
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/composter/ComposterConfig.java
@@ -0,0 +1,108 @@
+package at.hannibal2.skyhanni.config.features.garden.composter;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class ComposterConfig {
+ @Expose
+ @ConfigOption(
+ name = "Composter Overlay",
+ desc = "Show organic matter, fuel, and profit prices while inside the Composter Inventory."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean overlay = true;
+
+ @Expose
+ @ConfigOption(name = "Overlay Price", desc = "Toggle for Bazaar 'buy order' vs 'instant buy' price in composter overlay.")
+ @ConfigEditorDropdown(values = {"Instant Buy", "Buy Order"})
+ public int overlayPriceType = 0;
+
+ @Expose
+ @ConfigOption(name = "Retrieve From", desc = "Change where to retrieve the materials from in the composter overlay: The Bazaar or Sacks.")
+ @ConfigEditorDropdown(values = {"Bazaar", "Sacks"})
+ public int retrieveFrom = 0;
+
+ @Expose
+ public Position overlayOrganicMatterPos = new Position(140, 152, false, true);
+
+ @Expose
+ public Position overlayFuelExtrasPos = new Position(-320, 152, false, true);
+
+ @Expose
+ @ConfigOption(
+ name = "Display Element",
+ desc = "Displays the Compost data from the tab list as GUI element."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean displayEnabled = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Outside Garden",
+ desc = "Show Time till Composter is empty outside Garden"
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean displayOutsideGarden = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Composter Warning",
+ desc = "Warn when the Composter gets close to empty, even outside Garden."
+ )
+ @ConfigEditorBoolean
+ public boolean warnAlmostClose = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Upgrade Price",
+ desc = "Show the price for the Composter Upgrade in the lore."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean upgradePrice = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Round Amount Needed",
+ desc = "Rounds the amount needed to fill your Composter down so that you don't overspend."
+ )
+ @ConfigEditorBoolean
+ public boolean roundDown = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Highlight Upgrade",
+ desc = "Highlight Upgrades that can be bought right now."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlightUpgrade = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Inventory Numbers",
+ desc = "Show the amount of Organic Matter, Fuel and Composts Available while inside the Composter Inventory."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean inventoryNumbers = true;
+
+ @Expose
+ @ConfigOption(name = "Notification When Low Composter", desc = "")
+ @Accordion
+ public NotifyLowConfig notifyLow = new NotifyLowConfig();
+
+ @Expose
+ public Position displayPos = new Position(-390, 10, false, true);
+
+ @Expose
+ public Position outsideGardenPos = new Position(-363, 13, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/composter/NotifyLowConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/composter/NotifyLowConfig.java
new file mode 100644
index 000000000..a854fa6a9
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/composter/NotifyLowConfig.java
@@ -0,0 +1,38 @@
+package at.hannibal2.skyhanni.config.features.garden.composter;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class NotifyLowConfig {
+ @Expose
+ @ConfigOption(name = "Enable", desc = "Show a notification when Organic Matter or Fuel runs low in your Composter.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(name = "Show Title", desc = "Send a title to notify.")
+ @ConfigEditorBoolean
+ public boolean title = false;
+
+ @Expose
+ @ConfigOption(name = "Min Organic Matter", desc = "Warn when Organic Matter is below this value.")
+ @ConfigEditorSlider(
+ minValue = 1_000,
+ maxValue = 80_000,
+ minStep = 1
+ )
+ public int organicMatter = 20_000;
+
+ @Expose
+ @ConfigOption(name = "Min Fuel Cap", desc = "Warn when Fuel is below this value.")
+ @ConfigEditorSlider(
+ minValue = 500,
+ maxValue = 40_000,
+ minStep = 1
+ )
+ public int fuel = 10_000;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/cropmilestones/CropMilestonesConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/cropmilestones/CropMilestonesConfig.java
new file mode 100644
index 000000000..053ffe900
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/cropmilestones/CropMilestonesConfig.java
@@ -0,0 +1,101 @@
+package at.hannibal2.skyhanni.config.features.garden.cropmilestones;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDraggableList;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import io.github.moulberry.moulconfig.observer.Property;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class CropMilestonesConfig {
+ @Expose
+ @ConfigOption(
+ name = "Progress Display",
+ desc = "Shows the progress and ETA until the next crop milestone is reached and the current crops/minute value. " +
+ "§eRequires a tool with either a counter or Cultivating enchantment for full accuracy."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean progress = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Warn When Close",
+ desc = "Warn with title and sound when the next crop milestone upgrade happens in 5 seconds. " +
+ "Useful for switching to a different pet for leveling.")
+ @ConfigEditorBoolean
+ public boolean warnClose = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Time Format",
+ desc = "Change the highest time unit to show (1h30m vs 90min)")
+ @ConfigEditorDropdown(values = {"Year", "Day", "Hour", "Minute", "Second"})
+ public Property<Integer> highestTimeFormat = Property.of(0);
+
+ @Expose
+ @ConfigOption(
+ name = "Maxed Milestone",
+ desc = "Calculate the progress and ETA till maxed milestone (46) instead of next milestone.")
+ @ConfigEditorBoolean
+ public Property<Boolean> bestShowMaxedNeeded = Property.of(false);
+
+ @Expose
+ @ConfigOption(
+ name = "Milestone Text",
+ desc = "Drag text to change the appearance of the overlay.\n" +
+ "Hold a farming tool to show the overlay."
+ )
+ @ConfigEditorDraggableList(
+ exampleText = {
+ "§6Crop Milestones",
+ "§7Pumpkin Tier 22",
+ "§e12,300§8/§e100,000",
+ "§7In §b12m 34s",
+ "§7Crops/Minute§8: §e12,345",
+ "§7Blocks/Second§8: §e19.85",
+ "§7Percentage: §e12.34%",
+ }
+ )
+ public List<Integer> text = new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4, 5));
+
+ @Expose
+ @ConfigOption(name = "Block Broken Precision", desc = "The amount of decimals displayed in blocks/second.")
+ @ConfigEditorSlider(
+ minValue = 0,
+ maxValue = 6,
+ minStep = 1
+ )
+ public int blocksBrokenPrecision = 2;
+
+ @Expose
+ @ConfigOption(name = "Seconds Before Reset", desc = "How many seconds of not farming until blocks/second resets.")
+ @ConfigEditorSlider(
+ minValue = 2,
+ maxValue = 60,
+ minStep = 1
+ )
+ public int blocksBrokenResetTime = 5;
+
+ @Expose
+ public Position progressDisplayPos = new Position(-400, -200, false, true);
+
+ @Expose
+ @ConfigOption(name = "Best Crop", desc = "")
+ @Accordion
+ public NextConfig next = new NextConfig();
+
+ @Expose
+ @ConfigOption(name = "Mushroom Pet Perk", desc = "")
+ @Accordion
+ public MushroomPetPerkConfig mushroomPetPerk = new MushroomPetPerkConfig();
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/cropmilestones/MushroomPetPerkConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/cropmilestones/MushroomPetPerkConfig.java
new file mode 100644
index 000000000..66ef83a4c
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/cropmilestones/MushroomPetPerkConfig.java
@@ -0,0 +1,43 @@
+package at.hannibal2.skyhanni.config.features.garden.cropmilestones;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDraggableList;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+// TODO moulconfig runnable support
+public class MushroomPetPerkConfig {
+ @Expose
+ @ConfigOption(
+ name = "Display Enabled",
+ desc = "Show the progress and ETA for mushroom crops when farming other crops because of the Mooshroom Cow perk.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Mushroom Text",
+ desc = "Drag text to change the appearance of the overlay.\n" +
+ "Hold a farming tool to show the overlay."
+ )
+ @ConfigEditorDraggableList(
+ exampleText = {
+ "§6Mooshroom Cow Perk",
+ "§7Mushroom Tier 8",
+ "§e6,700§8/§e15,000",
+ "§7In §b12m 34s",
+ "§7Percentage: §e12.34%",
+ }
+ )
+ public List<Integer> text = new ArrayList<>(Arrays.asList(0, 1, 2, 3));
+
+ @Expose
+ public Position pos = new Position(-112, -143, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/cropmilestones/NextConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/cropmilestones/NextConfig.java
new file mode 100644
index 000000000..6dcd047a9
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/cropmilestones/NextConfig.java
@@ -0,0 +1,66 @@
+package at.hannibal2.skyhanni.config.features.garden.cropmilestones;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+// TODO moulconfig runnable support
+public class NextConfig {
+ @Expose
+ @ConfigOption(
+ name = "Best Display",
+ desc = "Lists all crops and their ETA till next milestone. Sorts for best crop for getting garden or SkyBlock levels.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean bestDisplay = true;
+
+ // TODO moulconfig runnable support
+ @Expose
+ @ConfigOption(name = "Sort Type", desc = "Sort the crops by either garden or SkyBlock EXP.")
+ @ConfigEditorDropdown(values = {"Garden Exp", "SkyBlock Exp"})
+ public int bestType = 0;
+
+ // TODO moulconfig runnable support
+ @Expose
+ @ConfigOption(name = "Only Show Top", desc = "Only show the top # crops.")
+ @ConfigEditorSlider(
+ minValue = 1,
+ maxValue = 10,
+ minStep = 1
+ )
+ public int showOnlyBest = 10;
+
+ @Expose
+ @ConfigOption(name = "Extend Top List", desc = "Add current crop to the list if its lower ranked than the set limit by extending the list.")
+ @ConfigEditorBoolean
+ public boolean showCurrent = true;
+
+ // TODO moulconfig runnable support
+ @Expose
+ @ConfigOption(
+ name = "Always On",
+ desc = "Show the Best Display always while on the garden.")
+ @ConfigEditorBoolean
+ public boolean bestAlwaysOn = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Compact Display",
+ desc = "A more compact best crop time: Removing the crop name and exp, hide the # number and using a more compact time format.")
+ @ConfigEditorBoolean
+ public boolean bestCompact = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Hide Title",
+ desc = "Hides the 'Best Crop Time' line entirely.")
+ @ConfigEditorBoolean
+ public boolean bestHideTitle = false;
+
+ @Expose
+ public Position displayPos = new Position(-200, -200, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/optimalspeed/CustomSpeedConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/optimalspeed/CustomSpeedConfig.java
new file mode 100644
index 000000000..615883c96
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/optimalspeed/CustomSpeedConfig.java
@@ -0,0 +1,79 @@
+package at.hannibal2.skyhanni.config.features.garden.optimalspeed;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class CustomSpeedConfig {
+
+ @Expose
+ @ConfigOption(name = "Wheat", desc = "Suggested farm speed:\n" +
+ "§e5 Blocks§7: §f✦ 93 speed\n" +
+ "§e4 Blocks§7: §f✦ 116 speed")
+ @ConfigEditorSlider(minValue = 1, maxValue = 400, minStep = 1)
+ public int wheat = 93;
+
+ @Expose
+ @ConfigOption(name = "Carrot", desc = "Suggested farm speed:\n" +
+ "§e5 Blocks§7: §f✦ 93 speed\n" +
+ "§e4 Blocks§7: §f✦ 116 speed")
+ @ConfigEditorSlider(minValue = 1, maxValue = 400, minStep = 1)
+ public int carrot = 93;
+
+ @Expose
+ @ConfigOption(name = "Potato", desc = "Suggested farm speed:\n" +
+ "§e5 Blocks§7: §f✦ 93 speed\n" +
+ "§e4 Blocks§7: §f✦ 116 speed")
+ @ConfigEditorSlider(minValue = 1, maxValue = 400, minStep = 1)
+ public int potato = 93;
+
+ @Expose
+ @ConfigOption(name = "Nether Wart", desc = "Suggested farm speed:\n" +
+ "§e5 Blocks§7: §f✦ 93 speed\n" +
+ "§e4 Blocks§7: §f✦ 116 speed")
+ @ConfigEditorSlider(minValue = 1, maxValue = 400, minStep = 1)
+ public int netherWart = 93;
+
+ @Expose
+ @ConfigOption(name = "Pumpkin", desc = "Suggested farm speed:\n" +
+ "§e3 Blocks§7: §f✦ 155 speed\n" +
+ "§e2 Blocks§7: §f✦ 265 §7or §f400 speed")
+ @ConfigEditorSlider(minValue = 1, maxValue = 400, minStep = 1)
+ public int pumpkin = 155;
+
+ @Expose
+ @ConfigOption(name = "Melon", desc = "Suggested farm speed:\n" +
+ "§e3 Blocks§7: §f✦ 155 speed\n" +
+ "§e2 Blocks§7: §f✦ 265 or 400 speed")
+ @ConfigEditorSlider(minValue = 1, maxValue = 400, minStep = 1)
+ public int melon = 155;
+
+ @Expose
+ @ConfigOption(name = "Cocoa Beans", desc = "Suggested farm speed:\n" +
+ "§e3 Blocks§7: §f✦ 155 speed\n" +
+ "§e4 Blocks§7: §f✦ 116 speed")
+ @ConfigEditorSlider(minValue = 1, maxValue = 400, minStep = 1)
+ public int cocoaBeans = 155;
+
+ // TODO does other speed settings exist?
+ @Expose
+ @ConfigOption(name = "Sugar Cane", desc = "Suggested farm speed:\n" +
+ "§eYaw 45§7: §f✦ 328 speed")
+ @ConfigEditorSlider(minValue = 1, maxValue = 400, minStep = 1)
+ public int sugarCane = 328;
+
+ @Expose
+ @ConfigOption(name = "Cactus", desc = "Suggested farm speed:\n" +
+ "§eNormal§7: §f✦ 400 speed\n" +
+ "§eRacing Helmet§7: §f✦ 464 speed\n" +
+ "§eBlack Cat§7: §f✦ 464 speed")
+ @ConfigEditorSlider(minValue = 1, maxValue = 500, minStep = 1)
+ public int cactus = 400;
+
+ // TODO does other speed settings exist?
+ @Expose
+ @ConfigOption(name = "Mushroom", desc = "Suggested farm speed:\n" +
+ "§eYaw 60§7: §f✦ 233 speed")
+ @ConfigEditorSlider(minValue = 1, maxValue = 400, minStep = 1)
+ public int mushroom = 233;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/optimalspeed/OptimalSpeedConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/optimalspeed/OptimalSpeedConfig.java
new file mode 100644
index 000000000..385d7907f
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/optimalspeed/OptimalSpeedConfig.java
@@ -0,0 +1,39 @@
+package at.hannibal2.skyhanni.config.features.garden.optimalspeed;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class OptimalSpeedConfig {
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Show the optimal speed for your current tool in the hand.\n" +
+ "(Thanks MelonKingDE for the default values).")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(name = "Warning Title", desc = "Warn via title when you don't have the optimal speed.")
+ @ConfigEditorBoolean
+ public boolean warning = false;
+
+ @Expose
+ @ConfigOption(name = "Rancher Boots", desc = "Allows you to set the optimal speed in the Rancher Boots overlay by clicking on the presets.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean signEnabled = true;
+
+ @Expose
+ public Position signPosition = new Position(20, -195, false, true);
+
+ @Expose
+ @ConfigOption(name = "Custom Speed", desc = "Change the exact speed for every single crop.")
+ @Accordion
+ public CustomSpeedConfig customSpeed = new CustomSpeedConfig();
+
+ @Expose
+ public Position pos = new Position(5, -200, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/DropsStatisticsConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/DropsStatisticsConfig.java
new file mode 100644
index 000000000..7fd332d25
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/DropsStatisticsConfig.java
@@ -0,0 +1,78 @@
+package at.hannibal2.skyhanni.config.features.garden.visitor;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDraggableList;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class DropsStatisticsConfig {
+
+ @Expose
+ @ConfigOption(
+ name = "Enabled",
+ desc = "Tallies up statistic about visitors and the rewards you have received from them."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Text Format",
+ desc = "Drag text to change the appearance of the overlay."
+ )
+ @ConfigEditorDraggableList(
+ exampleText = {
+ "§e§lVisitor Statistics",
+ "§e1,636 Total",
+ "§a1,172§f-§9382§f-§681§f-§c1",
+ "§21,382 Accepted",
+ "§c254 Denied",
+ " ",
+ "§c62,072 Copper",
+ "§33.2m Farming EXP",
+ "§647.2m Coins Spent",
+ "§b23 §9Flowering Bouquet",
+ "§b4 §9Overgrown Grass",
+ "§b2 §5Green Bandana",
+ "§b1 §9Dedication IV",
+ "§b6 §b◆ Music Rune I",
+ "§b1 §cSpace Helmet",
+ "§b1 §9Cultivating I",
+ "§b1 §9Replenish I",
+ " ", // If they want another empty row
+ "§212,600 Garden EXP",
+ "§b4.2k Bits",
+ "§220k Mithril Powder",
+ "§d18k Gemstone Powder",
+ }
+ )
+ public List<Integer> textFormat = new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12));
+
+
+ @Expose
+ @ConfigOption(name = "Display Numbers First", desc = "Determines whether the number or drop name displays first. " +
+ "§eNote: Will not update the preview above!")
+ @ConfigEditorBoolean
+ public boolean displayNumbersFirst = true;
+
+ @Expose
+ @ConfigOption(name = "Display Icons", desc = "Replaces the drop names with icons. " +
+ "§eNote: Will not update the preview above!")
+ @ConfigEditorBoolean
+ public boolean displayIcons = false;
+
+ @Expose
+ @ConfigOption(name = "Only on Barn Plot", desc = "Only shows the overlay while on the Barn plot.")
+ @ConfigEditorBoolean
+ public boolean onlyOnBarn = true;
+
+ @Expose
+ public Position pos = new Position(5, 20, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/InventoryConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/InventoryConfig.java
new file mode 100644
index 000000000..5c671d4e7
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/InventoryConfig.java
@@ -0,0 +1,37 @@
+package at.hannibal2.skyhanni.config.features.garden.visitor;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class InventoryConfig {
+ @Expose
+ @ConfigOption(name = "Visitor Price", desc = "Show the Bazaar price of the items required for the visitors, like in NEU.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean showPrice = false;
+
+ @Expose
+ @ConfigOption(name = "Amount and Time", desc = "Show the exact item amount and the remaining time when farmed manually. Especially useful for Ironman.")
+ @ConfigEditorBoolean
+ public boolean exactAmountAndTime = true;
+
+ @Expose
+ @ConfigOption(name = "Copper Price", desc = "Show the price per copper inside the visitor GUI.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean copperPrice = true;
+
+ @Expose
+ @ConfigOption(name = "Copper Time", desc = "Show the time required per copper inside the visitor GUI.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean copperTime = false;
+
+ @Expose
+ @ConfigOption(name = "Garden Exp Price", desc = "Show the price per garden experience inside the visitor GUI.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean experiencePrice = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/NeedsConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/NeedsConfig.java
new file mode 100644
index 000000000..b60b6207f
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/NeedsConfig.java
@@ -0,0 +1,40 @@
+package at.hannibal2.skyhanni.config.features.garden.visitor;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class NeedsConfig {
+ @Expose
+ @ConfigOption(name = "Items Needed", desc = "Show all items needed for the visitors.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean display = true;
+
+ @Expose
+ public Position pos = new Position(180, 170, false, true);
+
+ @Expose
+ @ConfigOption(name = "Only when Close", desc = "Only show the needed items when close to the visitors.")
+ @ConfigEditorBoolean
+ public boolean onlyWhenClose = false;
+
+ @Expose
+ @ConfigOption(name = "Bazaar Alley", desc = "Show the Visitor Items List while inside the Bazaar Alley in the Hub. " +
+ "This helps buying the correct amount when not having a Booster Cookie Buff active.")
+ @ConfigEditorBoolean
+ public boolean inBazaarAlley = true;
+
+ @Expose
+ @ConfigOption(name = "Show Price", desc = "Show the coin price in the items needed list.")
+ @ConfigEditorBoolean
+ public boolean showPrice = true;
+
+ @Expose
+ @ConfigOption(name = "Item Preview", desc = "Show the base type for the required items next to new visitors. §cNote that some visitors may require any crop.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean itemPreview = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/RewardWarningConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/RewardWarningConfig.java
new file mode 100644
index 000000000..f83fc5518
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/RewardWarningConfig.java
@@ -0,0 +1,62 @@
+package at.hannibal2.skyhanni.config.features.garden.visitor;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDraggableList;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import org.lwjgl.input.Keyboard;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class RewardWarningConfig {
+
+ @Expose
+ @ConfigOption(name = "Notify in Chat", desc = "Send a chat message once you talk to a visitor with reward.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean notifyInChat = true;
+
+ @Expose
+ @ConfigOption(name = "Show over Name", desc = "Show the reward name above the visitor name.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean showOverName = true;
+
+ @Expose
+ @ConfigOption(name = "Prevent Refusing", desc = "Prevent the refusal of a visitor with reward.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean preventRefusing = true;
+
+ @Expose
+ @ConfigOption(name = "Bypass Key", desc = "Hold that key to bypass the Prevent Refusing feature.")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
+ public int bypassKey = Keyboard.KEY_NONE;
+
+
+ /**
+ * Sync up with {at.hannibal2.skyhanni.features.garden.visitor.VisitorReward}
+ */
+ @Expose
+ @ConfigOption(
+ name = "Items",
+ desc = "Warn for these reward items."
+ )
+ @ConfigEditorDraggableList(
+ exampleText = {
+ "§9Flowering Bouquet",
+ "§9Overgrown Grass",
+ "§9Green Bandana",
+ "§9Dedication IV",
+ "§9Music Rune",
+ "§cSpace Helmet",
+ "§9Cultivating I",
+ "§9Replenish I",
+ }
+ )
+ public List<Integer> drops = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6));
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/TimerConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/TimerConfig.java
new file mode 100644
index 000000000..d85f7d048
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/TimerConfig.java
@@ -0,0 +1,37 @@
+package at.hannibal2.skyhanni.config.features.garden.visitor;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class TimerConfig {
+ @Expose
+ @ConfigOption(name = "Visitor Timer", desc = "Timer when the next visitor will appear, " +
+ "and a number for how many visitors are already waiting.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(name = "Sixth Visitor Estimate", desc = "Estimate when the sixth visitor in the queue will arrive. " +
+ "May be inaccurate with co-op members farming simultaneously.")
+ @ConfigEditorBoolean
+ public boolean sixthVisitorEnabled = true;
+
+ @Expose
+ @ConfigOption(name = "Sixth Visitor Warning", desc = "Notifies when it is believed that the sixth visitor has arrived. " +
+ "May be inaccurate with co-op members farming simultaneously.")
+ @ConfigEditorBoolean
+ public boolean sixthVisitorWarning = true;
+
+ @Expose
+ @ConfigOption(name = "New Visitor Ping", desc = "Pings you when you are less than 10 seconds away from getting a new visitor. " +
+ "§eUseful for getting Ephemeral Gratitudes during the 2023 Halloween event.")
+ @ConfigEditorBoolean
+ public boolean newVisitorPing = false;
+
+ @Expose
+ public Position pos = new Position(390, 65, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/VisitorConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/VisitorConfig.java
new file mode 100644
index 000000000..d010b11d3
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/VisitorConfig.java
@@ -0,0 +1,118 @@
+package at.hannibal2.skyhanni.config.features.garden.visitor;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import org.lwjgl.input.Keyboard;
+
+public class VisitorConfig {
+ @Expose
+ @ConfigOption(name = "Visitor Timer", desc = "")
+ @Accordion
+ public TimerConfig timer = new TimerConfig();
+
+ @Expose
+ @ConfigOption(name = "Visitor Items Needed", desc = "")
+ @Accordion
+ public NeedsConfig needs = new NeedsConfig();
+
+ @Expose
+ @ConfigOption(name = "Visitor Inventory", desc = "")
+ @Accordion
+ public InventoryConfig inventory = new InventoryConfig();
+
+ @Expose
+ @ConfigOption(name = "Visitor Reward Warning", desc = "")
+ @Accordion
+ public RewardWarningConfig rewardWarning = new RewardWarningConfig();
+
+ @Expose
+ @ConfigOption(name = "Notification Chat", desc = "Show in chat when a new visitor is visiting your island.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean notificationChat = true;
+
+ @Expose
+ @ConfigOption(name = "Notification Title", desc = "Show a title when a new visitor is visiting your island.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean notificationTitle = true;
+
+ @Expose
+ @ConfigOption(name = "Highlight Status", desc = "Highlight the status for visitors with a text above or with color.")
+ @ConfigEditorDropdown(values = {"Color Only", "Name Only", "Both", "Disabled"})
+ public int highlightStatus = 2;
+
+ @Expose
+ @ConfigOption(name = "Colored Name", desc = "Show the visitor name in the color of the rarity.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean coloredName = true;
+
+ @Expose
+ @ConfigOption(name = "Hypixel Message", desc = "Hide the chat message from Hypixel that a new visitor has arrived at your garden.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hypixelArrivedMessage = true;
+
+ @Expose
+ @ConfigOption(name = "Hide Chat", desc = "Hide chat messages from the visitors in garden. (Except Beth and Spaceman)")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideChat = true;
+
+ @Expose
+ @ConfigOption(name = "Visitor Drops Statistics Counter", desc = "")
+ @Accordion
+ public DropsStatisticsConfig dropsStatistics = new DropsStatisticsConfig();
+
+ @Expose
+ @ConfigOption(
+ name = "Accept Hotkey",
+ desc = "Accept a visitor when you press this keybind while in the visitor GUI. " +
+ "§eUseful for getting Ephemeral Gratitudes during the 2023 Halloween event."
+ )
+ @ConfigEditorKeybind(
+ defaultKey = Keyboard.KEY_NONE
+ )
+ public int acceptHotkey = Keyboard.KEY_NONE;
+
+
+ @Expose
+ @ConfigOption(
+ name = "Highlight Visitors in SkyBlock",
+ desc = "Highlights Visitors outside of the Garden"
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlightVisitors = false;
+
+
+ @Expose
+ @ConfigOption(
+ name = "Block Interacting with Visitors",
+ desc = "Blocks you from interacting with / unlocking Visitors to allow for Dedication Cycling"
+ )
+ @ConfigEditorDropdown
+ public VisitorBlockBehaviour blockInteracting = VisitorBlockBehaviour.ONLY_ON_BINGO;
+
+ public enum VisitorBlockBehaviour {
+ DONT("Don't"), ALWAYS("Always"), ONLY_ON_BINGO("Only on Bingo");
+
+ final String str;
+
+ VisitorBlockBehaviour(String str) {
+ this.str = str;
+ }
+
+ @Override
+ public String toString() {
+ return str;
+ }
+ }
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/gui/GUIConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/gui/GUIConfig.java
new file mode 100644
index 000000000..9e1816107
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/gui/GUIConfig.java
@@ -0,0 +1,74 @@
+package at.hannibal2.skyhanni.config.features.gui;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import at.hannibal2.skyhanni.data.GuiEditManager;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorButton;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import org.lwjgl.input.Keyboard;
+
+public class GUIConfig {
+
+ @ConfigOption(name = "Edit GUI Locations", desc = "Change the position of SkyHanni's overlays.")
+ @ConfigEditorButton(buttonText = "Edit")
+ public Runnable positions = GuiEditManager::openGuiPositionEditor;
+
+ @Expose
+ @ConfigOption(name = "Open Hotkey", desc = "Press this key to open the GUI Editor.")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
+ public int keyBindOpen = Keyboard.KEY_NONE;
+
+ @Expose
+ @ConfigOption(name = "Global GUI Scale", desc = "Globally scale all SkyHanni GUIs.")
+ @ConfigEditorSlider(minValue = 0.1F, maxValue = 10, minStep = 0.05F)
+ public float globalScale = 1F;
+
+ @Expose
+ @ConfigOption(name = "Modify Visual Words", desc = "")
+ @Accordion
+ public ModifyWordsConfig modifyWords = new ModifyWordsConfig();
+
+ @Expose
+ @ConfigOption(name = "Custom Text Box", desc = "")
+ @Accordion
+ public TextBoxConfig customTextBox = new TextBoxConfig();
+
+ @Expose
+ @ConfigOption(name = "Real Time", desc = "Display the current computer time, a handy feature when playing in full-screen mode.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean realTime = false;
+
+ @Expose
+ @ConfigOption(name = "Real Time 12h Format", desc = "Display the current computer time in 12hr Format rather than 24h Format.")
+ @ConfigEditorBoolean
+ public boolean realTimeFormatToggle = false;
+
+ @Expose
+ public Position realTimePosition = new Position(10, 10, false, true);
+
+ @Expose
+ @ConfigOption(name = "In-Game Date", desc = "")
+ @Accordion
+ public InGameDateConfig inGameDate = new InGameDateConfig();
+
+ @Expose
+ @ConfigOption(name = "TPS Display", desc = "Show the TPS of the current server, like in Soopy.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean tpsDisplay = false;
+
+ @Expose
+ public Position tpsDisplayPosition = new Position(10, 10, false, true);
+
+ @Expose
+ @ConfigOption(name = "Config Button", desc = "Add a button to the pause menu to configure SkyHanni.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean configButtonOnPause = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/gui/InGameDateConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/gui/InGameDateConfig.java
new file mode 100644
index 000000000..5985e5131
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/gui/InGameDateConfig.java
@@ -0,0 +1,63 @@
+package at.hannibal2.skyhanni.config.features.gui;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class InGameDateConfig {
+
+ @Expose
+ @ConfigOption(
+ name = "Enabled",
+ desc = "Show the in-game date of SkyBlock (like in Apec, §ebut with mild delays§7).\n" +
+ "(Though this one includes the SkyBlock year!)"
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ public Position position = new Position(10, 10, false, true);
+
+ @Expose
+ @ConfigOption(
+ name = "Use Scoreboard for Date",
+ desc = "Uses the scoreboard instead to find the current month, date, and time. Greater \"accuracy\", depending on who's asking."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean useScoreboard = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Show Sun/Moon",
+ desc = "Show the sun or moon symbol seen on the scoreboard."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean includeSunMoon = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Show Date Ordinal",
+ desc = "Show the date's ordinal suffix. Ex: (1st <-> 1, 22nd <-> 22, 23rd <-> 3, 24th <-> 24, etc.)"
+ )
+ @ConfigEditorBoolean
+ public boolean includeOrdinal = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Refresh Rate",
+ desc = "Change the time in seconds you would like to refresh the In-Game Date Display." +
+ "\n§eNOTE: If \"Use Scoreboard for Date\" is enabled, this setting is ignored."
+ )
+ @ConfigEditorSlider(
+ minValue = 1,
+ maxValue = 60,
+ minStep = 1
+ )
+ public int refreshSeconds = 30;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/gui/ModifyWordsConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/gui/ModifyWordsConfig.java
new file mode 100644
index 000000000..498dba83d
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/gui/ModifyWordsConfig.java
@@ -0,0 +1,28 @@
+package at.hannibal2.skyhanni.config.features.gui;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.commands.Commands;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorButton;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class ModifyWordsConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Enables replacing all instances of a word or phrase with another word or phrase.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(name = "Work Outside SkyBlock", desc = "Allows modifying visual words anywhere on Hypixel.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean workOutside = false;
+
+ @ConfigOption(name = "Open Config", desc = "Opens the menu to setup the visual words.\n§eCommand: /shwords")
+ @ConfigEditorButton(buttonText = "Open")
+ public Runnable open = Commands::openVisualWords;
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/gui/TextBoxConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/gui/TextBoxConfig.java
new file mode 100644
index 000000000..134732465
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/gui/TextBoxConfig.java
@@ -0,0 +1,26 @@
+package at.hannibal2.skyhanni.config.features.gui;
+
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorText;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import io.github.moulberry.moulconfig.observer.Property;
+
+public class TextBoxConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Enables showing the textbox while in SkyBlock.")
+ @ConfigEditorBoolean
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(name = "Text", desc = "Enter text you want to display here.\n" +
+ "§eUse '&' as the colour code character.\n" +
+ "§eUse '\\n' as the line break character.")
+ @ConfigEditorText
+ public Property<String> text = Property.of("&aYour Text Here\\n&bYour new line here");
+
+ @Expose
+ public Position position = new Position(10, 80, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/inventory/ChestValueConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/ChestValueConfig.java
new file mode 100644
index 000000000..62eb30385
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/ChestValueConfig.java
@@ -0,0 +1,88 @@
+package at.hannibal2.skyhanni.config.features.inventory;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class ChestValueConfig {
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Enable estimated value of chest.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(name = "Enabled in dungeons", desc = "Enable the feature in dungeons.")
+ @ConfigEditorBoolean
+ public boolean enableInDungeons = false;
+
+ @Expose
+ @ConfigOption(name = "Enable during Item Value", desc = "Show this display even if the Estimated Item Value is visible.")
+ @ConfigEditorBoolean
+ public boolean showDuringEstimatedItemValue = false;
+
+ @Expose
+ @ConfigOption(name = "Show Stacks", desc = "Show the item icon before name.")
+ @ConfigEditorBoolean
+ public boolean showStacks = true;
+
+ @Expose
+ @ConfigOption(name = "Display Type", desc = "Try to align everything to look nicer.")
+ @ConfigEditorBoolean
+ public boolean alignedDisplay = true;
+
+ @Expose
+ @ConfigOption(name = "Name Length", desc = "Reduce item name length to gain extra space on screen.\n§cCalculated in pixels!")
+ @ConfigEditorSlider(minStep = 1, minValue = 100, maxValue = 150)
+ public int nameLength = 100;
+
+ @Expose
+ @ConfigOption(name = "Highlight Slot", desc = "Highlight slot where the item is when you hover over it in the display.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enableHighlight = true;
+
+ @Expose
+ @ConfigOption(name = "Highlight Color", desc = "Choose the highlight color.")
+ @ConfigEditorColour
+ public String highlightColor = "0:249:0:255:88";
+
+ @Expose
+ @ConfigOption(name = "Sorting Type", desc = "Price sorting type.")
+ @ConfigEditorDropdown(values = {"Descending", "Ascending"})
+ public int sortingType = 0;
+
+ @Expose
+ @ConfigOption(name = "Value formatting Type", desc = "Format of the price.")
+ @ConfigEditorDropdown(values = {"Short", "Long"})
+ public int formatType = 0;
+
+ @Expose
+ @ConfigOption(name = "Item To Show", desc = "Choose how many items are displayed.\n" +
+ "All items in the chest are still counted for the total value.")
+ @ConfigEditorSlider(
+ minValue = 0,
+ maxValue = 54,
+ minStep = 1
+ )
+ public int itemToShow = 15;
+
+ @Expose
+ @ConfigOption(name = "Hide below", desc = "Item item value below configured amount.\n" +
+ "Items are still counted for the total value.")
+ @ConfigEditorSlider(
+ minValue = 50_000,
+ maxValue = 10_000_000,
+ minStep = 50_000
+ )
+ public int hideBelow = 100_000;
+
+
+ @Expose
+ public Position position = new Position(107, 141, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/inventory/HideNotClickableConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/HideNotClickableConfig.java
new file mode 100644
index 000000000..9c0c01602
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/HideNotClickableConfig.java
@@ -0,0 +1,43 @@
+package at.hannibal2.skyhanni.config.features.inventory;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class HideNotClickableConfig {
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Hide items that are not clickable in the current inventory: ah, bz, accessory bag, etc.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean items = false;
+
+ @Expose
+ @ConfigOption(name = "Block Clicks", desc = "Block the clicks on these items.")
+ @ConfigEditorBoolean
+ public boolean itemsBlockClicks = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Opacity",
+ desc = "How strong should the items be grayed out?"
+ )
+ @ConfigEditorSlider(
+ minValue = 0,
+ maxValue = 255,
+ minStep = 5
+ )
+ public int opacity = 180;
+
+ @Expose
+ @ConfigOption(name = "Bypass With Control", desc = "Adds the ability to bypass not clickable items when holding the control key.")
+ @ConfigEditorBoolean
+ public boolean itemsBypass = true;
+
+ @Expose
+ @ConfigOption(name = "Green Line", desc = "Adds green line around items that are clickable.")
+ @ConfigEditorBoolean
+ public boolean itemsGreenLine = true;
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/inventory/InventoryConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/InventoryConfig.java
new file mode 100644
index 000000000..1794a20d0
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/InventoryConfig.java
@@ -0,0 +1,127 @@
+package at.hannibal2.skyhanni.config.features.inventory;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.features.inventory.helper.HelperConfig;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.Category;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDraggableList;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class InventoryConfig {
+
+ @Expose
+ @ConfigOption(name = "Not Clickable Items", desc = "")
+ @Accordion
+ public HideNotClickableConfig hideNotClickable = new HideNotClickableConfig();
+
+ @Expose
+ @ConfigOption(name = "RNG Meter", desc = "")
+ @Accordion
+ public RngMeterConfig rngMeter = new RngMeterConfig();
+
+ @Expose
+ @ConfigOption(name = "Stats Tuning", desc = "")
+ @Accordion
+ public StatsTuningConfig statsTuning = new StatsTuningConfig();
+
+ @Expose
+ @ConfigOption(name = "Jacob Farming Contest", desc = "")
+ @Accordion
+ public JacobFarmingContestConfig jacobFarmingContests = new JacobFarmingContestConfig();
+
+
+ @Expose
+ @ConfigOption(name = "Sack Items Display", desc = "")
+ @Accordion
+ public SackDisplayConfig sackDisplay = new SackDisplayConfig();
+
+ @Expose
+ @ConfigOption(name = "Chest Value", desc = "")
+ @Accordion
+ public ChestValueConfig chestValueConfig = new ChestValueConfig();
+
+ @Expose
+ @Category(name = "Helpers", desc = "Settings for Helpers")
+ public HelperConfig helper = new HelperConfig();
+
+ @Expose
+ @ConfigOption(
+ name = "Item Number",
+ desc = "Showing the item number as a stack size for these items."
+ )
+ @ConfigEditorDraggableList(
+ exampleText = {
+ "§bMaster Star Tier",
+ "§bMaster Skull Tier",
+ "§bDungeon Head Floor Number",
+ "§bNew Year Cake",
+ "§bPet Level",
+ "§bMinion Tier",
+ "§bCrimson Armor",
+ "§7(Removed)",
+ "§bKuudra Key",
+ "§bSkill Level",
+ "§bCollection Level",
+ "§bRancher's Boots speed",
+ "§bLarva Hook",
+ "§bDungeon Potion Level"
+ }
+ )
+ public List<Integer> itemNumberAsStackSize = new ArrayList<>(Arrays.asList(3, 9, 11, 12));
+
+ @Expose
+ @ConfigOption(
+ name = "Quick Craft Confirmation",
+ desc = "Require Ctrl+Click to craft items that aren't often quick crafted " +
+ "(e.g. armor, weapons, accessories). Sack items can be crafted normally."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean quickCraftingConfirmation = false;
+
+ @Expose
+ @ConfigOption(name = "Sack Name", desc = "Show an abbreviation of the sack name.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean displaySackName = false;
+
+ @Expose
+ @ConfigOption(name = "Anvil Combine Helper", desc = "Suggests the same item in the inventory when trying to combine two items in the anvil.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean anvilCombineHelper = false;
+
+ @Expose
+ @ConfigOption(name = "Item Stars",
+ desc = "Show a compact star count in the item name for all items.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean itemStars = false;
+
+ @Expose
+ @ConfigOption(name = "Missing Tasks",
+ desc = "Highlight missing tasks in the SkyBlock Level Guide inventory.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlightMissingSkyBlockLevelGuide = true;
+
+ @Expose
+ @ConfigOption(name = "Highlight Auctions",
+ desc = "Highlight own items that are sold in green and that are expired in red.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlightAuctions = true;
+
+ @Expose
+ @ConfigOption(name = "Shift Click Equipment", desc = "Makes normal clicks to shift clicks in equipment inventory")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean shiftClickForEquipment = false;
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/inventory/JacobFarmingContestConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/JacobFarmingContestConfig.java
new file mode 100644
index 000000000..dc18bd29d
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/JacobFarmingContestConfig.java
@@ -0,0 +1,32 @@
+package at.hannibal2.skyhanni.config.features.inventory;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class JacobFarmingContestConfig {
+ @Expose
+ @ConfigOption(name = "Unclaimed Rewards", desc = "Highlight contests with unclaimed rewards in the Jacob inventory.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlightRewards = true;
+
+ @Expose
+ @ConfigOption(name = "Contest Time", desc = "Adds the real time format to the Contest description.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean realTime = true;
+
+ @Expose
+ @ConfigOption(name = "Medal Icon", desc = "Adds a symbol that shows what medal you received in this Contest. " +
+ "§eIf you use a texture pack this may cause conflicting icons.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean medalIcon = true;
+
+ @Expose
+ @ConfigOption(name = "Finnegan Icon", desc = "Uses a different indicator for when the Contest happened during Mayor Finnegan.")
+ @ConfigEditorBoolean
+ public boolean finneganIcon = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/inventory/RngMeterConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/RngMeterConfig.java
new file mode 100644
index 000000000..e57e95b5c
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/RngMeterConfig.java
@@ -0,0 +1,26 @@
+package at.hannibal2.skyhanni.config.features.inventory;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class RngMeterConfig {
+ @Expose
+ @ConfigOption(name = "Floor Names", desc = "Show the Floor names in the Catacombs RNG Meter inventory.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean floorName = false;
+
+ @Expose
+ @ConfigOption(name = "No Drop", desc = "Highlight floors without a drop selected in the Catacombs RNG Meter inventory.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean noDrop = false;
+
+ @Expose
+ @ConfigOption(name = "Selected Drop", desc = "Highlight the selected drop in the Catacombs or Slayer RNG Meter inventory.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean selectedDrop = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/inventory/SackDisplayConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/SackDisplayConfig.java
new file mode 100644
index 000000000..37eab2be3
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/SackDisplayConfig.java
@@ -0,0 +1,84 @@
+package at.hannibal2.skyhanni.config.features.inventory;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class SackDisplayConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Show contained items inside a sack inventory.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Highlight Full",
+ desc = "Highlight items that are full in red.\n" +
+ "§eDoes not need the option above to be enabled."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlightFull = true;
+
+ @Expose
+ @ConfigOption(name = "Number Format", desc = "Either show Default, Formatted or Unformatted numbers.\n" +
+ "§eDefault: §72,240/2.2k\n" +
+ "§eFormatted: §72.2k/2.2k\n" +
+ "§eUnformatted: §72,240/2,200")
+ @ConfigEditorDropdown(values = {"Default", "Formatted", "Unformatted"})
+ public int numberFormat = 1;
+
+ @Expose
+ @ConfigOption(name = "Extra space", desc = "Space between each line of text.")
+ @ConfigEditorSlider(
+ minValue = 0,
+ maxValue = 10,
+ minStep = 1)
+ public int extraSpace = 1;
+
+ @Expose
+ @ConfigOption(name = "Sorting Type", desc = "Sorting type of items in sack.")
+ @ConfigEditorDropdown(values = {"Descending (Stored)", "Ascending (Stored)", "Descending (Price)", "Ascending (Price)"})
+ public int sortingType = 0;
+
+ @Expose
+ @ConfigOption(name = "Item To Show", desc = "Choose how many items are displayed. (Some sacks have too many items to fit\n" +
+ "in larger GUI scales, like the nether sack.)")
+ @ConfigEditorSlider(
+ minValue = 0,
+ maxValue = 45,
+ minStep = 1
+ )
+ public int itemToShow = 15;
+
+ @Expose
+ @ConfigOption(name = "Show Empty Item", desc = "Show empty item quantity in the display.")
+ @ConfigEditorBoolean
+ public boolean showEmpty = true;
+
+ @Expose
+ @ConfigOption(name = "Show Price", desc = "Show price for each item in sack.")
+ @ConfigEditorBoolean
+ public boolean showPrice = true;
+
+ @Expose
+ @ConfigOption(name = "Price Format", desc = "Format of the price displayed.\n" +
+ "§eFormatted: §7(12k)\n" +
+ "§eUnformatted: §7(12,421)")
+ @ConfigEditorDropdown(values = {"Formatted", "Unformatted"})
+ public int priceFormat = 0;
+
+ @Expose
+ @ConfigOption(name = "Show Price From", desc = "Show price from Bazaar or NPC.")
+ @ConfigEditorDropdown(values = {"Bazaar", "NPC"})
+ public int priceFrom = 0;
+
+ @Expose
+ public Position position = new Position(144, 139, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/inventory/StatsTuningConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/StatsTuningConfig.java
new file mode 100644
index 000000000..2f6111fee
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/StatsTuningConfig.java
@@ -0,0 +1,32 @@
+package at.hannibal2.skyhanni.config.features.inventory;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class StatsTuningConfig {
+ @Expose
+ @ConfigOption(name = "Selected Stats", desc = "Show the tuning stats in the Thaumaturgy inventory.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean selectedStats = true;
+
+ @Expose
+ @ConfigOption(name = "Tuning Points", desc = "Show the amount of selected Tuning Points in the Stats Tuning inventory.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean points = true;
+
+ @Expose
+ @ConfigOption(name = "Selected Template", desc = "Highlight the selected template in the Stats Tuning inventory.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean selectedTemplate = true;
+
+ @Expose
+ @ConfigOption(name = "Template Stats", desc = "Show the type of stats for the Tuning Point templates.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean templateStats = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/inventory/helper/HarpConfigKeyBinds.java b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/helper/HarpConfigKeyBinds.java
new file mode 100644
index 000000000..fcdac1d57
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/helper/HarpConfigKeyBinds.java
@@ -0,0 +1,37 @@
+package at.hannibal2.skyhanni.config.features.inventory.helper;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import org.lwjgl.input.Keyboard;
+
+public class HarpConfigKeyBinds {
+ @Expose
+ @ConfigOption(name = "Key 1", desc = "Key for the first Node")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_1)
+ public int key1 = Keyboard.KEY_1;
+ @Expose
+ @ConfigOption(name = "Key 2", desc = "Key for the second Node")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_2)
+ public int key2 = Keyboard.KEY_2;
+ @Expose
+ @ConfigOption(name = "Key 3", desc = "Key for the third Node")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_3)
+ public int key3 = Keyboard.KEY_3;
+ @Expose
+ @ConfigOption(name = "Key 4", desc = "Key for the fourth Node")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_4)
+ public int key4 = Keyboard.KEY_4;
+ @Expose
+ @ConfigOption(name = "Key 5", desc = "Key for the fifth Node")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_5)
+ public int key5 = Keyboard.KEY_5;
+ @Expose
+ @ConfigOption(name = "Key 6", desc = "Key for the sixth Node")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_6)
+ public int key6 = Keyboard.KEY_6;
+ @Expose
+ @ConfigOption(name = "Key 7", desc = "Key for the seventh Node")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_7)
+ public int key7 = Keyboard.KEY_7;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/inventory/helper/HelperConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/helper/HelperConfig.java
new file mode 100644
index 000000000..02c06f39a
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/helper/HelperConfig.java
@@ -0,0 +1,37 @@
+package at.hannibal2.skyhanni.config.features.inventory.helper;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class HelperConfig {
+ @Expose
+ @ConfigOption(name = "Melody's Hair Harp", desc = "")
+ @Accordion
+ public HarpConfig harp = new HarpConfig();
+
+ public static class HarpConfig {
+ @Expose
+ @ConfigOption(name = "Use Keybinds", desc = "In the Harp, press buttons with your number row on the keyboard instead of clicking.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean keybinds = false;
+
+ @Expose
+ @ConfigOption(name = "Show Numbers", desc = "In the Harp, show buttons as stack size (intended to be used with the Keybinds).")
+ @ConfigEditorBoolean
+ public boolean showNumbers = false;
+
+ @Expose
+ @ConfigOption(name = "Keybinds", desc = "")
+ @Accordion
+ public HarpConfigKeyBinds harpKeybinds = new HarpConfigKeyBinds();
+ }
+
+ @Expose
+ @ConfigOption(name = "Tia Relay Abiphone Network Maintenance", desc = "")
+ @Accordion
+ public TiaRelayConfig tiaRelay = new TiaRelayConfig();
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/inventory/helper/TiaRelayConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/helper/TiaRelayConfig.java
new file mode 100644
index 000000000..78480b4df
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/helper/TiaRelayConfig.java
@@ -0,0 +1,32 @@
+package at.hannibal2.skyhanni.config.features.inventory.helper;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class TiaRelayConfig {
+
+ @Expose
+ @ConfigOption(name = "Sound Puzzle Helper", desc = "Helps with solving the sound puzzle for Tia (The 9 Operator Chips to do maintainance for the Abiphone Network).")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean soundHelper = true;
+
+ @Expose
+ @ConfigOption(name = "Next Waypoint", desc = "Show the next relay waypoint for Tia the Fairy, where maintenance for the Abiphone network needs to be done.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean nextWaypoint = true;
+
+ @Expose
+ @ConfigOption(name = "All Waypoints", desc = "Show all relay waypoints at once (intended for debugging).")
+ @ConfigEditorBoolean
+ public boolean allWaypoints = false;
+
+ @Expose
+ @ConfigOption(name = "Mute Sound", desc = "Mutes the sound when close to the relay.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean tiaRelayMute = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/itemability/ChickenHeadConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/itemability/ChickenHeadConfig.java
new file mode 100644
index 000000000..49c803cd5
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/itemability/ChickenHeadConfig.java
@@ -0,0 +1,25 @@
+package at.hannibal2.skyhanni.config.features.itemability;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class ChickenHeadConfig {
+
+ @Expose
+ @ConfigOption(name = "Checken Head Timer", desc = "Show the cooldown until the next time you can lay an egg with the Chicken Head.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean displayTimer = false;
+
+ @Expose
+ public Position position = new Position(-372, 73, false, true);
+
+ @Expose
+ @ConfigOption(name = "Hide Chat", desc = "Hide the 'You laid an egg!' chat message.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideChat = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/itemability/FireVeilWandConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/itemability/FireVeilWandConfig.java
new file mode 100644
index 000000000..a05558d94
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/itemability/FireVeilWandConfig.java
@@ -0,0 +1,21 @@
+package at.hannibal2.skyhanni.config.features.itemability;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class FireVeilWandConfig {
+ @Expose
+ @ConfigOption(name = "Fire Veil Design", desc = "Changes the flame particles of the Fire Veil Wand ability.")
+ @ConfigEditorDropdown(values = {"Particles", "Line", "Off"})
+ public int display = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Line Color",
+ desc = "Changes the color of the Fire Veil Wand line."
+ )
+ @ConfigEditorColour
+ public String displayColor = "0:245:255:85:85";
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/itemability/ItemAbilityConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/itemability/ItemAbilityConfig.java
new file mode 100644
index 000000000..a53075016
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/itemability/ItemAbilityConfig.java
@@ -0,0 +1,38 @@
+package at.hannibal2.skyhanni.config.features.itemability;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class ItemAbilityConfig {
+
+ @Expose
+ @ConfigOption(name = "Ability Cooldown", desc = "Show the cooldown of item abilities.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean itemAbilityCooldown = false;
+
+ @Expose
+ @ConfigOption(name = "Ability Cooldown Background", desc = "Show the cooldown color of item abilities in the background.")
+ @ConfigEditorBoolean
+ public boolean itemAbilityCooldownBackground = false;
+
+ @Expose
+ @ConfigOption(name = "Fire Veil", desc = "")
+ @Accordion
+ public FireVeilWandConfig fireVeilWands = new FireVeilWandConfig();
+
+ @ConfigOption(name = "Chicken Head", desc = "")
+ @Accordion
+ @Expose
+ public ChickenHeadConfig chickenHead = new ChickenHeadConfig();
+
+ @Expose
+ @ConfigOption(name = "Depleted Bonzo's Masks",
+ desc = "Highlights used Bonzo's Masks and Spirit Masks with a background.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean depletedBonzosMasks = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/MarkedPlayerConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/markedplayer/MarkedPlayerConfig.java
index e199f7c55..431e5f29c 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/MarkedPlayerConfig.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/markedplayer/MarkedPlayerConfig.java
@@ -1,4 +1,4 @@
-package at.hannibal2.skyhanni.config.features;
+package at.hannibal2.skyhanni.config.features.markedplayer;
import com.google.gson.annotations.Expose;
import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/mining/KingTalismanConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/mining/KingTalismanConfig.java
new file mode 100644
index 000000000..e98ae5740
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/mining/KingTalismanConfig.java
@@ -0,0 +1,25 @@
+package at.hannibal2.skyhanni.config.features.mining;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class KingTalismanConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Show kings you have not talked to yet, and when the next missing king will appear.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(name = "Outside Mines", desc = "Show the display even while outside the Dwarven Mines.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean outsideMines = false;
+
+ @Expose
+ public Position position = new Position(-400, 220, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningConfig.java
new file mode 100644
index 000000000..feeb465ab
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/mining/MiningConfig.java
@@ -0,0 +1,32 @@
+package at.hannibal2.skyhanni.config.features.mining;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class MiningConfig {
+
+ @Expose
+ @ConfigOption(name = "Powder Tracker", desc = "")
+ @Accordion
+ public PowderTrackerConfig powderTracker = new PowderTrackerConfig();
+
+ @Expose
+ @ConfigOption(name = "King Talisman", desc = "")
+ @Accordion
+ public KingTalismanConfig kingTalisman = new KingTalismanConfig();
+
+ @Expose
+ @ConfigOption(name = "Highlight Commission Mobs", desc = "Highlight Mobs that are part of active commissions.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlightCommissionMobs = false;
+
+ @Expose
+ @ConfigOption(name = "Names in Core", desc = "Show the names of the 4 areas while in the center of the Crystal Hollows.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean crystalHollowsNamesInCore = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/mining/PowderTrackerConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/mining/PowderTrackerConfig.java
new file mode 100644
index 000000000..50bff2a9b
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/mining/PowderTrackerConfig.java
@@ -0,0 +1,84 @@
+package at.hannibal2.skyhanni.config.features.mining;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDraggableList;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import io.github.moulberry.moulconfig.observer.Property;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class PowderTrackerConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Enable the Powder Tracker overlay for mining.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(name = "Only when Grinding", desc = "Only show the overlay when powder grinding.")
+ @ConfigEditorBoolean
+ public boolean onlyWhenPowderGrinding = false;
+
+ @Expose
+ @ConfigOption(name = "Great Explorer", desc = "Enable this if your Great Explorer perk is maxed.")
+ @ConfigEditorBoolean
+ public boolean greatExplorerMaxed = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Text Format",
+ desc = "Drag text to change the appearance of the overlay."
+ )
+ @ConfigEditorDraggableList(
+ exampleText = {
+ "§b§lPowder Tracker",
+ "§7Display Mode: §a[Total] §e[This Session]",
+ "§d852 Total chests Picked §7(950/h)",
+ "§bx2 Powder: §aActive!",
+ "§b250,420 §aMithril Powder §7(350,000/h)",
+ "§b250,420 §dGemstone Powder §7(350,000/h)",
+ "",
+ "§b129 §bDiamond Essence §7(600/h)",
+ "§b234 §6Gold Essence §7(700/h)",
+ "",
+ "§50§7-§90§7-§a0§f-0 §cRuby Gemstone",
+ "§50§7-§90§7-§a0§f-0 §bSapphire Gemstone",
+ "§50§7-§90§7-§a0§f-0 §6Amber Gemstone",
+ "§50§7-§90§7-§a0§f-0 §5Amethyst Gemstone",
+ "§50§7-§90§7-§a0§f-0 §aJade Gemstone",
+ "§50§7-§90§7-§a0§f-0 §eTopaz Gemstone",
+
+ "§b14 §9FTX 3070",
+ "§b14 §9Electron Transmitter",
+ "§b14 §9Robotron Reflector",
+ "§b14 §9Superlite Motor",
+ "§b14 §9Control Switch",
+ "§b14 §9Synthetic Heart",
+ "§b14 §9Total Robot Parts",
+
+ "§90§7-§a0§7-§c0§f-§e0§f-§30 §fGoblin Egg",
+
+ "§b12 §aWishing Compass",
+
+ "§b320 §aSludge Juice",
+ "§b2 §9Ascension Rope",
+ "§b6 §5Treasurite",
+ "§b4 §6Jungle Heart",
+ "§b1 §5Pickonimbus 2000",
+ "§b14 §aYoggie",
+ "§b9 §fPrehistoric Egg",
+ "§b25 §aOil Barrel"
+ }
+ )
+ public Property<List<Integer>> textFormat = Property.of(new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)));
+
+ @Expose
+ public Position position = new Position(-274, 0, false, true);
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/minion/EmptiedTimeConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/minion/EmptiedTimeConfig.java
new file mode 100644
index 000000000..53f324e00
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/minion/EmptiedTimeConfig.java
@@ -0,0 +1,27 @@
+package at.hannibal2.skyhanni.config.features.minion;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class EmptiedTimeConfig {
+ @Expose
+ @ConfigOption(name = "Emptied Time Display", desc = "Show the time when the hopper in the minion was last emptied.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean display = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Distance",
+ desc = "Maximum distance to display minion data."
+ )
+ @ConfigEditorSlider(
+ minValue = 3,
+ maxValue = 30,
+ minStep = 1
+ )
+ public int distance = 10;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/minion/LastClickedMinionConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/minion/LastClickedMinionConfig.java
new file mode 100644
index 000000000..391a10468
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/minion/LastClickedMinionConfig.java
@@ -0,0 +1,36 @@
+package at.hannibal2.skyhanni.config.features.minion;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class LastClickedMinionConfig {
+ @Expose
+ @ConfigOption(name = "Last Minion Display", desc = "Marks the location of the last clicked minion, even through walls.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean display = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Last Minion Color",
+ desc = "The color in which the last minion should be displayed."
+ )
+ @ConfigEditorColour
+ public String color = "0:245:85:255:85";
+
+ @Expose
+ @ConfigOption(
+ name = "Last Minion Time",
+ desc = "Time in seconds how long the last minion should be displayed."
+ )
+ @ConfigEditorSlider(
+ minValue = 3,
+ maxValue = 120,
+ minStep = 1
+ )
+ public int time = 20;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/minion/MinionsConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/minion/MinionsConfig.java
new file mode 100644
index 000000000..d54e3d464
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/minion/MinionsConfig.java
@@ -0,0 +1,46 @@
+package at.hannibal2.skyhanni.config.features.minion;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class MinionsConfig {
+
+ @Expose
+ @ConfigOption(name = "Name Display", desc = "Show the minion name and tier over the minion.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean nameDisplay = true;
+
+ @Expose
+ @ConfigOption(name = "Only Tier", desc = "Show only the tier number over the minion. (Useful for Bingo)")
+ @ConfigEditorBoolean
+ public boolean nameOnlyTier = false;
+
+ @Expose
+ @ConfigOption(name = "Last Clicked", desc = "")
+ @Accordion
+ public LastClickedMinionConfig lastClickedMinion = new LastClickedMinionConfig();
+
+ @Expose
+ @ConfigOption(name = "Emptied Time", desc = "")
+ @Accordion
+ public EmptiedTimeConfig emptiedTime = new EmptiedTimeConfig();
+
+ @Expose
+ @ConfigOption(name = "Hopper Profit Display", desc = "Use the hopper's held coins and the last empty time to calculate the coins per day.")
+ @ConfigEditorBoolean
+ public boolean hopperProfitDisplay = true;
+
+ @Expose
+ public Position hopperProfitPos = new Position(360, 90, false, true);
+
+ @Expose
+ @ConfigOption(name = "Hide Mob Nametag", desc = "Hiding the nametag of mobs close to minions.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideMobsNametagNearby = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/misc/DiscordRPCConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/misc/DiscordRPCConfig.java
new file mode 100644
index 000000000..ab4a18d47
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/misc/DiscordRPCConfig.java
@@ -0,0 +1,97 @@
+package at.hannibal2.skyhanni.config.features.misc;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDraggableList;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorText;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import io.github.moulberry.moulconfig.observer.Property;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class DiscordRPCConfig {
+
+ @Expose
+ @ConfigOption(name = "Enable Discord RPC", desc = "Details about your SkyBlock session displayed through Discord.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public Property<Boolean> enabled = Property.of(false);
+
+ @Expose
+ @ConfigOption(name = "First Line", desc = "Decide what to show in the first line.")
+ @ConfigEditorDropdown(values = {
+ "Nothing",
+ "Location",
+ "Purse",
+ "Bits",
+ "Stats",
+ "Held Item",
+ "SkyBlock Date",
+ "Profile",
+ "Slayer",
+ "Custom",
+ "Dynamic",
+ "Crop Milestone",
+ "Current Pet"
+ })
+ public Property<Integer> firstLine = Property.of(0);
+
+ @Expose
+ @ConfigOption(name = "Second Line", desc = "Decide what to show in the second line.")
+ @ConfigEditorDropdown(values = {
+ "Nothing",
+ "Location",
+ "Purse",
+ "Bits",
+ "Stats",
+ "Held Item",
+ "SkyBlock Date",
+ "Profile",
+ "Slayer",
+ "Custom",
+ "Dynamic",
+ "Crop Milestone",
+ "Current Pet"
+ })
+ public Property<Integer> secondLine = Property.of(0);
+
+ @Expose
+ @ConfigOption(name = "Custom", desc = "What should be displayed if you select \"Custom\" above.")
+ @ConfigEditorText
+ public Property<String> customText = Property.of("");
+
+ @Expose
+ @ConfigOption(name = "Dynamic Priority", desc = "Disable certain dynamic statuses, or change the priority in case two are triggered at the same time (higher up means higher priority).")
+ @ConfigEditorDraggableList(
+ exampleText = {
+ "Crop Milestones",
+ "Slayer",
+ "Stacking Enchantment",
+ "Dungeon",
+ "AFK Indicator"
+ }
+ )
+ public List<Integer> autoPriority = new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4));
+
+ @Expose
+ @ConfigOption(name = "Dynamic Fallback", desc = "What to show when none of your \"Dynamic Priority\" statuses are active.")
+ @ConfigEditorDropdown(values = {
+ "Nothing",
+ "Location",
+ "Purse",
+ "Bits",
+ "Stats",
+ "Held Item",
+ "SkyBlock Date",
+ "Profile",
+ "Slayer",
+ "Custom",
+ "Crop Milestone",
+ "Current Pet"
+ })
+ public Property<Integer> auto = Property.of(0);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/misc/EstimatedItemValueConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/misc/EstimatedItemValueConfig.java
new file mode 100644
index 000000000..2513cd66b
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/misc/EstimatedItemValueConfig.java
@@ -0,0 +1,52 @@
+package at.hannibal2.skyhanni.config.features.misc;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import io.github.moulberry.moulconfig.observer.Property;
+import org.lwjgl.input.Keyboard;
+
+public class EstimatedItemValueConfig {
+ @Expose
+ @ConfigOption(name = "Enable Estimated Price", desc = "Displays an Estimated Item Value for the item you hover over.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(name = "Hotkey", desc = "Press this key to show the Estimated Item Value.")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
+ public int hotkey = Keyboard.KEY_NONE;
+
+ @Expose
+ @ConfigOption(name = "Show Always", desc = "Ignore the hotkey and always display the item value.")
+ @ConfigEditorBoolean
+ public boolean alwaysEnabled = true;
+
+ @Expose
+ @ConfigOption(name = "Enchantments Cap", desc = "Only show the top # most expensive enchantments.")
+ @ConfigEditorSlider(
+ minValue = 1,
+ maxValue = 30,
+ minStep = 1
+ )
+ public Property<Integer> enchantmentsCap = Property.of(7);
+
+ @Expose
+ @ConfigOption(name = "Show Exact Price", desc = "Show the exact total price instead of the compact number.")
+ @ConfigEditorBoolean
+ public boolean exactPrice = false;
+
+ @Expose
+ @ConfigOption(name = "Show Armor Value", desc = "Show the value of the full armor set in the Wardrobe inventory.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean armor = true;
+
+ @Expose
+ public Position itemPriceDataPos = new Position(140, 90, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/misc/GlowingDroppedItemsConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/misc/GlowingDroppedItemsConfig.java
new file mode 100644
index 000000000..4b5a260a1
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/misc/GlowingDroppedItemsConfig.java
@@ -0,0 +1,26 @@
+package at.hannibal2.skyhanni.config.features.misc;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class GlowingDroppedItemsConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Draws a glowing outline around all dropped items on the ground.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(name = "Highlight Showcase Items", desc = "Draws a glowing outline around showcase items.")
+ @ConfigEditorBoolean
+ public boolean highlightShowcase = false;
+
+ @Expose
+ @ConfigOption(name = "Highlight Fishing Bait", desc = "Draws a glowing outline around fishing bait.")
+ @ConfigEditorBoolean
+ public boolean highlightFishingBait = false;
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/misc/HideArmorConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/misc/HideArmorConfig.java
new file mode 100644
index 000000000..286249061
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/misc/HideArmorConfig.java
@@ -0,0 +1,20 @@
+package at.hannibal2.skyhanni.config.features.misc;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class HideArmorConfig {
+
+ @Expose
+ @ConfigOption(name = "Mode", desc = "Hide the armor of players.")
+ @ConfigEditorDropdown(values = {"All", "Own Armor", "Other's Armor", "Off"})
+ public int mode = 3;
+
+ @Expose
+ @ConfigOption(name = "Only Helmet", desc = "Only hide the helmet.")
+ @ConfigEditorBoolean()
+ public Boolean onlyHelmet = false;
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/misc/HighlightPartyMembersConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/misc/HighlightPartyMembersConfig.java
new file mode 100644
index 000000000..8dc4d7c02
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/misc/HighlightPartyMembersConfig.java
@@ -0,0 +1,25 @@
+package at.hannibal2.skyhanni.config.features.misc;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class HighlightPartyMembersConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Marking party members with a bright outline to better find them in the world.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Outline Color",
+ desc = "The color to outline party members in."
+ )
+ @ConfigEditorColour
+ public String outlineColor = "0:245:85:255:85";
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/misc/KickDurationConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/misc/KickDurationConfig.java
new file mode 100644
index 000000000..0d5af9046
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/misc/KickDurationConfig.java
@@ -0,0 +1,34 @@
+package at.hannibal2.skyhanni.config.features.misc;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import io.github.moulberry.moulconfig.observer.Property;
+
+public class KickDurationConfig {
+
+ @Expose
+ @ConfigOption(
+ name = "Enabled",
+ desc = "Show in the Hypixel lobby since when you were last kicked from SkyBlock (" +
+ "useful if you get blocked because of '§cYou were kicked while joining that server!§7')."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(name = "Warn Time", desc = "Send warning and sound this seconds after a SkyBlock kick.")
+ @ConfigEditorSlider(
+ minValue = 5,
+ maxValue = 300,
+ minStep = 1
+ )
+ public Property<Integer> warnTime = Property.of(60);
+
+ @Expose
+ public Position position = new Position(400, 200, 1.3f);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/misc/MiscConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/misc/MiscConfig.java
new file mode 100644
index 000000000..3358db12f
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/misc/MiscConfig.java
@@ -0,0 +1,209 @@
+package at.hannibal2.skyhanni.config.features.misc;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import at.hannibal2.skyhanni.config.features.misc.compacttablist.CompactTabListConfig;
+import at.hannibal2.skyhanni.config.features.misc.cosmetic.CosmeticConfig;
+import at.hannibal2.skyhanni.config.features.misc.pets.PetConfig;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.Category;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class MiscConfig {
+
+ @Expose
+ @Category(name = "Pets", desc = "Pets Settings")
+ public PetConfig pets = new PetConfig();
+
+ @ConfigOption(name = "Hide Armor", desc = "")
+ @Accordion
+ @Expose
+ public HideArmorConfig hideArmor2 = new HideArmorConfig();
+
+ @Expose
+ @ConfigOption(name = "Potion Effects", desc = "")
+ @Accordion
+ public PotionEffectsConfig potionEffect = new PotionEffectsConfig();
+
+ @Expose
+ @ConfigOption(name = "Particle Hider", desc = "")
+ @Accordion
+ public ParticleHiderConfig particleHiders = new ParticleHiderConfig();
+
+ @Expose
+ @ConfigOption(name = "Estimated Item Value", desc = "(Prices for Enchantments, Reforge Stones, Gemstones, Drill Parts and more)")
+ @Accordion
+ public EstimatedItemValueConfig estimatedItemValues = new EstimatedItemValueConfig();
+
+ @ConfigOption(name = "Discord Rich Presence", desc = "")
+ @Accordion
+ @Expose
+ public DiscordRPCConfig discordRPC = new DiscordRPCConfig();
+
+ @ConfigOption(name = "Trevor The Trapper", desc = "")
+ @Accordion
+ @Expose
+ public TrevorTheTrapperConfig trevorTheTrapper = new TrevorTheTrapperConfig();
+
+ @ConfigOption(name = "Teleport Pads On Private Island", desc = "")
+ @Accordion
+ @Expose
+ public TeleportPadConfig teleportPad = new TeleportPadConfig();
+
+ @ConfigOption(name = "Pocket Sack-In-A-Sack", desc = "")
+ @Accordion
+ @Expose
+ public PocketSackInASackConfig pocketSackInASack = new PocketSackInASackConfig();
+
+ @ConfigOption(name = "Quick Mod Menu Switch", desc = "")
+ @Accordion
+ @Expose
+ public QuickModMenuSwitchConfig quickModMenuSwitch = new QuickModMenuSwitchConfig();
+
+ @Expose
+ @Category(name = "Cosmetic", desc = "Cosmetics Settings")
+ public CosmeticConfig cosmetic = new CosmeticConfig();
+
+
+ @Expose
+ @ConfigOption(name = "Glowing Dropped Items", desc = "")
+ @Accordion
+ public GlowingDroppedItemsConfig glowingDroppedItems = new GlowingDroppedItemsConfig();
+
+ @Expose
+ @ConfigOption(name = "Highlight Party Members", desc = "")
+ @Accordion
+ public HighlightPartyMembersConfig highlightPartyMembers = new HighlightPartyMembersConfig();
+
+ @Expose
+ @Category(name = "Compact Tab List", desc = "Compact Tab List Settings")
+ @Accordion
+ public CompactTabListConfig compactTabList = new CompactTabListConfig();
+
+ @Expose
+ @ConfigOption(name = "Kick Duration", desc = "")
+ @Accordion
+ public KickDurationConfig kickDuration = new KickDurationConfig();
+
+ @Expose
+ @ConfigOption(name = "Exp Bottles", desc = "Hides all the experience orbs lying on the ground.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideExpBottles = false;
+
+ @Expose
+ public Position collectionCounterPos = new Position(10, 10, false, true);
+
+ @Expose
+ @ConfigOption(name = "Brewing Stand Overlay", desc = "Display the Item names directly inside the Brewing Stand.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean brewingStandOverlay = true;
+
+ @Expose
+ @ConfigOption(name = "Red Scoreboard Numbers", desc = "Hide the red scoreboard numbers on the right side of the screen.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideScoreboardNumbers = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Piggy", desc = "Replacing 'Piggy' with 'Purse' in the Scoreboard.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hidePiggyScoreboard = true;
+
+ @Expose
+ @ConfigOption(name = "Explosions Hider", desc = "Hide explosions.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideExplosions = false;
+
+ @Expose
+ @ConfigOption(name = "CH Join", desc = "Helps buy a Pass for accessing the Crystal Hollows if needed.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean crystalHollowsJoin = true;
+
+ @Expose
+ @ConfigOption(name = "Fire Overlay Hider", desc = "Hide the fire overlay (Like in Skytils).")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideFireOverlay = false;
+
+ @Expose
+ @ConfigOption(name = "Paste Into Signs", desc = "Allows you to paste the clipboard into signs when you press Ctrl + V.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean pasteIntoSigns = true;
+
+ @Expose
+ @ConfigOption(name = "Movement Speed", desc = "Show the player movement speed in blocks per second.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean playerMovementSpeed = false;
+
+ @Expose
+ public Position playerMovementSpeedPos = new Position(394, 124, false, true);
+
+ @Expose
+ @ConfigOption(name = "Pet Candy Used", desc = "Show the number of Pet Candy used on a pet.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean petCandyUsed = true;
+
+ @Expose
+ @ConfigOption(name = "Server Restart Title", desc = "Show a title with seconds remaining until the server restarts after a Game Update or Scheduled Restart.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean serverRestartTitle = true;
+
+ @Expose
+ @ConfigOption(name = "Piece Of Wizard Portal", desc = "Restore the Earned By lore line on bought Piece Of Wizard Portal.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean restorePieceOfWizardPortalLore = true;
+
+ @Expose
+ @ConfigOption(name = "Patcher Coords Waypoint", desc = "Highlight the coordinates sent by Patcher.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean patcherSendCoordWaypoint = false;
+
+
+ @Expose
+ @ConfigOption(name = "Account Upgrade Reminder", desc = "Remind you to claim account upgrades when complete.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean accountUpgradeReminder = true;
+
+ @Expose
+ @ConfigOption(name = "Superpairs Clicks Alert", desc = "Display an alert when you reach the maximum clicks gained from Chronomatron or Ultrasequencer.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean superpairsClicksAlert = false;
+
+ @Expose
+ @ConfigOption(name = "NEU Heavy Pearls", desc = "Fixing NEU Heavy Pearl detection.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean fixNeuHeavyPearls = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Time In Limbo",
+ desc = "Show the time since you entered the limbo.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean showTimeInLimbo = true;
+
+ @Expose
+ public Position showTimeInLimboPosition = new Position(400, 200, 1.3f);
+
+ @Expose
+ public Position lockedMouseDisplay = new Position(400, 200, 0.8f);
+
+ @Expose
+ public Position inventoryLoadPos = new Position(394, 124, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/misc/ParticleHiderConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/misc/ParticleHiderConfig.java
new file mode 100644
index 000000000..45f7c445e
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/misc/ParticleHiderConfig.java
@@ -0,0 +1,50 @@
+package at.hannibal2.skyhanni.config.features.misc;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class ParticleHiderConfig {
+ @Expose
+ @ConfigOption(name = "Blaze Particles", desc = "Hide Blaze particles.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideBlazeParticles = false;
+
+ @Expose
+ @ConfigOption(name = "Enderman Particles", desc = "Hide Enderman particles.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideEndermanParticles = false;
+
+ @Expose
+ @ConfigOption(name = "Fireball Particles", desc = "Hide fireball particles.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideFireballParticles = true;
+
+ @Expose
+ @ConfigOption(name = "Fire Particles", desc = "Hide particles from the fire block.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideFireBlockParticles = true;
+
+ @Expose
+ @ConfigOption(name = "Smoke Particles", desc = "Hide smoke particles.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideSmokeParticles = false;
+
+ @Expose
+ @ConfigOption(name = "Far Particles", desc = "Hide particles that are more than 40 blocks away.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideFarParticles = true;
+
+ @Expose
+ @ConfigOption(name = "Close Redstone Particles", desc = "Hide Redstone particles around the player (appear for some potion effects).")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideCloseRedstoneParticles = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/misc/PocketSackInASackConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/misc/PocketSackInASackConfig.java
new file mode 100644
index 000000000..c3a57d993
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/misc/PocketSackInASackConfig.java
@@ -0,0 +1,21 @@
+package at.hannibal2.skyhanni.config.features.misc;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class PocketSackInASackConfig {
+
+ @Expose
+ @ConfigOption(name = "Show in Overlay", desc = "Show the number of Pocket Sack-In-A-Sack applied on a sack icon as an overlay.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean showOverlay = false;
+
+ @Expose
+ @ConfigOption(name = "Replace In Lore", desc = "Replace how text is displayed in lore.\nShow §eis stitched with 2/3...\n§7Instead of §eis stitched with two...")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean replaceLore = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/misc/PotionEffectsConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/misc/PotionEffectsConfig.java
new file mode 100644
index 000000000..19711ffdb
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/misc/PotionEffectsConfig.java
@@ -0,0 +1,24 @@
+package at.hannibal2.skyhanni.config.features.misc;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class PotionEffectsConfig {
+ @Expose
+ @ConfigOption(name = "Non God Pot Effects", desc = "Display the active potion effects that are not part of the God Pot.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean nonGodPotEffectDisplay = false;
+
+ @Expose
+ @ConfigOption(name = "Show Mixins", desc = "Include God Pot mixins in the Non God Pot Effects display.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean nonGodPotEffectShowMixins = false;
+
+ @Expose
+ public Position nonGodPotEffectPos = new Position(10, 10, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/misc/QuickModMenuSwitchConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/misc/QuickModMenuSwitchConfig.java
new file mode 100644
index 000000000..a1361d4a2
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/misc/QuickModMenuSwitchConfig.java
@@ -0,0 +1,29 @@
+package at.hannibal2.skyhanni.config.features.misc;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class QuickModMenuSwitchConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Adding a mod list, allowing to quickly switch between different mod menus.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(name = "Inside Escape Menu", desc = "Show the mod list while inside the Escape menu.")
+ @ConfigEditorBoolean
+ public boolean insideEscapeMenu = true;
+
+ @Expose
+ @ConfigOption(name = "Inside Inventory", desc = "Show the mod list while inside the player inventory (no chest inventory).")
+ @ConfigEditorBoolean
+ public boolean insidePlayerInventory = false;
+
+ @Expose
+ public Position pos = new Position(-178, 143, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/misc/TeleportPadConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/misc/TeleportPadConfig.java
new file mode 100644
index 000000000..f16165547
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/misc/TeleportPadConfig.java
@@ -0,0 +1,21 @@
+package at.hannibal2.skyhanni.config.features.misc;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class TeleportPadConfig {
+
+ @Expose
+ @ConfigOption(name = "Compact Name", desc = "Hide the 'Warp to' and 'No Destination' texts over teleport pads.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean compactName = false;
+
+ @Expose
+ @ConfigOption(name = "Inventory Numbers", desc = "Show the number of the teleport pads inside the 'Change Destination' inventory as stack size.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean inventoryNumbers = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/misc/TrevorTheTrapperConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/misc/TrevorTheTrapperConfig.java
new file mode 100644
index 000000000..0c4226034
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/misc/TrevorTheTrapperConfig.java
@@ -0,0 +1,110 @@
+package at.hannibal2.skyhanni.config.features.misc;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDraggableList;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorKeybind;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import org.lwjgl.input.Keyboard;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class TrevorTheTrapperConfig {
+
+ @Expose
+ @ConfigOption(
+ name = "Enable Data Tracker",
+ desc = "Tracks all of your data from doing Trevor Quests.\n" +
+ "Shows based on the setting below."
+ )
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean dataTracker = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Show Between Quests",
+ desc = "Shows the tracker during and between quests otherwise it will only show during them." +
+ "Will show in the Trapper's Den regardless. §cToggle 'Enable Data Tracker' above."
+ )
+ @ConfigEditorBoolean
+ public boolean displayType = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Text Format",
+ desc = "Drag text to change the appearance of the overlay."
+ )
+ @ConfigEditorDraggableList(
+ exampleText = {
+ "§b§lTrevor Data Tracker",
+ "§b1,428 §9Quests Started",
+ "§b11,281 §5Total Pelts Gained",
+ "§b2,448 §5Pelts Per Hour",
+ "",
+ "§b850 §cKilled Animals",
+ "§b153 §cSelf Killing Animals",
+ "§b788 §fTrackable Animals",
+ "§b239 §aUntrackable Animals",
+ "§b115 §9Undetected Animals",
+ "§b73 §5Endangered Animals",
+ "§b12 §6Elusive Animals"
+ }
+ )
+ public List<Integer> textFormat = new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11));
+
+ @Expose
+ public Position position = new Position(10, 80, false, true);
+
+ @Expose
+ @ConfigOption(name = "Trapper Solver", desc = "Assists you in finding Trevor's mobs. §eNote: May not always work as expected. " +
+ "§cWill not help you to find rabbits or sheep in the Oasis!")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean trapperSolver = true;
+
+ @Expose
+ @ConfigOption(name = "Mob Dead Warning", desc = "Show a message when Trevor's mob dies.")
+ @ConfigEditorBoolean
+ public boolean trapperMobDiedMessage = true;
+
+ @Expose
+ @ConfigOption(name = "Warp to Trapper", desc = "Warp to Trevor's Den. Works only inside the Farming Islands.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean warpToTrapper = false;
+
+ @Expose
+ @ConfigOption(name = "Accept Trapper Quest", desc = "Click this key after the chat prompt to accept Trevor's quest.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean acceptQuest = false;
+
+ @Expose
+ @ConfigOption(name = "Trapper Hotkey", desc = "Press this key to warp to Trevor's Den or to accept the quest. " +
+ "§eRequires the relevant above settings to be toggled")
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE)
+ public int keyBindWarpTrapper = Keyboard.KEY_NONE;
+
+
+ @Expose
+ @ConfigOption(name = "Trapper Cooldown", desc = "Change the color of Trevor and adds a cooldown over his head.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean trapperTalkCooldown = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Trapper Cooldown GUI",
+ desc = "Show the cooldown on screen in an overlay (intended for Abiphone users)."
+ )
+ @ConfigEditorBoolean
+ public boolean trapperCooldownGui = false;
+
+ @Expose
+ public Position trapperCooldownPos = new Position(10, 10, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/misc/compacttablist/AdvancedPlayerListConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/misc/compacttablist/AdvancedPlayerListConfig.java
new file mode 100644
index 000000000..0bd6360d6
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/misc/compacttablist/AdvancedPlayerListConfig.java
@@ -0,0 +1,73 @@
+package at.hannibal2.skyhanni.config.features.misc.compacttablist;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class AdvancedPlayerListConfig {
+
+ @Expose
+ @ConfigOption(name = "Player Sort", desc = "Change the sort order of player names in the tab list.")
+ @ConfigEditorDropdown(values = {"Rank (Default)", "SB Level", "Name (Abc)", "Ironman/Bingo", "Party/Friends/Guild", "Random"})
+ public int playerSortOrder = 0;
+
+ @Expose
+ @ConfigOption(name = "Invert Sort", desc = "Flip the player list order on its head (also works with default rank).")
+ @ConfigEditorBoolean
+ public boolean reverseSort = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Player Icons", desc = "Hide the icons/skins of player in the tab list.")
+ @ConfigEditorBoolean
+ public boolean hidePlayerIcons = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Rank Color", desc = "Hide the player rank color.")
+ @ConfigEditorBoolean
+ public boolean hideRankColor = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Emblems", desc = "Hide the emblems behind the player name.")
+ @ConfigEditorBoolean
+ public boolean hideEmblem = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Level", desc = "Hide the SkyBlock level numbers.")
+ @ConfigEditorBoolean
+ public boolean hideLevel = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Level Brackets", desc = "Hide the gray brackets in front of and behind the level numbers.")
+ @ConfigEditorBoolean
+ public boolean hideLevelBrackets = false;
+
+ @Expose
+ @ConfigOption(name = "Level Color As Name", desc = "Use the color of the SkyBlock level for the player color.")
+ @ConfigEditorBoolean
+ public boolean useLevelColorForName = false;
+
+ @Expose
+ @ConfigOption(name = "Bingo Rank Number", desc = "Show the number of the bingo rank next to the icon. Useful if you are not so familar with bingo.")
+ @ConfigEditorBoolean
+ public boolean showBingoRankNumber = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Factions", desc = "Hide the icon of the Crimson Isle Faction in the tab list.")
+ @ConfigEditorBoolean
+ public boolean hideFactions = false;
+
+ @Expose
+ @ConfigOption(name = "Mark Special Persons", desc = "Show special icons behind the name of guild members, party members, friends, and marked players.")
+ @ConfigEditorBoolean
+ public boolean markSpecialPersons = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Mark SkyHanni Devs",
+ desc = "Adds a §c:O §7behind the tablist name of §cSkyHanni's contributors§7. " +
+ "§eThose are the folks that coded the mod for you for free :)"
+ )
+ @ConfigEditorBoolean
+ public boolean markSkyHanniContributors = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/misc/compacttablist/CompactTabListConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/misc/compacttablist/CompactTabListConfig.java
new file mode 100644
index 000000000..2236d886b
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/misc/compacttablist/CompactTabListConfig.java
@@ -0,0 +1,27 @@
+package at.hannibal2.skyhanni.config.features.misc.compacttablist;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class CompactTabListConfig {
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Compacts the tablist to make it look much nicer like SBA did. Also " +
+ "doesn't break god-pot detection and shortens some other lines.")
+ //made tablist one word here so both searches will pick it up
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Hypixel Adverts", desc = "Hides text from advertising the Hypixel server or store in the tablist.")
+ @ConfigEditorBoolean
+ public boolean hideAdverts = false;
+
+ @Expose
+ @ConfigOption(name = "Advanced Player List", desc = "")
+ @Accordion
+ public AdvancedPlayerListConfig advancedPlayerList = new AdvancedPlayerListConfig();
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/misc/cosmetic/ArrowTrailConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/misc/cosmetic/ArrowTrailConfig.java
new file mode 100644
index 000000000..7f8a044ed
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/misc/cosmetic/ArrowTrailConfig.java
@@ -0,0 +1,46 @@
+package at.hannibal2.skyhanni.config.features.misc.cosmetic;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class ArrowTrailConfig {
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Draw a colored line behind arrows in the air.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Nonplayer Arrows", desc = "Only shows for arrows the player has shot.")
+ @ConfigEditorBoolean
+ public boolean hideOtherArrows = true;
+
+ @Expose
+ @ConfigOption(name = "Arrow Color", desc = "Color of the line.")
+ @ConfigEditorColour
+ public String arrowColor = "0:200:85:255:85";
+
+ @Expose
+ @ConfigOption(name = "Player Arrows", desc = "Different color for the line of arrows that you have shot.")
+ @ConfigEditorBoolean
+ public boolean handlePlayerArrowsDifferently = false;
+
+ @Expose
+ @ConfigOption(name = "Player Arrow Color", desc = "Color of the line of your own arrows.")
+ @ConfigEditorColour
+ public String playerArrowColor = "0:200:85:255:255";
+
+ @Expose
+ @ConfigOption(name = "Time Alive", desc = "Time in seconds until the trail fades out.")
+ @ConfigEditorSlider(minStep = 0.1f, minValue = 0.1f, maxValue = 10)
+ public float secondsAlive = 0.5f;
+
+ @Expose
+ @ConfigOption(name = "Line Width", desc = "Width of the line.")
+ @ConfigEditorSlider(minStep = 1, minValue = 1, maxValue = 10)
+ public int lineWidth = 4;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/misc/cosmetic/CosmeticConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/misc/cosmetic/CosmeticConfig.java
new file mode 100644
index 000000000..80b5c6043
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/misc/cosmetic/CosmeticConfig.java
@@ -0,0 +1,18 @@
+package at.hannibal2.skyhanni.config.features.misc.cosmetic;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class CosmeticConfig {
+
+ @Expose
+ @ConfigOption(name = "Following Line", desc = "")
+ @Accordion
+ public FollowingLineConfig followingLine = new FollowingLineConfig();
+
+ @Expose
+ @ConfigOption(name = "Arrow Trail", desc = "")
+ @Accordion
+ public ArrowTrailConfig arrowTrail = new ArrowTrailConfig();
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/misc/cosmetic/FollowingLineConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/misc/cosmetic/FollowingLineConfig.java
new file mode 100644
index 000000000..87f846e71
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/misc/cosmetic/FollowingLineConfig.java
@@ -0,0 +1,37 @@
+package at.hannibal2.skyhanni.config.features.misc.cosmetic;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class FollowingLineConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Draw a colored line behind the player.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(name = "Line Color", desc = "Color of the line.")
+ @ConfigEditorColour
+ public String lineColor = "0:255:255:255:255";
+
+ @Expose
+ @ConfigOption(name = "Time Alive", desc = "Time in seconds until the line fades out.")
+ @ConfigEditorSlider(minStep = 1, minValue = 1, maxValue = 30)
+ public int secondsAlive = 3;
+
+ @Expose
+ @ConfigOption(name = "Max Line Width", desc = "Max width of the line.")
+ @ConfigEditorSlider(minStep = 1, minValue = 1, maxValue = 10)
+ public int lineWidth = 4;
+
+ @Expose
+ @ConfigOption(name = "Behind Blocks", desc = "Show behind blocks.")
+ @ConfigEditorBoolean
+ public boolean behindBlocks = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/misc/pets/PetConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/misc/pets/PetConfig.java
new file mode 100644
index 000000000..c6a32cee9
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/misc/pets/PetConfig.java
@@ -0,0 +1,24 @@
+package at.hannibal2.skyhanni.config.features.misc.pets;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class PetConfig {
+ @Expose
+ @ConfigOption(name = "Pet Display", desc = "Show the currently active pet.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean display = false;
+
+ @Expose
+ public Position displayPos = new Position(-330, -15, false, true);
+
+ @Expose
+ @ConfigOption(name = "Pet Experience Tooltip", desc = "")
+ @Accordion
+ public PetExperienceToolTipConfig petExperienceToolTip = new PetExperienceToolTipConfig();
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/misc/pets/PetExperienceToolTipConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/misc/pets/PetExperienceToolTipConfig.java
new file mode 100644
index 000000000..71ad44ba3
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/misc/pets/PetExperienceToolTipConfig.java
@@ -0,0 +1,27 @@
+package at.hannibal2.skyhanni.config.features.misc.pets;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class PetExperienceToolTipConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Show the full pet exp and the progress to level 100 (ignoring rarity) when hovering over a pet while pressing shift key.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean petDisplay = true;
+
+
+ @Expose
+ @ConfigOption(name = "Show Always", desc = "Show this info always, even if not pressing shift key.")
+ @ConfigEditorBoolean
+ public boolean showAlways = false;
+
+ @Expose
+ @ConfigOption(name = "Dragon Egg", desc = "For a Golden Dragon Egg, show progress to level 100 instead of 200.")
+ @ConfigEditorBoolean
+ public boolean showGoldenDragonEgg = true;
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/CruxTalismanDisplayConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/CruxTalismanDisplayConfig.java
new file mode 100644
index 000000000..fc69df292
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/CruxTalismanDisplayConfig.java
@@ -0,0 +1,30 @@
+package at.hannibal2.skyhanni.config.features.rift;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import io.github.moulberry.moulconfig.observer.Property;
+
+public class CruxTalismanDisplayConfig {
+ @Expose
+ @ConfigOption(name = "Crux Talisman Display", desc = "Display progress of the Crux Talisman on screen.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(name = "Compact", desc = "Show a compacted version of the overlay when the talisman is maxed.")
+ @ConfigEditorBoolean
+ public boolean compactWhenMaxed = false;
+
+ @Expose
+ @ConfigOption(name = "Show Bonuses", desc = "Show bonuses you get from the talisman.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public Property<Boolean> showBonuses = Property.of(true);
+
+ @Expose
+ public Position position = new Position(144, 139, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/EnigmaSoulConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/EnigmaSoulConfig.java
new file mode 100644
index 000000000..9b80b718d
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/EnigmaSoulConfig.java
@@ -0,0 +1,22 @@
+package at.hannibal2.skyhanni.config.features.rift;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class EnigmaSoulConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Click on Enigma Souls in Rift Guides to highlight their location.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(name = "Color", desc = "Color of the Enigma Souls.")
+ @ConfigEditorColour
+ public String color = "0:120:13:49:255";
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/MotesOrbsConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/MotesOrbsConfig.java
new file mode 100644
index 000000000..ebcdb2e57
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/MotesOrbsConfig.java
@@ -0,0 +1,28 @@
+package at.hannibal2.skyhanni.config.features.rift;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class MotesOrbsConfig {
+
+ @Expose
+ @ConfigOption(name = "Highlight Motes Orbs", desc = "Highlight flying Motes Orbs.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(name = "Highlight Size", desc = "Set render size for highlighted Motes Orbs.")
+ @ConfigEditorSlider(minStep = 1, minValue = 1, maxValue = 5)
+ public int size = 3;
+
+ @Expose
+ @ConfigOption(name = "Hide Particles", desc = "Hide normal Motes Orbs particles.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideParticles = false;
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/RiftConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/RiftConfig.java
new file mode 100644
index 000000000..ca20e01f9
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/RiftConfig.java
@@ -0,0 +1,53 @@
+package at.hannibal2.skyhanni.config.features.rift;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.features.rift.area.RiftAreasConfig;
+import at.hannibal2.skyhanni.config.features.rift.motes.MotesConfig;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.Category;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class RiftConfig {
+
+ @ConfigOption(name = "Rift Timer", desc = "")
+ @Accordion
+ @Expose
+ public RiftTimerConfig timer = new RiftTimerConfig();
+
+ @ConfigOption(name = "Crux Talisman Progress", desc = "")
+ @Accordion
+ @Expose
+ public CruxTalismanDisplayConfig cruxTalisman = new CruxTalismanDisplayConfig();
+
+ @ConfigOption(name = "Enigma Soul Waypoints", desc = "")
+ @Accordion
+ @Expose
+ public EnigmaSoulConfig enigmaSoulWaypoints = new EnigmaSoulConfig();
+
+ @Category(name = "Rift Areas", desc = "Rift Area Settings")
+ @Expose
+ public RiftAreasConfig area = new RiftAreasConfig();
+
+ @Expose
+ @Category(name = "Motes", desc = "Motes Sell Price")
+ public MotesConfig motes = new MotesConfig();
+
+ @Expose
+ @ConfigOption(name = "Motes Orbs", desc = "")
+ @Accordion
+ public MotesOrbsConfig motesOrbs = new MotesOrbsConfig();
+
+ @Expose
+ @ConfigOption(name = "Highlight Guide", desc = "Highlight things to do in the Rift Guide.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlightGuide = true;
+
+ @Expose
+ @ConfigOption(name = "Horsezooka Hider", desc = "Hide horses while holding the Horsezooka in the hand.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean horsezookaHider = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/RiftTimerConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/RiftTimerConfig.java
new file mode 100644
index 000000000..f1c7f32dd
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/RiftTimerConfig.java
@@ -0,0 +1,30 @@
+package at.hannibal2.skyhanni.config.features.rift;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class RiftTimerConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Show the remaining rift time, max time, percentage, and extra time changes.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(name = "Max Time", desc = "Show max time.")
+ @ConfigEditorBoolean
+ public boolean maxTime = true;
+
+ @Expose
+ @ConfigOption(name = "Percentage", desc = "Show percentage.")
+ @ConfigEditorBoolean
+ public boolean percentage = true;
+
+ @Expose
+ public Position timerPosition = new Position(10, 10, false, true);
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/RiftAreasConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/RiftAreasConfig.java
new file mode 100644
index 000000000..397eb2b90
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/RiftAreasConfig.java
@@ -0,0 +1,60 @@
+package at.hannibal2.skyhanni.config.features.rift.area;
+
+import at.hannibal2.skyhanni.config.features.rift.area.colosseum.ColosseumConfig;
+import at.hannibal2.skyhanni.config.features.rift.area.dreadfarm.DreadfarmConfig;
+import at.hannibal2.skyhanni.config.features.rift.area.livingcave.LivingCaveConfig;
+import at.hannibal2.skyhanni.config.features.rift.area.mirrorverse.MirrorVerseConfig;
+import at.hannibal2.skyhanni.config.features.rift.area.stillgorechateau.StillgoreChateauConfig;
+import at.hannibal2.skyhanni.config.features.rift.area.westvillage.WestVillageConfig;
+import at.hannibal2.skyhanni.config.features.rift.area.wyldwoods.WyldWoodsConfig;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class RiftAreasConfig {
+
+ @ConfigOption(name = "Wyld Woods", desc = "")
+ @Accordion
+ @Expose
+ public WyldWoodsConfig wyldWoods = new WyldWoodsConfig();
+
+ @ConfigOption(name = "West Village", desc = "")
+ @Accordion
+ @Expose
+ public WestVillageConfig westVillage = new WestVillageConfig();
+
+ @Expose
+ @ConfigOption(name = "Dreadfarm", desc = "")
+ @Accordion
+ public DreadfarmConfig dreadfarm = new DreadfarmConfig();
+
+ @ConfigOption(name = "Mirrorverse", desc = "")
+ @Accordion
+ @Expose
+ public MirrorVerseConfig mirrorverse = new MirrorVerseConfig();
+
+// @Expose
+// @ConfigOption(name = "Village Plaza", desc = "")
+// @Accordion
+// public VillagePlazaConfig villagePlaza = new VillagePlazaConfig();
+
+ @Expose
+ @ConfigOption(name = "Living Cave", desc = "")
+ @Accordion
+ public LivingCaveConfig livingCave = new LivingCaveConfig();
+
+ @Expose
+ @ConfigOption(name = "Colosseum", desc = "")
+ @Accordion
+ public ColosseumConfig colosseum = new ColosseumConfig();
+
+ @Expose
+ @ConfigOption(name = "Stillgore Chateau", desc = "")
+ @Accordion
+ public StillgoreChateauConfig stillgoreChateau = new StillgoreChateauConfig();
+
+// @Expose
+// @ConfigOption(name = "Mountaintop", desc = "")
+// @Accordion
+// public MountaintopConfig mountaintop = new MountaintopConfig();
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/colosseum/ColosseumConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/colosseum/ColosseumConfig.java
new file mode 100644
index 000000000..d9a662f0d
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/colosseum/ColosseumConfig.java
@@ -0,0 +1,15 @@
+package at.hannibal2.skyhanni.config.features.rift.area.colosseum;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class ColosseumConfig {
+
+ @Expose
+ @ConfigOption(name = "Highlight Blobbercysts", desc = "Highlight Blobbercysts in Bacte fight.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlightBlobbercysts = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/dreadfarm/DreadfarmConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/dreadfarm/DreadfarmConfig.java
new file mode 100644
index 000000000..9a17c70b8
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/dreadfarm/DreadfarmConfig.java
@@ -0,0 +1,26 @@
+package at.hannibal2.skyhanni.config.features.rift.area.dreadfarm;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class DreadfarmConfig {
+ @Expose
+ @ConfigOption(name = "Agaricus Cap", desc = "Counts down the time until §eAgaricus Cap (Mushroom) " +
+ "§7changes color from brown to red and is breakable.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean agaricusCap = true;
+
+ @ConfigOption(name = "Volt Crux", desc = "")
+ @Accordion
+ @Expose
+ public VoltCruxConfig voltCrux = new VoltCruxConfig();
+
+ @ConfigOption(name = "Wilted Berberis", desc = "")
+ @Accordion
+ @Expose
+ public WiltedBerberisConfig wiltedBerberis = new WiltedBerberisConfig();
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/dreadfarm/VoltCruxConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/dreadfarm/VoltCruxConfig.java
new file mode 100644
index 000000000..307e57d45
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/dreadfarm/VoltCruxConfig.java
@@ -0,0 +1,33 @@
+package at.hannibal2.skyhanni.config.features.rift.area.dreadfarm;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class VoltCruxConfig {
+
+ @Expose
+ @ConfigOption(name = "Volt Warning", desc = "Shows a warning while a Volt is discharging lightning.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean voltWarning = true;
+
+ @Expose
+ @ConfigOption(name = "Volt Range Highlighter", desc = "Shows the area in which a Volt might strike lightning.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean voltRange = true;
+
+ @Expose
+ @ConfigOption(name = "Volt Range Highlighter Color", desc = "In which color should the Volt range be highlighted?")
+ @ConfigEditorColour
+ public String voltColour = "0:60:0:0:255";
+
+ @Expose
+ @ConfigOption(name = "Volt Mood Color", desc = "Change the color of the Volt enemy depending on their mood.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean voltMoodMeter = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/dreadfarm/WiltedBerberisConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/dreadfarm/WiltedBerberisConfig.java
new file mode 100644
index 000000000..9cad5a475
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/dreadfarm/WiltedBerberisConfig.java
@@ -0,0 +1,26 @@
+package at.hannibal2.skyhanni.config.features.rift.area.dreadfarm;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class WiltedBerberisConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Show Wilted Berberis helper.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(name = "Only on Farmland", desc = "Only show the helper while standing on Farmland blocks.")
+ @ConfigEditorBoolean
+ public boolean onlyOnFarmland = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Particles", desc = "Hide the Wilted Berberis particles.")
+ @ConfigEditorBoolean
+ public boolean hideparticles = false;
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/livingcave/DefenseBlockConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/livingcave/DefenseBlockConfig.java
new file mode 100644
index 000000000..1754afb1e
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/livingcave/DefenseBlockConfig.java
@@ -0,0 +1,29 @@
+package at.hannibal2.skyhanni.config.features.rift.area.livingcave;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import io.github.moulberry.moulconfig.observer.Property;
+
+public class DefenseBlockConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Show a line between Defense blocks and the mob and highlight the blocks.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(name = "Hide Particles", desc = "Hide particles around Defense Blocks.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideParticles = false;
+
+ @Expose
+ @ConfigOption(name = "Color", desc = "Set the color of the lines, blocks and the entity.")
+ @ConfigEditorColour
+ public Property<String> color = Property.of("0:255:77:104:255");
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/livingcave/LivingCaveConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/livingcave/LivingCaveConfig.java
new file mode 100644
index 000000000..620238538
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/livingcave/LivingCaveConfig.java
@@ -0,0 +1,23 @@
+package at.hannibal2.skyhanni.config.features.rift.area.livingcave;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class LivingCaveConfig {
+
+ @Expose
+ @ConfigOption(name = "Living Metal Suit Progress", desc = "")
+ @Accordion
+ public LivingMetalSuitProgressConfig livingMetalSuitProgress = new LivingMetalSuitProgressConfig();
+
+ @Expose
+ @ConfigOption(name = "Defense Blocks", desc = "")
+ @Accordion
+ public DefenseBlockConfig defenseBlockConfig = new DefenseBlockConfig();
+
+ @Expose
+ @ConfigOption(name = "Living Metal Helper", desc = "")
+ @Accordion
+ public LivingCaveLivingMetalConfig livingCaveLivingMetalConfig = new LivingCaveLivingMetalConfig();
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/livingcave/LivingCaveLivingMetalConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/livingcave/LivingCaveLivingMetalConfig.java
new file mode 100644
index 000000000..aab75d571
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/livingcave/LivingCaveLivingMetalConfig.java
@@ -0,0 +1,22 @@
+package at.hannibal2.skyhanni.config.features.rift.area.livingcave;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class LivingCaveLivingMetalConfig {
+
+ @Expose
+ @ConfigOption(name = "Living Metal", desc = "Show a moving animation between Living Metal and the next block.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(name = "Hide Particles", desc = "Hide Living Metal particles.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideParticles = false;
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/livingcave/LivingMetalSuitProgressConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/livingcave/LivingMetalSuitProgressConfig.java
new file mode 100644
index 000000000..d24520dc1
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/livingcave/LivingMetalSuitProgressConfig.java
@@ -0,0 +1,24 @@
+package at.hannibal2.skyhanni.config.features.rift.area.livingcave;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class LivingMetalSuitProgressConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Display Living Metal Suit progress.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(name = "Compact", desc = "Show a compacted version of the overlay when the set is maxed.")
+ @ConfigEditorBoolean
+ public boolean compactWhenMaxed = false;
+
+ @Expose
+ public Position position = new Position(100, 100);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/LavaMazeConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/LavaMazeConfig.java
new file mode 100644
index 000000000..b3198cc4c
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/LavaMazeConfig.java
@@ -0,0 +1,39 @@
+package at.hannibal2.skyhanni.config.features.rift.area.mirrorverse;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import io.github.moulberry.moulconfig.observer.Property;
+
+public class LavaMazeConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Helps solving the lava maze in the Mirrorverse by showing the correct way.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(name = "Look Ahead", desc = "Change how many platforms should be shown in front of you.")
+ @ConfigEditorSlider(minStep = 1, maxValue = 30, minValue = 1)
+ public Property<Integer> lookAhead = Property.of(3);
+
+ @Expose
+ @ConfigOption(name = "Rainbow Color", desc = "Show the rainbow color effect instead of a boring monochrome.")
+ @ConfigEditorBoolean
+ public Property<Boolean> rainbowColor = Property.of(true);
+
+ @Expose
+ @ConfigOption(name = "Monochrome Color", desc = "Set a boring monochrome color for the parkour platforms.")
+ @ConfigEditorColour
+ public Property<String> monochromeColor = Property.of("0:60:0:0:255");
+
+ @Expose
+ @ConfigOption(name = "Hide Others Players", desc = "Hide other players while doing the lava maze.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hidePlayers = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/MirrorVerseConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/MirrorVerseConfig.java
new file mode 100644
index 000000000..e93324972
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/MirrorVerseConfig.java
@@ -0,0 +1,29 @@
+package at.hannibal2.skyhanni.config.features.rift.area.mirrorverse;
+
+import at.hannibal2.skyhanni.config.features.rift.area.mirrorverse.danceroomhelper.DanceRoomHelperConfig;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class MirrorVerseConfig {
+
+ @ConfigOption(name = "Lava Maze", desc = "")
+ @Accordion
+ @Expose
+ public LavaMazeConfig lavaMazeConfig = new LavaMazeConfig();
+
+ @ConfigOption(name = "Upside Down Parkour", desc = "")
+ @Accordion
+ @Expose
+ public UpsideDownParkourConfig upsideDownParkour = new UpsideDownParkourConfig();
+
+ @ConfigOption(name = "Dance Room Helper", desc = "")
+ @Accordion
+ @Expose
+ public DanceRoomHelperConfig danceRoomHelper = new DanceRoomHelperConfig();
+
+ @ConfigOption(name = "Tubulator", desc = "")
+ @Accordion
+ @Expose
+ public TubulatorConfig tubulatorConfig = new TubulatorConfig();
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/TubulatorConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/TubulatorConfig.java
new file mode 100644
index 000000000..586ce2f4e
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/TubulatorConfig.java
@@ -0,0 +1,44 @@
+package at.hannibal2.skyhanni.config.features.rift.area.mirrorverse;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import io.github.moulberry.moulconfig.observer.Property;
+
+public class TubulatorConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Highlights the location of the invisible Tubulator blocks (Laser Parkour).")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(name = "Look Ahead", desc = "Change how many platforms should be shown in front of you.")
+ @ConfigEditorSlider(minStep = 1, maxValue = 30, minValue = 1)
+ public Property<Integer> lookAhead = Property.of(2);
+
+ @Expose
+ @ConfigOption(name = "Outline", desc = "Outlines the top edge of the platforms.")
+ @ConfigEditorBoolean
+ public boolean outline = true;
+
+ @Expose
+ @ConfigOption(name = "Rainbow Color", desc = "Show the rainbow color effect instead of a boring monochrome.")
+ @ConfigEditorBoolean
+ public Property<Boolean> rainbowColor = Property.of(true);
+
+ @Expose
+ @ConfigOption(name = "Monochrome Color", desc = "Set a boring monochrome color for the parkour platforms.")
+ @ConfigEditorColour
+ public Property<String> monochromeColor = Property.of("0:60:0:0:255");
+
+ @Expose
+ @ConfigOption(name = "Hide Other Players", desc = "Hide other players while doing the lava maze.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hidePlayers = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/UpsideDownParkourConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/UpsideDownParkourConfig.java
new file mode 100644
index 000000000..e8712f310
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/UpsideDownParkourConfig.java
@@ -0,0 +1,44 @@
+package at.hannibal2.skyhanni.config.features.rift.area.mirrorverse;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+import io.github.moulberry.moulconfig.observer.Property;
+
+public class UpsideDownParkourConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Helps solving the upside down parkour in the Mirrorverse by showing the correct way.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(name = "Look Ahead", desc = "Change how many platforms should be shown in front of you.")
+ @ConfigEditorSlider(minStep = 1, maxValue = 9, minValue = 1)
+ public Property<Integer> lookAhead = Property.of(3);
+
+ @Expose
+ @ConfigOption(name = "Outline", desc = "Outlines the top edge of the platforms.")
+ @ConfigEditorBoolean
+ public boolean outline = true;
+
+ @Expose
+ @ConfigOption(name = "Rainbow Color", desc = "Show the rainbow color effect instead of a boring monochrome.")
+ @ConfigEditorBoolean
+ public Property<Boolean> rainbowColor = Property.of(true);
+
+ @Expose
+ @ConfigOption(name = "Monochrome Color", desc = "Set a boring monochrome color for the parkour platforms.")
+ @ConfigEditorColour
+ public Property<String> monochromeColor = Property.of("0:60:0:0:255");
+
+ @Expose
+ @ConfigOption(name = "Hide Others Players", desc = "Hide other players while doing the upside down parkour.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hidePlayers = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/danceroomhelper/DanceRoomHelperConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/danceroomhelper/DanceRoomHelperConfig.java
new file mode 100644
index 000000000..a5b61aee8
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/danceroomhelper/DanceRoomHelperConfig.java
@@ -0,0 +1,48 @@
+package at.hannibal2.skyhanni.config.features.rift.area.mirrorverse.danceroomhelper;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import at.hannibal2.skyhanni.config.features.rift.area.mirrorverse.danceroomhelper.danceroomformatting.DanceRoomFormattingConfig;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class DanceRoomHelperConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Helps to solve the dance room in the Mirrorverse by showing multiple tasks at once.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(name = "Lines to Show", desc = "How many tasks you should see.")
+ @ConfigEditorSlider(minStep = 1, maxValue = 49, minValue = 1)
+ public int lineToShow = 3;
+
+ @Expose
+ @ConfigOption(name = "Space", desc = "Change the space between each line.")
+ @ConfigEditorSlider(minStep = 1, maxValue = 10, minValue = -5)
+ public int extraSpace = 0;
+
+ @Expose
+ @ConfigOption(name = "Hide Other Players", desc = "Hide other players inside the dance room.")
+ @ConfigEditorBoolean
+ public boolean hidePlayers = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Title", desc = "Hide Instructions, \"§aIt's happening!\" §7and \"§aKeep it up!\" §7titles.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideOriginalTitle = false;
+
+ @Expose
+ @ConfigOption(name = "Formatting", desc = "")
+ @Accordion
+ public DanceRoomFormattingConfig danceRoomFormatting = new DanceRoomFormattingConfig();
+
+ @Expose
+ public Position position = new Position(442, 239, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/danceroomhelper/danceroomformatting/ColorConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/danceroomhelper/danceroomformatting/ColorConfig.java
new file mode 100644
index 000000000..71f3013a6
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/danceroomhelper/danceroomformatting/ColorConfig.java
@@ -0,0 +1,42 @@
+package at.hannibal2.skyhanni.config.features.rift.area.mirrorverse.danceroomhelper.danceroomformatting;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorText;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class ColorConfig {
+ @Expose
+ @ConfigOption(name = "Move", desc = "Color for the Move instruction")
+ @ConfigEditorText
+ public String move = "&e";
+
+ @Expose
+ @ConfigOption(name = "Stand", desc = "Color for the Stand instruction")
+ @ConfigEditorText
+ public String stand = "&e";
+
+ @Expose
+ @ConfigOption(name = "Sneak", desc = "Color for the Sneak instruction")
+ @ConfigEditorText
+ public String sneak = "&5";
+
+ @Expose
+ @ConfigOption(name = "Jump", desc = "Color for the Jump instruction")
+ @ConfigEditorText
+ public String jump = "&b";
+
+ @Expose
+ @ConfigOption(name = "Punch", desc = "Color for the Punch instruction")
+ @ConfigEditorText
+ public String punch = "&d";
+
+ @Expose
+ @ConfigOption(name = "Countdown", desc = "Color for the Countdown")
+ @ConfigEditorText
+ public String countdown = "&f";
+
+ @Expose
+ @ConfigOption(name = "Default", desc = "Fallback color")
+ @ConfigEditorText
+ public String fallback = "&f";
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/danceroomhelper/danceroomformatting/DanceRoomFormattingConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/danceroomhelper/danceroomformatting/DanceRoomFormattingConfig.java
new file mode 100644
index 000000000..1c35a3924
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/mirrorverse/danceroomhelper/danceroomformatting/DanceRoomFormattingConfig.java
@@ -0,0 +1,29 @@
+package at.hannibal2.skyhanni.config.features.rift.area.mirrorverse.danceroomhelper.danceroomformatting;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorText;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class DanceRoomFormattingConfig {
+
+ @Expose
+ @ConfigOption(name = "Now", desc = "Formatting for \"Now:\"")
+ @ConfigEditorText
+ public String now = "&7Now:";
+
+ @Expose
+ @ConfigOption(name = "Next", desc = "Formatting for \"Next:\"")
+ @ConfigEditorText
+ public String next = "&7Next:";
+
+ @Expose
+ @ConfigOption(name = "Later", desc = "Formatting for \"Later:\"")
+ @ConfigEditorText
+ public String later = "&7Later:";
+
+ @Expose
+ @ConfigOption(name = "Color Option", desc = "")
+ @Accordion
+ public ColorConfig color = new ColorConfig();
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/stillgorechateau/EffigiesConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/stillgorechateau/EffigiesConfig.java
new file mode 100644
index 000000000..62a20c0e0
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/stillgorechateau/EffigiesConfig.java
@@ -0,0 +1,37 @@
+package at.hannibal2.skyhanni.config.features.rift.area.stillgorechateau;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class EffigiesConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Show locations of inactive Blood Effigies.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(name = "Respawning Soon", desc = "Show effigies that are about to respawn.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean respawningSoon = false;
+
+ @Expose
+ @ConfigOption(name = "Respawning Time", desc = "Time before effigies respawn to show.")
+ @ConfigEditorSlider(
+ minValue = 1,
+ maxValue = 15,
+ minStep = 1
+ )
+ public int respwningSoonTime = 3;
+
+ @Expose
+ @ConfigOption(name = "Unknown Times", desc = "Show effigies without known time.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean unknownTime = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/stillgorechateau/StillgoreChateauConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/stillgorechateau/StillgoreChateauConfig.java
new file mode 100644
index 000000000..761b7c1d2
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/stillgorechateau/StillgoreChateauConfig.java
@@ -0,0 +1,14 @@
+package at.hannibal2.skyhanni.config.features.rift.area.stillgorechateau;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class StillgoreChateauConfig {
+
+ @Expose
+ @ConfigOption(name = "Blood Effigies", desc = "")
+ @Accordion
+ public EffigiesConfig bloodEffigies = new EffigiesConfig();
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/westvillage/KloonHackingConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/westvillage/KloonHackingConfig.java
new file mode 100644
index 000000000..346747aab
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/westvillage/KloonHackingConfig.java
@@ -0,0 +1,27 @@
+package at.hannibal2.skyhanni.config.features.rift.area.westvillage;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class KloonHackingConfig {
+
+ @Expose
+ @ConfigOption(name = "Hacking Solver", desc = "Highlights the correct button to click in the hacking inventory.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean solver = true;
+
+ @Expose
+ @ConfigOption(name = "Color Guide", desc = "Tells you which color to pick.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean colour = true;
+
+ @Expose
+ @ConfigOption(name = "Terminal Waypoints", desc = "While wearing the helmet, waypoints will appear at each terminal location.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean waypoints = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/westvillage/WestVillageConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/westvillage/WestVillageConfig.java
new file mode 100644
index 000000000..273080489
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/westvillage/WestVillageConfig.java
@@ -0,0 +1,13 @@
+package at.hannibal2.skyhanni.config.features.rift.area.westvillage;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class WestVillageConfig {
+
+ @ConfigOption(name = "Kloon Hacking", desc = "")
+ @Accordion
+ @Expose
+ public KloonHackingConfig hacking = new KloonHackingConfig();
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/wyldwoods/LarvasConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/wyldwoods/LarvasConfig.java
new file mode 100644
index 000000000..b7a7aa240
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/wyldwoods/LarvasConfig.java
@@ -0,0 +1,22 @@
+package at.hannibal2.skyhanni.config.features.rift.area.wyldwoods;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class LarvasConfig {
+
+ @Expose
+ @ConfigOption(name = "Highlight", desc = "Highlight §cLarvas on trees §7while holding a §eLarva Hook §7in the hand.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlight = true;
+
+ @Expose
+ @ConfigOption(name = "Color", desc = "Color of the Larvas.")
+ @ConfigEditorColour
+ public String highlightColor = "0:120:13:49:255";
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/wyldwoods/OdonataConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/wyldwoods/OdonataConfig.java
new file mode 100644
index 000000000..e32e9e01b
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/wyldwoods/OdonataConfig.java
@@ -0,0 +1,23 @@
+package at.hannibal2.skyhanni.config.features.rift.area.wyldwoods;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class OdonataConfig {
+
+ @Expose
+ @ConfigOption(name = "Highlight", desc = "Highlight the small §cOdonatas §7flying around the trees while holding an " +
+ "§eEmpty Odonata Bottle §7in the hand.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlight = true;
+
+ @Expose
+ @ConfigOption(name = "Color", desc = "Color of the Odonatas.")
+ @ConfigEditorColour
+ public String highlightColor = "0:120:13:49:255";
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/wyldwoods/WyldWoodsConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/wyldwoods/WyldWoodsConfig.java
new file mode 100644
index 000000000..3eae50fb5
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/wyldwoods/WyldWoodsConfig.java
@@ -0,0 +1,27 @@
+package at.hannibal2.skyhanni.config.features.rift.area.wyldwoods;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class WyldWoodsConfig {
+
+ @Expose
+ @ConfigOption(name = "Shy Crux Warning", desc = "Shows a warning when a Shy Crux is going to steal your time. " +
+ "Useful if you play without volume.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean shyWarning = true;
+
+ @ConfigOption(name = "Larvas", desc = "")
+ @Accordion
+ @Expose
+ public LarvasConfig larvas = new LarvasConfig();
+
+ @ConfigOption(name = "Odonatas", desc = "")
+ @Accordion
+ @Expose
+ public OdonataConfig odonata = new OdonataConfig();
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/motes/InventoryValueConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/motes/InventoryValueConfig.java
new file mode 100644
index 000000000..297a83a1c
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/motes/InventoryValueConfig.java
@@ -0,0 +1,25 @@
+package at.hannibal2.skyhanni.config.features.rift.motes;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class InventoryValueConfig {
+ @Expose
+ @ConfigOption(name = "Inventory Value", desc = "Show total Motes NPC price for the current opened inventory.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(name = "Number Format Type", desc = "Short: 1.2M\n" +
+ "Long: 1,200,000")
+ @ConfigEditorDropdown(values = {"Short", "Long"})
+ public int formatType = 0;
+
+ @Expose
+ public Position position = new Position(126, 156, false, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/motes/MotesConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/motes/MotesConfig.java
new file mode 100644
index 000000000..2a65a6652
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/motes/MotesConfig.java
@@ -0,0 +1,27 @@
+package at.hannibal2.skyhanni.config.features.rift.motes;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class MotesConfig {
+
+ @Expose
+ @ConfigOption(name = "Show Motes Price", desc = "Show the Motes NPC price in the item lore.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean showPrice = true;
+
+ @Expose
+ @ConfigOption(name = "Burger Stacks", desc = "Set your McGrubber's burger stacks.")
+ @ConfigEditorSlider(minStep = 1, minValue = 0, maxValue = 5)
+ public int burgerStacks = 0;
+
+ @Expose
+ @ConfigOption(name = "Inventory Value", desc = "")
+ @Accordion
+ public InventoryValueConfig inventoryValue = new InventoryValueConfig();
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/slayer/ItemProfitTrackerConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/ItemProfitTrackerConfig.java
new file mode 100644
index 000000000..a7bc636db
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/ItemProfitTrackerConfig.java
@@ -0,0 +1,50 @@
+package at.hannibal2.skyhanni.config.features.slayer;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class ItemProfitTrackerConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Count all items you pick up while doing slayer, " +
+ "keep track of how much you pay for starting slayers and calculating the overall profit.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ public Position pos = new Position(20, 20, false, true);
+
+ @Expose
+ @ConfigOption(name = "Price in Chat", desc = "Show an extra chat message when you pick up an item. " +
+ "(This contains name, amount and price)")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean priceInChat = false;
+
+ @Expose
+ @ConfigOption(name = "Show Price From", desc = "Show price from Bazaar or NPC.")
+ @ConfigEditorDropdown(values = {"Instant Sell", "Sell Offer", "NPC"})
+ public int priceFrom = 1;
+
+ @Expose
+ @ConfigOption(name = "Minimum Price", desc = "Items below this price will not show up in chat.")
+ @ConfigEditorSlider(minValue = 1, maxValue = 5_000_000, minStep = 1)
+ public int minimumPrice = 100_000;
+
+ @Expose
+ @ConfigOption(name = "Title Warning", desc = "Show a title for expensive item pickups.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean titleWarning = false;
+
+ @Expose
+ @ConfigOption(name = "Title Price", desc = "Items above this price will show up as a title.")
+ @ConfigEditorSlider(minValue = 1, maxValue = 20_000_000, minStep = 1)
+ public int minimumPriceWarning = 500_000;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/slayer/ItemsOnGroundConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/ItemsOnGroundConfig.java
new file mode 100644
index 000000000..4f3e2428d
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/ItemsOnGroundConfig.java
@@ -0,0 +1,21 @@
+package at.hannibal2.skyhanni.config.features.slayer;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class ItemsOnGroundConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Show the name and price of items laying on the ground. §cOnly in slayer areas!")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(name = "Minimum Price", desc = "Items below this price will be ignored.")
+ @ConfigEditorSlider(minValue = 1, maxValue = 1_000_000, minStep = 1)
+ public int minimumPrice = 50_000;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/slayer/RngMeterDisplayConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/RngMeterDisplayConfig.java
new file mode 100644
index 000000000..04b6c6704
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/RngMeterDisplayConfig.java
@@ -0,0 +1,30 @@
+package at.hannibal2.skyhanni.config.features.slayer;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class RngMeterDisplayConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Display amount of bosses needed until next RNG meter drop.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(name = "Warn Empty", desc = "Warn when no item is set in the RNG Meter.")
+ @ConfigEditorBoolean
+ public boolean warnEmpty = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Chat", desc = "Hide the RNG meter message from chat if current item is selected.")
+ @ConfigEditorBoolean
+ public boolean hideChat = true;
+
+ @Expose
+ public Position pos = new Position(410, 110, false, true);
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/slayer/SlayerBossWarningConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/SlayerBossWarningConfig.java
new file mode 100644
index 000000000..1376a29a2
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/SlayerBossWarningConfig.java
@@ -0,0 +1,26 @@
+package at.hannibal2.skyhanni.config.features.slayer;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class SlayerBossWarningConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Send a title when your boss is about to spawn.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = false;
+
+ @Expose
+ @ConfigOption(name = "Percent", desc = "The percentage at which the title and sound should be sent.")
+ @ConfigEditorSlider(minStep = 1, minValue = 50, maxValue = 90)
+ public int percent = 80;
+
+ @Expose
+ @ConfigOption(name = "Repeat", desc = "Resend the title and sound on every kill after reaching the configured percent value.")
+ @ConfigEditorBoolean
+ public boolean repeat = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/slayer/SlayerConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/SlayerConfig.java
new file mode 100644
index 000000000..89128e7ff
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/SlayerConfig.java
@@ -0,0 +1,77 @@
+package at.hannibal2.skyhanni.config.features.slayer;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.features.slayer.blaze.BlazeConfig;
+import at.hannibal2.skyhanni.config.features.slayer.endermen.EndermanConfig;
+import at.hannibal2.skyhanni.config.features.slayer.vampire.VampireConfig;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.Category;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class SlayerConfig {
+
+ @Expose
+ @Category(name = "Endermen", desc = "Endermen Slayer Feature")
+ @Accordion
+ public EndermanConfig endermen = new EndermanConfig();
+
+ @Expose
+ @Category(name = "Blaze", desc = "Blaze Slayer Features")
+ public BlazeConfig blazes = new BlazeConfig();
+
+ @Expose
+ @Category(name = "Vampire", desc = "Vampire Slayer Features")
+ public VampireConfig vampire = new VampireConfig();
+
+ @Expose
+ @ConfigOption(name = "Item Profit Tracker", desc = "")
+ @Accordion
+ public ItemProfitTrackerConfig itemProfitTracker = new ItemProfitTrackerConfig();
+
+ @Expose
+ @ConfigOption(name = "Items on Ground", desc = "")
+ @Accordion
+ public ItemsOnGroundConfig itemsOnGround = new ItemsOnGroundConfig();
+
+ @Expose
+ @ConfigOption(name = "RNG Meter Display", desc = "")
+ @Accordion
+ public RngMeterDisplayConfig rngMeterDisplay = new RngMeterDisplayConfig();
+
+ @Expose
+ @ConfigOption(name = "Boss Spawn Warning", desc = "")
+ @Accordion
+ public SlayerBossWarningConfig slayerBossWarning = new SlayerBossWarningConfig();
+
+ @Expose
+ @ConfigOption(name = "Miniboss Highlight", desc = "Highlight Slayer Mini-Boss in blue color.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean slayerMinibossHighlight = false;
+
+ @Expose
+ @ConfigOption(name = "Line to Miniboss", desc = "Adds a line to every Slayer Mini-Boss around you.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean slayerMinibossLine = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Mob Names", desc = "Hide the name of the mobs you need to kill in order for the Slayer boss to spawn. Exclude mobs that are damaged, corrupted, runic or semi rare.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideMobNames = false;
+
+ @Expose
+ @ConfigOption(name = "Quest Warning", desc = "Warning when wrong Slayer quest is selected, or killing mobs for the wrong Slayer.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean questWarning = true;
+
+ @Expose
+ @ConfigOption(name = "Quest Warning Title", desc = "Sends a title when warning.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean questWarningTitle = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/slayer/blaze/BlazeConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/blaze/BlazeConfig.java
new file mode 100644
index 000000000..c631b10f8
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/blaze/BlazeConfig.java
@@ -0,0 +1,32 @@
+package at.hannibal2.skyhanni.config.features.slayer.blaze;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class BlazeConfig {
+ @Expose
+ @ConfigOption(name = "Hellion Shields", desc = "")
+ @Accordion
+ public BlazeHellionConfig hellion = new BlazeHellionConfig();
+
+
+ @Expose
+ @ConfigOption(name = "Fire Pits", desc = "Warning when the fire pit phase starts for the Blaze Slayer tier 3 and 4.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean firePitsWarning = false;
+
+ @Expose
+ @ConfigOption(name = "Phase Display", desc = "Show the current phase of the Blaze Slayer boss.")
+ @ConfigEditorBoolean
+ public boolean phaseDisplay = false;
+
+ @Expose
+ @ConfigOption(name = "Clear View", desc = "Hide particles and fireballs near Blaze Slayer bosses and demons.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean clearView = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/slayer/blaze/BlazeHellionConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/blaze/BlazeHellionConfig.java
new file mode 100644
index 000000000..4a5e4af8c
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/blaze/BlazeHellionConfig.java
@@ -0,0 +1,45 @@
+package at.hannibal2.skyhanni.config.features.slayer.blaze;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.core.config.Position;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorDropdown;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class BlazeHellionConfig {
+ @Expose
+ @ConfigOption(name = "Colored Mobs", desc = "Color the Blaze Slayer boss and the demons in the right hellion shield color.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean coloredMobs = false;
+
+ @Expose
+ @ConfigOption(name = "Blaze Daggers", desc = "Faster and permanent display for the Blaze Slayer daggers.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean daggers = false;
+
+ @Expose
+ @ConfigOption(name = "Right Dagger", desc = "Mark the right dagger to use for Blaze Slayer in the dagger overlay.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean markRightHellionShield = false;
+
+ @Expose
+ @ConfigOption(name = "First Dagger", desc = "Select the first, left sided dagger for the display.")
+ @ConfigEditorDropdown(values = {"Spirit/Crystal", "Ashen/Auric"})
+ public int firstDagger = 0;
+
+ @Expose
+ @ConfigOption(name = "Hide Chat", desc = "Remove the wrong Blaze Slayer dagger messages from chat.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideDaggerWarning = false;
+
+ @Expose
+ public Position positionTop = new Position(-475, 173, 4.4f, true);
+
+ @Expose
+ public Position positionBottom = new Position(-475, 230, 3.2f, true);
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/slayer/endermen/EndermanBeaconConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/endermen/EndermanBeaconConfig.java
new file mode 100644
index 000000000..32592e4b9
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/endermen/EndermanBeaconConfig.java
@@ -0,0 +1,46 @@
+package at.hannibal2.skyhanni.config.features.slayer.endermen;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class EndermanBeaconConfig {
+
+ @Expose
+ @ConfigOption(name = "Highlight Beacon",
+ desc = "Highlight the Enderman Slayer Yang Glyph (beacon) in red color and added a timer for when he explodes. " +
+ "Supports beacon in hand and beacon flying.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlightBeacon = true;
+
+ @Expose
+ @ConfigOption(name = "Beacon Color", desc = "Color of the beacon.")
+ @ConfigEditorColour
+ public String beaconColor = "0:255:255:0:88";
+
+ @Expose
+ @ConfigOption(name = "Show Warning", desc = "Displays a warning mid-screen when the Enderman Slayer throws a Yang Glyph (beacon).")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean showWarning = false;
+
+ @Expose
+ @ConfigOption(name = "Show Line", desc = "Draw a line starting at your crosshair to the beacon.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean showLine = false;
+
+ @Expose
+ @ConfigOption(name = "Line Color", desc = "Color of the line.")
+ @ConfigEditorColour
+ public String lineColor = "0:255:255:0:88";
+
+ @Expose
+ @ConfigOption(name = "Line Width", desc = "Width of the line.")
+ @ConfigEditorSlider(minStep = 1, minValue = 1, maxValue = 10)
+ public int lineWidth = 3;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/slayer/endermen/EndermanConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/endermen/EndermanConfig.java
new file mode 100644
index 000000000..7b5ce353e
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/endermen/EndermanConfig.java
@@ -0,0 +1,31 @@
+package at.hannibal2.skyhanni.config.features.slayer.endermen;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class EndermanConfig {
+ @Expose
+ @ConfigOption(name = "Yang Glyph (beacon)", desc = "")
+ @Accordion
+ public EndermanBeaconConfig beacon = new EndermanBeaconConfig();
+
+ @Expose
+ @ConfigOption(name = "Highlight Nukekubi Skulls", desc = "Highlights the Enderman Slayer Nukekubi Skulls (Eyes).")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlightNukekebi = false;
+
+ @Expose
+ @ConfigOption(name = "Phase Display", desc = "Show the current phase of the Enderman Slayer in damage indcator.")
+ @ConfigEditorBoolean
+ public boolean phaseDisplay = false;
+
+ @Expose
+ @ConfigOption(name = "Hide Particles", desc = "Hide particles around Enderman Slayer bosses and Mini-Bosses.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean hideParticles = false;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/slayer/vampire/BloodIchorConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/vampire/BloodIchorConfig.java
new file mode 100644
index 000000000..7daca5ea3
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/vampire/BloodIchorConfig.java
@@ -0,0 +1,38 @@
+package at.hannibal2.skyhanni.config.features.slayer.vampire;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class BloodIchorConfig {
+ @Expose
+ @ConfigOption(name = "Highlight Blood Ichor", desc = "Highlight the Blood Ichor.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlight = false;
+
+ @Expose
+ @ConfigOption(name = "Beacon Beam", desc = "Render a beacon beam where the Blood Ichor is.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean renderBeam = true;
+
+ @Expose
+ @ConfigOption(name = "Color", desc = "Highlight color.")
+ @ConfigEditorColour
+ public String color = "0:199:100:0:88";
+
+ @Expose
+ @ConfigOption(name = "Show Lines", desc = "Draw lines that start from the head of the boss and end on the Blood Ichor.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean showLines = false;
+
+ @Expose
+ @ConfigOption(name = "Lines Start Color", desc = "Starting color of the lines.")
+ @ConfigEditorColour
+ public String linesColor = "0:255:255:13:0";
+
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/slayer/vampire/CoopBossHighlightConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/vampire/CoopBossHighlightConfig.java
new file mode 100644
index 000000000..5c91c41a9
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/vampire/CoopBossHighlightConfig.java
@@ -0,0 +1,44 @@
+package at.hannibal2.skyhanni.config.features.slayer.vampire;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorText;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class CoopBossHighlightConfig {
+ @Expose
+ @ConfigOption(name = "Highlight Co-op Boss", desc = "Highlight boss of your co-op member.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlight = true;
+
+ @Expose
+ @ConfigOption(name = "Highlight Color", desc = "What color to highlight the boss in.")
+ @ConfigEditorColour
+ public String highlightColor = "0:249:0:255:88";
+
+ @Expose
+ @ConfigOption(name = "Co-op Members", desc = "Add your co-op member here.\n§eFormat: §7Name1,Name2,Name3")
+ @ConfigEditorText
+ public String coopMembers = "";
+
+ @Expose
+ @ConfigOption(name = "Steak Alert", desc = "Show a title when you can steak the boss.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean steakAlert = true;
+
+ @Expose
+ @ConfigOption(name = "Twinclaws Title", desc = "Send a title when Twinclaws is about to happen.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean twinClawsTitle = true;
+
+ @Expose
+ @ConfigOption(name = "Twinclaws Sound", desc = "Play a sound when Twinclaws is about to happen.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean twinClawsSound = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/slayer/vampire/KillerSpringConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/vampire/KillerSpringConfig.java
new file mode 100644
index 000000000..1d38c7ce7
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/vampire/KillerSpringConfig.java
@@ -0,0 +1,31 @@
+package at.hannibal2.skyhanni.config.features.slayer.vampire;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class KillerSpringConfig {
+ @Expose
+ @ConfigOption(name = "Highlight Killer Spring", desc = "Highlight the Killer Spring tower.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlight = false;
+
+ @Expose
+ @ConfigOption(name = "Color", desc = "Highlight color.")
+ @ConfigEditorColour
+ public String color = "0:199:100:0:88";
+
+ @Expose
+ @ConfigOption(name = "Show Lines", desc = "Draw lines that start from the head of the boss and end on the Killer Spring tower.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean showLines = false;
+
+ @Expose
+ @ConfigOption(name = "Lines Start Color", desc = "Starting color of the lines.")
+ @ConfigEditorColour
+ public String linesColor = "0:255:255:13:0";
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/slayer/vampire/OthersBossConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/vampire/OthersBossConfig.java
new file mode 100644
index 000000000..6a89c9f77
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/vampire/OthersBossConfig.java
@@ -0,0 +1,39 @@
+package at.hannibal2.skyhanni.config.features.slayer.vampire;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class OthersBossConfig {
+
+ @Expose
+ @ConfigOption(name = "Highlight Others Boss", desc = "Highlight others players boss.\nYou need to hit them first.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlight = true;
+
+ @Expose
+ @ConfigOption(name = "Highlight Color", desc = "What color to highlight the boss in.")
+ @ConfigEditorColour
+ public String highlightColor = "0:249:0:255:88";
+
+ @Expose
+ @ConfigOption(name = "Steak Alert", desc = "Show a title when you can steak the boss.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean steakAlert = true;
+
+ @Expose
+ @ConfigOption(name = "Twinclaws Title", desc = "Send a title when Twinclaws is about to happen.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean twinClawsTitle = true;
+
+ @Expose
+ @ConfigOption(name = "Twinclaws Sound", desc = "Play a sound when Twinclaws is about to happen.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean twinClawsSound = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/slayer/vampire/OwnBossConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/vampire/OwnBossConfig.java
new file mode 100644
index 000000000..481576242
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/vampire/OwnBossConfig.java
@@ -0,0 +1,39 @@
+package at.hannibal2.skyhanni.config.features.slayer.vampire;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class OwnBossConfig {
+
+ @Expose
+ @ConfigOption(name = "Highlight Your Boss", desc = "Highlight your own Vampire Slayer boss.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean highlight = true;
+
+ @Expose
+ @ConfigOption(name = "Highlight Color", desc = "What color to highlight the boss in.")
+ @ConfigEditorColour
+ public String highlightColor = "0:249:0:255:88";
+
+ @Expose
+ @ConfigOption(name = "Steak Alert", desc = "Show a title when you can steak your boss.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean steakAlert = true;
+
+ @Expose
+ @ConfigOption(name = "Twinclaws Title", desc = "Send a title when Twinclaws is about to happen.\nWork on others highlighted people boss.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean twinClawsTitle = true;
+
+ @Expose
+ @ConfigOption(name = "Twinclaws Sound", desc = "Play a sound when Twinclaws is about to happen.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean twinClawsSound = true;
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/slayer/vampire/VampireConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/vampire/VampireConfig.java
new file mode 100644
index 000000000..4a068878b
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/slayer/vampire/VampireConfig.java
@@ -0,0 +1,80 @@
+package at.hannibal2.skyhanni.config.features.slayer.vampire;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.moulconfig.annotations.Accordion;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorColour;
+import io.github.moulberry.moulconfig.annotations.ConfigEditorSlider;
+import io.github.moulberry.moulconfig.annotations.ConfigOption;
+
+public class VampireConfig {
+
+ @Expose
+ @ConfigOption(name = "Your Boss", desc = "")
+ @Accordion
+ public OwnBossConfig ownBoss = new OwnBossConfig();
+
+ @Expose
+ @ConfigOption(name = "Others Boss", desc = "")
+ @Accordion
+ public OthersBossConfig othersBoss = new OthersBossConfig();
+
+ @Expose
+ @ConfigOption(name = "Co-op Boss", desc = "")
+ @Accordion
+ public CoopBossHighlightConfig coopBoss = new CoopBossHighlightConfig();
+
+ @Expose
+ @ConfigOption(name = "Transparency", desc = "Choose the transparency of the color.")
+ @ConfigEditorSlider(minStep = 1, minValue = 1, maxValue = 250)
+ public int withAlpha = 80;
+
+ @Expose
+ @ConfigOption(name = "See Through Blocks", desc = "Highlight even when behind others mobs/players.")
+ @ConfigEditorBoolean
+ public boolean seeThrough = false;
+
+ @Expose
+ @ConfigOption(name = "Low Health", desc = "Change color when the boss is below 20% health.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean changeColorWhenCanSteak = true;
+
+ @Expose
+ @ConfigOption(name = "Can use Steak Color", desc = "Color when the boss is below 20% health.")
+ @ConfigEditorColour
+ public String steakColor = "0:255:255:0:88";
+
+ @Expose
+ @ConfigOption(name = "Twinclaws", desc = "Delay the sound and title of Twinclaws alert for a given amount in milliseconds.")
+ @ConfigEditorSlider(minStep = 1, minValue = 0, maxValue = 1000)
+ public int twinclawsDelay = 0;
+
+ @Expose
+ @ConfigOption(name = "Draw Line", desc = "Draw a line starting at your crosshair to the boss head.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean drawLine = false;
+
+ @Expose
+ @ConfigOption(name = "Line Color", desc = "Color of the line.")
+ @ConfigEditorColour
+ public String lineColor = "0:255:255:0:88";
+
+ @Expose
+ @ConfigOption(name = "Line Width", desc = "Width of the line.")
+ @ConfigEditorSlider(minStep = 1, minValue = 1, maxValue = 10)
+ public int lineWidth = 1;
+
+
+ @Expose
+ @ConfigOption(name = "Blood Ichor", desc = "")
+ @Accordion
+ public BloodIchorConfig bloodIchor = new BloodIchorConfig();
+
+ @Expose
+ @ConfigOption(name = "Killer Spring", desc = "")
+ @Accordion
+ public KillerSpringConfig killerSpring = new KillerSpringConfig();
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/cosmetics/ArrowTrail.kt b/src/main/java/at/hannibal2/skyhanni/features/cosmetics/ArrowTrail.kt
index f7a28d78d..da18e8d28 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/cosmetics/ArrowTrail.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/cosmetics/ArrowTrail.kt
@@ -21,7 +21,7 @@ import kotlin.time.toDuration
class ArrowTrail {
- private val config get() = SkyHanniMod.feature.misc.cosmeticConfig.arrowTrailConfig
+ private val config get() = SkyHanniMod.feature.misc.cosmetic.arrowTrail
private data class Line(val start: LorenzVec, val end: LorenzVec, val deathTime: SimpleTimeMark)
diff --git a/src/main/java/at/hannibal2/skyhanni/features/cosmetics/CosmeticFollowingLine.kt b/src/main/java/at/hannibal2/skyhanni/features/cosmetics/CosmeticFollowingLine.kt
index 5dda13876..662ad68a0 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/cosmetics/CosmeticFollowingLine.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/cosmetics/CosmeticFollowingLine.kt
@@ -1,6 +1,7 @@
package at.hannibal2.skyhanni.features.cosmetics
import at.hannibal2.skyhanni.SkyHanniMod
+import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator
import at.hannibal2.skyhanni.events.LorenzRenderWorldEvent
import at.hannibal2.skyhanni.events.LorenzTickEvent
import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent
@@ -19,7 +20,7 @@ import kotlin.time.Duration.Companion.milliseconds
import kotlin.time.Duration.Companion.seconds
class CosmeticFollowingLine {
- private val config get() = SkyHanniMod.feature.misc.cosmeticConfig.followingLineConfig
+ private val config get() = SkyHanniMod.feature.misc.cosmetic.followingLine
private var locations = mapOf<LorenzVec, LocationSpot>()
private var latestLocations = mapOf<LorenzVec, LocationSpot>()
@@ -120,4 +121,11 @@ class CosmeticFollowingLine {
}
}
}
+
+ @SubscribeEvent
+ fun onConfigFix(event: ConfigUpdaterMigrator.ConfigFixEvent) {
+ event.move(9, "misc.cosmeticConfig", "misc.cosmetic")
+ event.move(9, "misc.cosmeticConfig.followingLineConfig", "misc.cosmetic.followingLine")
+ event.move(9, "misc.cosmeticConfig.arrowTrailConfig", "misc.cosmetic.arrowTrail")
+ }
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/HighlightVisitorsOutsideOfGarden.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/HighlightVisitorsOutsideOfGarden.kt
index 99f5910ea..d516695a2 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/HighlightVisitorsOutsideOfGarden.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/HighlightVisitorsOutsideOfGarden.kt
@@ -1,7 +1,7 @@
package at.hannibal2.skyhanni.features.garden.visitor
import at.hannibal2.skyhanni.SkyHanniMod
-import at.hannibal2.skyhanni.config.features.GardenConfig.VisitorConfig.VisitorBlockBehaviour
+import at.hannibal2.skyhanni.config.features.garden.visitor.VisitorConfig.VisitorBlockBehaviour
import at.hannibal2.skyhanni.events.LorenzTickEvent
import at.hannibal2.skyhanni.events.PacketEvent
import at.hannibal2.skyhanni.events.RepositoryReloadEvent
diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/VisitorTooltipParser.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/VisitorTooltipParser.kt
index 5d6e7ee26..510e4f3b7 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/VisitorTooltipParser.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/VisitorTooltipParser.kt
@@ -1,13 +1,13 @@
package at.hannibal2.skyhanni.features.garden.visitor
-import at.hannibal2.skyhanni.config.features.GardenConfig
+import at.hannibal2.skyhanni.config.features.garden.GardenConfig
import at.hannibal2.skyhanni.utils.ItemUtils
class VisitorTooltipParser {
class ParsedTooltip(
- val itemsNeeded: MutableMap<String, Int>,
- val rewards: MutableMap<String, Int>,
- val config: GardenConfig,
+ val itemsNeeded: MutableMap<String, Int>,
+ val rewards: MutableMap<String, Int>,
+ val config: GardenConfig,
)
enum class ParsingSection {
@@ -39,4 +39,4 @@ class VisitorTooltipParser {
return parsedData;
}
}
-} \ No newline at end of file
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/CurrentPetDisplay.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/CurrentPetDisplay.kt
index 4dfebc099..fe9d55176 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/misc/CurrentPetDisplay.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/misc/CurrentPetDisplay.kt
@@ -69,11 +69,12 @@ class CurrentPetDisplay {
if (!SkyHanniMod.feature.misc.pets.display) return
val storage = ProfileStorageData.profileSpecific ?: return
- SkyHanniMod.feature.misc.petDisplayPos.renderString(storage.currentPet, posLabel = "Current Pet")
+ SkyHanniMod.feature.misc.pets.displayPos.renderString(storage.currentPet, posLabel = "Current Pet")
}
@SubscribeEvent
fun onConfigFix(event: ConfigUpdaterMigrator.ConfigFixEvent) {
event.move(3, "misc.petDisplay", "misc.pets.display")
+ event.move(9, "misc.petDisplayPos", "misc.pets.displayPos")
}
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/RiftAPI.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/RiftAPI.kt
index 4fbbed3d3..507dc5953 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/RiftAPI.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/RiftAPI.kt
@@ -1,7 +1,7 @@
package at.hannibal2.skyhanni.features.rift
import at.hannibal2.skyhanni.SkyHanniMod
-import at.hannibal2.skyhanni.config.features.RiftConfig
+import at.hannibal2.skyhanni.config.features.rift.RiftConfig
import at.hannibal2.skyhanni.data.IslandType
import at.hannibal2.skyhanni.utils.ItemUtils.getInternalName
import at.hannibal2.skyhanni.utils.LorenzUtils
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/area/colosseum/BlobbercystsHighlight.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/area/colosseum/BlobbercystsHighlight.kt
index ceb8b5931..9fad9e999 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/area/colosseum/BlobbercystsHighlight.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/area/colosseum/BlobbercystsHighlight.kt
@@ -1,6 +1,7 @@
package at.hannibal2.skyhanni.features.rift.area.colosseum
import at.hannibal2.skyhanni.SkyHanniMod
+import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator
import at.hannibal2.skyhanni.events.LorenzTickEvent
import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent
import at.hannibal2.skyhanni.events.withAlpha
@@ -15,7 +16,7 @@ import java.awt.Color
class BlobbercystsHighlight {
- private val config get() = SkyHanniMod.feature.rift.area.colosseumConfig
+ private val config get() = SkyHanniMod.feature.rift.area.colosseum
private val entityList = mutableListOf<EntityOtherPlayerMP>()
private val blobberName = "Blobbercyst "
@@ -47,4 +48,9 @@ class BlobbercystsHighlight {
}
fun isEnabled() = RiftAPI.inRift() && config.highlightBlobbercysts && LorenzUtils.skyBlockArea == "Colosseum"
-} \ No newline at end of file
+
+ @SubscribeEvent
+ fun onConfigFix(event: ConfigUpdaterMigrator.ConfigFixEvent) {
+ event.move(9, "rift.area.colosseumConfig", "rift.area.colosseum")
+ }
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/area/dreadfarm/RiftAgaricusCap.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/area/dreadfarm/RiftAgaricusCap.kt
index fb37bfabe..5ef56976f 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/area/dreadfarm/RiftAgaricusCap.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/area/dreadfarm/RiftAgaricusCap.kt
@@ -1,5 +1,6 @@
package at.hannibal2.skyhanni.features.rift.area.dreadfarm
+import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator
import at.hannibal2.skyhanni.events.LorenzRenderWorldEvent
import at.hannibal2.skyhanni.events.LorenzTickEvent
import at.hannibal2.skyhanni.features.rift.RiftAPI
@@ -14,7 +15,7 @@ import at.hannibal2.skyhanni.utils.TimeUtils
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
class RiftAgaricusCap {
- private val config get() = RiftAPI.config.area.dreadfarmConfig
+ private val config get() = RiftAPI.config.area.dreadfarm
private var startTime = 0L
private var location: LorenzVec? = null
@@ -71,4 +72,9 @@ class RiftAgaricusCap {
}
fun isEnabled() = RiftAPI.inRift() && config.agaricusCap
+
+ @SubscribeEvent
+ fun onConfigFix(event: ConfigUpdaterMigrator.ConfigFixEvent) {
+ event.move(9, "rift.area.dreadfarmConfig", "rift.area.dreadfarm")
+ }
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/area/dreadfarm/RiftWiltedBerberisHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/area/dreadfarm/RiftWiltedBerberisHelper.kt
index 0058971ef..b39c6d004 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/area/dreadfarm/RiftWiltedBerberisHelper.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/area/dreadfarm/RiftWiltedBerberisHelper.kt
@@ -21,7 +21,7 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import java.awt.Color
class RiftWiltedBerberisHelper {
- private val config get() = RiftAPI.config.area.dreadfarmConfig.wiltedBerberis
+ private val config get() = RiftAPI.config.area.dreadfarm.wiltedBerberis
private var isOnFarmland = false
private var hasFarmingToolInHand = false
private var list = listOf<WiltedBerberis>()
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/area/dreadfarm/VoltHighlighter.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/area/dreadfarm/VoltHighlighter.kt
index f7f14a55d..6cf37e285 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/area/dreadfarm/VoltHighlighter.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/area/dreadfarm/VoltHighlighter.kt
@@ -25,7 +25,7 @@ import kotlin.time.Duration.Companion.seconds
class VoltHighlighter {
- private val config get() = RiftAPI.config.area.dreadfarmConfig.voltCrux
+ private val config get() = RiftAPI.config.area.dreadfarm.voltCrux
private val LIGHTNING_DISTANCE = 7F
private val ARMOR_SLOT_HEAD = 3
@@ -116,4 +116,4 @@ class VoltHighlighter {
val helmet = entity.getCurrentArmor(ARMOR_SLOT_HEAD) ?: return VoltState.NO_VOLT
return getVoltState(helmet)
}
-} \ No newline at end of file
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/area/livingcave/LivingCaveDefenseBlocks.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/area/livingcave/LivingCaveDefenseBlocks.kt
index 0b314d7e9..1257f8db4 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/area/livingcave/LivingCaveDefenseBlocks.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/area/livingcave/LivingCaveDefenseBlocks.kt
@@ -1,5 +1,6 @@
package at.hannibal2.skyhanni.features.rift.area.livingcave
+import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator
import at.hannibal2.skyhanni.events.LorenzRenderWorldEvent
import at.hannibal2.skyhanni.events.LorenzTickEvent
import at.hannibal2.skyhanni.events.ReceiveParticleEvent
@@ -22,7 +23,7 @@ import net.minecraft.util.EnumParticleTypes
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
class LivingCaveDefenseBlocks {
- private val config get() = RiftAPI.config.area.livingCaveConfig.defenseBlockConfig
+ private val config get() = RiftAPI.config.area.livingCave.defenseBlockConfig
private var movingBlocks = mapOf<DefenseBlock, Long>()
private var staticBlocks = emptyList<DefenseBlock>()
@@ -172,4 +173,9 @@ class LivingCaveDefenseBlocks {
val color get() = config.color.get().toChromaColor()
fun isEnabled() = RiftAPI.inRift() && config.enabled && RiftAPI.inLivingCave()
+
+ @SubscribeEvent
+ fun onConfigFix(event: ConfigUpdaterMigrator.ConfigFixEvent) {
+ event.move(9, "rift.area.livingCaveConfig", "rift.area.livingCave")
+ }
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/area/livingcave/LivingCaveLivingMetalHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/area/livingcave/LivingCaveLivingMetalHelper.kt
index 73a007a4a..cabc094db 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/area/livingcave/LivingCaveLivingMetalHelper.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/area/livingcave/LivingCaveLivingMetalHelper.kt
@@ -14,7 +14,7 @@ import at.hannibal2.skyhanni.utils.LorenzVec
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
class LivingCaveLivingMetalHelper {
- private val config get() = RiftAPI.config.area.livingCaveConfig.livingCaveLivingMetalConfig
+ private val config get() = RiftAPI.config.area.livingCave.livingCaveLivingMetalConfig
private var lastClicked: LorenzVec? = null
private var pair: Pair<LorenzVec, LorenzVec>? = null
private var startTime = 0L
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/area/livingcave/LivingMetalSuitProgress.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/area/livingcave/LivingMetalSuitProgress.kt
index 025803ce1..1deb2b64c 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/area/livingcave/LivingMetalSuitProgress.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/area/livingcave/LivingMetalSuitProgress.kt
@@ -14,7 +14,7 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
class LivingMetalSuitProgress {
- private val config get() = RiftAPI.config.area.livingCaveConfig.livingMetalSuitProgress
+ private val config get() = RiftAPI.config.area.livingCave.livingMetalSuitProgress
private var display = emptyList<List<Any>>()
private var progressMap = mapOf<ItemStack, Double?>()
@@ -92,4 +92,4 @@ class LivingMetalSuitProgress {
}
fun isEnabled() = RiftAPI.inRift() && config.enabled
-} \ No newline at end of file
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/area/mirrorverse/DanceRoomHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/area/mirrorverse/DanceRoomHelper.kt
index ec503bcfd..524e1b354 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/area/mirrorverse/DanceRoomHelper.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/area/mirrorverse/DanceRoomHelper.kt
@@ -1,5 +1,6 @@
package at.hannibal2.skyhanni.features.rift.area.mirrorverse
+import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator
import at.hannibal2.skyhanni.events.CheckRenderEntityEvent
import at.hannibal2.skyhanni.events.GuiRenderEvent
import at.hannibal2.skyhanni.events.LorenzTickEvent
@@ -25,7 +26,7 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
object DanceRoomHelper {
private var display = emptyList<String>()
- private val config get() = RiftAPI.config.area.mirrorVerseConfig.danceRoomHelper
+ private val config get() = RiftAPI.config.area.mirrorverse.danceRoomHelper
private var index = 0
private var found = false
private val danceRoom = AxisAlignedBB(-260.0, 32.0, -110.0, -267.0, 40.0, -102.0)
@@ -179,4 +180,9 @@ object DanceRoomHelper {
}
fun isEnabled() = RiftAPI.inRift() && config.enabled
+
+ @SubscribeEvent
+ fun onConfigFix(event: ConfigUpdaterMigrator.ConfigFixEvent) {
+ event.move(9, "rift.area.mirrorVerseConfig", "rift.area.mirrorverse")
+ }
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/area/mirrorverse/RiftLavaMazeParkour.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/area/mirrorverse/RiftLavaMazeParkour.kt
index 12bebc3ee..efaf77163 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/area/mirrorverse/RiftLavaMazeParkour.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/area/mirrorverse/RiftLavaMazeParkour.kt
@@ -13,7 +13,7 @@ import at.hannibal2.skyhanni.utils.jsonobjects.ParkourJson
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
class RiftLavaMazeParkour {
- private val config get() = RiftAPI.config.area.mirrorVerseConfig.lavaMazeConfig
+ private val config get() = RiftAPI.config.area.mirrorverse.lavaMazeConfig
private var parkourHelper: ParkourHelper? = null
@SubscribeEvent
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/area/mirrorverse/RiftUpsideDownParkour.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/area/mirrorverse/RiftUpsideDownParkour.kt
index 136c956cf..18a09709d 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/area/mirrorverse/RiftUpsideDownParkour.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/area/mirrorverse/RiftUpsideDownParkour.kt
@@ -13,7 +13,7 @@ import at.hannibal2.skyhanni.utils.jsonobjects.ParkourJson
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
class RiftUpsideDownParkour {
- private val config get() = RiftAPI.config.area.mirrorVerseConfig.upsideDownParkour
+ private val config get() = RiftAPI.config.area.mirrorverse.upsideDownParkour
private var parkourHelper: ParkourHelper? = null
@SubscribeEvent
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/area/mirrorverse/TubulatorParkour.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/area/mirrorverse/TubulatorParkour.kt
index fcd880b3d..567f2bf2e 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/area/mirrorverse/TubulatorParkour.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/area/mirrorverse/TubulatorParkour.kt
@@ -14,7 +14,7 @@ import net.minecraft.util.AxisAlignedBB
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
class TubulatorParkour {
- private val config get() = RiftAPI.config.area.mirrorVerseConfig.tubulatorConfig
+ private val config get() = RiftAPI.config.area.mirrorverse.tubulatorConfig
private var parkourHelper: ParkourHelper? = null
private val puzzleRoom = AxisAlignedBB(-298.0, 0.0, -112.0, -309.0, 63.0, -101.0)
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/area/stillgorechateau/RiftBloodEffigies.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/area/stillgorechateau/RiftBloodEffigies.kt
index f6a4a607b..5a79d7c7d 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/area/stillgorechateau/RiftBloodEffigies.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/area/stillgorechateau/RiftBloodEffigies.kt
@@ -1,5 +1,6 @@
package at.hannibal2.skyhanni.features.rift.area.stillgorechateau
+import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator
import at.hannibal2.skyhanni.events.LorenzRenderWorldEvent
import at.hannibal2.skyhanni.events.LorenzTickEvent
import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent
@@ -23,7 +24,7 @@ import net.minecraft.entity.item.EntityArmorStand
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
class RiftBloodEffigies {
- private val config get() = RiftAPI.config.area.stillgoreChateauConfig.bloodEffigies
+ private val config get() = RiftAPI.config.area.stillgoreChateau.bloodEffigies
private var locations: List<LorenzVec> = emptyList()
private var effigiesTimes = mapOf(
0 to -1L,
@@ -142,4 +143,9 @@ class RiftBloodEffigies {
}
fun isEnabled() = RiftAPI.inRift() && RiftAPI.inStillgoreChateau() && config.enabled
+
+ @SubscribeEvent
+ fun onConfigFix(event: ConfigUpdaterMigrator.ConfigFixEvent) {
+ event.move(9, "rift.area.stillgoreChateauConfig", "rift.area.stillgoreChateau")
+ }
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/area/westvillage/KloonHacking.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/area/westvillage/KloonHacking.kt
index aa598c10b..57eb0ead2 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/area/westvillage/KloonHacking.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/area/westvillage/KloonHacking.kt
@@ -1,5 +1,6 @@
package at.hannibal2.skyhanni.features.rift.area.westvillage
+import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator
import at.hannibal2.skyhanni.data.ProfileStorageData
import at.hannibal2.skyhanni.events.GuiContainerEvent
import at.hannibal2.skyhanni.events.InventoryCloseEvent
@@ -23,7 +24,7 @@ import net.minecraftforge.fml.common.eventhandler.EventPriority
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
class KloonHacking {
- private val config get() = RiftAPI.config.area.westVillageConfig.hacking
+ private val config get() = RiftAPI.config.area.westVillage.hacking
// TODO USE SH-REPO
val pattern = "You've set the color of this terminal to (?<colour>.*)!".toPattern()
@@ -162,4 +163,9 @@ class KloonHacking {
nearestTerminal = closestTerminal
return closestTerminal
}
+
+ @SubscribeEvent
+ fun onConfigFix(event: ConfigUpdaterMigrator.ConfigFixEvent) {
+ event.move(9, "rift.area.westVillageConfig", "rift.area.westVillage")
+ }
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/area/RiftLarva.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/area/wyldwoods/RiftLarva.kt
index c68e6d2f5..7c994ea1b 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/area/RiftLarva.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/area/wyldwoods/RiftLarva.kt
@@ -1,4 +1,4 @@
-package at.hannibal2.skyhanni.features.rift.area
+package at.hannibal2.skyhanni.features.rift.area.wyldwoods
import at.hannibal2.skyhanni.events.LorenzTickEvent
import at.hannibal2.skyhanni.events.withAlpha
@@ -13,7 +13,7 @@ import net.minecraft.entity.item.EntityArmorStand
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
class RiftLarva {
- private val config get() = RiftAPI.config.area.wyldWoodsConfig.larvas
+ private val config get() = RiftAPI.config.area.wyldWoods.larvas
private var hasHookInHand = false
val larvaSkullTexture =
"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTgzYjMwZTlkMTM1YjA1MTkwZWVhMmMzYWM2MWUyYWI1NWEyZDgxZTFhNThkYmIyNjk4M2ExNDA4MjY2NCJ9fX0="
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/area/wyldwoods/RiftOdonata.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/area/wyldwoods/RiftOdonata.kt
index ded7de44c..1093a8a69 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/area/wyldwoods/RiftOdonata.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/area/wyldwoods/RiftOdonata.kt
@@ -14,7 +14,7 @@ import net.minecraft.entity.item.EntityArmorStand
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
class RiftOdonata {
- private val config get() = RiftAPI.config.area.wyldWoodsConfig.odonata
+ private val config get() = RiftAPI.config.area.wyldWoods.odonata
private var hasBottleInHand = false
val odonataSkullTexture =
"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOWZkODA2ZGVmZGZkZjU5YjFmMjYwOWM4ZWUzNjQ2NjZkZTY2MTI3YTYyMzQxNWI1NDMwYzkzNThjNjAxZWY3YyJ9fX0="
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/area/wyldwoods/ShyCruxWarnings.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/area/wyldwoods/ShyCruxWarnings.kt
index 7ac4d1ed6..2b21d9dad 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/area/wyldwoods/ShyCruxWarnings.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/area/wyldwoods/ShyCruxWarnings.kt
@@ -1,5 +1,6 @@
package at.hannibal2.skyhanni.features.rift.area.wyldwoods
+import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator
import at.hannibal2.skyhanni.events.LorenzTickEvent
import at.hannibal2.skyhanni.features.rift.RiftAPI
import at.hannibal2.skyhanni.utils.EntityUtils
@@ -9,7 +10,7 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import kotlin.time.Duration.Companion.milliseconds
class ShyCruxWarnings {
- private val config get() = RiftAPI.config.area.wyldWoodsConfig
+ private val config get() = RiftAPI.config.area.wyldWoods
private val shyNames = arrayOf("I'm ugly! :(", "Eek!", "Don't look at me!", "Look away!")
@SubscribeEvent
@@ -25,4 +26,9 @@ class ShyCruxWarnings {
LorenzUtils.sendTitle("§eLook away!", 150.milliseconds)
}
}
-} \ No newline at end of file
+
+ @SubscribeEvent
+ fun onConfigFix(event: ConfigUpdaterMigrator.ConfigFixEvent) {
+ event.move(9, "rift.area.wyldWoodsConfig", "rift.area.wyldWoods")
+ }
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/everywhere/motes/RiftMotesOrb.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/everywhere/motes/RiftMotesOrb.kt
index aca97f9e0..f62ad2c7a 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/everywhere/motes/RiftMotesOrb.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/everywhere/motes/RiftMotesOrb.kt
@@ -1,5 +1,6 @@
package at.hannibal2.skyhanni.features.rift.everywhere.motes
+import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator
import at.hannibal2.skyhanni.events.LorenzChatEvent
import at.hannibal2.skyhanni.events.LorenzRenderWorldEvent
import at.hannibal2.skyhanni.events.ReceiveParticleEvent
@@ -16,7 +17,7 @@ import net.minecraft.util.EnumParticleTypes
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
class RiftMotesOrb {
- private val config get() = RiftAPI.config.motesOrbsConfig
+ private val config get() = RiftAPI.config.motesOrbs
// TODO USE SH-REPO
private val pattern = "§5§lORB! §r§dPicked up §r§5+.* Motes§r§d.*".toPattern()
@@ -90,4 +91,9 @@ class RiftMotesOrb {
}
fun isEnabled() = RiftAPI.inRift() && config.enabled
+
+ @SubscribeEvent
+ fun onConfigFix(event: ConfigUpdaterMigrator.ConfigFixEvent) {
+ event.move(9, "rift.area.motesOrbsConfig", "rift.area.motesOrbs")
+ }
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/slayer/VampireSlayerFeatures.kt b/src/main/java/at/hannibal2/skyhanni/features/slayer/VampireSlayerFeatures.kt
index a60d1e51a..59ca5b075 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/slayer/VampireSlayerFeatures.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/slayer/VampireSlayerFeatures.kt
@@ -1,6 +1,7 @@
package at.hannibal2.skyhanni.features.slayer
import at.hannibal2.skyhanni.SkyHanniMod
+import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator
import at.hannibal2.skyhanni.data.ClickType
import at.hannibal2.skyhanni.events.EntityClickEvent
import at.hannibal2.skyhanni.events.LorenzRenderWorldEvent
@@ -49,7 +50,7 @@ import kotlin.time.Duration.Companion.milliseconds
object VampireSlayerFeatures {
- private val config get() = SkyHanniMod.feature.slayer.vampireSlayerConfig
+ private val config get() = SkyHanniMod.feature.slayer.vampire
private val configOwnBoss get() = config.ownBoss
private val configOtherBoss get() = config.othersBoss
private val configCoopBoss get() = config.coopBoss
@@ -378,5 +379,10 @@ object VampireSlayerFeatures {
}
}
+ @SubscribeEvent
+ fun onConfigFix(event: ConfigUpdaterMigrator.ConfigFixEvent) {
+ event.move(9, "slayer.vampireSlayerConfig", "slayer.vampire")
+ }
+
fun isEnabled() = RiftAPI.inRift() && RiftAPI.inStillgoreChateau()
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/slayer/enderman/EndermanSlayerFeatures.kt b/src/main/java/at/hannibal2/skyhanni/features/slayer/enderman/EndermanSlayerFeatures.kt
index ae76d4c9b..42c50f00a 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/slayer/enderman/EndermanSlayerFeatures.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/slayer/enderman/EndermanSlayerFeatures.kt
@@ -40,7 +40,7 @@ import kotlin.time.Duration.Companion.seconds
class EndermanSlayerFeatures {
private val config get() = SkyHanniMod.feature.slayer.endermen
- private val beaconConfig get() = config.endermanBeaconConfig
+ private val beaconConfig get() = config.beacon
private val endermenWithBeacons = mutableListOf<EntityEnderman>()
private var flyingBeacons = listOf<EntityArmorStand>()
private val nukekubiSkulls = mutableListOf<EntityArmorStand>()
@@ -227,5 +227,6 @@ class EndermanSlayerFeatures {
event.move(3, "slayer.endermanBeaconConfig.lneColor", "slayer.endermen.endermanBeaconConfig.lineColor")
event.move(3, "slayer.endermanBeaconConfig.lineWidth", "slayer.endermen.endermanBeaconConfig.lineWidth")
event.move(3, "slayer.endermanHighlightNukekebi", "slayer.endermen.highlightNukekebi")
+ event.move(9, "slayer.enderman.endermanBeaconConfig", "slayer.endermen.beacon")
}
}
diff --git a/src/test/java/at/hannibal2/skyhanni/test/garden/VisitorToolTipParserTest.kt b/src/test/java/at/hannibal2/skyhanni/test/garden/VisitorToolTipParserTest.kt
index 0f2ad1fee..11b404e4c 100644
--- a/src/test/java/at/hannibal2/skyhanni/test/garden/VisitorToolTipParserTest.kt
+++ b/src/test/java/at/hannibal2/skyhanni/test/garden/VisitorToolTipParserTest.kt
@@ -1,6 +1,6 @@
package at.hannibal2.skyhanni.test.garden
-import at.hannibal2.skyhanni.config.features.GardenConfig
+import at.hannibal2.skyhanni.config.features.garden.GardenConfig
import at.hannibal2.skyhanni.features.garden.visitor.VisitorTooltipParser
import org.junit.jupiter.api.Test
@@ -22,7 +22,9 @@ class VisitorToolTipParserTest {
@Test
fun testParseItemsNeeded() {
- val parsedData = VisitorTooltipParser.parse(lore, GardenConfig())
+ val parsedData = VisitorTooltipParser.parse(lore,
+ GardenConfig()
+ )
assert(parsedData.itemsNeeded.isNotEmpty()) {
"Visitor items needed is ${parsedData.itemsNeeded.count()} instead of 1"
}
@@ -33,7 +35,9 @@ class VisitorToolTipParserTest {
@Test
fun testParseRewards() {
- val parsedData = VisitorTooltipParser.parse(lore, GardenConfig())
+ val parsedData = VisitorTooltipParser.parse(lore,
+ GardenConfig()
+ )
assert(parsedData.rewards.isNotEmpty()) {
"Visitor rewards is ${parsedData.rewards.count()} instead of 6"
}
@@ -56,10 +60,12 @@ class VisitorToolTipParserTest {
@Test
fun testParseCopper() {
- val parsedData = VisitorTooltipParser.parse(lore, GardenConfig())
+ val parsedData = VisitorTooltipParser.parse(lore,
+ GardenConfig()
+ )
val copper = parsedData.rewards.get("Copper")
assert(copper == 23) {
"Visitor rewards does not contain 'Copper' with amount '23'"
}
}
-} \ No newline at end of file
+}