From d119a6748264a4f9825eebdd4ddeb2421cc4784a Mon Sep 17 00:00:00 2001
From: coil <51716565+coil0@users.noreply.github.com>
Date: Mon, 26 Aug 2019 19:45:11 +0200
Subject: [PATCH] Refactor switching station ABMs (#508)

---
 technic/machines/register/recipes.lua |   19 ++++++++++++++-----
 1 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/technic/machines/register/recipes.lua b/technic/machines/register/recipes.lua
index 1aba96b..f9e2458 100644
--- a/technic/machines/register/recipes.lua
+++ b/technic/machines/register/recipes.lua
@@ -1,3 +1,4 @@
+local have_ui = minetest.get_modpath("unified_inventory")
 
 technic.recipes = { cooking = { input_size = 1, output_size = 1 } }
 function technic.register_recipe_type(typename, origdata)
@@ -5,11 +6,11 @@
 	for k, v in pairs(origdata) do data[k] = v end
 	data.input_size = data.input_size or 1
 	data.output_size = data.output_size or 1
-	if unified_inventory and unified_inventory.register_craft_type and data.output_size == 1 then
+	if have_ui and unified_inventory.register_craft_type and data.output_size == 1 then
 		unified_inventory.register_craft_type(typename, {
 			description = data.description,
-			height = data.input_size,
-			width = 1,
+			width = data.input_size,
+			height = 1,
 		})
 	end
 	data.recipes = {}
@@ -17,6 +18,7 @@
 end
 
 local function get_recipe_index(items)
+	if not items or type(items) ~= "table" then return false end
 	local l = {}
 	for i, stack in ipairs(items) do
 		l[i] = ItemStack(stack):get_name()
@@ -40,12 +42,16 @@
 	
 	local recipe = {time = data.time, input = {}, output = data.output}
 	local index = get_recipe_index(data.input)
+	if not index then
+		print("[Technic] ignored registration of garbage recipe!")
+		return
+	end
 	for _, stack in ipairs(data.input) do
 		recipe.input[ItemStack(stack):get_name()] = ItemStack(stack):get_count()
 	end
 	
 	technic.recipes[typename].recipes[index] = recipe
-	if unified_inventory and technic.recipes[typename].output_size == 1 then
+	if have_ui and technic.recipes[typename].output_size == 1 then
 		unified_inventory.register_craft({
 			type = typename,
 			output = data.output,
@@ -75,12 +81,15 @@
 		end
 	end
 	local index = get_recipe_index(items)
+	if not index then
+		print("[Technic] ignored registration of garbage recipe!")
+		return
+	end
 	local recipe = technic.recipes[typename].recipes[index]
 	if recipe then
 		local new_input = {}
 		for i, stack in ipairs(items) do
 			if stack:get_count() < recipe.input[stack:get_name()] then
-				print(stack:get_name())
 				return nil
 			else
 				new_input[i] = ItemStack(stack)

--
Gitblit v1.8.0