diff options
| author | Linnea Gräf <nea@nea.moe> | 2025-11-24 23:42:00 +0100 |
|---|---|---|
| committer | Linnea Gräf <nea@nea.moe> | 2025-11-24 23:42:00 +0100 |
| commit | 6dd14e7225ff60361fe9f87020c424c0eb89a68b (patch) | |
| tree | 6977d5a71850924becc71b1ac53f1865a1c8330a /src/main/kotlin/util/HoveredItemStack.kt | |
| parent | 3f33928c8fefe4816af9d538fa3fce48d5e76f7c (diff) | |
| download | Firmament-6dd14e7225ff60361fe9f87020c424c0eb89a68b.tar.gz Firmament-6dd14e7225ff60361fe9f87020c424c0eb89a68b.tar.bz2 Firmament-6dd14e7225ff60361fe9f87020c424c0eb89a68b.zip | |
feat: firmament api
Diffstat (limited to 'src/main/kotlin/util/HoveredItemStack.kt')
| -rw-r--r-- | src/main/kotlin/util/HoveredItemStack.kt | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/main/kotlin/util/HoveredItemStack.kt b/src/main/kotlin/util/HoveredItemStack.kt index c8d33fd..91202dd 100644 --- a/src/main/kotlin/util/HoveredItemStack.kt +++ b/src/main/kotlin/util/HoveredItemStack.kt @@ -1,13 +1,16 @@ package moe.nea.firmament.util import com.google.auto.service.AutoService +import kotlin.jvm.optionals.getOrNull +import net.minecraft.client.gui.screens.Screen import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen import net.minecraft.world.item.ItemStack +import moe.nea.firmament.api.v1.FirmamentAPI import moe.nea.firmament.mixins.accessor.AccessorHandledScreen import moe.nea.firmament.util.compatloader.CompatLoader interface HoveredItemStackProvider : Comparable<HoveredItemStackProvider> { - fun provideHoveredItemStack(screen: AbstractContainerScreen<*>): ItemStack? + fun provideHoveredItemStack(screen: Screen): ItemStack? override fun compareTo(other: HoveredItemStackProvider): Int { return compareValues(this.prio, other.prio) } @@ -22,8 +25,8 @@ interface HoveredItemStackProvider : Comparable<HoveredItemStackProvider> { @AutoService(HoveredItemStackProvider::class) class VanillaScreenProvider : HoveredItemStackProvider { - override fun provideHoveredItemStack(screen: AbstractContainerScreen<*>): ItemStack? { - screen as AccessorHandledScreen + override fun provideHoveredItemStack(screen: Screen): ItemStack? { + if (screen !is AccessorHandledScreen) return null val vanillaSlot = screen.focusedSlot_Firmament?.item return vanillaSlot } @@ -32,7 +35,17 @@ class VanillaScreenProvider : HoveredItemStackProvider { get() = -1 } -val AbstractContainerScreen<*>.focusedItemStack: ItemStack? +@AutoService(HoveredItemStackProvider::class) +class FirmamentStackScreenProvider : HoveredItemStackProvider { + override fun provideHoveredItemStack(screen: Screen): ItemStack? { + return FirmamentAPI.getInstance() + .hoveredItemWidget + .getOrNull() + ?.itemStack + } +} + +val Screen.focusedItemStack: ItemStack? get() = HoveredItemStackProvider.sorted .firstNotNullOfOrNull { it.provideHoveredItemStack(this)?.takeIf { !it.isEmpty } } |
