aboutsummaryrefslogtreecommitdiff
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/chat/playerchat/PlayerChatFilter.kt11
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/commands/tabcomplete/GetFromSacksTabComplete.kt4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/commands/tabcomplete/PlayerTabComplete.kt13
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/commands/tabcomplete/WarpTabComplete.kt9
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/fishing/trophy/TrophyFishFillet.kt5
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/fishing/trophy/TrophyFishInfo.kt54
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/fishing/trophy/TrophyFishManager.kt57
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/fishing/trophy/TrophyFishMessages.kt15
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/GardenAPI.kt4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/composter/ComposterOverlay.kt60
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/farming/FarmingArmorDrops.kt3
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/farming/GardenCropSpeed.kt35
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/inventory/AnitaExtraFarmingFortune.kt11
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorColorNames.kt36
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorFeatures.kt13
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/inventory/HideNotClickableItems.kt31
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/inventory/ItemStars.kt16
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/misc/QuickModMenuSwitch.kt4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/CrimsonIsleReputationHelper.kt34
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailykuudra/DailyKuudraBossHelper.kt20
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/DailyQuestHelper.kt2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/QuestLoader.kt49
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/miniboss/DailyMiniBossHelper.kt22
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/rift/area/stillgorechateau/RiftBloodEffigies.kt3
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.AnitaUpgradeCostsJson
+import at.hannibal2.skyhanni.utils.jsonobjects.AnitaUpgradeCostsJson.Price
import net.minecraftforge.event.entity.player.ItemTooltipEvent
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
class AnitaExtraFarmingFortune {
private val config get() = SkyHanniMod.feature.garden.anitaShop
- private var levelPrice = emptyMap<Int, AnitaUpgradeCostsJson.Price>()
+ private var levelPrice = mapOf<Int, Price>()
@SubscribeEvent
fun onItemTooltipLow(event: ItemTooltipEvent) {
@@ -71,12 +72,8 @@ class AnitaExtraFarmingFortune {
@SubscribeEvent
fun onRepoReload(event: RepositoryReloadEvent) {
- val upgradeCosts = event.getConstant<AnitaUpgradeCostsJson>("AnitaUpgradeCosts")
- val map = mutableMapOf<Int, AnitaUpgradeCostsJson.Price>()
- for ((rawNumber, price) in upgradeCosts.level_price) {
- map[rawNumber.toInt()] = price
- }
- levelPrice = map
+ val data = event.getConstant<AnitaUpgradeCostsJson>("AnitaUpgradeCosts")
+ levelPrice = data.level_price
}
@SubscribeEvent
diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorColorNames.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorColorNames.kt
index 84e8f17d3..16efb90b1 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorColorNames.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorColorNames.kt
@@ -3,36 +3,30 @@ package at.hannibal2.skyhanni.features.garden.visitor
import at.hannibal2.skyhanni.SkyHanniMod
import at.hannibal2.skyhanni.events.RepositoryReloadEvent
import at.hannibal2.skyhanni.utils.StringUtils.removeColor
+import at.hannibal2.skyhanni.utils.jsonobjects.GardenJson
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
-class GardenVisitorColorNames {
+object GardenVisitorColorNames {
+ private var visitorColours = mutableMapOf<String, String>()
+ var visitorItems = mutableMapOf<String, List<String>>()
@SubscribeEvent
fun onRepoReload(event: RepositoryReloadEvent) {
- val mapColor = mutableMapOf<String, String>()
- val mapItems = mutableMapOf<String, List<String>>()
- val garden = event.getConstant("Garden")
- for ((name, element) in garden["visitors"].asJsonObject.entrySet()) {
- val jsonObject = element.asJsonObject
- val rarity = jsonObject["rarity"].asString
- mapColor[name] = getColor(rarity)
- mapItems[name] = jsonObject["need_items"].asJsonArray.map { it.asString }
+ val data = event.getConstant<GardenJson>("Garden")
+ visitorColours.clear()
+ visitorItems.clear()
+ for ((visitor, visitorData) in data.visitors) {
+ visitorColours[visitor] = getColor(visitorData.rarity)
+ visitorItems[visitor] = visitorData.need_items
}
- visitorColor = mapColor
- visitorItems = mapItems
}
- companion object {
- private var visitorColor = mapOf<String, String>() // name -> color code
- var visitorItems = mapOf<String, List<String>>()
+ fun getColoredName(name: String): String {
+ if (!SkyHanniMod.feature.garden.visitors.coloredName) return name
- fun getColoredName(name: String): String {
- if (!SkyHanniMod.feature.garden.visitors.coloredName) return name
-
- val cleanName = name.removeColor()
- val color = visitorColor[cleanName] ?: return name
- return color + cleanName
- }
+ val cleanName = name.removeColor()
+ val color = visitorColours[cleanName] ?: return name
+ return color + cleanName
}
private fun getColor(rarity: String) = when (rarity) {
diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorFeatures.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorFeatures.kt
index 37a1ff142..f77a27107 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorFeatures.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorFeatures.kt
@@ -7,7 +7,6 @@ import at.hannibal2.skyhanni.events.LorenzChatEvent
import at.hannibal2.skyhanni.events.LorenzTickEvent
import at.hannibal2.skyhanni.events.OwnInventoryItemUpdateEvent
import at.hannibal2.skyhanni.events.PreProfileSwitchEvent
-import at.hannibal2.skyhanni.events.TabListLineRenderEvent
import at.hannibal2.skyhanni.events.garden.visitor.VisitorAcceptEvent
import at.hannibal2.skyhanni.events.garden.visitor.VisitorAcceptedEvent
import at.hannibal2.skyhanni.events.garden.visitor.VisitorArrivalEvent
@@ -404,18 +403,6 @@ class GardenVisitorFeatures {
}
@SubscribeEvent
- fun onTabListText(event: TabListLineRenderEvent) {
- if (!GardenAPI.inGarden()) return
- if (!config.coloredName) return
- val text = event.text
- val replace = VisitorAPI.fromHypixelName(text)
- val visitor = VisitorAPI.getVisitor(replace)
- visitor?.let {
- event.text = " " + GardenVisitorColorNames.getColoredName(it.visitorName)
- }
- }
-
- @SubscribeEvent
fun onChatMessage(event: LorenzChatEvent) {
if (config.hypixelArrivedMessage && newVisitorArrivedMessage.matcher(event.message).matches()) {
event.blockedReason = "new_visitor_arrived"
diff --git a/src/main/java/at/hannibal2/skyhanni/features/inventory/HideNotClickableItems.kt b/src/main/java/at/hannibal2/skyhanni/features/inventory/HideNotClickableItems.kt
index 0e8a9fe0b..ddb4645d6 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/inventory/HideNotClickableItems.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/inventory/HideNotClickableItems.kt
@@ -27,7 +27,9 @@ import at.hannibal2.skyhanni.utils.MultiFilter
import at.hannibal2.skyhanni.utils.SkyBlockItemModifierUtils.isRiftExportable
import at.hannibal2.skyhanni.utils.SkyBlockItemModifierUtils.isRiftTransferable
import at.hannibal2.skyhanni.utils.StringUtils.removeColor
-import com.google.gson.JsonObject
+import at.hannibal2.skyhanni.utils.jsonobjects.HideNotClickableItemsJson
+import at.hannibal2.skyhanni.utils.jsonobjects.HideNotClickableItemsJson.SalvageFilter
+import at.hannibal2.skyhanni.utils.jsonobjects.MultiFilterJson
import net.minecraft.client.Minecraft
import net.minecraft.client.gui.inventory.GuiChest
import net.minecraft.inventory.ContainerChest
@@ -54,21 +56,22 @@ class HideNotClickableItems {
@SubscribeEvent
fun onRepoReload(event: RepositoryReloadEvent) {
- tradeNpcFilter.load(event.getConstant("TradeNpcs"))
-
- val hideNotClickableItems = event.getConstant("HideNotClickableItems") ?: return
- hideNpcSellFilter.load(hideNotClickableItems["hide_npc_sell"].asJsonObject)
- hideInStorageFilter.load(hideNotClickableItems["hide_in_storage"].asJsonObject)
- updateSalvageList(hideNotClickableItems)
- hidePlayerTradeFilter.load(hideNotClickableItems["hide_player_trade"].asJsonObject)
- notAuctionableFilter.load(hideNotClickableItems["not_auctionable"].asJsonObject)
+ val data = event.getConstant<MultiFilterJson>("TradeNpcs")
+ tradeNpcFilter.load(data)
+
+ val hideNotClickable = event.getConstant<HideNotClickableItemsJson>("HideNotClickableItems")
+ hideNpcSellFilter.load(hideNotClickable.hide_npc_sell)
+ hideInStorageFilter.load(hideNotClickable.hide_in_storage)
+ hidePlayerTradeFilter.load(hideNotClickable.hide_player_trade)
+ notAuctionableFilter.load(hideNotClickable.not_auctionable)
+ updateSalvageList(hideNotClickable.salvage)
}
- private fun updateSalvageList(hideNotClickableItems: JsonObject) {
+ private fun updateSalvageList(data: SalvageFilter) {
itemsToSalvage.clear()
- val salvage = hideNotClickableItems["salvage"].asJsonObject
- itemsToSalvage.addAll(salvage.asJsonObject["items"].asJsonArray.map { it.asString })
- for (armor in salvage.asJsonObject["armor"].asJsonArray.map { it.asString }) {
+
+ itemsToSalvage.addAll(data.items)
+ for (armor in data.armor) {
itemsToSalvage.add("$armor Helmet")
itemsToSalvage.add("$armor Chestplate")
itemsToSalvage.add("$armor Leggings")
@@ -128,7 +131,7 @@ class HideNotClickableItems {
} else {
event.toolTip.add("§c$hideReason")
if (config.itemsBypass) {
- event.toolTip.add(" §7(Disable with holding the control key)")
+ event.toolTip.add(" §7(Bypass by holding the control key)")
}
}
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/inventory/ItemStars.kt b/src/main/java/at/hannibal2/skyhanni/features/inventory/ItemStars.kt
index 1e43944f3..f8dd111b2 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/inventory/ItemStars.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/inventory/ItemStars.kt
@@ -5,6 +5,7 @@ import at.hannibal2.skyhanni.events.RenderItemTipEvent
import at.hannibal2.skyhanni.events.RepositoryReloadEvent
import at.hannibal2.skyhanni.utils.ItemUtils.name
import at.hannibal2.skyhanni.utils.LorenzUtils
+import at.hannibal2.skyhanni.utils.jsonobjects.ItemsJson
import net.minecraftforge.event.entity.player.ItemTooltipEvent
import net.minecraftforge.fml.common.eventhandler.EventPriority
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
@@ -39,17 +40,12 @@ class ItemStars {
@SubscribeEvent
fun onRepoReload(event: RepositoryReloadEvent) {
- val items = event.getConstant("Items")
- if (items.has("crimson_armors")) {
- armorNames.clear()
- armorNames.addAll(items.getAsJsonArray("crimson_armors").map { it.asString })
- }
-
+ val data = event.getConstant<ItemsJson>("Items")
+ armorNames.clear()
tiers.clear()
- if (items.has("crimson_tiers")) {
- items.getAsJsonObject("crimson_tiers").entrySet().forEach {
- tiers[it.key] = it.value.asInt
- }
+ armorNames.addAll(data.crimson_armors)
+ for (tier in data.crimson_tiers) {
+ tiers[tier.key] = tier.value
}
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/QuickModMenuSwitch.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/QuickModMenuSwitch.kt
index 69991dc76..2890e8593 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/misc/QuickModMenuSwitch.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/misc/QuickModMenuSwitch.kt
@@ -8,7 +8,7 @@ import at.hannibal2.skyhanni.test.command.ErrorManager
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.LorenzUtils.makeAccessible
import at.hannibal2.skyhanni.utils.RenderUtils.renderStringsAndItems
-import at.hannibal2.skyhanni.utils.jsonobjects.ModsJson
+import at.hannibal2.skyhanni.utils.jsonobjects.ModGuiSwitcherJson
import at.hannibal2.skyhanni.utils.renderables.Renderable
import net.minecraft.client.Minecraft
import net.minecraft.client.renderer.GlStateManager
@@ -28,7 +28,7 @@ object QuickModMenuSwitch {
@SubscribeEvent
fun onRepoReload(event: RepositoryReloadEvent) {
- val modsJar = event.getConstant<ModsJson>("ModGuiSwitcher")
+ val modsJar = event.getConstant<ModGuiSwitcherJson>("ModGuiSwitcher")
mods = buildList {
out@ for ((name, mod) in modsJar.mods) {
for (path in mod.guiPath) {
diff --git a/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/CrimsonIsleReputationHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/CrimsonIsleReputationHelper.kt
index 9202be686..7e9690a2e 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/CrimsonIsleReputationHelper.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/CrimsonIsleReputationHelper.kt
@@ -10,6 +10,7 @@ import at.hannibal2.skyhanni.events.LorenzTickEvent
import at.hannibal2.skyhanni.events.RepositoryReloadEvent
import at.hannibal2.skyhanni.features.nether.reputationhelper.dailykuudra.DailyKuudraBossHelper
import at.hannibal2.skyhanni.features.nether.reputationhelper.dailyquest.DailyQuestHelper
+import at.hannibal2.skyhanni.features.nether.reputationhelper.dailyquest.QuestLoader
import at.hannibal2.skyhanni.features.nether.reputationhelper.miniboss.DailyMiniBossHelper
import at.hannibal2.skyhanni.utils.KeyboardManager.isKeyHeld
import at.hannibal2.skyhanni.utils.LorenzUtils
@@ -17,7 +18,7 @@ import at.hannibal2.skyhanni.utils.LorenzUtils.addAsSingletonList
import at.hannibal2.skyhanni.utils.LorenzVec
import at.hannibal2.skyhanni.utils.RenderUtils.renderStringsAndItems
import at.hannibal2.skyhanni.utils.TabListData
-import com.google.gson.JsonObject
+import at.hannibal2.skyhanni.utils.jsonobjects.CrimsonIsleReputationJson
import net.minecraftforge.fml.common.eventhandler.EventPriority
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
@@ -28,7 +29,6 @@ class CrimsonIsleReputationHelper(skyHanniMod: SkyHanniMod) {
val miniBossHelper = DailyMiniBossHelper(this)
val kuudraBossHelper = DailyKuudraBossHelper(this)
- var repoData: JsonObject? = null
var factionType = FactionType.NONE
private var display = emptyList<List<Any>>()
@@ -42,21 +42,24 @@ class CrimsonIsleReputationHelper(skyHanniMod: SkyHanniMod) {
@SubscribeEvent
fun onRepoReload(event: RepositoryReloadEvent) {
- repoData = event.getConstant("CrimsonIsleReputation")
+ val data = event.getConstant<CrimsonIsleReputationJson>("CrimsonIsleReputation")
+ miniBossHelper.onRepoReload(data.MINIBOSS)
+ kuudraBossHelper.onRepoReload(data.KUUDRA)
+
+ QuestLoader.quests.clear()
+ QuestLoader.loadQuests(data.FISHING, "FISHING")
+ QuestLoader.loadQuests(data.RESCUE, "RESCUE")
+ QuestLoader.loadQuests(data.FETCH, "FETCH")
+ QuestLoader.loadQuests(data.DOJO, "DOJO")
- tryLoadConfig()
update()
}
@SubscribeEvent
fun onConfigLoad(event: ConfigLoadEvent) {
- tryLoadConfig()
- }
-
- private fun tryLoadConfig() {
ProfileStorageData.profileSpecific?.crimsonIsle?.let {
- miniBossHelper.load(it)
- kuudraBossHelper.load(it)
+ miniBossHelper.loadData(it)
+ kuudraBossHelper.loadData(it)
questHelper.load(it)
}
}
@@ -150,14 +153,9 @@ class CrimsonIsleReputationHelper(skyHanniMod: SkyHanniMod) {
update()
}
- fun readLocationData(data: JsonObject): LorenzVec? {
- val locationData = data["location"]?.asJsonArray ?: return null
- if (locationData.size() == 0) return null
-
- val x = locationData[0].asDouble - 1
- val y = locationData[1].asDouble
- val z = locationData[2].asDouble - 1
- return LorenzVec(x, y, z)
+ fun readLocationData(locations: List<Double>): LorenzVec? {
+ if (locations.isEmpty()) return null
+ return LorenzVec(locations[0] - 1, locations[1], locations[2] - 1)
}
fun showLocations() = when (config.showLocation) {
diff --git a/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailykuudra/DailyKuudraBossHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailykuudra/DailyKuudraBossHelper.kt
index 34ba68f38..39e888ade 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailykuudra/DailyKuudraBossHelper.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailykuudra/DailyKuudraBossHelper.kt
@@ -13,6 +13,7 @@ import at.hannibal2.skyhanni.utils.LorenzUtils.addAsSingletonList
import at.hannibal2.skyhanni.utils.LorenzVec
import at.hannibal2.skyhanni.utils.NEUItems
import at.hannibal2.skyhanni.utils.RenderUtils.drawDynamicText
+import at.hannibal2.skyhanni.utils.jsonobjects.CrimsonIsleReputationJson.ReputationQuest
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
class DailyKuudraBossHelper(private val reputationHelper: CrimsonIsleReputationHelper) {
@@ -98,26 +99,23 @@ class DailyKuudraBossHelper(private val reputationHelper: CrimsonIsleReputationH
.forEach { storage.kuudraTiersDone.add(it.name) }
}
- fun load(storage: Storage.ProfileSpecific.CrimsonIsleStorage) {
+ fun onRepoReload(data: Map<String, ReputationQuest>) {
kuudraTiers.clear()
-
- //Repo
- val repoData = reputationHelper.repoData ?: return
- val jsonElement = repoData["KUUDRA"]
var tier = 1
- for ((displayName, extraData) in jsonElement.asJsonObject.entrySet()) {
- val data = extraData.asJsonObject
- val displayItem = data["item"]?.asString
- val location = reputationHelper.readLocationData(data)
- kuudraTiers.add(KuudraTier(displayName, displayItem, location, tier))
+ for ((displayName, kuudraTier) in data) {
+ val displayItem = kuudraTier.item
+ val location = reputationHelper.readLocationData(kuudraTier.location)
if (location != null) {
kuudraLocation = location
}
+ kuudraTiers.add(KuudraTier(displayName, displayItem, location, tier))
tier++
}
+ }
- //Config
+ fun loadData(storage: Storage.ProfileSpecific.CrimsonIsleStorage) {
+ if (kuudraTiers.isEmpty()) return
for (name in storage.kuudraTiersDone) {
getByDisplayName(name)!!.doneToday = true
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/DailyQuestHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/DailyQuestHelper.kt
index 846cc12e1..37b26dce3 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/DailyQuestHelper.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/DailyQuestHelper.kt
@@ -312,9 +312,7 @@ class DailyQuestHelper(val reputationHelper: CrimsonIsleReputationHelper) {
fun load(storage: Storage.ProfileSpecific.CrimsonIsleStorage) {
reset()
-
questLoader.loadConfig(storage)
-
}
fun saveConfig(storage: Storage.ProfileSpecific.CrimsonIsleStorage) {
diff --git a/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/QuestLoader.kt b/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/QuestLoader.kt
index b7c4c2cbf..a35510196 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/QuestLoader.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/QuestLoader.kt
@@ -15,9 +15,19 @@ import at.hannibal2.skyhanni.features.nether.reputationhelper.dailyquest.quest.U
import at.hannibal2.skyhanni.utils.ItemUtils.getLore
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.TabListData
+import at.hannibal2.skyhanni.utils.jsonobjects.CrimsonIsleReputationJson.ReputationQuest
class QuestLoader(private val dailyQuestHelper: DailyQuestHelper) {
+ companion object {
+ val quests = mutableMapOf<String, Pair<String,ReputationQuest>>()
+ fun loadQuests(data: Map<String, ReputationQuest>, questType: String) {
+ for ((questName, questInfo) in data) {
+ quests[questName] = Pair(questType, questInfo)
+ }
+ }
+ }
+
fun loadFromTabList() {
var i = -1
for (line in TabListData.getTabList()) {
@@ -83,29 +93,26 @@ class QuestLoader(private val dailyQuestHelper: DailyQuestHelper) {
return KuudraQuest(kuudraTier, state)
}
}
+ var questName = name
+ var dojoGoal = ""
- val repoData = dailyQuestHelper.reputationHelper.repoData ?: return UnknownQuest(name)
- for (entry in repoData.entrySet()) {
- val categoryName = entry.key
- val category = entry.value.asJsonObject
- for ((entryName, extraData) in category.entrySet()) {
- val data = extraData.asJsonObject
- val displayItem = data["item"]?.asString
- val location = dailyQuestHelper.reputationHelper.readLocationData(data)
- if (name.startsWith("$entryName Rank ")) {
- val split = name.split(" Rank ")
- val dojoName = split[0]
- val dojoRankGoal = split[1]
- return DojoQuest(dojoName, location, displayItem, dojoRankGoal, state)
- }
+ if (name.contains(" Rank ")) {
+ val split = name.split(" Rank ")
+ questName = split[0]
+ dojoGoal = split[1]
+ }
- if (name == entryName) {
- when (categoryName) {
- "FISHING" -> return TrophyFishQuest(name, location, displayItem, state, needAmount)
- "RESCUE" -> return RescueMissionQuest(displayItem, location, state)
- "FETCH" -> return FetchQuest(name, location, displayItem, state, needAmount)
- }
- }
+ if (questName in quests) {
+ val questInfo = quests[questName] ?: return UnknownQuest(name)
+ val locationInfo = questInfo.second.location
+ val location = dailyQuestHelper.reputationHelper.readLocationData(locationInfo)
+ val displayItem = questInfo.second.item
+
+ when (questInfo.first) {
+ "FISHING" -> return TrophyFishQuest(name, location, displayItem, state, needAmount)
+ "RESCUE" -> return RescueMissionQuest(displayItem, location, state)
+ "FETCH" -> return FetchQuest(name, location, displayItem, state, needAmount)
+ "DOJO" -> return DojoQuest(questName, location, displayItem, dojoGoal, state)
}
}
LorenzUtils.chat("§c[SkyHanni] Unknown Crimson Isle quest: '$name'")
diff --git a/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/miniboss/DailyMiniBossHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/miniboss/DailyMiniBossHelper.kt
index 1e1bf98e7..10eae5816 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/miniboss/DailyMiniBossHelper.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/miniboss/DailyMiniBossHelper.kt
@@ -16,6 +16,7 @@ import at.hannibal2.skyhanni.utils.LorenzUtils.addAsSingletonList
import at.hannibal2.skyhanni.utils.NEUItems
import at.hannibal2.skyhanni.utils.RenderUtils.drawDynamicText
import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher
+import at.hannibal2.skyhanni.utils.jsonobjects.CrimsonIsleReputationJson.ReputationQuest
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
class DailyMiniBossHelper(private val reputationHelper: CrimsonIsleReputationHelper) {
@@ -104,21 +105,18 @@ class DailyMiniBossHelper(private val reputationHelper: CrimsonIsleReputationHel
.forEach { storage.miniBossesDoneToday.add(it.displayName) }
}
- fun load(storage: Storage.ProfileSpecific.CrimsonIsleStorage) {
+ fun onRepoReload(data: Map<String, ReputationQuest>) {
miniBosses.clear()
-
- //Repo
- val repoData = reputationHelper.repoData ?: return
- val jsonElement = repoData["MINIBOSS"]
- for ((displayName, extraData) in jsonElement.asJsonObject.entrySet()) {
- val data = extraData.asJsonObject
- val displayItem = data["item"]?.asString
- val patterns = " *§r§6§l${displayName.uppercase()} DOWN!".toPattern()
- val location = reputationHelper.readLocationData(data)
- miniBosses.add(CrimsonMiniBoss(displayName, displayItem, location, patterns))
+ for ((displayName, quest) in data) {
+ val displayItem = quest.item
+ val pattern = " *§r§6§l${displayName.uppercase()} DOWN!".toPattern()
+ val location = reputationHelper.readLocationData(quest.location)
+ miniBosses.add(CrimsonMiniBoss(displayName, displayItem, location, pattern))
}
+ }
- //Config
+ fun loadData(storage: Storage.ProfileSpecific.CrimsonIsleStorage) {
+ if (miniBosses.isEmpty()) return
for (name in storage.miniBossesDoneToday) {
getByDisplayName(name)!!.doneToday = true
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/area/stillgorechateau/RiftBloodEffigies.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/area/stillgorechateau/RiftBloodEffigies.kt
index b2691210e..90e6c32ba 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/area/stillgorechateau/RiftBloodEffigies.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/area/stillgorechateau/RiftBloodEffigies.kt
@@ -1,5 +1,6 @@
package at.hannibal2.skyhanni.features.rift.area.stillgorechateau
+import at.hannibal2.skyhanni.SkyHanniMod
import at.hannibal2.skyhanni.events.LorenzRenderWorldEvent
import at.hannibal2.skyhanni.events.LorenzTickEvent
import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent
@@ -94,7 +95,7 @@ class RiftBloodEffigies {
for (entity in EntityUtils.getEntitiesNearby<EntityArmorStand>(LocationUtils.playerLocation(), 6.0)) {
effigiesTimerPattern.matchMatcher(entity.name) {
- val nearest = locations.sortedBy { it.distanceSq(entity.getLorenzVec()) }.firstOrNull() ?: return
+ val nearest = locations.minByOrNull { it.distanceSq(entity.getLorenzVec()) } ?: return
val index = locations.indexOf(nearest)
val string = group("time")