package at.hannibal2.skyhanni.config; import at.hannibal2.skyhanni.data.model.ComposterUpgrade; 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.farming.FarmingArmorDrops; import at.hannibal2.skyhanni.features.garden.fortuneguide.FarmingItems; import at.hannibal2.skyhanni.features.garden.visitor.VisitorReward; import at.hannibal2.skyhanni.features.misc.EnderNode; import at.hannibal2.skyhanni.features.misc.FrozenTreasure; import at.hannibal2.skyhanni.features.misc.ghostcounter.GhostData; import at.hannibal2.skyhanni.features.misc.powdertracker.PowderChestReward; import at.hannibal2.skyhanni.features.rift.area.westvillage.KloonTerminal; import at.hannibal2.skyhanni.utils.LorenzVec; import at.hannibal2.skyhanni.utils.NEUInternalName; import com.google.gson.annotations.Expose; import net.minecraft.item.ItemStack; import java.util.*; public class Storage { @Expose public boolean hasPlayedBefore = false; @Expose public Map> knownFeatureToggles = new HashMap<>(); @Expose public Map> gardenJacobFarmingContestTimes = new HashMap<>(); @Expose public Boolean contestSendingAsked = false; @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; } 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 int latestTrophyFishInInventory = 0; @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 Map dicerRngDrops = new HashMap<>(); @Expose public long informedAboutLowMatter = 0; @Expose public long informedAboutLowFuel = 0; @Expose public long visitorInterval = 15 * 60_000L; @Expose public long nextSixthVisitorArrival = 0; @Expose public Map farmArmorDrops = new HashMap<>(); @Expose public Map composterUpgrades = new HashMap<>(); @Expose public Map toolWithBountiful = new HashMap<>(); @Expose public String composterCurrentOrganicMatterItem = ""; @Expose public String composterCurrentFuelItem = ""; @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 Map rewardsCount = new HashMap<>(); } @Expose public PlotIcon plotIcon = new PlotIcon(); public static class PlotIcon { @Expose public Map plotList = 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 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 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 Map powderTracker = new HashMap<>(); public static class PowderTracker { @Expose public int totalChestPicked = 0; @Expose public Map rewards = new HashMap<>(); } @Expose public FrozenTreasureTracker frozenTreasureTracker = new FrozenTreasureTracker(); public static class FrozenTreasureTracker { @Expose public int treasuresMined = 0; @Expose public int compactProcs = 0; @Expose public Map treasureCount = new HashMap<>(); } @Expose public EnderNodeTracker enderNodeTracker = new EnderNodeTracker(); public static class EnderNodeTracker { @Expose public int totalNodesMined = 0; @Expose public int totalEndermiteNests = 0; @Expose public Map lootCount = new HashMap<>(); } @Expose public RiftStorage rift = new RiftStorage(); public static class RiftStorage { @Expose public List completedKloonTerminals = new ArrayList<>(); } @Expose public Map slayerProfitData = new HashMap<>(); public static class SlayerProfitList { @Expose public Map items = new HashMap<>(); @Expose public long mobKillCoins = 0; @Expose public long slayerSpawnCost = 0; @Expose public int slayerCompletedCount = 0; public static class SlayerItemProfit { @Expose public NEUInternalName internalName; @Expose public long timesDropped; @Expose public long totalAmount; @Expose public boolean hidden; @Override public String toString() { return "SlayerItemProfit{" + "internalName='" + internalName + '\'' + ", timesDropped=" + timesDropped + ", totalAmount=" + totalAmount + ", hidden=" + hidden + '}'; } } @Override public String toString() { return "SlayerProfitList{" + "items=" + items + ", mobKillCoins=" + mobKillCoins + ", slayerSpawnCost=" + slayerSpawnCost + ", slayerCompletedCount=" + slayerCompletedCount + '}'; } } @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<>(); } } }