summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/config
diff options
context:
space:
mode:
authorWalker Selby <git@walkerselby.com>2023-11-29 23:43:02 +0000
committerGitHub <noreply@github.com>2023-11-30 00:43:02 +0100
commit247d4d324dc9ce5960d8c94719707d232a89e3ad (patch)
treecbf6942c5875ed8fd8c24c54435aba5a514ce1b1 /src/main/java/at/hannibal2/skyhanni/config
parented02a14a6d688ec9546d9ed06dddf412620bb246 (diff)
downloadskyhanni-247d4d324dc9ce5960d8c94719707d232a89e3ad.tar.gz
skyhanni-247d4d324dc9ce5960d8c94719707d232a89e3ad.tar.bz2
skyhanni-247d4d324dc9ce5960d8c94719707d232a89e3ad.zip
Migrate Integer to Enums in Config #727
Co-authored-by: hannibal2 <24389977+hannibal002@users.noreply.github.com>
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/config')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/HasLegacyId.java26
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/combat/EnderNodeConfig.java116
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/combat/MobsConfig.java9
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/combat/damageindicator/DamageIndicatorConfig.java119
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/combat/ghostcounter/GhostCounterConfig.java93
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/commands/TabCompleteConfig.java1
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/event/winter/FrozenTreasureConfig.java94
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/MoneyPerHourConfig.java46
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/cropmilestones/CropMilestonesConfig.java98
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/cropmilestones/MushroomPetPerkConfig.java53
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/DropsStatisticsConfig.java102
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/garden/visitor/RewardWarningConfig.java52
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/inventory/InventoryConfig.java77
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/mining/PowderTrackerConfig.java143
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/misc/DiscordRPCConfig.java149
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/features/misc/TrevorTheTrapperConfig.java81
17 files changed, 958 insertions, 305 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt b/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt
index a8ec467d9..6f5fe68ed 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 = 10
+ const val CONFIG_VERSION = 11
fun JsonElement.at(chain: List<String>, init: Boolean): JsonElement? {
if (chain.isEmpty()) return this
if (this !is JsonObject) return null
@@ -34,7 +34,7 @@ object ConfigUpdaterMigrator {
}
}
- fun move(since: Int, oldPath: String, newPath: String, transform: (JsonElement) -> JsonElement = { it }) {
+ fun move(since: Int, oldPath: String, newPath: String = oldPath, transform: (JsonElement) -> JsonElement = { it }) {
if (since <= oldVersion) {
logger.log("Skipping move from $oldPath to $newPath ($since <= $oldVersion)")
return
diff --git a/src/main/java/at/hannibal2/skyhanni/config/HasLegacyId.java b/src/main/java/at/hannibal2/skyhanni/config/HasLegacyId.java
new file mode 100644
index 000000000..a867cb570
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/HasLegacyId.java
@@ -0,0 +1,26 @@
+package at.hannibal2.skyhanni.config;
+
+/**
+ * The interface HasLegacyId.
+ * To be used for config elements that are being migrated from ArrayLists to Enums.
+ * A legacyId is not needed for new elements.
+ */
+public interface HasLegacyId {
+
+ /**
+ * Gets display string.
+ *
+ * @return the display string
+ */
+ String toString();
+
+ /**
+ * Gets legacy id. This is used for legacy configs that are being migrated to enums.
+ * New elements do not need a legacyId, and should return -1
+ *
+ * @return the legacy id
+ */
+ default int getLegacyId() {
+ return -1;
+ }
+}
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
index 0fd962084..37f6cdfb8 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/combat/EnderNodeConfig.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/combat/EnderNodeConfig.java
@@ -1,6 +1,7 @@
package at.hannibal2.skyhanni.config.features.combat;
import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.HasLegacyId;
import at.hannibal2.skyhanni.config.core.config.Position;
import com.google.gson.annotations.Expose;
import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
@@ -12,6 +13,23 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import static at.hannibal2.skyhanni.config.features.combat.EnderNodeConfig.EnderNodeDisplayEntry.COINS_MADE;
+import static at.hannibal2.skyhanni.config.features.combat.EnderNodeConfig.EnderNodeDisplayEntry.ENCHANTED_ENDER_PEARL;
+import static at.hannibal2.skyhanni.config.features.combat.EnderNodeConfig.EnderNodeDisplayEntry.ENCHANTED_END_STONE;
+import static at.hannibal2.skyhanni.config.features.combat.EnderNodeConfig.EnderNodeDisplayEntry.ENCHANTED_OBSIDIAN;
+import static at.hannibal2.skyhanni.config.features.combat.EnderNodeConfig.EnderNodeDisplayEntry.ENDERMAN_PET;
+import static at.hannibal2.skyhanni.config.features.combat.EnderNodeConfig.EnderNodeDisplayEntry.ENDERMITE_NEST;
+import static at.hannibal2.skyhanni.config.features.combat.EnderNodeConfig.EnderNodeDisplayEntry.ENDER_ARMOR;
+import static at.hannibal2.skyhanni.config.features.combat.EnderNodeConfig.EnderNodeDisplayEntry.GRAND_XP_BOTTLE;
+import static at.hannibal2.skyhanni.config.features.combat.EnderNodeConfig.EnderNodeDisplayEntry.MAGICAL_RUNE_I;
+import static at.hannibal2.skyhanni.config.features.combat.EnderNodeConfig.EnderNodeDisplayEntry.MITE_GEL;
+import static at.hannibal2.skyhanni.config.features.combat.EnderNodeConfig.EnderNodeDisplayEntry.NODES_MINED;
+import static at.hannibal2.skyhanni.config.features.combat.EnderNodeConfig.EnderNodeDisplayEntry.SHRIMP_THE_FISH;
+import static at.hannibal2.skyhanni.config.features.combat.EnderNodeConfig.EnderNodeDisplayEntry.SPACER_1;
+import static at.hannibal2.skyhanni.config.features.combat.EnderNodeConfig.EnderNodeDisplayEntry.SPACER_2;
+import static at.hannibal2.skyhanni.config.features.combat.EnderNodeConfig.EnderNodeDisplayEntry.TITANIC_XP_BOTTLE;
+import static at.hannibal2.skyhanni.config.features.combat.EnderNodeConfig.EnderNodeDisplayEntry.TITLE;
+
public class EnderNodeConfig {
@Expose
@ConfigOption(
@@ -28,36 +46,76 @@ public class EnderNodeConfig {
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",
- " "
+ @ConfigEditorDraggableList()
+ public Property<List<EnderNodeDisplayEntry>> textFormat = Property.of(new ArrayList<>(Arrays.asList(
+ TITLE,
+ NODES_MINED,
+ COINS_MADE,
+ SPACER_1,
+ ENDERMITE_NEST,
+ ENCHANTED_END_STONE,
+ ENCHANTED_OBSIDIAN,
+ ENCHANTED_ENDER_PEARL,
+ GRAND_XP_BOTTLE,
+ TITANIC_XP_BOTTLE,
+ MAGICAL_RUNE_I,
+ MITE_GEL,
+ SHRIMP_THE_FISH,
+ SPACER_2,
+ ENDER_ARMOR,
+ ENDERMAN_PET)
+ ));
+
+ public enum EnderNodeDisplayEntry implements HasLegacyId {
+ TITLE("§5§lEnder Node Tracker", 0),
+ NODES_MINED("§d1,303 Ender Nodes Mined", 1),
+ COINS_MADE("§615.3M Coins Made", 2),
+ SPACER_1(" ", 3),
+ ENDERMITE_NEST("§b123 §cEndermite Nest", 4),
+ ENCHANTED_END_STONE("§b832 §aEnchanted End Stone", 5),
+ ENCHANTED_OBSIDIAN("§b230 §aEnchanted Obsidian", 6),
+ ENCHANTED_ENDER_PEARL("§b1630 §aEnchanted Ender Pearl", 7),
+ GRAND_XP_BOTTLE("§b85 §aGrand Experience Bottle", 8),
+ TITANIC_XP_BOTTLE("§b4 §9Titanic Experience Bottle", 9),
+ END_STONE_SHULKER("§b15 §9End Stone Shulker", 10),
+ END_STONE_GEODE("§b53 §9End Stone Geode", 11),
+ MAGICAL_RUNE_I("§b10 §d◆ Magical Rune I", 12),
+ ENDER_GAUNTLET("§b24 §5Ender Gauntlet", 13),
+ MITE_GEL("§b357 §5Mite Gel", 14),
+ SHRIMP_THE_FISH("§b2 §cShrimp The Fish", 15),
+ SPACER_2(" ", 16),
+ ENDER_ARMOR("§b200 §5Ender Armor", 17),
+ ENDER_HELMET("§b24 §5Ender Helmet", 18),
+ ENDER_CHESTPLATE("§b24 §5Ender Chestplate", 19),
+ ENDER_LEGGINGS("§b24 §5Ender Leggings", 20),
+ ENDER_BOOTS("§b24 §5Ender Boots", 21),
+ ENDER_NECKLACE("§b24 §5Ender Necklace", 22),
+ ENDERMAN_PET("§f10§7-§a8§7-§93§7-§52§7-§61 §fEnderman Pet", 23),
+ ;
+
+ private final String str;
+ private final int legacyId;
+
+ EnderNodeDisplayEntry(String str, int legacyId) {
+ this.str = str;
+ this.legacyId = legacyId;
}
- )
- 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)));
+
+ // Constructor if new enum elements are added post-migration
+ EnderNodeDisplayEntry(String str) {
+ this(str, -1);
+ }
+
+ @Override
+ public int getLegacyId() {
+ return legacyId;
+ }
+
+ @Override
+ public String toString() {
+ return str;
+ }
+ }
@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
index 77731d854..3514c6729 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/combat/MobsConfig.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/combat/MobsConfig.java
@@ -6,11 +6,6 @@ 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
@@ -57,10 +52,6 @@ public class MobsConfig {
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. " +
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
index 36ba986e2..6986d706c 100644
--- 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
@@ -1,6 +1,7 @@
package at.hannibal2.skyhanni.config.features.combat.damageindicator;
import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.HasLegacyId;
import com.google.gson.annotations.Expose;
import io.github.moulberry.moulconfig.annotations.Accordion;
import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
@@ -12,6 +13,22 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import static at.hannibal2.skyhanni.config.features.combat.damageindicator.DamageIndicatorConfig.DamageIndicatorBossEntry.ARACHNE;
+import static at.hannibal2.skyhanni.config.features.combat.damageindicator.DamageIndicatorConfig.DamageIndicatorBossEntry.DIANA_MOBS;
+import static at.hannibal2.skyhanni.config.features.combat.damageindicator.DamageIndicatorConfig.DamageIndicatorBossEntry.DUNGEON_ALL;
+import static at.hannibal2.skyhanni.config.features.combat.damageindicator.DamageIndicatorConfig.DamageIndicatorBossEntry.GARDEN_PESTS;
+import static at.hannibal2.skyhanni.config.features.combat.damageindicator.DamageIndicatorConfig.DamageIndicatorBossEntry.INFERNO_DEMONLORD;
+import static at.hannibal2.skyhanni.config.features.combat.damageindicator.DamageIndicatorConfig.DamageIndicatorBossEntry.NETHER_MINI_BOSSES;
+import static at.hannibal2.skyhanni.config.features.combat.damageindicator.DamageIndicatorConfig.DamageIndicatorBossEntry.REINDRAKE;
+import static at.hannibal2.skyhanni.config.features.combat.damageindicator.DamageIndicatorConfig.DamageIndicatorBossEntry.REVENANT_HORROR;
+import static at.hannibal2.skyhanni.config.features.combat.damageindicator.DamageIndicatorConfig.DamageIndicatorBossEntry.RIFTSTALKER_BLOODFIEND;
+import static at.hannibal2.skyhanni.config.features.combat.damageindicator.DamageIndicatorConfig.DamageIndicatorBossEntry.SEA_CREATURES;
+import static at.hannibal2.skyhanni.config.features.combat.damageindicator.DamageIndicatorConfig.DamageIndicatorBossEntry.SVEN_PACKMASTER;
+import static at.hannibal2.skyhanni.config.features.combat.damageindicator.DamageIndicatorConfig.DamageIndicatorBossEntry.TARANTULA_BROODFATHER;
+import static at.hannibal2.skyhanni.config.features.combat.damageindicator.DamageIndicatorConfig.DamageIndicatorBossEntry.THE_RIFT_BOSSES;
+import static at.hannibal2.skyhanni.config.features.combat.damageindicator.DamageIndicatorConfig.DamageIndicatorBossEntry.VANQUISHER;
+import static at.hannibal2.skyhanni.config.features.combat.damageindicator.DamageIndicatorConfig.DamageIndicatorBossEntry.VOIDGLOOM_SERAPH;
+
public class DamageIndicatorConfig {
@Expose
@@ -37,39 +54,79 @@ public class DamageIndicatorConfig {
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",
- "§aGarden Pests"
- }
- )
+ @ConfigEditorDraggableList()
//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, 25));
+ public List<DamageIndicatorBossEntry> bossesToShow = new ArrayList<>(Arrays.asList(
+ DUNGEON_ALL,
+ NETHER_MINI_BOSSES,
+ VANQUISHER,
+ REVENANT_HORROR,
+ TARANTULA_BROODFATHER,
+ SVEN_PACKMASTER,
+ VOIDGLOOM_SERAPH,
+ INFERNO_DEMONLORD,
+ DIANA_MOBS,
+ SEA_CREATURES,
+ ARACHNE,
+ THE_RIFT_BOSSES,
+ RIFTSTALKER_BLOODFIEND,
+ REINDRAKE,
+ GARDEN_PESTS
+
+ ));
+ public enum DamageIndicatorBossEntry implements HasLegacyId {
+ DUNGEON_ALL("§bDungeon All", 0),
+ NETHER_MINI_BOSSES("§bNether Mini Bosses", 1),
+ VANQUISHER("§bVanquisher", 2),
+ ENDERSTONE_PROTECTOR("§bEndstone Protector (not tested)", 3),
+ ENDER_DRAGON("§bEnder Dragon (not finished)", 4),
+ REVENANT_HORROR("§bRevenant Horror", 5),
+ TARANTULA_BROODFATHER("§bTarantula Broodfather", 6),
+ SVEN_PACKMASTER("§bSven Packmaster", 7),
+ VOIDGLOOM_SERAPH("§bVoidgloom Seraph", 8),
+ INFERNO_DEMONLORD("§bInferno Demonlord", 9),
+ HEADLESS_HORSEMAN("§bHeadless Horseman (bugged)", 10),
+ DUNGEON_FLOOR_1("§bDungeon Floor 1", 11),
+ DUNGEON_FLOOR_2("§bDungeon Floor 2", 12),
+ DUNGEON_FLOOR_3("§bDungeon Floor 3", 13),
+ DUNGEON_FLOOR_4("§bDungeon Floor 4", 14),
+ DUNGEON_FLOOR_5("§bDungeon Floor 5", 15),
+ DUNGEON_FLOOR_6("§bDungeon Floor 6", 16),
+ DUNGEON_FLOOR_7("§bDungeon Floor 7", 17),
+ DIANA_MOBS("§bDiana Mobs", 18),
+ SEA_CREATURES("§bSea Creatures", 19),
+ DUMMY("Dummy", 20),
+ ARACHNE("§bArachne", 21),
+ THE_RIFT_BOSSES("§bThe Rift Bosses", 22),
+ RIFTSTALKER_BLOODFIEND("§bRiftstalker Bloodfiend", 23),
+ REINDRAKE("§6Reindrake", 24),
+ GARDEN_PESTS("§aGarden Pests", 25),
+ ;
+
+ private final String str;
+ private final int legacyId;
+
+ DamageIndicatorBossEntry(String str, int legacyId) {
+ this.str = str;
+ this.legacyId = legacyId;
+ }
+
+ // Constructor if new enum elements are added post-migration
+ DamageIndicatorBossEntry(String str) {
+ this(str, -1);
+ }
+
+ @Override
+ public int getLegacyId() {
+ return legacyId;
+ }
+
+ @Override
+ public String toString() {
+ return str;
+ }
+ }
@Expose
@ConfigOption(name = "Hide Damage Splash", desc = "Hiding damage splashes near the damage indicator.")
@ConfigEditorBoolean
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
index 783c4cda5..6bc8ee48d 100644
--- 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
@@ -1,6 +1,7 @@
package at.hannibal2.skyhanni.config.features.combat.ghostcounter;
import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.HasLegacyId;
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;
@@ -16,6 +17,16 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import static at.hannibal2.skyhanni.config.features.combat.ghostcounter.GhostCounterConfig.GhostDisplayEntry.AVG_MAGIC_FIND;
+import static at.hannibal2.skyhanni.config.features.combat.ghostcounter.GhostCounterConfig.GhostDisplayEntry.GHOSTS_KILLED;
+import static at.hannibal2.skyhanni.config.features.combat.ghostcounter.GhostCounterConfig.GhostDisplayEntry.GHOST_PER_SORROW;
+import static at.hannibal2.skyhanni.config.features.combat.ghostcounter.GhostCounterConfig.GhostDisplayEntry.GHOST_SINCE_SORROW;
+import static at.hannibal2.skyhanni.config.features.combat.ghostcounter.GhostCounterConfig.GhostDisplayEntry.HIGHEST_KILL_COMBO;
+import static at.hannibal2.skyhanni.config.features.combat.ghostcounter.GhostCounterConfig.GhostDisplayEntry.KILL_COMBO;
+import static at.hannibal2.skyhanni.config.features.combat.ghostcounter.GhostCounterConfig.GhostDisplayEntry.SCAVENGER_COINS;
+import static at.hannibal2.skyhanni.config.features.combat.ghostcounter.GhostCounterConfig.GhostDisplayEntry.SORROW;
+import static at.hannibal2.skyhanni.config.features.combat.ghostcounter.GhostCounterConfig.GhostDisplayEntry.TITLE;
+
public class GhostCounterConfig {
@Expose
@@ -29,31 +40,65 @@ public class GhostCounterConfig {
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"
+ @ConfigEditorDraggableList()
+ public List<GhostDisplayEntry> ghostDisplayText = new ArrayList<>(Arrays.asList(
+ TITLE,
+ GHOSTS_KILLED,
+ SORROW,
+ GHOST_SINCE_SORROW,
+ GHOST_PER_SORROW,
+ AVG_MAGIC_FIND,
+ SCAVENGER_COINS,
+ KILL_COMBO,
+ HIGHEST_KILL_COMBO
+ ));
+
+ public enum GhostDisplayEntry implements HasLegacyId {
+ TITLE("§6Ghosts Counter", 0),
+ GHOSTS_KILLED(" §bGhost Killed: 42", 1),
+ SORROW(" §bSorrow: 6", 2),
+ GHOST_SINCE_SORROW(" §bGhost since Sorrow: 1", 3),
+ GHOST_PER_SORROW(" §bGhosts/Sorrow: 5", 4),
+ VOLTA(" §bVolta: 6", 5),
+ PLASMA(" §bPlasma: 8", 6),
+ GHOSTLY_BOOTS(" §bGhostly Boots: 1", 7),
+ BAG_OF_CASH(" §bBag Of Cash: 4", 8),
+ AVG_MAGIC_FIND(" §bAvg Magic Find: 271", 9),
+ SCAVENGER_COINS(" §bScavenger Coins: 15,000", 10),
+ KILL_COMBO(" §bKill Combo: 14", 11),
+ HIGHEST_KILL_COMBO(" §bHighest Kill Combo: 96", 12),
+ SKILL_XP_GAINED(" §bSkill XP Gained: 145,648", 13),
+ BESTIARY(" §bBestiary 1: 0/10", 14),
+ XP_PER_HOUR(" §bXP/h: 810,410", 15),
+ KILLS_PER_HOUR(" §bKills/h: 420", 16),
+ ETA(" §bETA: 14d", 17),
+ MONEY_PER_HOUR(" §bMoney/h: 13,420,069", 18),
+ MONEY_MADE(" §bMoney made: 14B", 19),
+ ;
+
+ private final String str;
+ private final int legacyId;
+
+ GhostDisplayEntry(String str, int legacyId) {
+ this.str = str;
+ this.legacyId = legacyId;
}
- )
- public List<Integer> ghostDisplayText = new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4, 9, 10, 11, 12));
+
+ // Constructor if new enum elements are added post-migration
+ GhostDisplayEntry(String str) {
+ this(str, -1);
+ }
+
+ @Override
+ public int getLegacyId() {
+ return legacyId;
+ }
+
+ @Override
+ public String toString() {
+ return str;
+ }
+ }
@ConfigOption(name = "Text Formatting", desc = "")
@Accordion
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
index 6e3420a59..b7edd0e07 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/commands/TabCompleteConfig.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/commands/TabCompleteConfig.java
@@ -15,6 +15,7 @@ public class TabCompleteConfig {
@Expose
@ConfigOption(name = "Island Players", desc = "Tab complete other players on the same island.")
+ @ConfigEditorBoolean
public boolean islandPlayers = true;
@Expose
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
index 2b41265a6..a1f378d08 100644
--- 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
@@ -1,6 +1,7 @@
package at.hannibal2.skyhanni.config.features.event.winter;
import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.HasLegacyId;
import at.hannibal2.skyhanni.config.core.config.Position;
import com.google.gson.annotations.Expose;
import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
@@ -11,6 +12,20 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import static at.hannibal2.skyhanni.config.features.event.winter.FrozenTreasureConfig.FrozenTreasureDisplayEntry.COMPACT_PROCS;
+import static at.hannibal2.skyhanni.config.features.event.winter.FrozenTreasureConfig.FrozenTreasureDisplayEntry.ENCHANTED_ICE;
+import static at.hannibal2.skyhanni.config.features.event.winter.FrozenTreasureConfig.FrozenTreasureDisplayEntry.ENCHANTED_PACKED_ICE;
+import static at.hannibal2.skyhanni.config.features.event.winter.FrozenTreasureConfig.FrozenTreasureDisplayEntry.GLACIAL_FRAGMENT;
+import static at.hannibal2.skyhanni.config.features.event.winter.FrozenTreasureConfig.FrozenTreasureDisplayEntry.GLACIAL_TALISMAN;
+import static at.hannibal2.skyhanni.config.features.event.winter.FrozenTreasureConfig.FrozenTreasureDisplayEntry.GREEN_GIFT;
+import static at.hannibal2.skyhanni.config.features.event.winter.FrozenTreasureConfig.FrozenTreasureDisplayEntry.ICE_PER_HOUR;
+import static at.hannibal2.skyhanni.config.features.event.winter.FrozenTreasureConfig.FrozenTreasureDisplayEntry.RED_GIFT;
+import static at.hannibal2.skyhanni.config.features.event.winter.FrozenTreasureConfig.FrozenTreasureDisplayEntry.SPACER_1;
+import static at.hannibal2.skyhanni.config.features.event.winter.FrozenTreasureConfig.FrozenTreasureDisplayEntry.TITLE;
+import static at.hannibal2.skyhanni.config.features.event.winter.FrozenTreasureConfig.FrozenTreasureDisplayEntry.TOTAL_ICE;
+import static at.hannibal2.skyhanni.config.features.event.winter.FrozenTreasureConfig.FrozenTreasureDisplayEntry.TREASURES_MINED;
+import static at.hannibal2.skyhanni.config.features.event.winter.FrozenTreasureConfig.FrozenTreasureDisplayEntry.WHITE_GIFT;
+
public class FrozenTreasureConfig {
@Expose
@@ -28,28 +43,65 @@ public class FrozenTreasureConfig {
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",
- " ",
+ @ConfigEditorDraggableList()
+ public List<FrozenTreasureDisplayEntry> textFormat = new ArrayList<>(Arrays.asList(
+ TITLE,
+ TREASURES_MINED,
+ TOTAL_ICE,
+ ICE_PER_HOUR,
+ COMPACT_PROCS,
+ SPACER_1,
+ WHITE_GIFT,
+ GREEN_GIFT,
+ RED_GIFT,
+ ENCHANTED_ICE,
+ ENCHANTED_PACKED_ICE,
+ GLACIAL_FRAGMENT,
+ GLACIAL_TALISMAN
+ ));
+
+ public enum FrozenTreasureDisplayEntry implements HasLegacyId {
+ TITLE("§1§lFrozen Treasure Tracker", 0),
+ TREASURES_MINED("§61,636 Treasures Mined", 1),
+ TOTAL_ICE("§33.2m Total Ice", 2),
+ ICE_PER_HOUR("§3342,192 Ice/hr", 3),
+ COMPACT_PROCS("§81,002 Compact Procs", 4),
+ SPACER_1(" ", 5),
+ WHITE_GIFT("§b182 §fWhite Gift", 6),
+ GREEN_GIFT("§b94 §aGreen Gift", 7),
+ RED_GIFT("§b17 §9§cRed Gift", 8),
+ PACKED_ICE("§b328 §fPacked Ice", 9),
+ ENCHANTED_ICE("§b80 §aEnchanted Ice", 10),
+ ENCHANTED_PACKED_ICE("§b4 §9Enchanted Packed Ice", 11),
+ ICE_BAIT("§b182 §aIce Bait", 12),
+ GLOWY_CHUM_BAIT("§b3 §aGlowy Chum Bait", 13),
+ GLACIAL_FRAGMENT("§b36 §5Glacial Fragment", 14),
+ GLACIAL_TALISMAN("§b6 §fGlacial Talisman", 15),
+ SPACER_2(" ", 16);
+
+ private final String str;
+ private final int legacyId;
+
+ FrozenTreasureDisplayEntry(String str, int legacyId) {
+ this.str = str;
+ this.legacyId = legacyId;
}
- )
- public List<Integer> textFormat = new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 14, 15));
+
+ // Constructor if new enum elements are added post-migration
+ FrozenTreasureDisplayEntry(String str) {
+ this(str, -1);
+ }
+
+ @Override
+ public int getLegacyId() {
+ return legacyId;
+ }
+
+ @Override
+ public String toString() {
+ return str;
+ }
+ }
@Expose
@ConfigOption(name = "Only in Glacial Cave", desc = "Only shows the overlay while in the Glacial Cave.")
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
index a568ebf0f..77c9eddc2 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/garden/MoneyPerHourConfig.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/garden/MoneyPerHourConfig.java
@@ -1,6 +1,7 @@
package at.hannibal2.skyhanni.config.features.garden;
import at.hannibal2.skyhanni.config.FeatureToggle;
+import at.hannibal2.skyhanni.config.HasLegacyId;
import at.hannibal2.skyhanni.config.core.config.Position;
import com.google.gson.annotations.Expose;
import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean;
@@ -12,6 +13,10 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import static at.hannibal2.skyhanni.config.features.garden.MoneyPerHourConfig.CustomFormatEntry.INSTANT_SELL;
+import static at.hannibal2.skyhanni.config.features.garden.MoneyPerHourConfig.CustomFormatEntry.NPC_PRICE;
+import static at.hannibal2.skyhanni.config.features.garden.MoneyPerHourConfig.CustomFormatEntry.SELL_OFFER;
+
public class MoneyPerHourConfig {
@Expose
@ConfigOption(name = "Show Money per Hour",
@@ -70,14 +75,43 @@ public class MoneyPerHourConfig {
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));
+ public List<CustomFormatEntry> customFormat = new ArrayList<>(Arrays.asList(
+ SELL_OFFER,
+ INSTANT_SELL,
+ NPC_PRICE
+ ));
+
+ public enum CustomFormatEntry implements HasLegacyId {
+ SELL_OFFER("§eSell Offer", 0),
+ INSTANT_SELL("§eInstant Sell", 1),
+ NPC_PRICE("§eNPC Price", 2),
+ ;
+
+ private final String str;
+ private final int legacyId;
+
+ CustomFormatEntry(String str, int legacyId) {
+ this.str = str;
+