diff options
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features')
4 files changed, 42 insertions, 55 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/items/EstimatedItemValue.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/items/EstimatedItemValue.kt index 6106e4c1b..c79c1f8a4 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/misc/items/EstimatedItemValue.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/misc/items/EstimatedItemValue.kt @@ -1,9 +1,9 @@ package at.hannibal2.skyhanni.features.misc.items import at.hannibal2.skyhanni.SkyHanniMod -import at.hannibal2.skyhanni.config.ConfigManager import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator import at.hannibal2.skyhanni.data.jsonobjects.repo.ItemsJson +import at.hannibal2.skyhanni.data.jsonobjects.repo.neu.NeuReforgeStoneJson import at.hannibal2.skyhanni.events.ConfigLoadEvent import at.hannibal2.skyhanni.events.GuiRenderEvent import at.hannibal2.skyhanni.events.InventoryCloseEvent @@ -28,7 +28,6 @@ import at.hannibal2.skyhanni.utils.NEUItems.getItemStackOrNull import at.hannibal2.skyhanni.utils.NumberUtil import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators import at.hannibal2.skyhanni.utils.RenderUtils.renderStringsAndItems -import com.google.gson.reflect.TypeToken import io.github.moulberry.notenoughupdates.profileviewer.GuiProfileViewer import net.minecraft.client.Minecraft import net.minecraft.init.Items @@ -43,6 +42,7 @@ object EstimatedItemValue { private val cache = mutableMapOf<ItemStack, List<List<Any>>>() private var lastToolTipTime = 0L var gemstoneUnlockCosts = HashMap<NEUInternalName, HashMap<String, List<String>>>() + var reforges = mapOf<NEUInternalName, NeuReforgeStoneJson>() var bookBundleAmount = mapOf<String, Int>() private var currentlyShowing = false @@ -50,14 +50,10 @@ object EstimatedItemValue { @SubscribeEvent fun onNeuRepoReload(event: NeuRepositoryReloadEvent) { - val data = event.getConstant("gemstonecosts") ?: run { - ErrorManager.skyHanniError("Gemstone Slot Unlock Costs failed to load from neu repo!") - } - - gemstoneUnlockCosts = ConfigManager.gson.fromJson( - data, - object : TypeToken<HashMap<NEUInternalName, HashMap<String, List<String>>>>() {}.type - ) + gemstoneUnlockCosts = + event.readConstant<HashMap<NEUInternalName, HashMap<String, List<String>>>>("gemstonecosts") + reforges = + event.readConstant<Map<NEUInternalName, NeuReforgeStoneJson>>("reforgestones") } @SubscribeEvent diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/items/EstimatedItemValueCalculator.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/items/EstimatedItemValueCalculator.kt index 14812cd74..8602eece8 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/misc/items/EstimatedItemValueCalculator.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/misc/items/EstimatedItemValueCalculator.kt @@ -47,9 +47,7 @@ import at.hannibal2.skyhanni.utils.SkyBlockItemModifierUtils.hasJalapenoBook import at.hannibal2.skyhanni.utils.SkyBlockItemModifierUtils.hasWoodSingularity import at.hannibal2.skyhanni.utils.SkyBlockItemModifierUtils.isRecombobulated import at.hannibal2.skyhanni.utils.StringUtils.allLettersFirstUppercase -import com.google.gson.JsonObject import io.github.moulberry.notenoughupdates.recipes.Ingredient -import io.github.moulberry.notenoughupdates.util.Constants import net.minecraft.item.ItemStack import java.util.Locale @@ -166,30 +164,23 @@ object EstimatedItemValueCalculator { private fun addReforgeStone(stack: ItemStack, list: MutableList<String>): Double { val rawReforgeName = stack.getReforgeName() ?: return 0.0 - for ((rawInternalName, values) in Constants.REFORGESTONES.entrySet()) { - val stoneJson = values.asJsonObject - val reforgeName = stoneJson.get("reforgeName").asString - if (rawReforgeName == reforgeName.lowercase() || rawReforgeName == rawInternalName.lowercase()) { - val internalName = rawInternalName.asInternalName() - val reforgeStonePrice = internalName.getPrice() - val reforgeStoneName = internalName.itemName - - val reforgeCosts = stoneJson.get("reforgeCosts").asJsonObject - val applyCost = getReforgeStoneApplyCost(stack, reforgeCosts, internalName) ?: return 0.0 - - list.add("§7Reforge: §9$reforgeName") - list.add(" §7Stone $reforgeStoneName §7(§6" + NumberUtil.format(reforgeStonePrice) + "§7)") - list.add(" §7Apply cost: (§6" + NumberUtil.format(applyCost) + "§7)") - return reforgeStonePrice + applyCost - } - } + val reforge = EstimatedItemValue.reforges.values.firstOrNull { + rawReforgeName == it.reforgeName.lowercase() || rawReforgeName == it.internalName.asString().lowercase() + } ?: return 0.0 + val internalName = reforge.internalName.asString().asInternalName() + val reforgeStonePrice = internalName.getPrice() + val reforgeStoneName = internalName.itemName + val applyCost = getReforgeStoneApplyCost(stack, reforge.reforgeCosts, internalName) ?: return 0.0 - return 0.0 + list.add("§7Reforge: §9${reforge.reforgeName}") + list.add(" §7Stone $reforgeStoneName §7(§6" + NumberUtil.format(reforgeStonePrice) + "§7)") + list.add(" §7Apply cost: (§6" + NumberUtil.format(applyCost) + "§7)") + return reforgeStonePrice + applyCost } private fun getReforgeStoneApplyCost( stack: ItemStack, - reforgeCosts: JsonObject, + reforgeCosts: Map<LorenzRarity, Long>, reforgeStone: NEUInternalName, ): Int? { var itemRarity = stack.getItemRarityOrNull() ?: return null @@ -213,24 +204,19 @@ object EstimatedItemValueCalculator { itemRarity = oneBelow } } - val rarityName = itemRarity.name - if (!reforgeCosts.has(rarityName)) { - val reforgesFound = reforgeCosts.entrySet().map { it.key } + + return reforgeCosts[itemRarity]?.toInt() ?: run { ErrorManager.logErrorStateWithData( "Could not calculate reforge cost for item ${stack.name}", "Item not in NEU repo reforge cost", - "rarityName" to rarityName, "reforgeCosts" to reforgeCosts, "itemRarity" to itemRarity, - "reforgesFound" to reforgesFound, "internal name" to stack.getInternalName(), "item name" to stack.name, "reforgeStone" to reforgeStone, ) - return null + null } - - return reforgeCosts[rarityName].asInt } private fun addRecomb(stack: ItemStack, list: MutableList<String>): Double { diff --git a/src/main/java/at/hannibal2/skyhanni/features/skillprogress/SkillUtil.kt b/src/main/java/at/hannibal2/skyhanni/features/skillprogress/SkillUtil.kt index 127f9459d..b4af74d13 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/skillprogress/SkillUtil.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/skillprogress/SkillUtil.kt @@ -7,9 +7,6 @@ import at.hannibal2.skyhanni.api.SkillAPI.excludedSkills import at.hannibal2.skyhanni.api.SkillAPI.levelingMap import at.hannibal2.skyhanni.utils.Quad import com.google.common.base.Splitter -import com.google.gson.JsonArray -import io.github.moulberry.notenoughupdates.util.Constants -import io.github.moulberry.notenoughupdates.util.Utils object SkillUtil { @@ -125,16 +122,8 @@ object SkillUtil { return level } - fun calculateLevelXp(levelingArray: JsonArray, level: Int): Double { - var totalXp = 0.0 - for (i in 0 until level + 1) { - val xp = levelingArray[i].asDouble - totalXp += xp - } - return totalXp + fun calculateLevelXp(level: Int): Double { + return SkillAPI.levelArray.asSequence().take(level + 1).sumOf { it.toDouble() } } - fun levelArray(): JsonArray = - Utils.getElement(Constants.LEVELING, "leveling_xp").asJsonArray - } diff --git a/src/main/java/at/hannibal2/skyhanni/features/slayer/SlayerRngMeterDisplay.kt b/src/main/java/at/hannibal2/skyhanni/features/slayer/SlayerRngMeterDisplay.kt index 386fbf98a..ccbe7282e 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/slayer/SlayerRngMeterDisplay.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/slayer/SlayerRngMeterDisplay.kt @@ -4,16 +4,20 @@ import at.hannibal2.skyhanni.SkyHanniMod import at.hannibal2.skyhanni.config.storage.ProfileSpecificStorage import at.hannibal2.skyhanni.data.ProfileStorageData import at.hannibal2.skyhanni.data.SlayerAPI +import at.hannibal2.skyhanni.data.jsonobjects.repo.neu.NeuRNGScore import at.hannibal2.skyhanni.events.GuiRenderEvent import at.hannibal2.skyhanni.events.InventoryFullyOpenedEvent import at.hannibal2.skyhanni.events.LorenzChatEvent +import at.hannibal2.skyhanni.events.NeuRepositoryReloadEvent import at.hannibal2.skyhanni.events.SecondPassedEvent import at.hannibal2.skyhanni.events.SlayerChangeEvent +import at.hannibal2.skyhanni.test.command.ErrorManager import at.hannibal2.skyhanni.utils.ChatUtils import at.hannibal2.skyhanni.utils.ItemUtils.getInternalName import at.hannibal2.skyhanni.utils.ItemUtils.getLore import at.hannibal2.skyhanni.utils.ItemUtils.itemName import at.hannibal2.skyhanni.utils.LorenzUtils +import at.hannibal2.skyhanni.utils.NEUInternalName import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators import at.hannibal2.skyhanni.utils.NumberUtil.formatLong import at.hannibal2.skyhanni.utils.RenderUtils.renderString @@ -21,7 +25,6 @@ import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher import at.hannibal2.skyhanni.utils.StringUtils.removeColor import at.hannibal2.skyhanni.utils.StringUtils.removeWordsAtEnd import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern -import io.github.moulberry.notenoughupdates.util.Constants import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import kotlin.math.ceil import kotlin.time.Duration.Companion.seconds @@ -47,6 +50,8 @@ class SlayerRngMeterDisplay { private var display = "" private var lastItemDroppedTime = 0L + var rngScore = mapOf<String, Map<NEUInternalName, Long>>() + @SubscribeEvent fun onSecondPassed(event: SecondPassedEvent) { if (!isEnabled()) return @@ -137,12 +142,23 @@ class SlayerRngMeterDisplay { storage.goalNeeded = -1 } else { storage.itemGoal = selectedItem.itemName - val jsonObject = Constants.RNGSCORE["slayer"].asJsonObject.get(getCurrentSlayer()).asJsonObject - storage.goalNeeded = jsonObject.get(selectedItem.getInternalName().asString()).asLong + storage.goalNeeded = rngScore[getCurrentSlayer()]?.get(selectedItem.getInternalName()) + ?: ErrorManager.skyHanniError( + "RNG Meter goal setting failed", + "selectedItem" to selectedItem, + "selectedItemInternalName" to selectedItem.getInternalName(), + "currentSlayer" to getCurrentSlayer(), + "repo" to rngScore + ) } update() } + @SubscribeEvent + fun onNeuRepoReload(event: NeuRepositoryReloadEvent) { + rngScore = event.readConstant<NeuRNGScore>("rngscore").slayer + } + private fun update() { display = drawDisplay() } |
