From 8cd376e9b1450ebebe1cf06c91a7aa36c890230d Mon Sep 17 00:00:00 2001 From: repo_alt Date: Sat, 15 Jan 2022 11:47:10 +0300 Subject: [PATCH] added current craft final output to the crafting CPU API --- .../oc/integration/appeng/NetworkControl.scala | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/main/scala/li/cil/oc/integration/appeng/NetworkControl.scala b/src/main/scala/li/cil/oc/integration/appeng/NetworkControl.scala index ba5d28874..35ea26768 100644 --- a/src/main/scala/li/cil/oc/integration/appeng/NetworkControl.scala +++ b/src/main/scala/li/cil/oc/integration/appeng/NetworkControl.scala @@ -13,6 +13,7 @@ import appeng.api.storage.data.{IAEItemStack, IItemList} import appeng.api.util.AECableType import appeng.me.cluster.implementations.CraftingCPUCluster import appeng.me.helpers.IGridProxyable +import appeng.tile.crafting.TileCraftingMonitorTile import appeng.util.item.AEItemStack import com.google.common.collect.ImmutableSet import li.cil.oc.OpenComputers @@ -300,6 +301,21 @@ object NetworkControl { getCpu.getListOfItem(list, CraftingItemList.STORAGE) result(list.map(item => convert(item, controller)).toArray) } + + @Callback(doc = "function():table -- Get crafting final output.") + def finalOutput(context: Context, args: Arguments): Array[AnyRef] = { + val monitor = getCpu.getTiles.find(t => t.isInstanceOf[TileCraftingMonitorTile]) + if (monitor.isEmpty) + result(null, "No crafting monitor") + else { + val aeStack = monitor.get.asInstanceOf[TileCraftingMonitorTile].getJobProgress + if (aeStack == null) + result(null, "Nothing is crafted") + else + result(aeStack.getItemStack) + } + } + private def getCpu = { if (cpu == null && controller != null) { var i = 0