diff options
| author | CalMWolfs <94038482+CalMWolfs@users.noreply.github.com> | 2023-10-21 22:56:53 +1100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-21 13:56:53 +0200 |
| commit | 526365859a27d54b7ea5c07c08b301650c15ea0e (patch) | |
| tree | ddf772f564d85caf3dbe73c66c032affdf69281f /src/main/java/at/hannibal2/skyhanni/features | |
| parent | a98927303854058ad2d7a0d8bb88265c54139614 (diff) | |
| download | skyhanni-526365859a27d54b7ea5c07c08b301650c15ea0e.tar.gz skyhanni-526365859a27d54b7ea5c07c08b301650c15ea0e.tar.bz2 skyhanni-526365859a27d54b7ea5c07c08b301650c15ea0e.zip | |
Backend: Serialise all constants and add repo error messages and status (#605)
Backend: Serialise all constants and add repo error messages and status #605
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features')
24 files changed, 238 insertions, 273 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/chat/playerchat/PlayerChatFilter.kt b/src/main/java/at/hannibal2/skyhanni/features/chat/playerchat/PlayerChatFilter.kt index 6de251af5..e4db8ee3b 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/chat/playerchat/PlayerChatFilter.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/chat/playerchat/PlayerChatFilter.kt @@ -3,6 +3,7 @@ package at.hannibal2.skyhanni.features.chat.playerchat import at.hannibal2.skyhanni.events.RepositoryReloadEvent import at.hannibal2.skyhanni.utils.LorenzUtils import at.hannibal2.skyhanni.utils.MultiFilter +import at.hannibal2.skyhanni.utils.jsonobjects.PlayerChatFilterJson import net.minecraftforge.fml.common.eventhandler.SubscribeEvent class PlayerChatFilter { @@ -29,18 +30,16 @@ class PlayerChatFilter { var countCategories = 0 var countFilters = 0 - val data = event.getConstant("PlayerChatFilter") - for (category in data["filters"].asJsonArray) { - val jsonObject = category.asJsonObject - val description = jsonObject["description"].asString + val data = event.getConstant<PlayerChatFilterJson>("PlayerChatFilter") + for (category in data.filters) { + val description = category.description val filter = MultiFilter() - filter.load(jsonObject) + filter.load(category) filters[description] = filter countCategories++ countFilters += filter.count() } - LorenzUtils.debug("Loaded $countFilters filters in $countCategories categories from repo") } } diff --git a/src/main/java/at/hannibal2/skyhanni/features/commands/tabcomplete/GetFromSacksTabComplete.kt b/src/main/java/at/hannibal2/skyhanni/features/commands/tabcomplete/GetFromSacksTabComplete.kt index 2c1c339dc..97a110508 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/commands/tabcomplete/GetFromSacksTabComplete.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/commands/tabcomplete/GetFromSacksTabComplete.kt @@ -4,7 +4,7 @@ import at.hannibal2.skyhanni.SkyHanniMod import at.hannibal2.skyhanni.events.PacketEvent import at.hannibal2.skyhanni.events.RepositoryReloadEvent import at.hannibal2.skyhanni.utils.LorenzUtils -import at.hannibal2.skyhanni.utils.jsonobjects.SackListJson +import at.hannibal2.skyhanni.utils.jsonobjects.SacksJson import net.minecraft.network.play.client.C01PacketChatMessage import net.minecraftforge.fml.common.eventhandler.SubscribeEvent @@ -15,7 +15,7 @@ object GetFromSacksTabComplete { @SubscribeEvent fun onRepoReload(event: RepositoryReloadEvent) { - sackList = event.getConstant<SackListJson>("Sacks").sackList + sackList = event.getConstant<SacksJson>("Sacks").sackList } fun handleTabComplete(command: String): List<String>? { diff --git a/src/main/java/at/hannibal2/skyhanni/features/commands/tabcomplete/PlayerTabComplete.kt b/src/main/java/at/hannibal2/skyhanni/features/commands/tabcomplete/PlayerTabComplete.kt index 96bfeb83a..688d6f6b3 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/commands/tabcomplete/PlayerTabComplete.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/commands/tabcomplete/PlayerTabComplete.kt @@ -13,11 +13,12 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent object PlayerTabComplete { private val config get() = SkyHanniMod.feature.commands.tabComplete - private var vipVisitsJson: VipVisitsJson? = null + private var vipVisits = listOf<String>() @SubscribeEvent fun onRepoReload(event: RepositoryReloadEvent) { - vipVisitsJson = event.getConstant<VipVisitsJson>("VipVisits") + val data = event.getConstant<VipVisitsJson>("VipVisits") + vipVisits = data.vipVisits } @SubscribeEvent @@ -75,12 +76,10 @@ object PlayerTabComplete { } if (config.vipVisits && command == "visit") { - vipVisitsJson?.let { - for (visit in it.vipVisits) { - add(visit) - } + for (visit in vipVisits) { + add(visit) } } } } -}
\ No newline at end of file +} diff --git a/src/main/java/at/hannibal2/skyhanni/features/commands/tabcomplete/WarpTabComplete.kt b/src/main/java/at/hannibal2/skyhanni/features/commands/tabcomplete/WarpTabComplete.kt index 4120ebd9d..ea76e03ea 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/commands/tabcomplete/WarpTabComplete.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/commands/tabcomplete/WarpTabComplete.kt @@ -8,19 +8,20 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent object WarpTabComplete { private val config get() = SkyHanniMod.feature.commands.tabComplete - private var warpsJson: WarpsJson? = null + private var warps = listOf<String>() @SubscribeEvent fun onRepoReload(event: RepositoryReloadEvent) { - warpsJson = event.getConstant<WarpsJson>("Warps") + val data = event.getConstant<WarpsJson>("Warps") + warps = data.warpCommands } fun handleTabComplete(command: String): List<String>? { if (!isEnabled()) return null if (command != "warp") return null - return warpsJson?.warpCommands + return warps } fun isEnabled() = LorenzUtils.inSkyBlock && config.warps -}
\ No newline at end of file +} diff --git a/src/main/java/at/hannibal2/skyhanni/features/fishing/trophy/TrophyFishFillet.kt b/src/main/java/at/hannibal2/skyhanni/features/fishing/trophy/TrophyFishFillet.kt index 0ae437db7..2775becc7 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/fishing/trophy/TrophyFishFillet.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/fishing/trophy/TrophyFishFillet.kt @@ -3,6 +3,7 @@ package at.hannibal2.skyhanni.features.fishing.trophy import at.hannibal2.skyhanni.SkyHanniMod import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator import at.hannibal2.skyhanni.events.LorenzToolTipEvent +import at.hannibal2.skyhanni.features.fishing.trophy.TrophyFishManager.getFilletValue import at.hannibal2.skyhanni.utils.ItemUtils.getInternalName import at.hannibal2.skyhanni.utils.KeyboardManager.isKeyHeld import at.hannibal2.skyhanni.utils.LorenzUtils @@ -13,7 +14,6 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import org.lwjgl.input.Keyboard class TrophyFishFillet { - @SubscribeEvent fun onTooltip(event: LorenzToolTipEvent) { if (!isEnabled()) return @@ -36,5 +36,4 @@ class TrophyFishFillet { } private fun isEnabled() = LorenzUtils.inSkyBlock && SkyHanniMod.feature.fishing.trophyFishing.filletTooltip - -}
\ No newline at end of file +} diff --git a/src/main/java/at/hannibal2/skyhanni/features/fishing/trophy/TrophyFishInfo.kt b/src/main/java/at/hannibal2/skyhanni/features/fishing/trophy/TrophyFishInfo.kt deleted file mode 100644 index aba9f5c5f..000000000 --- a/src/main/java/at/hannibal2/skyhanni/features/fishing/trophy/TrophyFishInfo.kt +++ /dev/null @@ -1,54 +0,0 @@ -package at.hannibal2.skyhanni.features.fishing.trophy - -import at.hannibal2.skyhanni.test.command.ErrorManager -import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators -import at.hannibal2.skyhanni.utils.StringUtils.splitLines -import com.google.gson.annotations.Expose -import net.minecraft.event.HoverEvent -import net.minecraft.util.ChatComponentText -import net.minecraft.util.ChatStyle - -data class TrophyFishInfo( - @Expose - val displayName: String, - @Expose - private val description: String, - @Expose - private val rate: Int?, - @Expose - private val fillet: Map<TrophyRarity, Int> -) { - - // Credit to NotEnoughUpdates (Trophy Fish profile viewer page) for the format. - fun getTooltip(counts: Map<TrophyRarity, Int>): ChatStyle { - val bestFishObtained = counts.keys.maxOrNull() ?: TrophyRarity.BRONZE - val rateString = if (rate != null) "§8[§7$rate%§8]" else "" - val display = """ - |$displayName $rateString - |${description.splitLines(150)} - | - |${TrophyRarity.DIAMOND.formattedString}: ${formatCount(counts, TrophyRarity.DIAMOND)} - |${TrophyRarity.GOLD.formattedString}: ${formatCount(counts, TrophyRarity.GOLD)} - |${TrophyRarity.SILVER.formattedString}: ${formatCount(counts, TrophyRarity.SILVER)} - |${TrophyRarity.BRONZE.formattedString}: ${formatCount(counts, TrophyRarity.BRONZE)} - | - |§7Total: ${bestFishObtained.formatCode}${counts.values.sum().addSeparators()} - """.trimMargin() - return ChatStyle().setChatHoverEvent( - HoverEvent(HoverEvent.Action.SHOW_TEXT, ChatComponentText(display)) - ) - } - - fun getFilletValue(rarity: TrophyRarity): Int { - if (fillet == null) { - ErrorManager.logError(Error("fillet is null for '$displayName'"), "Error trying to read trophy fish info") - return -1 - } - return fillet.getOrDefault(rarity, -1) - } - - private fun formatCount(counts: Map<TrophyRarity, Int>, rarity: TrophyRarity): String { - val count = counts.getOrDefault(rarity, 0) - return if (count > 0) "§6${count.addSeparators()}" else "§c✖" - } -}
\ No newline at end of file diff --git a/src/main/java/at/hannibal2/skyhanni/features/fishing/trophy/TrophyFishManager.kt b/src/main/java/at/hannibal2/skyhanni/features/fishing/trophy/TrophyFishManager.kt index 4d8b547a4..6617b31b2 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/fishing/trophy/TrophyFishManager.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/fishing/trophy/TrophyFishManager.kt @@ -2,27 +2,62 @@ package at.hannibal2.skyhanni.features.fishing.trophy import at.hannibal2.skyhanni.data.ProfileStorageData import at.hannibal2.skyhanni.events.RepositoryReloadEvent -import at.hannibal2.skyhanni.utils.LorenzUtils +import at.hannibal2.skyhanni.test.command.ErrorManager +import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators +import at.hannibal2.skyhanni.utils.StringUtils.splitLines import at.hannibal2.skyhanni.utils.jsonobjects.TrophyFishJson +import at.hannibal2.skyhanni.utils.jsonobjects.TrophyFishJson.TrophyFishInfo +import net.minecraft.event.HoverEvent +import net.minecraft.util.ChatComponentText +import net.minecraft.util.ChatStyle import net.minecraftforge.fml.common.eventhandler.SubscribeEvent -class TrophyFishManager { +object TrophyFishManager { @SubscribeEvent fun onRepoReload(event: RepositoryReloadEvent) { - val json = event.getConstant<TrophyFishJson>("TrophyFish") - trophyFishInfo = json.trophy_fish - LorenzUtils.debug("Loaded trophy fish from repo") + val data = event.getConstant<TrophyFishJson>("TrophyFish") + trophyFishInfo = data.trophy_fish } - companion object { - val fishes: MutableMap<String, MutableMap<TrophyRarity, Int>>? - get() = ProfileStorageData.profileSpecific?.crimsonIsle?.trophyFishes + val fishes: MutableMap<String, MutableMap<TrophyRarity, Int>>? + get() = ProfileStorageData.profileSpecific?.crimsonIsle?.trophyFishes - private var trophyFishInfo = mapOf<String, TrophyFishInfo>() + private var trophyFishInfo = mapOf<String, TrophyFishInfo>() - fun getInfo(internalName: String) = trophyFishInfo[internalName] + fun getInfo(internalName: String) = trophyFishInfo[internalName] - fun getInfoByName(name: String) = trophyFishInfo.values.find { it.displayName == name } + fun getInfoByName(name: String) = trophyFishInfo.values.find { it.displayName == name } + + private fun formatCount(counts: Map<TrophyRarity, Int>, rarity: TrophyRarity): String { + val count = counts.getOrDefault(rarity, 0) + return if (count > 0) "§6${count.addSeparators()}" else "§c✖" + } + + fun TrophyFishInfo.getFilletValue(rarity: TrophyRarity): Int { + if (fillet == null) { + ErrorManager.logError(Error("fillet is null for '$displayName'"), "Error trying to read trophy fish info") + return -1 + } + return fillet.getOrDefault(rarity, -1) + } + + fun TrophyFishInfo.getTooltip(counts: Map<TrophyRarity, Int>): ChatStyle { + val bestFishObtained = counts.keys.maxOrNull() ?: TrophyRarity.BRONZE + val rateString = if (rate != null) "§8[§7$rate%§8]" else "" + val display = """ + |$displayName $rateString + |${description.splitLines(150)} + | + |${TrophyRarity.DIAMOND.formattedString}: ${formatCount(counts, TrophyRarity.DIAMOND)} + |${TrophyRarity.GOLD.formattedString}: ${formatCount(counts, TrophyRarity.GOLD)} + |${TrophyRarity.SILVER.formattedString}: ${formatCount(counts, TrophyRarity.SILVER)} + |${TrophyRarity.BRONZE.formattedString}: ${formatCount(counts, TrophyRarity.BRONZE)} + | + |§7Total: ${bestFishObtained.formatCode}${counts.values.sum().addSeparators()} + """.trimMargin() + return ChatStyle().setChatHoverEvent( + HoverEvent(HoverEvent.Action.SHOW_TEXT, ChatComponentText(display)) + ) } } diff --git a/src/main/java/at/hannibal2/skyhanni/features/fishing/trophy/TrophyFishMessages.kt b/src/main/java/at/hannibal2/skyhanni/features/fishing/trophy/TrophyFishMessages.kt index e6087a5b5..7723617a9 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/fishing/trophy/TrophyFishMessages.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/fishing/trophy/TrophyFishMessages.kt @@ -3,12 +3,14 @@ package at.hannibal2.skyhanni.features.fishing.trophy import at.hannibal2.skyhanni.SkyHanniMod import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator import at.hannibal2.skyhanni.events.LorenzChatEvent -import at.hannibal2.skyhanni.features.fishing.trophy.TrophyFishManager.Companion.fishes +import at.hannibal2.skyhanni.features.fishing.trophy.TrophyFishManager.fishes +import at.hannibal2.skyhanni.features.fishing.trophy.TrophyFishManager.getTooltip import at.hannibal2.skyhanni.utils.LorenzUtils import at.hannibal2.skyhanni.utils.LorenzUtils.addOrPut import at.hannibal2.skyhanni.utils.LorenzUtils.sumAllValues import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators import at.hannibal2.skyhanni.utils.NumberUtil.ordinal +import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher import at.hannibal2.skyhanni.utils.StringUtils.removeColor import net.minecraft.client.Minecraft import net.minecraft.util.ChatComponentText @@ -16,16 +18,19 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent class TrophyFishMessages { private val trophyFishPattern = - Regex("§6§lTROPHY FISH! §r§bYou caught an? §r(?<displayName>§[0-9a-f](?:§k)?[\\w -]+)§r§r§r §r§l§r(?<displayRarity>§[0-9a-f]§l\\w+)§r§b\\.") + "§6§lTROPHY FISH! §r§bYou caught an? §r(?<displayName>§[0-9a-f](?:§k)?[\\w -]+)§r§r§r §r§l§r(?<displayRarity>§[0-9a-f]§l\\w+)§r§b\\.".toPattern() private val config get() = SkyHanniMod.feature.fishing.trophyFishing.chatMessages @SubscribeEvent fun onStatusBar(event: LorenzChatEvent) { if (!LorenzUtils.inSkyBlock) return + var displayName = "" + var displayRarity = "" - val match = trophyFishPattern.matchEntire(event.message)?.groups ?: return - val displayName = match["displayName"]!!.value.replace("§k", "") - val displayRarity = match["displayRarity"]!!.value + trophyFishPattern.matchMatcher(event.message) { + displayName = group("displayName").replace("§k", "") + displayRarity = group("displayRarity") + } ?: return val internalName = displayName.replace("Obfuscated", "Obfuscated Fish") .replace("[- ]".toRegex(), "").lowercase().removeColor() diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/GardenAPI.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenAPI.kt index 05b78d047..d114d2455 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/GardenAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenAPI.kt @@ -1,6 +1,7 @@ package at.hannibal2.skyhanni.features.garden import at.hannibal2.skyhanni.SkyHanniMod +import at.hannibal2.skyhanni.data.GardenCropMilestones import at.hannibal2.skyhanni.data.IslandType import at.hannibal2.skyhanni.data.ProfileStorageData import at.hannibal2.skyhanni.events.BlockClickEvent @@ -20,6 +21,7 @@ import at.hannibal2.skyhanni.features.garden.farming.GardenBestCropTime import at.hannibal2.skyhanni.features.garden.farming.GardenCropSpeed import at.hannibal2.skyhanni.features.garden.fortuneguide.FFGuideGUI import at.hannibal2.skyhanni.features.garden.inventory.SkyMartCopperPrice +import at.hannibal2.skyhanni.features.garden.visitor.GardenVisitorColorNames import at.hannibal2.skyhanni.features.garden.visitor.VisitorAPI import at.hannibal2.skyhanni.utils.BlockUtils.isBabyCrop import at.hannibal2.skyhanni.utils.InventoryUtils @@ -248,5 +250,5 @@ object GardenAPI { } private var gardenExperience = listOf<Int>() - private const val gardenOverflowExp = 10000 // can be changed I guess + private const val gardenOverflowExp = 10000 } diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/composter/ComposterOverlay.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/composter/ComposterOverlay.kt index 8b0b3d70d..88695da9a 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/composter/ComposterOverlay.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/composter/ComposterOverlay.kt @@ -47,9 +47,10 @@ import kotlin.time.Duration import kotlin.time.Duration.Companion.milliseconds import kotlin.time.DurationUnit -class ComposterOverlay { +object ComposterOverlay { private var organicMatterFactors: Map<String, Double> = emptyMap() private var fuelFactors: Map<String, Double> = emptyMap() + private var organicMatter: Map<String, Double> = emptyMap() private val config get() = SkyHanniMod.feature.garden.composters private var organicMatterDisplay = emptyList<List<Any>>() @@ -68,34 +69,31 @@ class ComposterOverlay { private var lastHovered = 0L private var lastAttemptTime = SimpleTimeMark.farPast() - companion object { - var currentOrganicMatterItem: String? - get() = GardenAPI.config?.composterCurrentOrganicMatterItem - private set(value) { - GardenAPI.config?.composterCurrentOrganicMatterItem = value - } + var inInventory = false - var currentFuelItem: String? - get() = GardenAPI.config?.composterCurrentFuelItem - private set(value) { - GardenAPI.config?.composterCurrentFuelItem = value - } + private var testOffset = 0 - var testOffset = 0 + var currentOrganicMatterItem: String? + get() = GardenAPI.config?.composterCurrentOrganicMatterItem + private set(value) { + GardenAPI.config?.composterCurrentOrganicMatterItem = value + } - fun onCommand(args: Array<String>) { - if (args.size != 1) { - LorenzUtils.chat("§cUsage: /shtestcomposter <offset>") - return - } - testOffset = args[0].toInt() - LorenzUtils.chat("§e[SkyHanni] Composter test offset set to $testOffset.") + var currentFuelItem: String? + get() = GardenAPI.config?.composterCurrentFuelItem + private set(value) { + GardenAPI.config?.composterCurrentFuelItem = value } - var inInventory = false + fun onCommand(args: Array<String>) { + if (args.size != 1) { + LorenzUtils.chat("§cUsage: /shtestcomposter <offset>") + return + } + testOffset = args[0].toInt() + LorenzUtils.chat("§e[SkyHanni] Composter test offset set to $testOffset.") } - var garden: GardenJson? = null @SubscribeEvent fun onInventoryClose(event: InventoryCloseEvent) { @@ -331,6 +329,7 @@ class ComposterOverlay { if (currentTimeType == TimeType.COMPOST) "Compost multiplier" else "Composts per $timeText" newList.addAsSingletonList(" §7$compostPerTitle: §e${multiplier.round(2)}$compostPerTitlePreview") + val organicMatterPrice = getPrice(organicMatterItem) val organicMatterFactor = organicMatterFactors[organicMatterItem]!! @@ -358,6 +357,7 @@ class ComposterOverlay { " §7Material costs per $timeText: §6${NumberUtil.format(totalCost)}$materialCostFormatPreview" newList.addAsSingletonList(materialCostFormat) + val priceCompost = getPrice("COMPOST") val profit = ((priceCompost * multiDropFactor) - (fuelPricePer + organicMatterPricePer)) * timeMultiplier val profitPreview = @@ -460,8 +460,7 @@ class ComposterOverlay { if (sackStatus == SackStatus.MISSING || sackStatus == SackStatus.OUTDATED) { if (sackStatus == SackStatus.OUTDATED) LorenzUtils.sendCommandToServer("gfs $internalName ${itemsNeeded - having}") - val sackType = - if (internalName == "VOLTA" || internalName == "OIL_BARREL") "Mining" else "Enchanted Agronomy" // TODO Add sack type repo data + val sackType = if (internalName == "VOLTA" || internalName == "OIL_BARREL") "Mining" else "Enchanted Agronomy" // TODO Add sack type repo data LorenzUtils.clickableChat( "§e[SkyHanni] Sacks could not be loaded. Click here and open your §9$sackType Sack §eto update the data!", "sax" @@ -506,14 +505,19 @@ class ComposterOverlay { @SubscribeEvent fun onRepoReload(event: RepositoryReloadEvent) { - garden = event.getConstant<GardenJson>("Garden") + val data = event.getConstant<GardenJson>("Garden") + organicMatter = data.organic_matter + fuelFactors = data.fuel updateOrganicMatterFactors() } private fun updateOrganicMatterFactors() { - val garden = this.garden ?: return - organicMatterFactors = updateOrganicMatterFactors(garden.organic_matter) - fuelFactors = garden.fuel + try { + organicMatterFactors = updateOrganicMatterFactors(organicMatter) + } catch (e: Exception) { + e.printStackTrace() + LorenzUtils.error("error in RepositoryReloadEvent") + } } private fun updateOrganicMatterFactors(baseValues: Map<String, Double>): Map<String, Double> { diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/farming/FarmingArmorDrops.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/farming/FarmingArmorDrops.kt index fc68546e8..8092ff476 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/farming/FarmingArmorDrops.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/farming/FarmingArmorDrops.kt @@ -17,6 +17,7 @@ import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators import at.hannibal2.skyhanni.utils.RenderUtils.renderStrings import at.hannibal2.skyhanni.utils.SimpleTimeMark import at.hannibal2.skyhanni.utils.jsonobjects.ArmorDropsJson +import at.hannibal2.skyhanni.utils.jsonobjects.ArmorDropsJson.DropInfo import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import kotlin.time.Duration.Companion.seconds @@ -111,7 +112,7 @@ class FarmingArmorDrops { } companion object { - var armorDropInfo = mapOf<String, ArmorDropsJson.DropInfo>() + var armorDropInfo = mapOf<String, DropInfo>() private var currentArmorDropChance = 0.0 private var lastCalculationTime = SimpleTimeMark.farPast() diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/farming/GardenCropSpeed.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/farming/GardenCropSpeed.kt index 0d9e4409f..a9a2066bd 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/farming/GardenCropSpeed.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/farming/GardenCropSpeed.kt @@ -15,7 +15,8 @@ import at.hannibal2.skyhanni.features.garden.GardenAPI import at.hannibal2.skyhanni.utils.InventoryUtils import at.hannibal2.skyhanni.utils.ItemUtils.getInternalName import at.hannibal2.skyhanni.utils.LorenzUtils.editCopy -import com.google.gson.JsonObject +import at.hannibal2.skyhanni.utils.jsonobjects.DicerDropsJson +import at.hannibal2.skyhanni.utils.jsonobjects.DicerDropsJson.DicerType import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import kotlin.concurrent.fixedRateTimer @@ -129,31 +130,28 @@ object GardenCropSpeed { } } - private fun calculateAverageDicer(dicerList: MutableList<Double>, dropsJson: JsonObject) { + @SubscribeEvent + fun onRepoReload(event: RepositoryReloadEvent) { + val data = event.getConstant<DicerDropsJson>("DicerDrops") + calculateAverageDicer(melonDicer, data.MELON) + calculateAverageDicer(pumpkinDicer, data.PUMPKIN) + } + + private fun calculateAverageDicer(dicerList: MutableList<Double>, data: DicerType) { dicerList.clear() - val totalChance = dropsJson["total chance"].asDouble - val dropTypes = dropsJson["drops"].asJsonArray - for (dropType in dropTypes) { - val dropJson = dropType.asJsonObject - val chance = (dropJson["chance"].asDouble / totalChance) - dropJson["amount"].asJsonArray.forEachIndexed { index, element -> - val amount = element.asInt * chance + for (dropType in data.drops) { + val chance = dropType.chance / data.totalChance.toDouble() + for ((index, amount) in dropType.amount.withIndex()) { + val dropAmount = amount * chance if (index < dicerList.size) { - dicerList[index] += amount + dicerList[index] += dropAmount } else { - dicerList.add(amount) + dicerList.add(dropAmount) } } } } - @SubscribeEvent - fun onRepoReload(event: RepositoryReloadEvent) { - val dicerJson = event.getConstant("DicerDrops") - calculateAverageDicer(melonDicer, dicerJson["MELON"].asJsonObject) - calculateAverageDicer(pumpkinDicer, dicerJson["PUMPKIN"].asJsonObject) - } - fun getRecentBPS(): Double { val size = blocksSpeedList.size return if (size <= 1) { @@ -192,6 +190,5 @@ object GardenCropSpeed { @SubscribeEvent fun onConfigFix(event: ConfigUpdaterMigrator.ConfigFixEvent) { event.move(3, "garden.blocksBrokenResetTime", "garden.cropMilestones.blocksBrokenResetTime") - } } diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/inventory/AnitaExtraFarmingFortune.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/inventory/AnitaExtraFarmingFortune.kt index 0a3eabf86..904ec9bb4 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/inventory/AnitaExtraFarmingFortune.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/inventory/AnitaExtraFarmingFortune.kt @@ -13,12 +13,13 @@ import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators import at.hannibal2.skyhanni.utils.NumberUtil.formatNumber import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher import at.hannibal2.skyhanni.utils.jsonobjects.AnitaUpgradeCostsJso |
