From 5c19255d82bf1b965610ed315558ba8da8557776 Mon Sep 17 00:00:00 2001 From: Owen <64725743+Ownwn@users.noreply.github.com> Date: Wed, 4 Jun 2025 19:43:53 +1200 Subject: Refresh inventory search highlight when slot changes (#1259) * Refresh highlight when inventory slot changes. Good for auction house where items constantly change * Change injection point to ScreenHandler --------- Co-authored-by: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> --- .../mixins/ClientPlayNetworkHandlerMixin.java | 4 ++-- .../hysky/skyblocker/mixins/ScreenHandlerMixin.java | 19 +++++++++++++++++++ .../de/hysky/skyblocker/skyblock/InventorySearch.java | 4 ++++ src/main/resources/skyblocker.mixins.json | 1 + 4 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 src/main/java/de/hysky/skyblocker/mixins/ScreenHandlerMixin.java (limited to 'src/main') diff --git a/src/main/java/de/hysky/skyblocker/mixins/ClientPlayNetworkHandlerMixin.java b/src/main/java/de/hysky/skyblocker/mixins/ClientPlayNetworkHandlerMixin.java index 97d289d5..6372bd4d 100644 --- a/src/main/java/de/hysky/skyblocker/mixins/ClientPlayNetworkHandlerMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixins/ClientPlayNetworkHandlerMixin.java @@ -10,8 +10,6 @@ import de.hysky.skyblocker.config.configs.SlayersConfig; import de.hysky.skyblocker.config.configs.UIAndVisualsConfig; import de.hysky.skyblocker.skyblock.CompactDamage; import de.hysky.skyblocker.skyblock.HealthBars; -import de.hysky.skyblocker.skyblock.fishing.FishingHelper; -import de.hysky.skyblocker.skyblock.fishing.FishingHookDisplayHelper; import de.hysky.skyblocker.skyblock.SmoothAOTE; import de.hysky.skyblocker.skyblock.chocolatefactory.EggFinder; import de.hysky.skyblocker.skyblock.crimson.dojo.DojoManager; @@ -23,6 +21,8 @@ import de.hysky.skyblocker.skyblock.dwarven.CrystalsChestHighlighter; import de.hysky.skyblocker.skyblock.dwarven.WishingCompassSolver; import de.hysky.skyblocker.skyblock.end.EnderNodes; import de.hysky.skyblocker.skyblock.end.TheEnd; +import de.hysky.skyblocker.skyblock.fishing.FishingHelper; +import de.hysky.skyblocker.skyblock.fishing.FishingHookDisplayHelper; import de.hysky.skyblocker.skyblock.fishing.SeaCreatureTracker; import de.hysky.skyblocker.skyblock.slayers.SlayerManager; import de.hysky.skyblocker.skyblock.slayers.boss.demonlord.FirePillarAnnouncer; diff --git a/src/main/java/de/hysky/skyblocker/mixins/ScreenHandlerMixin.java b/src/main/java/de/hysky/skyblocker/mixins/ScreenHandlerMixin.java new file mode 100644 index 00000000..a6eccb91 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/mixins/ScreenHandlerMixin.java @@ -0,0 +1,19 @@ +package de.hysky.skyblocker.mixins; + +import de.hysky.skyblocker.skyblock.InventorySearch; +import net.minecraft.item.ItemStack; +import net.minecraft.screen.ScreenHandler; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(ScreenHandler.class) +public class ScreenHandlerMixin { + @Inject(method = "setStackInSlot", at = @At("RETURN")) + private void onSetStackInSlot(int slot, int revision, ItemStack stack, CallbackInfo ci) { + if (InventorySearch.isSearching()) { + InventorySearch.refreshSlot(slot); + } + } +} diff --git a/src/main/java/de/hysky/skyblocker/skyblock/InventorySearch.java b/src/main/java/de/hysky/skyblocker/skyblock/InventorySearch.java index d1e147ce..fc6daaa4 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/InventorySearch.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/InventorySearch.java @@ -85,6 +85,10 @@ public class InventorySearch { } + public static void refreshSlot(int slotId) { + slotToMatch.remove(slotId); + } + /** * Button to open the search bar, for accessibility reasons (pojav and general preferences) */ diff --git a/src/main/resources/skyblocker.mixins.json b/src/main/resources/skyblocker.mixins.json index 5735a48b..d0ae49b0 100644 --- a/src/main/resources/skyblocker.mixins.json +++ b/src/main/resources/skyblocker.mixins.json @@ -45,6 +45,7 @@ "RenderFishMixin", "RenderPipelineMixin", "ScoreboardMixin", + "ScreenHandlerMixin", "ScreenMixin", "SignEditScreenMixin", "SocialInteractionsPlayerListWidgetMixin", -- cgit