From 3ad347bb48b088eca772b52ee5c55b305e5be4d4 Mon Sep 17 00:00:00 2001 From: Thunderblade73 Date: Thu, 11 Jan 2024 17:24:47 +0100 Subject: [PATCH 1/6] Feature: ShiftClickNPCSell --- .../java/at/hannibal2/skyhanni/SkyHanniMod.kt | 4 +- .../features/inventory/InventoryConfig.java | 7 ++- .../features/inventory/ShiftClickNPCSell.kt | 50 +++++++++++++++++++ 3 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 src/main/java/at/hannibal2/skyhanni/features/inventory/ShiftClickNPCSell.kt diff --git a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt index 0551554cd408..9cfaebbf69f9 100644 --- a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt +++ b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt @@ -209,6 +209,7 @@ import at.hannibal2.skyhanni.features.inventory.QuickCraftFeatures import at.hannibal2.skyhanni.features.inventory.RngMeterInventory import at.hannibal2.skyhanni.features.inventory.SackDisplay import at.hannibal2.skyhanni.features.inventory.ShiftClickEquipment +import at.hannibal2.skyhanni.features.inventory.ShiftClickNPCSell import at.hannibal2.skyhanni.features.inventory.SkyBlockLevelGuideHelper import at.hannibal2.skyhanni.features.inventory.StatsTuning import at.hannibal2.skyhanni.features.inventory.tiarelay.TiaRelayHelper @@ -235,6 +236,7 @@ import at.hannibal2.skyhanni.features.misc.FixNEUHeavyPearls import at.hannibal2.skyhanni.features.misc.HideArmor import at.hannibal2.skyhanni.features.misc.InGameDateDisplay import at.hannibal2.skyhanni.features.misc.JoinCrystalHollows +import at.hannibal2.skyhanni.features.misc.LesserOrbHider import at.hannibal2.skyhanni.features.misc.LimboTimeTracker import at.hannibal2.skyhanni.features.misc.LockMouseLook import at.hannibal2.skyhanni.features.misc.MarkedPlayerManager @@ -255,7 +257,6 @@ import at.hannibal2.skyhanni.features.misc.SkyBlockKickDuration import at.hannibal2.skyhanni.features.misc.SuperpairsClicksAlert import at.hannibal2.skyhanni.features.misc.TimeFeatures import at.hannibal2.skyhanni.features.misc.TpsCounter -import at.hannibal2.skyhanni.features.misc.LesserOrbHider import at.hannibal2.skyhanni.features.misc.compacttablist.AdvancedPlayerList import at.hannibal2.skyhanni.features.misc.compacttablist.TabListReader import at.hannibal2.skyhanni.features.misc.compacttablist.TabListRenderer @@ -517,6 +518,7 @@ class SkyHanniMod { loadModule(SoopyGuessBurrow()) loadModule(DianaProfitTracker) loadModule(MythologicalCreatureTracker) + loadModule(ShiftClickNPCSell()) loadModule(HighlightJerries()) loadModule(TheGreatSpook()) loadModule(GriffinBurrowHelper) diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/inventory/InventoryConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/InventoryConfig.java index 48be602a3306..0f5deae500af 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/inventory/InventoryConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/InventoryConfig.java @@ -9,7 +9,6 @@ import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean; import io.github.moulberry.moulconfig.annotations.ConfigEditorDraggableList; import io.github.moulberry.moulconfig.annotations.ConfigOption; - import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -189,4 +188,10 @@ public String toString() { @FeatureToggle public boolean shiftClickForEquipment = false; + @Expose + @ConfigOption(name = "Shift Click NPC sell", desc = "Makes normal clicks to shift clicks in npc inventory for selling") + @ConfigEditorBoolean + @FeatureToggle + public boolean shiftClickNPCSell = false; + } diff --git a/src/main/java/at/hannibal2/skyhanni/features/inventory/ShiftClickNPCSell.kt b/src/main/java/at/hannibal2/skyhanni/features/inventory/ShiftClickNPCSell.kt new file mode 100644 index 000000000000..480414d881f1 --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/features/inventory/ShiftClickNPCSell.kt @@ -0,0 +1,50 @@ +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.utils.ItemUtils.getLore +import at.hannibal2.skyhanni.utils.LorenzUtils +import at.hannibal2.skyhanni.utils.StringUtils.matches +import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern +import net.minecraft.client.Minecraft +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent + +class ShiftClickNPCSell { + + val config get() = SkyHanniMod.feature.inventory.shiftClickNPCSell + + val sellSlot = 49 + val lastLoreLineOfSell by RepoPattern.pattern("inventory.npc.sell.lore", "§7them to this Shop!|§eClick to buyback!") + + var isInNPCSell = false + + fun enable() = LorenzUtils.inSkyBlock && config + + @SubscribeEvent + fun onOpen(event: InventoryFullyOpenedEvent) { + if (!enable()) return + isInNPCSell = lastLoreLineOfSell.matches(event.inventoryItems[sellSlot]?.getLore()?.lastOrNull() ?: "") + } + + @SubscribeEvent + fun onClose(event: InventoryCloseEvent) { + isInNPCSell = false + } + + @SubscribeEvent + fun onSlotClick(event: GuiContainerEvent.SlotClickEvent) { + if (!enable()) return + if (!isInNPCSell) return + + val slot = event.slot ?: return + + if (slot.slotNumber == slot.slotIndex) return + + event.isCanceled = true + Minecraft.getMinecraft().playerController.windowClick( + event.container.windowId, event.slot.slotNumber, event.clickedButton, 1, Minecraft.getMinecraft().thePlayer + ) + } +} From f369daf47ad0ec6c33011ee63f776dd42e720b92 Mon Sep 17 00:00:00 2001 From: Thunderblade73 Date: Thu, 11 Jan 2024 17:38:45 +0100 Subject: [PATCH 2/6] implemented, CalMWolfs suggestions --- .../features/inventory/ShiftClickNPCSell.kt | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/features/inventory/ShiftClickNPCSell.kt b/src/main/java/at/hannibal2/skyhanni/features/inventory/ShiftClickNPCSell.kt index 480414d881f1..db6b3dabd13b 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/inventory/ShiftClickNPCSell.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/inventory/ShiftClickNPCSell.kt @@ -16,16 +16,19 @@ class ShiftClickNPCSell { val config get() = SkyHanniMod.feature.inventory.shiftClickNPCSell val sellSlot = 49 - val lastLoreLineOfSell by RepoPattern.pattern("inventory.npc.sell.lore", "§7them to this Shop!|§eClick to buyback!") + val lastLoreLineOfSellPattern by RepoPattern.pattern( + "inventory.npc.sell.lore", + "§7them to this Shop!|§eClick to buyback!" + ) var isInNPCSell = false - fun enable() = LorenzUtils.inSkyBlock && config + fun enabled() = LorenzUtils.inSkyBlock && config @SubscribeEvent fun onOpen(event: InventoryFullyOpenedEvent) { - if (!enable()) return - isInNPCSell = lastLoreLineOfSell.matches(event.inventoryItems[sellSlot]?.getLore()?.lastOrNull() ?: "") + if (!enabled()) return + isInNPCSell = lastLoreLineOfSellPattern.matches(event.inventoryItems[sellSlot]?.getLore()?.lastOrNull() ?: "") } @SubscribeEvent @@ -35,7 +38,7 @@ class ShiftClickNPCSell { @SubscribeEvent fun onSlotClick(event: GuiContainerEvent.SlotClickEvent) { - if (!enable()) return + if (!enabled()) return if (!isInNPCSell) return val slot = event.slot ?: return From 8cde4fd4feb27b3ccdd2486d0158727526e5d2f2 Mon Sep 17 00:00:00 2001 From: Thunderblade73 Date: Thu, 11 Jan 2024 18:14:55 +0100 Subject: [PATCH 3/6] implemented some of hannibals suggestions --- .../config/features/inventory/InventoryConfig.java | 4 ++-- .../features/inventory/ShiftClickNPCSell.kt | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/inventory/InventoryConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/InventoryConfig.java index 0f5deae500af..0aed8ec3f7c3 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/inventory/InventoryConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/InventoryConfig.java @@ -183,13 +183,13 @@ public String toString() { public boolean copyUnderbidPrice = false; @Expose - @ConfigOption(name = "Shift Click Equipment", desc = "Makes normal clicks to shift clicks in equipment inventory") + @ConfigOption(name = "Shift Click Equipment", desc = "Makes normal clicks to shift clicks in equipment inventory.") @ConfigEditorBoolean @FeatureToggle public boolean shiftClickForEquipment = false; @Expose - @ConfigOption(name = "Shift Click NPC sell", desc = "Makes normal clicks to shift clicks in npc inventory for selling") + @ConfigOption(name = "Shift Click NPC sell", desc = "Makes normal clicks to shift clicks in npc inventory for selling.") @ConfigEditorBoolean @FeatureToggle public boolean shiftClickNPCSell = false; diff --git a/src/main/java/at/hannibal2/skyhanni/features/inventory/ShiftClickNPCSell.kt b/src/main/java/at/hannibal2/skyhanni/features/inventory/ShiftClickNPCSell.kt index db6b3dabd13b..c468f9d5dfa5 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/inventory/ShiftClickNPCSell.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/inventory/ShiftClickNPCSell.kt @@ -13,33 +13,33 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent class ShiftClickNPCSell { - val config get() = SkyHanniMod.feature.inventory.shiftClickNPCSell + private val config get() = SkyHanniMod.feature.inventory.shiftClickNPCSell - val sellSlot = 49 - val lastLoreLineOfSellPattern by RepoPattern.pattern( + private val sellSlot = 49 + private val lastLoreLineOfSellPattern by RepoPattern.pattern( "inventory.npc.sell.lore", "§7them to this Shop!|§eClick to buyback!" ) - var isInNPCSell = false + private var inInventory = false fun enabled() = LorenzUtils.inSkyBlock && config @SubscribeEvent fun onOpen(event: InventoryFullyOpenedEvent) { if (!enabled()) return - isInNPCSell = lastLoreLineOfSellPattern.matches(event.inventoryItems[sellSlot]?.getLore()?.lastOrNull() ?: "") + inInventory = lastLoreLineOfSellPattern.matches(event.inventoryItems[sellSlot]?.getLore()?.lastOrNull() ?: "") } @SubscribeEvent fun onClose(event: InventoryCloseEvent) { - isInNPCSell = false + inInventory = false } @SubscribeEvent fun onSlotClick(event: GuiContainerEvent.SlotClickEvent) { if (!enabled()) return - if (!isInNPCSell) return + if (!inInventory) return val slot = event.slot ?: return From eb516ca9f67264e6ce589d491385a10a3589482e Mon Sep 17 00:00:00 2001 From: Thunderblade73 Date: Thu, 11 Jan 2024 18:14:55 +0100 Subject: [PATCH 4/6] implemented some of hannibals suggestions --- .../skyhanni/features/inventory/ShiftClickNPCSell.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/features/inventory/ShiftClickNPCSell.kt b/src/main/java/at/hannibal2/skyhanni/features/inventory/ShiftClickNPCSell.kt index c468f9d5dfa5..06baf9b69f1f 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/inventory/ShiftClickNPCSell.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/inventory/ShiftClickNPCSell.kt @@ -23,11 +23,11 @@ class ShiftClickNPCSell { private var inInventory = false - fun enabled() = LorenzUtils.inSkyBlock && config + fun isEnabled() = LorenzUtils.inSkyBlock && config @SubscribeEvent fun onOpen(event: InventoryFullyOpenedEvent) { - if (!enabled()) return + if (!isEnabled()) return inInventory = lastLoreLineOfSellPattern.matches(event.inventoryItems[sellSlot]?.getLore()?.lastOrNull() ?: "") } @@ -38,7 +38,7 @@ class ShiftClickNPCSell { @SubscribeEvent fun onSlotClick(event: GuiContainerEvent.SlotClickEvent) { - if (!enabled()) return + if (!isEnabled()) return if (!inInventory) return val slot = event.slot ?: return From 41be1ef6f270afbcff8d6db9edbf2bf2693eeb53 Mon Sep 17 00:00:00 2001 From: Thunderblade73 Date: Thu, 11 Jan 2024 18:28:36 +0100 Subject: [PATCH 5/6] used inInventory for HideNotClickableItems --- src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt | 2 +- .../features/inventory/HideNotClickableItems.kt | 11 +++-------- .../skyhanni/features/inventory/ShiftClickNPCSell.kt | 7 ++++--- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt index 9cfaebbf69f9..f93a36c48134 100644 --- a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt +++ b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt @@ -518,7 +518,7 @@ class SkyHanniMod { loadModule(SoopyGuessBurrow()) loadModule(DianaProfitTracker) loadModule(MythologicalCreatureTracker) - loadModule(ShiftClickNPCSell()) + loadModule(ShiftClickNPCSell) loadModule(HighlightJerries()) loadModule(TheGreatSpook()) loadModule(GriffinBurrowHelper) diff --git a/src/main/java/at/hannibal2/skyhanni/features/inventory/HideNotClickableItems.kt b/src/main/java/at/hannibal2/skyhanni/features/inventory/HideNotClickableItems.kt index 5a563c254819..2a6bd1e271ae 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/inventory/HideNotClickableItems.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/inventory/HideNotClickableItems.kt @@ -6,7 +6,6 @@ import at.hannibal2.skyhanni.data.ItemRenderBackground.Companion.background import at.hannibal2.skyhanni.data.ItemRenderBackground.Companion.borderLine import at.hannibal2.skyhanni.data.jsonobjects.repo.HideNotClickableItemsJson import at.hannibal2.skyhanni.data.jsonobjects.repo.HideNotClickableItemsJson.SalvageFilter -import at.hannibal2.skyhanni.data.jsonobjects.repo.MultiFilterJson import at.hannibal2.skyhanni.events.GuiContainerEvent import at.hannibal2.skyhanni.events.RepositoryReloadEvent import at.hannibal2.skyhanni.features.bazaar.BazaarApi @@ -49,16 +48,12 @@ class HideNotClickableItems { private val hideNpcSellFilter = MultiFilter() private val hideInStorageFilter = MultiFilter() - private val tradeNpcFilter = MultiFilter() private val itemsToSalvage = mutableListOf() private val hidePlayerTradeFilter = MultiFilter() private val notAuctionableFilter = MultiFilter() @SubscribeEvent fun onRepoReload(event: RepositoryReloadEvent) { - val data = event.getConstant("TradeNpcs") - tradeNpcFilter.load(data) - val hideNotClickable = event.getConstant("HideNotClickableItems") hideNpcSellFilter.load(hideNotClickable.hide_npc_sell) hideInStorageFilter.load(hideNotClickable.hide_in_storage) @@ -260,7 +255,7 @@ class HideNotClickableItems { "BRACELET" ) for (type in list) { - if (stack.getLore().any { it.contains("§l") && it.contains(type) }) {//todo use item api + if (stack.getLore().any { it.contains("§l") && it.contains(type) }) {// todo use item api reverseColor = true return false } @@ -289,7 +284,7 @@ class HideNotClickableItems { private fun hidePrivateIslandChest(chestName: String, stack: ItemStack): Boolean { if (chestName != "Chest" && chestName != "Large Chest") return false - //TODO make check if player is on private island + // TODO make check if player is on private island if (!ItemUtils.isSoulBound(stack)) return false @@ -379,7 +374,7 @@ class HideNotClickableItems { } private fun hideNpcSell(chestName: String, stack: ItemStack): Boolean { - if (!tradeNpcFilter.match(chestName)) return false + if (!ShiftClickNPCSell.inInventory) return false if (VisitorAPI.inInventory) return false reverseColor = true diff --git a/src/main/java/at/hannibal2/skyhanni/features/inventory/ShiftClickNPCSell.kt b/src/main/java/at/hannibal2/skyhanni/features/inventory/ShiftClickNPCSell.kt index 06baf9b69f1f..db1375b75d1e 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/inventory/ShiftClickNPCSell.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/inventory/ShiftClickNPCSell.kt @@ -11,7 +11,7 @@ import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern import net.minecraft.client.Minecraft import net.minecraftforge.fml.common.eventhandler.SubscribeEvent -class ShiftClickNPCSell { +object ShiftClickNPCSell { private val config get() = SkyHanniMod.feature.inventory.shiftClickNPCSell @@ -21,13 +21,14 @@ class ShiftClickNPCSell { "§7them to this Shop!|§eClick to buyback!" ) - private var inInventory = false + var inInventory = false + private set fun isEnabled() = LorenzUtils.inSkyBlock && config @SubscribeEvent fun onOpen(event: InventoryFullyOpenedEvent) { - if (!isEnabled()) return + if (!LorenzUtils.inSkyBlock) return inInventory = lastLoreLineOfSellPattern.matches(event.inventoryItems[sellSlot]?.getLore()?.lastOrNull() ?: "") } From ea0baccf3fc23a1e335bf371156ee66486c6362a Mon Sep 17 00:00:00 2001 From: Thunderblade73 Date: Thu, 11 Jan 2024 18:37:37 +0100 Subject: [PATCH 6/6] . --- .../skyhanni/features/inventory/HideNotClickableItems.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/at/hannibal2/skyhanni/features/inventory/HideNotClickableItems.kt b/src/main/java/at/hannibal2/skyhanni/features/inventory/HideNotClickableItems.kt index 2a6bd1e271ae..aa93dfd72aad 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/inventory/HideNotClickableItems.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/inventory/HideNotClickableItems.kt @@ -170,7 +170,7 @@ class HideNotClickableItems { reverseColor = false return when { - hideNpcSell(chestName, stack) -> true + hideNpcSell(stack) -> true hideInStorage(chestName, stack) -> true hideSalvage(chestName, stack) -> true hidePlayerTrade(chestName, stack) -> true @@ -373,7 +373,7 @@ class HideNotClickableItems { return result } - private fun hideNpcSell(chestName: String, stack: ItemStack): Boolean { + private fun hideNpcSell(stack: ItemStack): Boolean { if (!ShiftClickNPCSell.inInventory) return false if (VisitorAPI.inInventory) return false reverseColor = true