aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2025-07-10 18:23:56 +0200
committerLinnea Gräf <nea@nea.moe>2025-07-10 18:25:47 +0200
commita698e7171482f346e13e776b30decb6872746953 (patch)
tree0a55a3fccfeea6af99c4ee60b525a15178e3f05e /src
parentea50a4e324b92c2bddf1637cd7b1eb7ed2312014 (diff)
downloadFirmament-a698e7171482f346e13e776b30decb6872746953.tar.gz
Firmament-a698e7171482f346e13e776b30decb6872746953.tar.bz2
Firmament-a698e7171482f346e13e776b30decb6872746953.zip
feat: highlight storage search results
Diffstat (limited to 'src')
-rw-r--r--src/main/kotlin/features/inventory/storageoverlay/StorageOverlay.kt17
-rw-r--r--src/main/kotlin/features/inventory/storageoverlay/StorageOverlayScreen.kt1
2 files changed, 18 insertions, 0 deletions
diff --git a/src/main/kotlin/features/inventory/storageoverlay/StorageOverlay.kt b/src/main/kotlin/features/inventory/storageoverlay/StorageOverlay.kt
index 548552c..89450fe 100644
--- a/src/main/kotlin/features/inventory/storageoverlay/StorageOverlay.kt
+++ b/src/main/kotlin/features/inventory/storageoverlay/StorageOverlay.kt
@@ -11,6 +11,7 @@ import net.minecraft.network.packet.c2s.play.CloseHandledScreenC2SPacket
import moe.nea.firmament.annotations.Subscribe
import moe.nea.firmament.events.ScreenChangeEvent
import moe.nea.firmament.events.SlotClickEvent
+import moe.nea.firmament.events.SlotRenderEvents
import moe.nea.firmament.events.TickEvent
import moe.nea.firmament.features.FirmamentFeature
import moe.nea.firmament.gui.config.ManagedConfig
@@ -45,8 +46,24 @@ object StorageOverlay : FirmamentFeature {
val padding by integer("padding", 1, 20) { 5 }
val margin by integer("margin", 1, 60) { 20 }
val itemsBlockScrolling by toggle("block-item-scrolling") { true }
+ val highlightSearchResults by toggle("highlight-search-results") { true }
}
+ @Subscribe
+ fun highlightSlots(event: SlotRenderEvents.Before) {
+ if (!TConfig.highlightSearchResults) return
+ val storageOverlayScreen =
+ (MC.screen as? StorageOverlayScreen)
+ ?: (MC.handledScreen?.customGui as? StorageOverlayCustom)?.overview
+ ?: return
+ val stack = event.slot.stack ?: return
+ val search = storageOverlayScreen.searchText.get().takeIf { it.isNotBlank() } ?: return
+ if (storageOverlayScreen.matchesSearch(stack, search)) {
+ event.context.fill(event.slot.x, event.slot.y, event.slot.x + 16, event.slot.y + 16, 0xFF00B000.toInt())
+ }
+ }
+
+
fun adjustScrollSpeed(amount: Double): Double {
return amount * TConfig.scrollSpeed * (if (TConfig.inverseScroll) 1 else -1)
}
diff --git a/src/main/kotlin/features/inventory/storageoverlay/StorageOverlayScreen.kt b/src/main/kotlin/features/inventory/storageoverlay/StorageOverlayScreen.kt
index 460a949..72ee1c5 100644
--- a/src/main/kotlin/features/inventory/storageoverlay/StorageOverlayScreen.kt
+++ b/src/main/kotlin/features/inventory/storageoverlay/StorageOverlayScreen.kt
@@ -20,6 +20,7 @@ import net.minecraft.item.ItemStack
import net.minecraft.screen.slot.Slot
import net.minecraft.text.Text
import net.minecraft.util.Identifier
+import moe.nea.firmament.annotations.Subscribe
import moe.nea.firmament.events.SlotRenderEvents
import moe.nea.firmament.gui.EmptyComponent
import moe.nea.firmament.gui.FirmButtonComponent