Lejo
2018-12-09 aa82fa1d1379ca2adc552a5e90cfa9a77da3edd6
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)