aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/bazaar
diff options
context:
space:
mode:
authorLorenz <lo.scherf@gmail.com>2022-08-17 03:05:34 +0200
committerLorenz <lo.scherf@gmail.com>2022-08-17 03:05:34 +0200
commitef58a94bf31868c4b53218474f0be04c1cd93d97 (patch)
treecb56d5969f8bebf586298475a61c521229663fda /src/main/java/at/hannibal2/skyhanni/bazaar
parent5669dbf6f68e7cacb2df6a4e37d703df8635353e (diff)
downloadskyhanni-ef58a94bf31868c4b53218474f0be04c1cd93d97.tar.gz
skyhanni-ef58a94bf31868c4b53218474f0be04c1cd93d97.tar.bz2
skyhanni-ef58a94bf31868c4b53218474f0be04c1cd93d97.zip
moving packets around
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/bazaar')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/bazaar/BazaarApi.kt59
-rw-r--r--src/main/java/at/hannibal2/skyhanni/bazaar/BazaarBestSellMethod.kt79
-rw-r--r--src/main/java/at/hannibal2/skyhanni/bazaar/BazaarData.kt3
-rw-r--r--src/main/java/at/hannibal2/skyhanni/bazaar/BazaarDataGrabber.kt113
-rw-r--r--src/main/java/at/hannibal2/skyhanni/bazaar/BazaarOrderHelper.kt87
5 files changed, 0 insertions, 341 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/bazaar/BazaarApi.kt b/src/main/java/at/hannibal2/skyhanni/bazaar/BazaarApi.kt
deleted file mode 100644
index cbebe951c..000000000
--- a/src/main/java/at/hannibal2/skyhanni/bazaar/BazaarApi.kt
+++ /dev/null
@@ -1,59 +0,0 @@
-package at.hannibal2.skyhanni.bazaar
-
-import at.hannibal2.skyhanni.utils.LorenzUtils
-
-class BazaarApi {
-
- companion object {
- private val bazaarMap = mutableMapOf<String, BazaarData>()
-
- fun isBazaarInventory(inventoryName: String): Boolean {
- if (inventoryName.contains(" ➜ ") && !inventoryName.contains("Museum")) return true
- if (BazaarOrderHelper.isBazaarOrderInventory(inventoryName)) return true
-
- return when (inventoryName) {
- "Your Bazaar Orders" -> true
- "How many do you want?" -> true
- "How much do you want to pay?" -> true
- "Confirm Buy Order" -> true
- "Confirm Instant Buy" -> true
- "At what price are you selling?" -> true
- "Confirm Sell Offer" -> true
- "Order options" -> true
-
- else -> false
- }
- }
-
- fun getCleanBazaarName(name: String): String {
- if (name.endsWith(" Gemstone")) {
- return name.substring(6)
- }
- if (name.startsWith("§")) {
- return name.substring(2)
- }
-
- return name
- }
-
- fun getBazaarDataForName(name: String): BazaarData {
- if (bazaarMap.containsKey(name)) {
- val bazaarData = bazaarMap[name]
- if (bazaarData != null) {
- return bazaarData
- }
- LorenzUtils.error("Bazaar data is null for item '$name'")
- }
- throw Error("no bz data found for name '$name'")
- }
-
- fun isBazaarItem(name: String): Boolean {
- val bazaarName = getCleanBazaarName(name)
- return bazaarMap.containsKey(bazaarName)
- }
- }
-
- init {
- BazaarDataGrabber(bazaarMap).start()
- }
-} \ No newline at end of file
diff --git a/src/main/java/at/hannibal2/skyhanni/bazaar/BazaarBestSellMethod.kt b/src/main/java/at/hannibal2/skyhanni/bazaar/BazaarBestSellMethod.kt
deleted file mode 100644
index 56c264312..000000000
--- a/src/main/java/at/hannibal2/skyhanni/bazaar/BazaarBestSellMethod.kt
+++ /dev/null
@@ -1,79 +0,0 @@
-package at.hannibal2.skyhanni.bazaar
-
-import at.hannibal2.skyhanni.SkyHanniMod
-import at.hannibal2.skyhanni.events.GuiContainerEvent
-import at.hannibal2.skyhanni.utils.GuiRender.renderString
-import at.hannibal2.skyhanni.utils.LorenzUtils
-import at.hannibal2.skyhanni.utils.NumberUtil
-import net.minecraft.client.gui.inventory.GuiChest
-import net.minecraft.inventory.ContainerChest
-import net.minecraftforge.client.event.GuiScreenEvent
-import net.minecraftforge.fml.common.eventhandler.EventPriority
-import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
-
-class BazaarBestSellMethod {
-
- companion object {
- private var textToRender = ""
- }
-
- @SubscribeEvent
- fun onBackgroundDrawn(event: GuiContainerEvent.CloseWindowEvent) {
- textToRender = ""
- }
-
- @SubscribeEvent
- fun onGuiDrawEvent(event: GuiScreenEvent.DrawScreenEvent.Post) {
- if (!isEnabled()) return
- textToRender = getNewText(event)
- }
-
- private fun getNewText(event: GuiScreenEvent.DrawScreenEvent.Post): String {
- try {
- if (event.gui !is GuiChest) return ""
- val chest = (event.gui as GuiChest).inventorySlots as ContainerChest
-
- val inv = chest.lowerChestInventory ?: return ""
-
- val buyInstantly = inv.getStackInSlot(10)
- if (buyInstantly == null || buyInstantly.displayName != "§aBuy Instantly") return ""
- val bazaarItem = inv.getStackInSlot(13) ?: return ""
- var name = bazaarItem.displayName
- name = BazaarApi.getCleanBazaarName(name)
- val data = BazaarApi.getBazaarDataForName(name)
-
- var having = 0
- for (slot in chest.inventorySlots) {
- if (slot == null) continue
- if (slot.slotNumber == slot.slotIndex) continue
- if (slot.stack == null) continue
- val stack = slot.stack
- val displayName = stack.displayName
- if (BazaarApi.getCleanBazaarName(displayName) == name) {
- having += stack.stackSize
- }
- }
-
- if (having <= 0) return ""
-
- val totalDiff = (data.buyPrice - data.sellPrice) * having
- val result = NumberUtil.format(totalDiff.toInt())
-
- return "§b$name§f sell difference: §e$result coins"
- } catch (e: Error) {
- e.printStackTrace()
- return ""
- }
- }
-
- @SubscribeEvent(priority = EventPriority.LOWEST)
- fun renderOverlay(event: GuiScreenEvent.BackgroundDrawnEvent) {
- if (!isEnabled()) return
-
- SkyHanniMod.feature.bazaar.bestSellMethodPos.renderString(textToRender)
- }
-
- private fun isEnabled(): Boolean {
- return LorenzUtils.inSkyblock && SkyHanniMod.feature.bazaar.bestSellMethod
- }
-} \ No newline at end of file
diff --git a/src/main/java/at/hannibal2/skyhanni/bazaar/BazaarData.kt b/src/main/java/at/hannibal2/skyhanni/bazaar/BazaarData.kt
deleted file mode 100644
index 01300e67c..000000000
--- a/src/main/java/at/hannibal2/skyhanni/bazaar/BazaarData.kt
+++ /dev/null
@@ -1,3 +0,0 @@
-package at.hannibal2.skyhanni.bazaar
-
-data class BazaarData(val apiName: String, val itemName: String, val sellPrice: Double, val buyPrice: Double) \ No newline at end of file
diff --git a/src/main/java/at/hannibal2/skyhanni/bazaar/BazaarDataGrabber.kt b/src/main/java/at/hannibal2/skyhanni/bazaar/BazaarDataGrabber.kt
deleted file mode 100644
index 1f2f1171a..000000000
--- a/src/main/java/at/hannibal2/skyhanni/bazaar/BazaarDataGrabber.kt
+++ /dev/null
@@ -1,113 +0,0 @@
-package at.hannibal2.skyhanni.bazaar
-
-import at.hannibal2.skyhanni.utils.APIUtil
-import at.hannibal2.skyhanni.utils.LorenzUtils
-import at.hannibal2.skyhanni.utils.LorenzUtils.round
-import kotlin.concurrent.fixedRateTimer
-
-internal class BazaarDataGrabber(private var bazaarMap: MutableMap<String, BazaarData>) {
-
- companion object {
- private val itemNames = mutableMapOf<String, String>()
-
- private var lastData = ""
- var lastTime = 0L
- var blockNoChange = false
- var currentlyUpdating = false
- }
-
- private fun loadItemNames(): Boolean {
- currentlyUpdating = true
- try {
- val itemsData = APIUtil.getJSONResponse("https://api.hypixel.net/resources/skyblock/items")
- for (element in itemsData["items"].asJsonArray) {
- val jsonObject = element.asJsonObject
- val name = jsonObject["name"].asString
- val id = jsonObject["id"].asString
- itemNames[id] = name
- }
- currentlyUpdating = false
- return true
- } catch (e: Throwable) {
- e.printStackTrace()
- LorenzUtils.error("Error while trying to read bazaar item list from api: " + e.message)
- currentlyUpdating = false
- return false
- }
- }
-
- fun start() {
- fixedRateTimer(name = "skyhanni-bazaar-update", period = 1000L) {
- if (!LorenzUtils.inSkyblock) {
- return@fixedRateTimer
- }
-
- if (currentlyUpdating) {
- LorenzUtils.error("Bazaar update took too long! Error?")
- return@fixedRateTimer
- }
-
- if (itemNames.isEmpty()) {
- if (!loadItemNames()) {
- return@fixedRateTimer
- }
- }
- checkIfUpdateNeeded()
- }
- }
-
- private fun checkIfUpdateNeeded() {
- if (lastData != "") {
- if (System.currentTimeMillis() - lastTime > 9_000) {
- blockNoChange = true
- } else {
- if (blockNoChange) {
- return
- }
- }
- }
-
- currentlyUpdating = true
- updateBazaarData()
- currentlyUpdating = false
- }
-
- private fun updateBazaarData() {
- val bazaarData = APIUtil.getJSONResponse("https://api.hypixel.net/skyblock/bazaar")
- if (bazaarData.toString() != lastData) {
- lastData = bazaarData.toString()
- lastTime = System.currentTimeMillis()
- }
-
- val products = bazaarData["products"].asJsonObject
-
- for (entry in products.entrySet()) {
- val apiName = entry.key
-
- if (apiName == "ENCHANTED_CARROT_ON_A_STICK") continue
- if (apiName == "BAZAAR_COOKIE") continue
-
- val itemData = entry.value.asJsonObject
-
- val itemName = itemNames.getOrDefault(apiName, null)
- if (itemName == null) {
- LorenzUtils.error("Bazaar item name is null for '$apiName'! Restart to fix this problem!")
- continue
- }
-
- val sellPrice: Double = try {
- itemData["sell_summary"].asJsonArray[0].asJsonObject["pricePerUnit"].asDouble.round(1)
- } catch (e: Exception) {
- 0.0
- }
- val buyPrice: Double = try {
- itemData["buy_summary"].asJsonArray[0].asJsonObject["pricePerUnit"].asDouble.round(1)
- } catch (e: Exception) {
- 0.0
- }
-
- val data = BazaarData(apiName, itemName, sellPrice, buyPrice)
- bazaarMap[itemName] = data
- }
- }
-} \ No newline at end of file
diff --git a/src/main/java/at/hannibal2/skyhanni/bazaar/BazaarOrderHelper.kt b/src/main/java/at/hannibal2/skyhanni/bazaar/BazaarOrderHelper.kt
deleted file mode 100644
index eec055253..000000000
--- a/src/main/java/at/hannibal2/skyhanni/bazaar/BazaarOrderHelper.kt
+++ /dev/null
@@ -1,87 +0,0 @@
-package at.hannibal2.skyhanni.bazaar
-
-import at.hannibal2.skyhanni.SkyHanniMod
-import at.hannibal2.skyhanni.events.GuiContainerEvent
-import at.hannibal2.skyhanni.utils.ItemUtils.getLore
-import at.hannibal2.skyhanni.utils.LorenzColor
-import at.hannibal2.skyhanni.utils.RenderUtils.highlight
-import net.minecraft.client.gui.inventory.GuiChest
-import net.minecraft.client.renderer.GlStateManager
-import net.minecraft.inventory.ContainerChest
-import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
-import org.lwjgl.opengl.GL11
-
-class BazaarOrderHelper {
-
- companion object {
- fun isBazaarOrderInventory(inventoryName: String): Boolean = when (inventoryName) {
- "Your Bazaar Orders" -> true
- "Co-op Bazaar Orders" -> true
- else -> false
- }
- }
-
- @SubscribeEvent
- fun onBackgroundDrawn(event: GuiContainerEvent.BackgroundDrawnEvent) {
- if (!SkyHanniMod.feature.bazaar.orderHelper) return
- if (event.gui !is GuiChest) return
- val guiChest = event.gui
- val chest = guiChest.inventorySlots as ContainerChest
- val inventoryName = chest.lowerChestInventory.displayName.unformattedText.trim()
-
- if (!isBazaarOrderInventory(inventoryName)) return
- val lightingState = GL11.glIsEnabled(GL11.GL_LIGHTING)
- GlStateManager.disableLighting()
- GlStateManager.color(1f, 1f, 1f, 1f)
-
- out@ for (slot in chest.inventorySlots) {
- if (slot == null) continue
- if (slot.slotNumber != slot.slotIndex) continue
- if (slot.stack == null) continue
-
- val stack = slot.stack
- val displayName = stack.displayName
- val isSelling = displayName.startsWith("§6§lSELL§7: ")
- val isBuying = displayName.startsWith("§a§lBUY§7: ")
- if (!isSelling && !isBuying) continue
-
- val text = displayName.split("§7: ")[1]
- val name = BazaarApi.getCleanBazaarName(text)
- val data = BazaarApi.getBazaarDataForName(name)
- val buyPrice = data.buyPrice
- val sellPrice = data.sellPrice
-
- val itemLore = stack.getLore()
- for (line in itemLore) {
- if (line.startsWith("§7Filled:")) {
- if (line.endsWith(" §a§l100%!")) {
- slot highlight LorenzColor.GREEN
- continue@out
- }
- }
- }
- for (line in itemLore) {
- if (line.startsWith("§7Price per unit:")) {
- var text = line.split(": §6")[1]
- text = text.substring(0, text.length - 6)
- text = text.replace(",", "")
- val price = text.toDouble()
- if (isSelling) {
- if (buyPrice < price) {
- slot highlight LorenzColor.GOLD
- continue@out
- }
- } else {
- if (sellPrice > price) {
- slot highlight LorenzColor.GOLD
- continue@out
- }
- }
-
- }
- }
- }
-
- if (lightingState) GlStateManager.enableLighting()
- }
-}