From 9fe902f8cf65be3bac2cfbe384cf6bec75213dcb Mon Sep 17 00:00:00 2001 From: Thunderblade73 <85900443+Thunderblade73@users.noreply.github.com> Date: Sat, 31 Aug 2024 14:07:11 +0200 Subject: [PATCH 1/2] cleanup in forge gfs --- .../skyhanni/features/mining/ForgeGfs.kt | 30 +++++++------------ .../skyhanni/utils/CollectionUtils.kt | 4 +++ .../at/hannibal2/skyhanni/utils/NEUItems.kt | 2 +- .../skyhanni/utils/PrimitiveItemStack.kt | 4 ++- 4 files changed, 18 insertions(+), 22 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/ForgeGfs.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/ForgeGfs.kt index 28f117832f5e..66c65ec2bdfc 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/ForgeGfs.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/ForgeGfs.kt @@ -8,12 +8,13 @@ import at.hannibal2.skyhanni.events.InventoryCloseEvent import at.hannibal2.skyhanni.events.InventoryUpdatedEvent import at.hannibal2.skyhanni.events.render.gui.ReplaceItemEvent import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule -import at.hannibal2.skyhanni.utils.ChatUtils +import at.hannibal2.skyhanni.utils.CollectionUtils +import at.hannibal2.skyhanni.utils.CollectionUtils.addOrPut import at.hannibal2.skyhanni.utils.ItemUtils import at.hannibal2.skyhanni.utils.ItemUtils.getInternalNameOrNull -import at.hannibal2.skyhanni.utils.ItemUtils.itemNameWithoutColor import at.hannibal2.skyhanni.utils.LorenzUtils import at.hannibal2.skyhanni.utils.NEUInternalName +import at.hannibal2.skyhanni.utils.PrimitiveItemStack.Companion.makePrimitiveStack import at.hannibal2.skyhanni.utils.RegexUtils.matches import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern import net.minecraft.client.player.inventory.ContainerLocalMenu @@ -78,27 +79,16 @@ object ForgeGfs { // Search for the first 4 columns only // Normally would be 3, but the gemstone mixture is the only one that overflows to 4 - for (i in 0..53) { - if (i % 9 <= 3) { - val currentItem = event.container.getSlot(i).stack - val amount = currentItem.stackSize - val currItemInternalName = currentItem.getInternalNameOrNull() ?: continue - if (SackAPI.sackListInternalNames.contains(currItemInternalName.asString())) { - itemMap.addAndFold(currItemInternalName, amount) - } + for (i in CollectionUtils.takeColumn(0, 53, 0, 4)) { + val currentItem = event.container.getSlot(i).stack + val amount = currentItem.stackSize + val currItemInternalName = currentItem.getInternalNameOrNull() ?: continue + if (SackAPI.sackListInternalNames.contains(currItemInternalName.asString())) { + itemMap.addOrPut(currItemInternalName, amount) } } - for ((internalName, amount) in itemMap) { - val getItYet = GetFromSackAPI.getFromSack(internalName, amount) - if (!getItYet) { - ChatUtils.chat("§cFailed to get $amount ${internalName.itemNameWithoutColor} from sacks.") - } - } - } - - private fun MutableMap.addAndFold(key: NEUInternalName, value: Int) { - this[key] = this.getOrDefault(key, 0) + value + GetFromSackAPI.getFromSack(itemMap.map { it.key.makePrimitiveStack(it.value) }) } fun isEnabled() = LorenzUtils.inSkyBlock && config.forgeGfs diff --git a/src/main/java/at/hannibal2/skyhanni/utils/CollectionUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/CollectionUtils.kt index 9590ba5c1f78..56bdcfabd933 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/CollectionUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/CollectionUtils.kt @@ -288,6 +288,10 @@ object CollectionUtils { add(Renderable.itemStack(itemStack, scale = scale)) } + fun takeColumn(start: Int, end: Int, startColumn: Int, endColumn: Int, rowSize: Int = 9) = + generateSequence(start) { it + 1 }.map { (it / (endColumn - startColumn)) * rowSize + (it % (endColumn - startColumn)) + startColumn } + .takeWhile { it <= end } + fun MutableList.addItemStack(internalName: NEUInternalName) { addItemStack(internalName.getItemStack()) } diff --git a/src/main/java/at/hannibal2/skyhanni/utils/NEUItems.kt b/src/main/java/at/hannibal2/skyhanni/utils/NEUItems.kt index 82dbb7349795..b3ed4a0c9057 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/NEUItems.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/NEUItems.kt @@ -332,7 +332,7 @@ object NEUItems { val id = current.first return if (current.second > 1) { val child = getPrimitiveMultiplier(id, tryCount + 1) - val result = child.multiply(current.second) + val result = child.times(current.second) multiplierCache[internalName] = result result } else { diff --git a/src/main/java/at/hannibal2/skyhanni/utils/PrimitiveItemStack.kt b/src/main/java/at/hannibal2/skyhanni/utils/PrimitiveItemStack.kt index 2173fcc8ffc3..52faaba30066 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/PrimitiveItemStack.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/PrimitiveItemStack.kt @@ -9,7 +9,9 @@ data class PrimitiveItemStack(val internalName: NEUInternalName, val amount: Int fun createItem(): ItemStack = internalName.getItemStack().apply { stackSize = amount } - fun multiply(multiplier: Int): PrimitiveItemStack = PrimitiveItemStack(internalName, amount * multiplier) + operator fun times(multiplier: Int): PrimitiveItemStack = PrimitiveItemStack(internalName, amount * multiplier) + + operator fun plus(amount: Int): PrimitiveItemStack = PrimitiveItemStack(internalName, this.amount + amount) val itemName by lazy { internalName.itemName } From 3288effd6713df046a9ced28231cbfe21bb302c0 Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal00212@users.noreply.github.com> Date: Sat, 7 Sep 2024 21:32:01 +0200 Subject: [PATCH 2/2] code cleanup --- .../java/at/hannibal2/skyhanni/features/mining/ForgeGfs.kt | 3 +-- src/main/java/at/hannibal2/skyhanni/utils/NEUItems.kt | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/ForgeGfs.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/ForgeGfs.kt index 66c65ec2bdfc..995198674334 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/ForgeGfs.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/ForgeGfs.kt @@ -81,10 +81,9 @@ object ForgeGfs { for (i in CollectionUtils.takeColumn(0, 53, 0, 4)) { val currentItem = event.container.getSlot(i).stack - val amount = currentItem.stackSize val currItemInternalName = currentItem.getInternalNameOrNull() ?: continue if (SackAPI.sackListInternalNames.contains(currItemInternalName.asString())) { - itemMap.addOrPut(currItemInternalName, amount) + itemMap.addOrPut(currItemInternalName, currentItem.stackSize) } } diff --git a/src/main/java/at/hannibal2/skyhanni/utils/NEUItems.kt b/src/main/java/at/hannibal2/skyhanni/utils/NEUItems.kt index 321a993fddda..81eb2968cce3 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/NEUItems.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/NEUItems.kt @@ -14,9 +14,9 @@ import at.hannibal2.skyhanni.utils.ItemUtils.getInternalName import at.hannibal2.skyhanni.utils.NEUInternalName.Companion.asInternalName import at.hannibal2.skyhanni.utils.NumberUtil.isInt import at.hannibal2.skyhanni.utils.PrimitiveItemStack.Companion.makePrimitiveStack +import at.hannibal2.skyhanni.utils.SkyBlockItemModifierUtils.getItemId import at.hannibal2.skyhanni.utils.json.BaseGsonBuilder import at.hannibal2.skyhanni.utils.json.fromJson -import at.hannibal2.skyhanni.utils.SkyBlockItemModifierUtils.getItemId import at.hannibal2.skyhanni.utils.system.PlatformUtils import com.google.gson.JsonObject import com.google.gson.JsonPrimitive @@ -343,7 +343,7 @@ object NEUItems { val id = current.first return if (current.second > 1) { val child = getPrimitiveMultiplier(id, tryCount + 1) - val result = child.times(current.second) + val result = child * current.second multiplierCache[internalName] = result result } else {