aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/impl/v1/FirmamentAPIImpl.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/impl/v1/FirmamentAPIImpl.kt')
-rw-r--r--src/main/kotlin/impl/v1/FirmamentAPIImpl.kt21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/main/kotlin/impl/v1/FirmamentAPIImpl.kt b/src/main/kotlin/impl/v1/FirmamentAPIImpl.kt
index d5fc0de..3ca4778 100644
--- a/src/main/kotlin/impl/v1/FirmamentAPIImpl.kt
+++ b/src/main/kotlin/impl/v1/FirmamentAPIImpl.kt
@@ -1,14 +1,16 @@
package moe.nea.firmament.impl.v1
-import com.mojang.blaze3d.platform.InputConstants
import java.util.Collections
import java.util.Optional
import net.fabricmc.loader.api.FabricLoader
import kotlin.jvm.optionals.getOrNull
+import net.minecraft.world.item.ItemStack
import moe.nea.firmament.Firmament
import moe.nea.firmament.api.v1.FirmamentAPI
import moe.nea.firmament.api.v1.FirmamentExtension
import moe.nea.firmament.api.v1.FirmamentItemWidget
+import moe.nea.firmament.features.items.recipes.ItemList
+import moe.nea.firmament.repo.ExpensiveItemCacheApi
import moe.nea.firmament.util.MC
import moe.nea.firmament.util.intoOptional
@@ -21,6 +23,7 @@ object FirmamentAPIImpl : FirmamentAPI() {
return Collections.unmodifiableList(_extensions)
}
+ @OptIn(ExpensiveItemCacheApi::class)
override fun getHoveredItemWidget(): Optional<FirmamentItemWidget> {
val mouse = MC.instance.mouseHandler
val window = MC.window
@@ -30,6 +33,22 @@ object FirmamentAPIImpl : FirmamentAPI() {
?.getChildAt(xpos, ypos)
?.getOrNull()
if (widget is FirmamentItemWidget) return widget.intoOptional()
+ val itemListStack = ItemList.findStackUnder(xpos.toInt(), ypos.toInt())
+ if (itemListStack != null)
+ return object : FirmamentItemWidget {
+ override fun getPlacement(): FirmamentItemWidget.Placement {
+ return FirmamentItemWidget.Placement.ITEM_LIST
+ }
+
+ override fun getItemStack(): ItemStack {
+ return itemListStack.second.asImmutableItemStack()
+ }
+
+ override fun getSkyBlockId(): String {
+ return itemListStack.second.skyblockId.neuItem
+ }
+
+ }.intoOptional()
return Optional.empty()
}