package at.hannibal2.skyhanni.config; 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.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.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 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; public class Storage { @Expose public boolean hasPlayedBefore = false; @Expose public Float savedMouselockedSensitivity = .5f; @Expose public Float savedMouseloweredSensitivity = .5f; @Deprecated @Expose public Map> knownFeatureToggles = new HashMap<>(); @Expose public List modifiedWords = new ArrayList<>(); @Expose public boolean visualWordsImported = false; @Expose public Boolean contestSendingAsked = false; @Expose public Map trackerDisplayModes = new HashMap<>(); @Expose public Map players = new HashMap<>(); public static class PlayerSpecific { @Expose public Map 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 guildMembers = new ArrayList<>(); @Expose public WinterStorage winter = new WinterStorage(); public static class WinterStorage { @Expose public Set playersThatHaveBeenGifted = new HashSet<>(); @Expose public int amountGifted = 0; @Expose public int cakeCollectedYear = 0; } @Expose public Map bingoSessions = new HashMap<>(); public static class BingoSession { @Expose public List tierOneMinionsDone = new ArrayList<>(); @Expose public Map goals = new HashMap<>(); } } public static class ProfileSpecific { @Expose public String currentPet = ""; @Expose public Map 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 quests = new ArrayList<>(); @Expose public List miniBossesDoneToday = new ArrayList<>(); @Expose public List kuudraTiersDone = new ArrayList<>(); @Expose public Map> trophyFishes = new HashMap<>(); } @Expose public ProfileSpecific.GardenStorage garden = new ProfileSpecific.GardenStorage(); public static class GardenStorage { @Expose public Long experience = null; @Expose public Map cropCounter = new HashMap<>(); @Expose public Map cropUpgrades = new HashMap<>(); @Expose public Map cropsPerSecond = new HashMap<>(); @Expose public Map latestBlocksPerSecond = new HashMap<>(); @Expose public Map 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 composterUpgrades = new HashMap<>(); @Expose public Map 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 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 rewardsCount = new HashMap<>(); } @Expose public PlotIcon plotIcon = new PlotIcon(); public static class PlotIcon { @Expose public Map plotList = new HashMap<>(); } @Expose public Map plotData = new HashMap<>(); @Expose public Map cropStartLocations = new HashMap<>(); @Expose public Fortune fortune = new Fortune(); public static class Fortune { @Expose public Map 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 = 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 npcVisitorLocations = new HashMap<>(); } @Expose public GhostCounter ghostCounter = new GhostCounter(); public static class GhostCounter { @Expose public Map 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 completedKloonTerminals = new ArrayList<>(); @Expose public VerminTracker.Data verminTracker = new VerminTracker.Data(); } @Expose public Map slayerProfitData = new HashMap<>(); @Expose public Map 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 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 animalRarities = new HashMap<>(); } @Expose public DungeonStorage dungeons = new DungeonStorage(); public static class DungeonStorage { @Expose public Map bosses = new HashMap<>(); } @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(); } } }