summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/Features.java1
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/Storage.java567
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/storage/PlayerSpecificStorage.java75
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/storage/ProfileSpecificStorage.java459
-rw-r--r--src/main/java/at/hannibal2/skyhanni/config/storage/Storage.java50
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/ProfileStorageData.kt13
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/bingo/BingoAPI.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/dungeon/CroesusChestTracker.kt12
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/fortuneguide/CaptureFarmingGear.kt8
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorDropStatistics.kt4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/minion/MinionFeatures.kt8
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/misc/trevor/TrevorTracker.kt4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailykuudra/DailyKuudraBossHelper.kt6
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/DailyQuestHelper.kt6
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/QuestLoader.kt4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/miniboss/DailyMiniBossHelper.kt6
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/slayer/SlayerProfitTracker.kt4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/slayer/SlayerRngMeterDisplay.kt6
-rw-r--r--src/main/java/at/hannibal2/skyhanni/test/SkyHanniConfigSearchResetCommand.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniItemTracker.kt4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniTracker.kt10
21 files changed, 635 insertions, 616 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/config/Features.java b/src/main/java/at/hannibal2/skyhanni/config/Features.java
index c4bd8bbe4..2448b7ce9 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/Features.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/Features.java
@@ -23,6 +23,7 @@ import at.hannibal2.skyhanni.config.features.rift.RiftConfig;
import at.hannibal2.skyhanni.config.features.skillprogress.SkillProgressConfig;
import at.hannibal2.skyhanni.config.features.slayer.SlayerConfig;
import at.hannibal2.skyhanni.config.features.stranded.StrandedConfig;
+import at.hannibal2.skyhanni.config.storage.Storage;
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/Storage.java b/src/main/java/at/hannibal2/skyhanni/config/Storage.java
deleted file mode 100644
index 95286550c..000000000
--- a/src/main/java/at/hannibal2/skyhanni/config/Storage.java
+++ /dev/null
@@ -1,567 +0,0 @@
-package at.hannibal2.skyhanni.config;
-
-import at.hannibal2.skyhanni.data.FameRank;
-import at.hannibal2.skyhanni.api.SkillAPI;
-import at.hannibal2.skyhanni.data.model.ComposterUpgrade;
-import at.hannibal2.skyhanni.features.bingo.card.goals.BingoGoal;
-import at.hannibal2.skyhanni.features.combat.endernodetracker.EnderNodeTracker;
-import at.hannibal2.skyhanni.features.combat.ghostcounter.GhostData;
-import at.hannibal2.skyhanni.features.dungeon.CroesusChestTracker;
-import at.hannibal2.skyhanni.features.dungeon.CroesusChestTracker.Companion.OpenedState;
-import at.hannibal2.skyhanni.features.dungeon.DungeonAPI;
-import at.hannibal2.skyhanni.features.event.diana.DianaProfitTracker;
-import at.hannibal2.skyhanni.features.event.diana.MythologicalCreatureTracker;
-import at.hannibal2.skyhanni.features.event.jerry.frozentreasure.FrozenTreasureTracker;
-import at.hannibal2.skyhanni.features.fishing.tracker.FishingProfitTracker;
-import at.hannibal2.skyhanni.features.fishing.tracker.SeaCreatureTracker;
-import at.hannibal2.skyhanni.features.fishing.trophy.TrophyRarity;
-import at.hannibal2.skyhanni.features.garden.CropAccessory;
-import at.hannibal2.skyhanni.features.garden.CropType;
-import at.hannibal2.skyhanni.features.garden.GardenPlotAPI;
-import at.hannibal2.skyhanni.features.garden.farming.ArmorDropTracker;
-import at.hannibal2.skyhanni.features.garden.farming.DicerRngDropTracker;
-import at.hannibal2.skyhanni.features.garden.fortuneguide.FarmingItems;
-import at.hannibal2.skyhanni.features.garden.visitor.VisitorReward;
-import at.hannibal2.skyhanni.features.mining.powdertracker.PowderTracker;
-import at.hannibal2.skyhanni.features.misc.trevor.TrevorTracker;
-import at.hannibal2.skyhanni.features.misc.visualwords.VisualWord;
-import at.hannibal2.skyhanni.features.rift.area.westvillage.VerminTracker;
-import at.hannibal2.skyhanni.features.rift.area.westvillage.kloon.KloonTerminal;
-import at.hannibal2.skyhanni.features.skillprogress.SkillType;
-import at.hannibal2.skyhanni.features.slayer.SlayerProfitTracker;
-import at.hannibal2.skyhanni.utils.LorenzVec;
-import at.hannibal2.skyhanni.utils.NEUInternalName;
-import at.hannibal2.skyhanni.utils.tracker.SkyHanniTracker;
-import com.google.gson.annotations.Expose;
-import jline.internal.Nullable;
-import net.minecraft.item.ItemStack;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-public class Storage {
-
- @Expose
- public boolean hasPlayedBefore = false;
-
- @Expose
- public Float savedMouselockedSensitivity = .5f;
-
- @Expose
- public Float savedMouseloweredSensitivity = .5f;
-
- @Deprecated
- @Expose
- public Map<String, List<String>> knownFeatureToggles = new HashMap<>();
-
- @Expose
- public List<VisualWord> modifiedWords = new ArrayList<>();
-
- @Expose
- public boolean visualWordsImported = false;
-
- @Expose
- public Boolean contestSendingAsked = false;
-
- @Expose
- public Map<String, SkyHanniTracker.DisplayMode> trackerDisplayModes = new HashMap<>();
-
- @Expose
- public List<LorenzVec> foundDianaBurrowLocations = new ArrayList<>();
-
- @Expose
- public Map<UUID, PlayerSpecific> players = new HashMap<>();
-
- @Expose
- public String currentFameRank = null;
-
- public static class PlayerSpecific {
-
- @Expose
- public Map<String, ProfileSpecific> profiles = new HashMap<>(); // profile name
-
- @Expose
- public Integer gardenCommunityUpgrade = -1;
-
- @Expose
- public long nextCityProjectParticipationTime = 0L;
-
- @Expose
- public String currentAccountUpgrade = null;
-
- @Expose
- public long nextAccountUpgradeCompletionTime = -1L;
-
- @Expose
- public List<String> guildMembers = new ArrayList<>();
-
- @Expose
- public WinterStorage winter = new WinterStorage();
-
- public static class WinterStorage {
-
- @Expose
- public Set<String> playersThatHaveBeenGifted = new HashSet<>();
-
- @Expose
- public int amountGifted = 0;
-
- @Expose
- public int cakeCollectedYear = 0;
- }
-
- @Expose
- public Map<Long, BingoSession> bingoSessions = new HashMap<>();
-
- public static class BingoSession {
-
- @Expose
- public Set<NEUInternalName> tierOneMinionsDone = new HashSet<>();
-
- @Expose
- public Map<Integer, BingoGoal> goals = new HashMap<>();
- }
-
- @Expose
- public LimboStats limbo = new LimboStats();
-
- public static class LimboStats {
-
- @Expose
- public int playtime = 0;
-
- @Expose
- public int personalBest = 0;
-
- @Expose
- public float userLuck = 0f;
- }
- }
-
- public static class ProfileSpecific {
-
- @Expose
- public String currentPet = "";
-
- @Expose
- public MaxwellPowerStorage maxwell = new MaxwellPowerStorage();
-
- public static class MaxwellPowerStorage {
- @Expose
- public String currentPower = null;
-
- @Expose
- public int magicalPower = -1;
- }
-
- @Expose
- public ArrowsStorage arrows = new ArrowsStorage();
-
- public static class ArrowsStorage {
- @Expose
- public String currentArrow = null;
-
- @Expose
- public Map<NEUInternalName, Float> arrowAmount = new HashMap<>();
- }
-
- @Expose
- public BitsStorage bits = new BitsStorage();
-
- public static class BitsStorage {
- @Expose
- public int bits = -1;
-
- @Expose
- public int bitsToClaim = -1;
- }
-
- @Expose
- public Map<LorenzVec, MinionConfig> minions = new HashMap<>();
-
- public static class MinionConfig {
-
- @Expose
- public String displayName = "";
-
- @Expose
- public long lastClicked = -1;
-
- @Override
- public String toString() {
- return "MinionConfig{" +
- "displayName='" + displayName + '\'' +
- ", lastClicked=" + lastClicked +
- '}';
- }
- }
-
- @Expose
- public CrimsonIsleStorage crimsonIsle = new CrimsonIsleStorage();
-
- public static class CrimsonIsleStorage {
-
- @Expose
- public List<String> quests = new ArrayList<>();
-
- @Expose
- public List<String> miniBossesDoneToday = new ArrayList<>();
-
- @Expose
- public List<String> kuudraTiersDone = new ArrayList<>();
-
- @Expose
- public Map<String, Map<TrophyRarity, Integer>> trophyFishes = new HashMap<>();
- }
-
- @Expose
- public ProfileSpecific.GardenStorage garden = new ProfileSpecific.GardenStorage();
-
- public static class GardenStorage {
-
- @Expose
- public Long experience = null;
-
- @Expose
- public Map<CropType, Long> cropCounter = new HashMap<>();
-
- @Expose
- public Map<CropType, Integer> cropUpgrades = new HashMap<>();
-
- @Expose
- public Map<CropType, Integer> cropsPerSecond = new HashMap<>();
-
- @Expose
- public Map<CropType, Double> latestBlocksPerSecond = new HashMap<>();
-
- @Expose
- public Map<CropType, Double> latestTrueFarmingFortune = new HashMap<>();
-
- @Expose
- public CropAccessory savedCropAccessory = null;
-
- @Expose
- public DicerRngDropTracker.Data dicerDropTracker = new DicerRngDropTracker.Data();
-
- @Expose
- public long informedAboutLowMatter = 0;
-
- @Expose
- public long informedAboutLowFuel = 0;
-
- @Expose
- public long visitorInterval = 15 * 60_000L;
-
- @Expose
- public long nextSixthVisitorArrival = 0;
-
- @Expose
- public ArmorDropTracker.Data armorDropTracker = new ArmorDropTracker.Data();
-
- @Expose
- public Map<ComposterUpgrade, Integer> composterUpgrades = new HashMap<>();
-
- @Expose
- public Map<CropType, Boolean> toolWithBountiful = new HashMap<>();
-
- @Expose
- public NEUInternalName composterCurrentOrganicMatterItem = NEUInternalName.Companion.getNONE();
-
- @Expose
- public NEUInternalName composterCurrentFuelItem = NEUInternalName.Companion.getNONE();
-
- @Expose
- public int uniqueVisitors = 0;
-
- @Expose
- public VisitorDrops visitorDrops = new VisitorDrops();
-
- public static class VisitorDrops {
- @Expose
- public int acceptedVisitors = 0;
-
- @Expose
- public int deniedVisitors = 0;
-
- @Expose
- public List<Long> visitorRarities = new ArrayList<>();
-
- @Expose
- public int copper = 0;
-
- @Expose
- public long farmingExp = 0;
-
- @Expose
- public int gardenExp = 0;
-
- @Expose
- public long coinsSpent = 0;
-
- @Expose
- public long bits = 0;
-
- @Expose
- public long mithrilPowder = 0;
-
- @Expose
- public long gemstonePowder = 0;
-
- @Expose
- public Map<VisitorReward, Integer> rewardsCount = new HashMap<>();
- }
-
- @Expose
- public PlotIcon plotIcon = new PlotIcon();
-
- public static class PlotIcon {
- @Expose
- public Map<Integer, NEUInternalName> plotList = new HashMap<>();
- }
-
- @Expose
- public Map<Integer, GardenPlotAPI.PlotData> plotData = new HashMap<>();
-
- @Expose
- public Map<CropType, LorenzVec> cropStartLocations = new HashMap<>();
-
- @Expose
- public Fortune fortune = new Fortune();
-
- public static class Fortune {
-
- @Expose
- public Map<FarmingItems, Boolean> outdatedItems = new HashMap<>();
-
- @Expose
- public int anitaUpgrade = -1;
-
- @Expose
- public int farmingStrength = -1;
-
- @Expose
- public int farmingLevel = -1;
-
- @Expose
- public int plotsUnlocked = -1;
-
- @Expose
- public long cakeExpiring = -1L;
-
- @Expose
- public boolean carrotFortune = false;
-
- @Expose
- public boolean pumpkinFortune = false;
-
- @Expose
- public Map<FarmingItems, ItemStack> farmingItems = new HashMap<>();
- }
-
- @Expose
- public long composterEmptyTime = 0;
-
- @Expose
- public long lastComposterEmptyWarningTime = 0;
-
- @Expose
- public FarmingWeightConfig farmingWeight = new FarmingWeightConfig();
-
- public static class FarmingWeightConfig {
-
- @Expose
- public int lastFarmingWeightLeaderboard = -1;
- }
-
- @Expose
- public Map<String, LorenzVec> npcVisitorLocations = new HashMap<>();
- }
-
- @Expose
- public GhostCounter ghostCounter = new GhostCounter();
-
- public static class GhostCounter {
-
- @Expose
- public Map<GhostData.Option, Double> data = new HashMap<>();
-
- @Expose
- public boolean ctDataImported = false;
-
- @Expose
- public double bestiaryNextLevel = 0;
-
- @Expose
- public double bestiaryCurrentKill = 0;
-
- @Expose
- public double bestiaryKillNeeded = 0;
-
- @Expose
- public double totalMF = 0;
-
- @Expose
- public int configUpdateVersion = 0;
-
- }
-
- @Expose
- public PowderTracker.Data powderTracker = new PowderTracker.Data();
-
- @Expose
- public FrozenTreasureTracker.Data frozenTreasureTracker = new FrozenTreasureTracker.Data();
-
- @Expose
- public EnderNodeTracker.Data enderNodeTracker = new EnderNodeTracker.Data();
-
- @Expose
- public RiftStorage rift = new RiftStorage();
-
- public static class RiftStorage {
-
- @Expose
- public List<KloonTerminal> completedKloonTerminals = new ArrayList<>();
-
- @Expose
- public VerminTracker.Data verminTracker = new VerminTracker.Data();
-
- }
-
- @Expose
- public Map<String, SlayerProfitTracker.Data> slayerProfitData = new HashMap<>();
-
- @Expose
- public Map<String, SlayerRngMeterStorage> slayerRngMeter = new HashMap<>();
-
- public static class SlayerRngMeterStorage {
-
- @Expose
- public long currentMeter = -1;
-
- @Expose
- public long gainPerBoss = -1;
-
- @Expose
- public long goalNeeded = -1;
-
- @Expose
- public String itemGoal = "?";
-
- @Override
- public String toString() {
- return "SlayerRngMeterStorage{" +
- "currentMeter=" + currentMeter +
- ", gainPerBoss=" + gainPerBoss +
- ", goalNeeded=" + goalNeeded +
- ", itemGoal='" + itemGoal + '\'' +
- '}';
- }
- }
-
- @Expose
- public MiningConfig mining = new MiningConfig();
-
- public static class MiningConfig {
-
- @Expose
- public List<String> kingsTalkedTo = new ArrayList<>();
- }
-
- @Expose
- public TrapperData trapperData = new TrapperData();
-
- public static class TrapperData {
-
- @Expose
- public int questsDone;
-
- @Expose
- public int peltsGained;
-
- @Expose
- public int killedAnimals;
-
- @Expose
- public int selfKillingAnimals;
-
- @Expose
- public Map<TrevorTracker.TrapperMobRarity, Integer> animalRarities = new HashMap<>();
- }
-
- @Expose
- public DungeonStorage dungeons = new DungeonStorage();
-
- public static class DungeonStorage {
-
- @Expose
- public Map<DungeonAPI.DungeonFloor, Integer> bosses = new HashMap<>();
-
- @Expose
- public List<DungeonRunInfo> runs = Stream.generate(DungeonRunInfo::new)
- .limit(CroesusChestTracker.Companion.getMaxChests())
- .collect(Collectors.toCollection(ArrayList::new));
-
-
- public static class DungeonRunInfo {
-
- public DungeonRunInfo() {
- }
-
- public DungeonRunInfo(String floor) {
- this.floor = floor;
- this.openState = OpenedState.UNOPENED;
- }
-
- @Nullable
- @Expose
- public String floor = null;
-
- @Expose
- @Nullable
- public OpenedState openState = null;
-
- @Expose
- @Nullable
- public Boolean kismetUsed = null;
-
- }
- }
-
- @Expose
- public FishingStorage fishing = new FishingStorage();
-
- public static class FishingStorage {
-
- @Expose
- public FishingProfitTracker.Data fishingProfitTracker = new FishingProfitTracker.Data();
-
- @Expose
- public SeaCreatureTracker.Data seaCreatureTracker = new SeaCreatureTracker.Data();
-
- }
-
- @Expose
- public DianaStorage diana = new DianaStorage();
-
- public static class DianaStorage {
-
- @Expose
- // TODO rename to 'profitTracker'
- public DianaProfitTracker.Data dianaProfitTracker = new DianaProfitTracker.Data();
-
- @Expose
- // TODO renmae
- public MythologicalCreatureTracker.Data mythologicalMobTracker = new MythologicalCreatureTracker.Data();
- }
-
- @Expose
- public Map<SkillType, SkillAPI.SkillInfo> skillData = new HashMap<>();
- }
-}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/storage/PlayerSpecificStorage.java b/src/main/java/at/hannibal2/skyhanni/config/storage/PlayerSpecificStorage.java
new file mode 100644
index 000000000..1007168a9
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/storage/PlayerSpecificStorage.java
@@ -0,0 +1,75 @@
+package at.hannibal2.skyhanni.config.storage;
+
+import at.hannibal2.skyhanni.features.bingo.card.goals.BingoGoal;
+import at.hannibal2.skyhanni.utils.NEUInternalName;
+import com.google.gson.annotations.Expose;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+public class PlayerSpecificStorage {
+
+ @Expose
+ public Map<String, ProfileSpecificStorage> profiles = new HashMap<>(); // profile name
+
+ @Expose
+ public Integer gardenCommunityUpgrade = -1;
+
+ @Expose
+ public long nextCityProjectParticipationTime = 0L;
+
+ @Expose
+ public String currentAccountUpgrade = null;
+
+ @Expose
+ public long nextAccountUpgradeCompletionTime = -1L;
+
+ @Expose
+ public List<String> guildMembers = new ArrayList<>();
+
+ @Expose
+ public WinterStorage winter = new WinterStorage();
+
+ public static class WinterStorage {
+
+ @Expose
+ public Set<String> playersThatHaveBeenGifted = new HashSet<>();
+
+ @Expose
+ public int amountGifted = 0;
+
+ @Expose
+ public int cakeCollectedYear = 0;
+ }
+
+ @Expose
+ public Map<Long, BingoSession> bingoSessions = new HashMap<>();
+
+ public static class BingoSession {
+
+ @Expose
+ public Set<NEUInternalName> tierOneMinionsDone = new HashSet<>();
+
+ @Expose
+ public Map<Integer, BingoGoal> goals = new HashMap<>();
+ }
+
+ @Expose
+ public LimboStats limbo = new LimboStats();
+
+ public static class LimboStats {
+
+ @Expose
+ public int playtime = 0;
+
+ @Expose
+ public int personalBest = 0;
+
+ @Expose
+ public float userLuck = 0f;
+ }
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/storage/ProfileSpecificStorage.java b/src/main/java/at/hannibal2/skyhanni/config/storage/ProfileSpecificStorage.java
new file mode 100644
index 000000000..43b2cbfbc
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/storage/ProfileSpecificStorage.java
@@ -0,0 +1,459 @@
+package at.hannibal2.skyhanni.config.storage;
+
+import at.hannibal2.skyhanni.api.SkillAPI;
+import at.hannibal2.skyhanni.data.model.ComposterUpgrade;
+import at.hannibal2.skyhanni.features.combat.endernodetracker.EnderNodeTracker;
+import at.hannibal2.skyhanni.features.combat.ghostcounter.GhostData;
+import at.hannibal2.skyhanni.features.dungeon.CroesusChestTracker;
+import at.hannibal2.skyhanni.features.dungeon.DungeonAPI;
+import at.hannibal2.skyhanni.features.event.diana.DianaProfitTracker;
+import at.hannibal2.skyhanni.features.event.diana.MythologicalCreatureTracker;
+import at.hannibal2.skyhanni.features.event.jerry.frozentreasure.FrozenTreasureTracker;
+import at.hannibal2.skyhanni.features.fishing.tracker.FishingProfitTracker;
+import at.hannibal2.skyhanni.features.fishing.tracker.SeaCreatureTracker;
+import at.hannibal2.skyhanni.features.fishing.trophy.TrophyRarity;
+import at.hannibal2.skyhanni.features.garden.CropAccessory;
+import at.hannibal2.skyhanni.features.garden.CropType;
+import at.hannibal2.skyhanni.features.garden.GardenPlotAPI;
+import at.hannibal2.skyhanni.features.garden.farming.ArmorDropTracker;
+import at.hannibal2.skyhanni.features.garden.farming.DicerRngDropTracker;
+import at.hannibal2.skyhanni.features.garden.fortuneguide.FarmingItems;
+import at.hannibal2.skyhanni.features.garden.visitor.VisitorReward;
+import at.hannibal2.skyhanni.features.mining.powdertracker.PowderTracker;
+import at.hannibal2.skyhanni.features.misc.trevor.TrevorTracker;
+import at.hannibal2.skyhanni.features.rift.area.westvillage.VerminTracker;
+import at.hannibal2.skyhanni.features.rift.area.westvillage.kloon.KloonTerminal;
+import at.hannibal2.skyhanni.features.skillprogress.SkillType;
+import at.hannibal2.skyhanni.features.slayer.SlayerProfitTracker;
+import at.hannibal2.skyhanni.utils.LorenzVec;
+import at.hannibal2.skyhanni.utils.NEUInternalName;
+import com.google.gson.annotations.Expose;
+import jline.internal.Nullable;
+import net.minecraft.item.ItemStack;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+public class ProfileSpecificStorage {
+
+ @Expose
+ public String currentPet = "";
+
+ @Expose
+ public MaxwellPowerStorage maxwell = new MaxwellPowerStorage();
+
+ public static class MaxwellPowerStorage {
+ @Expose
+ public String currentPower = null;
+
+ @Expose
+ public int magicalPower = -1;
+ }
+
+ @Expose
+ public ArrowsStorage arrows = new ArrowsStorage();
+
+ public static class ArrowsStorage {
+ @Expose
+ public String currentArrow = null;
+
+ @Expose
+ public Map<NEUInternalName, Float> arrowAmount = new HashMap<>();
+ }
+
+ @Expose
+ public BitsStorage bits = new BitsStorage();
+
+ public static class BitsStorage {
+ @Expose
+ public int bits = -1;
+
+ @Expose
+ public int bitsToClaim = -1;
+ }
+
+ @Expose
+ public Map<LorenzVec, MinionConfig> minions = new HashMap<>();
+
+ public static class MinionConfig {
+
+ @Expose
+ public String displayName = "";
+
+ @Expose
+ public long lastClicked = -1;
+
+ @Override
+ public String toString() {
+ return "MinionConfig{" +
+ "displayName='" + displayName + '\'' +
+ ", lastClicked=" + lastClicked +
+ '}';
+ }
+ }
+
+ @Expose
+ public CrimsonIsleStorage crimsonIsle = new CrimsonIsleStorage();
+
+ public static class CrimsonIsleStorage {
+
+ @Expose
+ public List<String> quests = new ArrayList<>();
+
+ @Expose
+ public List<String> miniBossesDoneToday = new ArrayList<>();
+
+ @Expose
+ public List<String> kuudraTiersDone = new ArrayList<>();
+
+ @Expose
+ public Map<String, Map<TrophyRarity, Integer>> trophyFishes = new HashMap<>();
+ }
+
+ @Expose
+ public GardenStorage garden = new GardenStorage();
+
+ public static class GardenStorage {
+
+ @Expose
+ public Long experience = null;
+
+ @Expose
+ public Map<CropType, Long> cropCounter = new HashMap<>();
+
+ @Expose
+ public Map<CropType, Integer> cropUpgrades = new HashMap<>();
+
+ @Expose
+ public Map<CropType, Integer> cropsPerSecond = new HashMap<>();
+
+ @Expose
+ public Map<CropType, Double> latestBlocksPerSecond = new HashMap<>();
+
+ @Expose
+ public Map<CropType, Double> latestTrueFarmingFortune = new HashMap<>();
+
+ @Expose
+ public CropAccessory savedCropAccessory = null;
+
+ @Expose
+ public DicerRngDropTracker.Data dicerDropTracker = new DicerRngDropTracker.Data();
+
+ @Expose
+ public long informedAboutLowMatter = 0;
+
+ @Expose
+ public long informedAboutLowFuel = 0;
+
+ @Expose
+ public long visitorInterval = 15 * 60_000L;
+
+ @Expose
+ public long nextSixthVisitorArrival = 0;
+
+ @Expose
+ public ArmorDropTracker.Data armorDropTracker = new ArmorDropTracker.Data();
+
+ @Expose
+ public Map<ComposterUpgrade, Integer> composterUpgrades = new HashMap<>();
+
+ @Expose
+ public Map<CropType, Boolean> toolWithBountiful = new HashMap<>();
+
+ @Expose
+ public NEUInternalName composterCurrentOrganicMatterItem = NEUInternalName.Companion.getNONE();
+
+ @Expose
+ public NEUInternalName composterCurrentFuelItem = NEUInternalName.Companion.getNONE();
+
+ @Expose
+ public int uniqueVisitors = 0;
+
+ @Expose
+ public GardenStorage.VisitorDrops visitorDrops = new GardenStorage.VisitorDrops();
+
+ public static class VisitorDrops {
+ @Expose
+ public int acceptedVisitors = 0;
+
+ @Expose
+ public int deniedVisitors = 0;
+
+ @Expose
+ public List<Long> visitorRarities = new ArrayList<>();
+
+ @Expose
+ public int copper = 0;
+
+ @Expose
+ public long farmingExp = 0;
+
+ @Expose
+ public int gardenExp = 0;
+
+ @Expose
+ public long coinsSpent = 0;
+
+ @Expose
+ public long bits = 0;
+
+ @Expose
+ public long mithrilPowder = 0;
+
+ @Expose
+ public long gemstonePowder = 0;
+
+ @Expose
+ public Map<VisitorReward, Integer> rewardsCount = new HashMap<>();
+ }
+
+ @Expose
+ public GardenStorage.PlotIcon plotIcon = new GardenStorage.PlotIcon();
+
+ public static class PlotIcon {
+ @Expose
+ public Map<Integer, NEUInternalName> plotList = new HashMap<>();
+ }
+
+ @Expose
+ public Map<Integer, GardenPlotAPI.PlotData> plotData = new HashMap<>();
+
+ @Expose
+ public Map<CropType, LorenzVec> cropStartLocations = new HashMap<>();
+
+ @Expose
+ public GardenStorage.Fortune fortune = new GardenStorage.Fortune();
+
+ public static class Fortune {
+
+ @Expose
+ public Map<FarmingItems, Boolean> outdatedItems = new HashMap<>();
+
+ @Expose
+ public int anitaUpgrade = -1;
+
+ @Expose
+ public int farmingStrength =