diff --git a/src/main/scala/li/cil/oc/server/component/UpgradeCrafting.scala b/src/main/scala/li/cil/oc/server/component/UpgradeCrafting.scala index 7d0d47006..b6f00581c 100644 --- a/src/main/scala/li/cil/oc/server/component/UpgradeCrafting.scala +++ b/src/main/scala/li/cil/oc/server/component/UpgradeCrafting.scala @@ -56,11 +56,14 @@ class UpgradeCrafting(val host: EnvironmentHost with internal.Robot) extends pre load() val cm = CraftingManager.getInstance var countCrafted = 0 - val canCraft = cm.findMatchingRecipe(CraftingInventory, host.world) != null + val originalCraft = cm.findMatchingRecipe(CraftingInventory, host.world) breakable { while (countCrafted < wantedCount) { val result = cm.findMatchingRecipe(CraftingInventory, host.world) if (result == null || result.stackSize < 1) break() + if (!originalCraft.isItemEqual(result)) { + break() + } countCrafted += result.stackSize FMLCommonHandler.instance.firePlayerCraftingEvent(host.player, result, this) val surplus = mutable.ArrayBuffer.empty[ItemStack] @@ -91,7 +94,7 @@ class UpgradeCrafting(val host: EnvironmentHost with internal.Robot) extends pre load() } } - Seq(canCraft, countCrafted) + Seq(originalCraft != null, countCrafted) } def load() { diff --git a/src/main/scala/li/cil/oc/server/machine/luac/ComputerAPI.scala b/src/main/scala/li/cil/oc/server/machine/luac/ComputerAPI.scala index f66693a5c..6404f85b3 100644 --- a/src/main/scala/li/cil/oc/server/machine/luac/ComputerAPI.scala +++ b/src/main/scala/li/cil/oc/server/machine/luac/ComputerAPI.scala @@ -77,15 +77,18 @@ class ComputerAPI(owner: NativeLuaArchitecture) extends NativeLuaAPI(owner) { }) lua.setField(-2, "users") - lua.pushScalaFunction(lua => try { - machine.addUser(lua.checkString(1)) - lua.pushBoolean(true) - 1 - } catch { - case e: Throwable => - lua.pushNil() - lua.pushString(Option(e.getMessage).getOrElse(e.toString)) - 2 + lua.pushScalaFunction(lua => { + val user = lua.checkString(1) + try { + machine.addUser(user) + lua.pushBoolean(true) + 1 + } catch { + case e: Throwable => + lua.pushNil() + lua.pushString(Option(e.getMessage).getOrElse(e.toString)) + 2 + } }) lua.setField(-2, "addUser")