SmallJoker
2022-11-26 21e044478e259efa202dce2c2e82afc342f07b90
technic/machines/register/recipes.lua
@@ -1,3 +1,6 @@
local have_ui = minetest.get_modpath("unified_inventory")
local have_cg = minetest.get_modpath("craftguide")
local have_i3 = minetest.get_modpath("i3")
technic.recipes = { cooking = { input_size = 1, output_size = 1 } }
function technic.register_recipe_type(typename, origdata)
@@ -5,12 +8,24 @@
   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
      unified_inventory.register_craft_type(typename, {
         description = data.description,
         width = data.input_size,
         height = 1,
      })
   if data.output_size == 1 then
      if have_ui and unified_inventory.register_craft_type then
         unified_inventory.register_craft_type(typename, {
            description = data.description,
            width = data.input_size,
            height = 1,
         })
      end
      if have_cg and craftguide.register_craft_type then
         craftguide.register_craft_type(typename, {
            description = data.description,
         })
      end
      if have_i3 then
         i3.register_craft_type(typename, {
            description = data.description,
         })
      end
   end
   data.recipes = {}
   technic.recipes[typename] = data
@@ -38,7 +53,7 @@
   else
      data.output = ItemStack(data.output):to_string()
   end
   local recipe = {time = data.time, input = {}, output = data.output}
   local index = get_recipe_index(data.input)
   if not index then
@@ -48,9 +63,9 @@
   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,
@@ -58,6 +73,27 @@
         width = 0,
      })
   end
   if (have_cg or have_i3) and technic.recipes[typename].output_size == 1 then
      local result = data.output
      if (type(result)=="table") then
         result = result[1]
      end
      local items = table.concat(data.input, ", ")
      if have_cg and craftguide.register_craft then
         craftguide.register_craft({
            type = typename,
            result = result,
            items = {items},
         })
      end
      if have_i3 then
         i3.register_craft({
            type = typename,
            result = result,
            items = {items},
         })
      end
   end
end
function technic.register_recipe(typename, data)