Lejo
2018-12-09 aa82fa1d1379ca2adc552a5e90cfa9a77da3edd6
technic/machines/register/extractor_recipes.lua
@@ -1,77 +1,71 @@
local S = technic.getter
if unified_inventory and unified_inventory.register_craft_type then
   unified_inventory.register_craft_type("extracting", {
      description = S("Extracting"),
      height = 1,
      width = 1,
   })
end
technic.extractor_recipes = {}
technic.register_recipe_type("extracting", { description = S("Extracting") })
function technic.register_extractor_recipe(data)
   data.time = data.time or 4
   local src = ItemStack(data.input):get_name()
   technic.extractor_recipes[src] = data
   if unified_inventory then
      unified_inventory.register_craft({
         type = "extracting",
         output = data.output,
         items = {data.input},
         width = 0,
   technic.register_recipe("extracting", data)
end
if minetest.get_modpath("dye") then
   -- check if we are using dye or unifieddyes
   local unifieddyes = minetest.get_modpath("unifieddyes")
   -- register recipes with the same crafting ratios as `dye` provides
   local dye_recipes = {
      {"technic:coal_dust",                 "dye:black 2"},
      {"default:grass_1",                   "dye:green 1"},
      {"default:dry_shrub",                 "dye:brown 1"},
      {"default:junglegrass",               "dye:green 2"},
      {"default:cactus",                    "dye:green 4"},
      {"flowers:geranium",                  "dye:blue 4"},
      {"flowers:dandelion_white",           "dye:white 4"},
      {"flowers:dandelion_yellow",          "dye:yellow 4"},
      {"flowers:tulip",                     "dye:orange 4"},
      {"flowers:rose",                      "dye:red 4"},
      {"flowers:viola",                     "dye:violet 4"},
      {"bushes:blackberry",                 unifieddyes and "unifieddyes:magenta_s50 4" or "dye:violet 4"},
      {"bushes:blueberry",                  unifieddyes and "unifieddyes:magenta_s50 4" or "dye:magenta 4"},
   }
   for _, data in ipairs(dye_recipes) do
      technic.register_extractor_recipe({input = {data[1]}, output = data[2]})
   end
   -- overwrite the existing crafting recipes
   local dyes = {"white", "red", "yellow", "blue", "violet", "orange"}
   for _, color in ipairs(dyes) do
      minetest.clear_craft({
         type = "shapeless",
         recipe = {"group:flower,color_"..color},
      })
      minetest.register_craft({
         type = "shapeless",
         output = "dye:"..color.." 1",
         recipe = {"group:flower,color_"..color},
      })
   end
   minetest.clear_craft({
      type = "shapeless",
      recipe = {"group:coal"},
   })
   minetest.register_craft({
      type = "shapeless",
      output = "dye:black 1",
      recipe = {"group:coal"},
   })
   if unifieddyes then
      minetest.clear_craft({
         type = "shapeless",
         recipe = {"default:cactus"},
      })
      minetest.register_craft({
         type = "shapeless",
         output = "dye:green 1",
         recipe = {"default:cactus"},
      })
   end
end
-- Receive an ItemStack of result by an ItemStack input
function technic.get_extractor_recipe(item)
   if technic.extractor_recipes[item:get_name()] and
      item:get_count() >= ItemStack(technic.extractor_recipes[item:get_name()].input):get_count() then
      return technic.extractor_recipes[item:get_name()]
   else
      return nil
   end
end
minetest.after(0.01, function ()
   for ingredient, recipe in pairs(technic.extractor_recipes) do
      ingredient = minetest.registered_aliases[ingredient]
      while ingredient do
         technic.grinder_recipes[ingredient] = recipe
         ingredient = minetest.registered_aliases[ingredient]
      end
   end
end)
-- Receive an ItemStack of result by an ItemStack input
function technic.get_grinder_recipe(itemstack)
   return technic.grinder_recipes[itemstack:get_name()]
end
local recipes = {
   -- Dyes
   {"technic:coal_dust",                 "dye:black 2"},
   {"default:cactus",                    "dye:green 2"},
   {"default:dry_shrub",                 "dye:brown 2"},
   {"flowers:geranium",                  "dye:blue 2"},
   {"flowers:dandelion_white",           "dye:white 2"},
   {"flowers:dandelion_yellow",          "dye:yellow 2"},
   {"flowers:tulip",                     "dye:orange 2"},
   {"flowers:rose",                      "dye:red 2"},
   {"flowers:viola",                     "dye:violet 2"},
   -- Rubber
   {"technic:raw_latex",                 "technic:rubber 3"},
   {"moretrees:rubber_tree_trunk_empty", "technic:rubber"},
   {"moretrees:rubber_tree_trunk",       "technic:rubber"},
   -- Other
   {"technic:uranium 5",                 "technic:enriched_uranium"},
}
for _, data in pairs(recipes) do
   technic.register_extractor_recipe({input = data[1], output = data[2]})
end