diff options
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features')
3 files changed, 43 insertions, 39 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/fishing/TrophyFishMessages.kt b/src/main/java/at/hannibal2/skyhanni/features/fishing/TrophyFishMessages.kt index e48df80e8..bdefdebf6 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/fishing/TrophyFishMessages.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/fishing/TrophyFishMessages.kt @@ -1,10 +1,13 @@ package at.hannibal2.skyhanni.features.fishing import at.hannibal2.skyhanni.SkyHanniMod +import at.hannibal2.skyhanni.data.ProfileStorageData import at.hannibal2.skyhanni.events.LorenzChatEvent import at.hannibal2.skyhanni.events.ProfileApiDataLoadedEvent import at.hannibal2.skyhanni.events.ProfileJoinEvent 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.removeColor @@ -14,7 +17,7 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent class TrophyFishMessages { private var hasLoadedTrophyFish = false - private val fishAmounts = mutableMapOf<String, Int>() + private val fishes get() = ProfileStorageData.profileSpecific?.crimsonIsle?.trophyFishes 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\\.") private val config get() = SkyHanniMod.feature.fishing @@ -27,26 +30,17 @@ class TrophyFishMessages { @SubscribeEvent fun onProfileDataLoad(event: ProfileApiDataLoadedEvent) { if (hasLoadedTrophyFish) return + val trophyFishes = fishes ?: return val profileData = event.profileData - - fishAmounts.clear() - val trophyFishes = profileData["trophy_fish"].asJsonObject - for ((rawName, value) in trophyFishes.entrySet()) { - val rarity = when { - rawName.endsWith("_bronze") -> "bronze" - rawName.endsWith("_silver") -> "silver" - rawName.endsWith("_gold") -> "gold" - rawName.endsWith("_diamond") -> "diamond" - else -> continue - } + trophyFishes.clear() + for ((rawName, value) in profileData["trophy_fish"].asJsonObject.entrySet()) { + val rarity = getByName(rawName) ?: continue val text = rawName.replace("_", "") - val displayName = text.substring(0, text.length - rarity.length) + val displayName = text.substring(0, text.length - rarity.name.length) val amount = value.asInt -// LorenzDebug.log("$rarity: $displayName: $amount") - val fish = rarity + "_" + displayName - fishAmounts[fish] = amount -// LorenzDebug.log("loaded trophy: $fish = $amount") + val rarities = trophyFishes.getOrPut(displayName) { mutableMapOf() } + rarities[rarity] = amount hasLoadedTrophyFish = true } } @@ -59,13 +53,14 @@ class TrophyFishMessages { val displayName = match["displayName"]!!.value.replace("§k", "") val displayRarity = match["displayRarity"]!!.value - val name = displayName.replace("Obfuscated", "Obfuscated Fish") + val fishName = displayName.replace("Obfuscated", "Obfuscated Fish") .replace("[- ]".toRegex(), "").lowercase().removeColor() - val rarity = displayRarity.lowercase().removeColor() + val rawRarity = displayRarity.lowercase().removeColor() + val rarity = getByName(rawRarity) ?: return - val fish = "${rarity}_${name}" - val amount = fishAmounts.getOrDefault(fish, 0) + 1 - fishAmounts[fish] = amount + val trophyFishes = fishes ?: return + val rarities = trophyFishes.getOrPut(fishName) { mutableMapOf() } + val amount = rarities.addOrPut(rarity, 1) event.blockedReason = "trophy_fish" if (config.trophyDesign == 0 && amount == 1) { @@ -73,18 +68,26 @@ class TrophyFishMessages { return } - if (config.trophyFishBronzeHider && rarity == "bronze" && amount != 1) return - if (config.trophyFishSilverHider && rarity == "silver" && amount != 1) return + if (config.trophyFishBronzeHider && rarity == TrophyRarity.BRONZE && amount != 1) return + if (config.trophyFishSilverHider && rarity == TrophyRarity.SILVER && amount != 1) return + val totalText = if (config.trophyFishTotalAmount) { + val total = rarities.sumAllValues() + " §7(${total.addSeparators()}. total)" + } else "" val trophyMessage = "§6§lTROPHY FISH! " + when (config.trophyDesign) { - 0 -> "§7$amount. §r$displayRarity $displayName" - 1 -> "§bYou caught a $displayName $displayRarity§b. §7(${amount.addSeparators()})" - else -> "§bYou caught your ${amount.addSeparators()}${amount.ordinal()} $displayRarity $displayName§b." + 0 -> "§7$amount. §r$displayRarity $displayName$totalText" + 1 -> "§bYou caught a $displayName $displayRarity§b. §7(${amount.addSeparators()})$totalText" + else -> "§bYou caught your ${amount.addSeparators()}${amount.ordinal()} $displayRarity $displayName§b.$totalText" } Minecraft.getMinecraft().ingameGUI.chatGUI.printChatMessageWithOptionalDeletion( ChatComponentText(trophyMessage), - if (config.trophyFishDuplicateHider) fish.hashCode() else 0 + if (config.trophyFishDuplicateHider) (fishName + rarity).hashCode() else 0 ) } -}
\ No newline at end of file + + fun getByName(rawName: String) = TrophyRarity.values().firstOrNull { rawName.uppercase().endsWith(it.name) } + + data class TrophyFish(val rarities: MutableMap<TrophyRarity, Int> = mutableMapOf()) +} diff --git a/src/main/java/at/hannibal2/skyhanni/features/fishing/TrophyRarity.kt b/src/main/java/at/hannibal2/skyhanni/features/fishing/TrophyRarity.kt new file mode 100644 index 000000000..b87d3d60e --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/features/fishing/TrophyRarity.kt @@ -0,0 +1,5 @@ +package at.hannibal2.skyhanni.features.fishing + +enum class TrophyRarity { + BRONZE, SILVER, GOLD, DIAMOND; +}
\ No newline at end of file diff --git a/src/main/java/at/hannibal2/skyhanni/features/inventory/SackDisplay.kt b/src/main/java/at/hannibal2/skyhanni/features/inventory/SackDisplay.kt index 23d58b9eb..c5a9797d6 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/inventory/SackDisplay.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/inventory/SackDisplay.kt @@ -5,6 +5,7 @@ import at.hannibal2.skyhanni.events.GuiRenderEvent import at.hannibal2.skyhanni.events.InventoryCloseEvent import at.hannibal2.skyhanni.events.InventoryOpenEvent import at.hannibal2.skyhanni.features.bazaar.BazaarApi +import at.hannibal2.skyhanni.features.fishing.TrophyRarity import at.hannibal2.skyhanni.utils.ItemUtils.getInternalName import at.hannibal2.skyhanni.utils.ItemUtils.getLore import at.hannibal2.skyhanni.utils.ItemUtils.name @@ -29,7 +30,7 @@ class SackDisplay { var isRuneSack = false var isGemstoneSack = false var isTrophySack = false - var sackRarity = TrophyRarity.NONE + var sackRarity: TrophyRarity? = null } private val config get() = SkyHanniMod.feature.inventory.sackDisplay @@ -346,19 +347,15 @@ class SackDisplay { OBFUSCATED_2(40, 60), OBFUSCATED_3(400, 700); - fun convert(rarity: TrophyRarity, stored: String): String { + fun convert(rarity: TrophyRarity?, stored: String): String { return when (rarity) { TrophyRarity.BRONZE -> (this.bronzeValue * stored.formatNumber().toInt()).toString() TrophyRarity.SILVER -> (this.silverValue * stored.formatNumber().toInt()).toString() - TrophyRarity.NONE -> "0" + else -> "0" } } } - enum class TrophyRarity { - BRONZE, SILVER, NONE - } - private fun isEnabled() = LorenzUtils.inSkyBlock && config.enabled private fun isRuneDisplayEnabled() = config.showRunes @@ -395,13 +392,12 @@ class SackDisplay { ; } - private fun String.getTrophyRarity(): TrophyRarity { + private fun String.getTrophyRarity(): TrophyRarity? { return if (this.startsWith("Bronze")) TrophyRarity.BRONZE else if (this.startsWith("Silver")) TrophyRarity.SILVER - else - TrophyRarity.NONE + else null } } |
