blob: e64e92b67f5fa9c84271a43b50f783541cdd8b21 (
plain)
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.inventory
import at.hannibal2.skyhanni.SkyHanniMod
import at.hannibal2.skyhanni.events.GuiContainerEvent
import at.hannibal2.skyhanni.events.InventoryCloseEvent
import at.hannibal2.skyhanni.events.InventoryFullyOpenedEvent
import at.hannibal2.skyhanni.events.LorenzToolTipEvent
import at.hannibal2.skyhanni.features.inventory.bazaar.BazaarApi
import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule
import at.hannibal2.skyhanni.utils.CollectionUtils.nextAfter
import at.hannibal2.skyhanni.utils.ItemUtils.getLore
import at.hannibal2.skyhanni.utils.LorenzColor
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.NEUInternalName
import at.hannibal2.skyhanni.utils.NEUItems.getPrice
import at.hannibal2.skyhanni.utils.NumberUtil.shortFormat
import at.hannibal2.skyhanni.utils.RenderUtils.highlight
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
@SkyHanniModule
object PowerStoneGuideFeatures {
private var missing = mutableMapOf<Int, NEUInternalName>()
private var inInventory = false
@SubscribeEvent
fun onInventoryOpen(event: InventoryFullyOpenedEvent) {
if (!isEnabled()) return
if (event.inventoryName != "Power Stones Guide") return
inInventory = true
for ((slot, item) in event.inventoryItems) {
val lore = item.getLore()
if (lore.contains("§7Learned: §cNot Yet ✖")) {
val rawName = lore.nextAfter("§7Power stone:") ?: continue
val name = NEUInternalName.fromItemName(rawName)
missing[slot] = name
}
}
}
@SubscribeEvent
fun onInventoryClose(event: InventoryCloseEvent) {
inInventory = false
}
@SubscribeEvent
fun onBackgroundDrawn(event: GuiContainerEvent.BackgroundDrawnEvent) {
if (!isEnabled()) return
if (!inInventory) return
event.gui.inventorySlots.inventorySlots
.filter { missing.containsKey(it.slotNumber) }
.forEach { it highlight LorenzColor.RED }
}
@SubscribeEvent
fun onSlotClick(event: GuiContainerEvent.SlotClickEvent) {
if (!isEnabled()) return
if (!inInventory) return
val internalName = missing[event.slotId] ?: return
BazaarApi.searchForBazaarItem(internalName, 9)
}
@SubscribeEvent
fun onTooltip(event: LorenzToolTipEvent) {
if (!isEnabled()) return
if (!inInventory) return
val internalName = missing[event.slot.slotNumber] ?: return
val totalPrice = internalName.getPrice() * 9
event.toolTip.add(5, "9x from Bazaar: §6${totalPrice.shortFormat()}")
}
fun isEnabled() = LorenzUtils.inSkyBlock && SkyHanniMod.feature.inventory.powerStoneGuide
}
|