blob: 7cd773da87b9cb7cdad2d1ac0d327a148c20503d [file] [log] [blame] [raw]
package li.cil.oc.util.mods
import net.minecraft.client.gui.inventory.GuiContainer
import net.minecraft.item.ItemStack
object NEI {
private lazy val (layoutManagerClass, getInstance, getStackUnderMouse) = try {
val layoutManager = Class.forName("codechicken.nei.LayoutManager")
val getInstance = layoutManager.getMethod("instance")
val getStackUnderMouse = layoutManager.getMethod("getStackUnderMouse", classOf[GuiContainer], classOf[Int], classOf[Int])
(layoutManager, getInstance, getStackUnderMouse)
}
catch {
case _: Throwable => (null, null, null)
}
def isInputFocused =
Mods.NotEnoughItems.isAvailable && layoutManagerClass != null && (try {
layoutManagerClass.getDeclaredMethods.find(m => m.getName == "getInputFocused").fold(false)(m => m.invoke(null) != null)
}
catch {
case _: Throwable => false
})
def hoveredStack(container: GuiContainer, mouseX: Int, mouseY: Int): Option[ItemStack] = {
if (Mods.NotEnoughItems.isAvailable && layoutManagerClass != null && getInstance != null && getStackUnderMouse != null)
try return Option(getStackUnderMouse.invoke(getInstance.invoke(null), container, mouseX.underlying(), mouseY.underlying()).asInstanceOf[ItemStack]) catch {
case t: Throwable => println(t)
}
None
}
}