Cristiano Magro
2024-08-27 535e04d542520f58a2db8d4d7a222b73e5c96ef1
technic/machines/register/compressor_recipes.lua
@@ -8,6 +8,71 @@
   technic.register_recipe("compressing", data)
end
-- Defuse the default recipes, since we have
-- the compressor to take over in a more realistic manner.
local crafts_to_clear = {
   "default:desert_sand",
   "default:sand",
   "default:silver_sand",
}
local dependent_crafts_to_clear = {
   everness = {
      "everness:coral_sand",
      "everness:coral_forest_deep_ocean_sand",
      "everness:coral_white_sand",
      "everness:crystal_sand",
      "everness:cursed_sand",
      "everness:cursed_lands_deep_ocean_sand",
      "everness:crystal_forest_deep_ocean_sand",
      "everness:mineral_sand",
   },
   nether = {
      "nether:brick",
      "nether:brick_compressed",
      "nether:rack",
      "nether:rack_deep",
   },
}
-- Add dependent recipes to main collection of
-- recipes to be cleared if their mods are used.
for dependency, crafts in pairs(dependent_crafts_to_clear) do
   if minetest.get_modpath(dependency) then
      for _, craft_entry in ipairs(crafts) do
         table.insert(crafts_to_clear, craft_entry)
      end
   end
end
-- Clear recipes
for _, craft_name in ipairs(crafts_to_clear) do
   -- Regular bricks are 2x2 shaped, nether bricks are 3x3 shaped (irregular)
   local is_regular = string.sub(craft_name, 1, 12) ~= "nether:brick"
   local shaped_recipe
   if is_regular then
      shaped_recipe = {
         {craft_name, craft_name},
         {craft_name, craft_name},
      }
   else
      shaped_recipe = {
         {craft_name, craft_name, craft_name},
         {craft_name, craft_name, craft_name},
         {craft_name, craft_name, craft_name},
      }
   end
   minetest.clear_craft({
      type = "shaped",
      recipe = shaped_recipe,
   })
end
--
-- Compile compressor recipes
--
local recipes = {
   {"default:snowblock",          "default:ice"},
   {"default:sand 2",             "default:sandstone"},
@@ -21,8 +86,8 @@
   {"technic:uranium35_ingot 5",  "technic:uranium_fuel"},
}
if minetest.get_modpath("everness") then
   local everness_sand_to_sandstone_recipes = {
local dependent_recipes = {
   everness = {
      {"everness:coral_deep_ocean_sand 2",          "everness:coral_deep_ocean_sandstone_block"},
      {"everness:coral_sand 2",                     "everness:coral_sandstone"},
      {"everness:coral_white_sand 2",               "everness:coral_white_sandstone"},
@@ -31,47 +96,26 @@
      {"everness:cursed_lands_deep_ocean_sand 2",   "everness:cursed_lands_deep_ocean_sandstone_block"},
      {"everness:cursed_sand 2",                    "everness:cursed_sandstone_block"},
      {"everness:mineral_sand 2",                   "everness:mineral_sandstone"},
   }
   for _, data in ipairs(everness_sand_to_sandstone_recipes) do
      table.insert(recipes, {data[1], data[2]})
   end
end
-- defuse the default sandstone recipe, since we have the compressor to take over in a more realistic manner
local crafts_to_clear = {
   "default:desert_sand",
   "default:sand",
   "default:silver_sand"
   },
   nether = {
      {"nether:brick 9",            "nether:brick_compressed"},
      {"nether:brick_compressed 9",   "nether:nether_lump"},
      {"nether:rack",                 "nether:brick",},
      {"nether:rack_deep",            "nether:brick_deep"},
   },
}
if minetest.get_modpath("everness") then
   local everness_crafts_to_clear = {
      "everness:coral_sand",
      "everness:coral_forest_deep_ocean_sand",
      "everness:coral_white_sand",
      "everness:crystal_sand",
      "everness:cursed_sand",
      "everness:cursed_lands_deep_ocean_sand",
      "everness:crystal_forest_deep_ocean_sand",
      "everness:mineral_sand",
   }
   for _, sand_name in ipairs(everness_crafts_to_clear) do
      table.insert(crafts_to_clear, sand_name)
-- Add dependent recipes to main recipe collection
-- if their mods are used.
for dependency, recipes_to_add in pairs(dependent_recipes) do
   if minetest.get_modpath(dependency) then
      for _, recipe_entry in ipairs(recipes_to_add) do
         table.insert(recipes, recipe_entry)
      end
   end
end
for _, sand_name in ipairs(crafts_to_clear) do
   minetest.clear_craft({
      type = "shaped",
      recipe = {
         {sand_name, sand_name},
         {sand_name, sand_name},
      },
   })
end
-- Register compressor recipes
for _, data in pairs(recipes) do
   technic.register_compressor_recipe({input = {data[1]}, output = data[2]})
end