blob: 2b49da6a6c135b0330799eae72521c72be6f1482 [file] [log] [blame] [raw]
package li.cil.oc.integration.util
import codechicken.nei.LayoutManager
import li.cil.oc.common.item.traits.Delegate
import li.cil.oc.integration.Mods
import net.minecraft.block.Block
import net.minecraft.client.gui.inventory.GuiContainer
import net.minecraft.item.ItemStack
import scala.collection.mutable
object NEI {
// Lazily evaluated stacks to avoid creating stacks with unregistered items/blocks.
val hiddenItems = mutable.Set.empty[() => ItemStack]
def isInputFocused = Mods.NotEnoughItems.isAvailable && (try isInputFocused0 catch {
case _: Throwable => false
})
private def isInputFocused0 = LayoutManager.getInputFocused != null
def hoveredStack(container: GuiContainer, mouseX: Int, mouseY: Int): Option[ItemStack] =
if (Mods.NotEnoughItems.isAvailable) try Option(hoveredStack0(container, mouseX, mouseY)) catch {
case t: Throwable => None
}
else None
private def hoveredStack0(container: GuiContainer, mouseX: Int, mouseY: Int) = LayoutManager.instance.getStackUnderMouse(container, mouseX, mouseY)
def hide(block: Block): Unit = if (Mods.NotEnoughItems.isAvailable) hiddenItems += (() => new ItemStack(block))
def hide(item: Delegate): Unit = if (Mods.NotEnoughItems.isAvailable) hiddenItems += (() => item.createItemStack())
}