summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/features/nether
diff options
context:
space:
mode:
authorCalMWolfs <94038482+CalMWolfs@users.noreply.github.com>2023-10-21 22:56:53 +1100
committerGitHub <noreply@github.com>2023-10-21 13:56:53 +0200
commit526365859a27d54b7ea5c07c08b301650c15ea0e (patch)
treeddf772f564d85caf3dbe73c66c032affdf69281f /src/main/java/at/hannibal2/skyhanni/features/nether
parenta98927303854058ad2d7a0d8bb88265c54139614 (diff)
downloadskyhanni-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/nether')
-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
5 files changed, 63 insertions, 64 deletions
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
}