summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/features
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/fishing/TrophyFishMessages.kt61
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/fishing/TrophyRarity.kt5
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/inventory/SackDisplay.kt16
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
}
}