1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
package at.hannibal2.skyhanni.features.fishing
import at.hannibal2.skyhanni.SkyHanniMod
import at.hannibal2.skyhanni.data.jsonobjects.repo.SeaCreatureJson
import at.hannibal2.skyhanni.events.LorenzChatEvent
import at.hannibal2.skyhanni.events.RepositoryReloadEvent
import at.hannibal2.skyhanni.events.SeaCreatureFishEvent
import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule
import at.hannibal2.skyhanni.utils.LorenzUtils
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
@SkyHanniModule
object SeaCreatureManager {
private var doubleHook = false
private val seaCreatureMap = mutableMapOf<String, SeaCreature>()
var allFishingMobs = mapOf<String, SeaCreature>()
var allVariants = mapOf<String, List<String>>()
private val doubleHookMessages = setOf(
"§eIt's a §r§aDouble Hook§r§e! Woot woot!",
"§eIt's a §r§aDouble Hook§r§e!"
)
@SubscribeEvent
fun onChat(event: LorenzChatEvent) {
if (!LorenzUtils.inSkyBlock) return
if (doubleHookMessages.contains(event.message)) {
if (SkyHanniMod.feature.fishing.compactDoubleHook) {
event.blockedReason = "double_hook"
}
doubleHook = true
} else {
val seaCreature = getSeaCreatureFromMessage(event.message)
if (seaCreature != null) {
SeaCreatureFishEvent(seaCreature, event, doubleHook).postAndCatch()
}
doubleHook = false
}
}
@SubscribeEvent
fun onRepoReload(event: RepositoryReloadEvent) {
seaCreatureMap.clear()
allFishingMobs = emptyMap()
var counter = 0
val data = event.getConstant<Map<String, SeaCreatureJson>>("SeaCreatures", SeaCreatureJson.TYPE)
val allFishingMobs = mutableMapOf<String, SeaCreature>()
val variants = mutableMapOf<String, List<String>>()
for ((variantName, variant) in data) {
val chatColor = variant.chatColor
val variantFishes = mutableListOf<String>()
variants[variantName] = variantFishes
for ((name, seaCreature) in variant.seaCreatures) {
val chatMessage = seaCreature.chatMessage
val fishingExperience = seaCreature.fishingExperience
val rarity = seaCreature.rarity
val rare = seaCreature.rare
val creature = SeaCreature(name, fishingExperience, chatColor, rare, rarity)
seaCreatureMap[chatMessage] = creature
allFishingMobs[name] = creature
variantFishes.add(name)
counter++
}
}
SeaCreatureManager.allFishingMobs = allFishingMobs
allVariants = variants
}
private fun getSeaCreatureFromMessage(message: String): SeaCreature? {
return seaCreatureMap.getOrDefault(message, null)
}
}
|