aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/data
diff options
context:
space:
mode:
authorhannibal2 <24389977+hannibal00212@users.noreply.github.com>2023-04-02 17:27:12 +0200
committerhannibal2 <24389977+hannibal00212@users.noreply.github.com>2023-04-02 17:27:12 +0200
commitae4af78e29efb97d8898d6cf8d1e817357412bb0 (patch)
tree47258303140f8f3d85fa43326a506feb584ef534 /src/main/java/at/hannibal2/skyhanni/data
parentab8176beeadad04c4bc34ab57cdf66a459a076c3 (diff)
downloadSkyHanni-ae4af78e29efb97d8898d6cf8d1e817357412bb0.tar.gz
SkyHanni-ae4af78e29efb97d8898d6cf8d1e817357412bb0.tar.bz2
SkyHanni-ae4af78e29efb97d8898d6cf8d1e817357412bb0.zip
Counting items in inventory and from minions to the bingo step helper collection goal display
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/data')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/OtherInventoryData.kt (renamed from src/main/java/at/hannibal2/skyhanni/data/InventoryData.kt)2
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/OwnInventoryData.kt121
2 files changed, 68 insertions, 55 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/data/InventoryData.kt b/src/main/java/at/hannibal2/skyhanni/data/OtherInventoryData.kt
index d3630c159..580383e0c 100644
--- a/src/main/java/at/hannibal2/skyhanni/data/InventoryData.kt
+++ b/src/main/java/at/hannibal2/skyhanni/data/OtherInventoryData.kt
@@ -7,7 +7,7 @@ import net.minecraft.network.play.server.S2FPacketSetSlot
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import net.minecraftforge.fml.common.gameevent.TickEvent
-class InventoryData {
+class OtherInventoryData {
private var currentInventory: Inventory? = null
private var acceptItems = false
private var lateEvent: LateInventoryOpenEvent? = null
diff --git a/src/main/java/at/hannibal2/skyhanni/data/OwnInventoryData.kt b/src/main/java/at/hannibal2/skyhanni/data/OwnInventoryData.kt
index 1572468d8..dd6a37bcd 100644
--- a/src/main/java/at/hannibal2/skyhanni/data/OwnInventoryData.kt
+++ b/src/main/java/at/hannibal2/skyhanni/data/OwnInventoryData.kt
@@ -1,16 +1,23 @@
package at.hannibal2.skyhanni.data
+import at.hannibal2.skyhanni.api.CollectionAPI
+import at.hannibal2.skyhanni.events.InventoryCloseEvent
import at.hannibal2.skyhanni.events.OwnInventorItemUpdateEvent
import at.hannibal2.skyhanni.events.PacketEvent
+import at.hannibal2.skyhanni.features.bazaar.BazaarApi
+import at.hannibal2.skyhanni.utils.ItemUtils.getInternalName
+import at.hannibal2.skyhanni.utils.ItemUtils.name
+import at.hannibal2.skyhanni.utils.NEUItems
+import net.minecraft.item.ItemStack
import net.minecraft.network.play.server.S2FPacketSetSlot
+import net.minecraftforge.event.world.WorldEvent
import net.minecraftforge.fml.common.eventhandler.EventPriority
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
class OwnInventoryData {
-// private var itemNames = mutableMapOf<Int, String>()
-// private var itemAmount = mutableMapOf<Int, Int>()
-// private var counter = mutableMapOf<String, Int>()
+ private var itemNames = mutableMapOf<Int, String>()
+ private var itemAmount = mutableMapOf<Int, Int>()
@SubscribeEvent(priority = EventPriority.LOW, receiveCanceled = true)
fun onChatPacket(event: PacketEvent.ReceiveEvent) {
@@ -22,57 +29,63 @@ class OwnInventoryData {
OwnInventorItemUpdateEvent(item).postAndCatch()
}
}
-// if (packet is S2FPacketSetSlot) {
-//// println("S2FPacketSetSlot")
-// val windowId = packet.func_149175_c()
-// val item = packet.func_149174_e()
-// val slot = packet.func_149173_d()
-// if (windowId != 0) return
-//
-// val name = item?.name ?: "null"
-//
-// val oldItem = itemNames.getOrDefault(slot, "null")
-// val oldAmount = itemAmount.getOrDefault(slot, 0)
-//
-//// println(" ")
-//// println("windowId: $windowId")
-// val amount = item?.stackSize ?: 0
-// if (name == oldItem) {
-// if (amount > oldAmount) {
-// val diff = amount - oldAmount
-//// println("added $diff $name")
-// add(name, diff)
-// }
-// } else {
-// if (name != "null") {
-//// println("added new $amount $name")
-// add(name, amount)
-// }
-// }
-//// println("$slot $oldItem x$oldAmount -> $name x$amount")
-// itemNames[slot] = name
-// itemAmount[slot] = amount
-// }
+ if (packet is S2FPacketSetSlot) {
+ val windowId = packet.func_149175_c()
+ val item = packet.func_149174_e()
+ val slot = packet.func_149173_d()
+ if (windowId != 0) return
+ val name = item?.name ?: "null"
+
+ val oldItem = itemNames.getOrDefault(slot, "null")
+ val oldAmount = itemAmount.getOrDefault(slot, 0)
+
+ val amount = item?.stackSize ?: 0
+ if (name == oldItem) {
+ val diff = amount - oldAmount
+ if (amount > oldAmount) {
+ add(item, diff)
+ }
+ } else {
+ if (name != "null") {
+ add(item, amount)
+ }
+ }
+ itemNames[slot] = name
+ itemAmount[slot] = amount
+ }
+ }
+
+ @SubscribeEvent
+ fun onInventoryClose(event: InventoryCloseEvent) {
+ BazaarApi.inBazaarInventory = false
+ lastClose = System.currentTimeMillis()
+ }
+
+ @SubscribeEvent
+ fun onWorldLoad(event: WorldEvent.Load) {
+ lastWorldSwitch = System.currentTimeMillis()
}
-// private fun add(name: String, add: Int) {
-// if (name == "§fHay Bale") return
-// if (name == "§fSeeds") return
-// if (name.contains("Hoe")) return
-//
-// // TODO remove later
-// if (name.contains("Mushroom")) return
-//
-//// println("added $add $name")
-// val old = counter.getOrDefault(name, 0)
-//// if (name == "§fWheat") {
-//// if (old == 1502) {
-//// old = 2504173
-//// }
-//// }
-// val new = old + add
-// val format = LorenzUtils.formatInteger(new)
-// println("have $name $format")
-// counter[name] = new
-// }
+ private var lastClose = 0L
+ private var lastWorldSwitch = 0L
+
+ private fun add(item: ItemStack?, add: Int) {
+ if (item == null) return
+
+ val diffClose = System.currentTimeMillis() - lastClose
+ if (diffClose < 500) return
+
+ val diffWorld = System.currentTimeMillis() - lastWorldSwitch
+ if (diffWorld < 3_000) return
+
+ val internalName = item.getInternalName()
+ val (_, amount) = NEUItems.getMultiplier(internalName)
+ if (amount > 1) return
+
+ addMultiplier(internalName, add)
+ }
+
+ private fun addMultiplier(internalName: String, amount: Int) {
+ CollectionAPI.addFromInventory(internalName, amount)
+ }
} \ No newline at end of file