elepower/elepower_machines/crafting.lua

741 lines
22 KiB
Lua

--*****************--
-- MACHINE RECIPES --
--*****************--
--------------
-- Alloying --
--------------
local alloy_recipes = {
{
recipe = { "elepower_dynamics:iron_ingot", "elepower_dynamics:coal_dust 4" },
output = "default:steel_ingot",
},
{
recipe = { "default:copper_ingot 2", "default:tin_ingot" },
output = "default:bronze_ingot 3",
},
{
recipe = { "elepower_dynamics:iron_ingot 3", "elepower_dynamics:nickel_ingot" },
output = "elepower_dynamics:invar_ingot 4",
},
{
recipe = { "default:gold_ingot 2", "elepower_dynamics:invar_ingot" },
output = "elepower_dynamics:electrum_ingot 3",
},
{
recipe = { "basic_materials:silicon", "elepower_dynamics:coal_dust 2" },
output = "elepower_dynamics:silicon_wafer",
},
{
recipe = { "default:coal_lump", "elepower_dynamics:coal_dust 4" },
output = "elepower_dynamics:graphite_ingot",
},
{
recipe = { "elepower_dynamics:silicon_wafer", "elepower_dynamics:gold_dust 4" },
output = "elepower_dynamics:silicon_wafer_doped",
time = 8,
},
{
recipe = { "default:obsidian_glass", "elepower_dynamics:lead_ingot 4" },
output = "elepower_dynamics:hardened_glass 4",
time = 8,
},
{
recipe = { "default:copper_ingot 2", "moreores:silver_ingot" },
output = "basic_materials:brass_ingot 3",
time = 8,
},
{
recipe = { "default:bronze_ingot", "default:steel_ingot 4" },
output = "elepower_machines:heat_casing 4",
},
}
-- Register alloy furnace recipes
for _,i in pairs(alloy_recipes) do
elepm.register_craft({
type = "alloy",
recipe = i.recipe,
output = i.output,
time = i.time or 4
})
end
--------------
-- Grinding --
--------------
local keywords = { _ingot = 1, _lump = 2, _block = 9, block = 9 }
local ingot_map = {}
local block_map = {}
for mat, data in pairs(elepd.registered_dusts) do
local kwfound = nil
for keyword,count in pairs(keywords) do
local found = ele.helpers.scan_item_list(mat .. keyword)
if found then
if keyword == "_ingot" and not kwfound then
kwfound = found
elseif keyword == "_block" or keyword == "block" and not block_map[mat] then
block_map[mat] = found
end
-- Grind recipe for material
elepm.register_craft({
type = "grind",
recipe = { found },
output = data.item .. " " .. count,
time = count + 4,
})
end
end
-- Add dust -> ingot smelting
if kwfound then
ingot_map[mat] = kwfound
minetest.register_craft({
type = "cooking",
recipe = data.item,
output = kwfound
})
end
end
-- Other recipes
local grinding_recipes = {
{
recipe = { "farming:wheat" },
output = "farming:flour 2",
time = 4,
},
{
recipe = { "default:desert_sand 4" },
output = "basic_materials:silicon",
},
{
recipe = { "default:sand 4" },
output = "basic_materials:silicon",
},
{
recipe = { "default:cobble" },
output = "default:gravel 4",
},
{
recipe = { "default:gravel" },
output = "default:sand 4",
},
{
recipe = { "default:mese" },
output = "default:mese_crystal 9",
},
{
recipe = { "default:mese_crystal" },
output = "default:mese_crystal_fragment 9",
},
{
recipe = { "elepower_dynamics:graphite_ingot" },
output = "elepower_dynamics:graphite_rod 3",
}
}
-- Register solderer recipes
for _,i in pairs(grinding_recipes) do
elepm.register_craft({
type = "grind",
recipe = i.recipe,
output = i.output,
time = i.time or 8,
})
end
-----------------
-- Compressing --
-----------------
for mat, ingot in pairs(ingot_map) do
local plate = elepd.registered_plates[mat]
local dust = elepd.registered_dusts[mat]
if plate then
elepm.register_craft({
type = "compress",
recipe = { ingot .. " 2" },
output = plate.item,
time = 4,
})
if dust then
elepm.register_craft({
type = "grind",
recipe = { plate.item },
output = dust.item .. " 2",
time = 6,
})
end
end
end
-- Detect sands
for name in pairs(minetest.registered_nodes) do
if name:match("sand") and not name:match("sandstone") then
local sand = name
local sandstone = name .. "stone"
if minetest.registered_nodes[sandstone] then
elepm.register_craft({
type = "compress",
recipe = { sand .. " 4" },
output = sandstone,
time = 1,
})
-- Also give a grinding recipe to get the sand back
elepm.register_craft({
type = "grind",
recipe = { sandstone },
output = sand .. " 4",
time = 5,
})
-- Find block as well
local ssblock = sandstone .. "_block"
if minetest.registered_nodes[ssblock] then
elepm.register_craft({
type = "compress",
recipe = { sandstone .. " 4" },
output = ssblock,
time = 1,
})
end
end
end
end
local compressor_recipes = {
{
recipe = { "elepower_dynamics:viridisium_block 9" },
output = "elepower_dynamics:xycrone_lump",
time = 20,
},
{
recipe = { "default:mese_crystal_fragment 9" },
output = "default:mese_crystal",
},
{
recipe = { "default:mese_crystal 9" },
output = "default:mese",
},
{
recipe = { "elepower_dynamics:coal_dust 4" },
output = "elepower_dynamics:carbon_fiber",
},
{
recipe = { "elepower_dynamics:carbon_fiber 4" },
output = "elepower_dynamics:carbon_sheet",
}
}
-- Register compressor recipes
for _,i in pairs(compressor_recipes) do
elepm.register_craft({
type = "compress",
recipe = i.recipe,
output = i.output,
time = i.time or 1
})
end
-------------
-- Sawmill --
-------------
-- Register all logs as sawable, if we can find a planks version
minetest.after(0.2, function ()
local wood_nodes = {}
for name in pairs(minetest.registered_nodes) do
if ele.helpers.get_item_group(name, "wood") then
wood_nodes[#wood_nodes + 1] = name
end
end
-- Begin making associations
-- Get crafting recipe for all woods
local assoc = {}
for _,wood in ipairs(wood_nodes) do
local recipes = minetest.get_all_craft_recipes(wood)
if recipes then
for _, recipe in ipairs(recipes) do
if recipe.items and #recipe.items == 1 then
assoc[recipe.items[1]] = wood
end
end
end
end
-- Register sawmill craft
for tree, wood in pairs(assoc) do
elepm.register_craft({
type = "saw",
recipe = { tree },
output = {wood .. " 6", "elepower_dynamics:wood_dust"},
time = 8,
})
end
end)
---------------
-- Soldering --
---------------
local soldering_recipes = {
{
recipe = { "elepower_dynamics:silicon_wafer_doped", "elepower_dynamics:chip 4", "elepower_dynamics:lead_ingot 2" },
output = "elepower_dynamics:microcontroller",
time = 8,
},
{
recipe = { "default:copper_ingot 4", "elepower_dynamics:microcontroller 4", "elepower_dynamics:electrum_ingot 2" },
output = "elepower_dynamics:soc",
time = 28,
},
{
recipe = { "elepower_dynamics:microcontroller", "elepower_dynamics:control_circuit", "elepower_dynamics:capacitor 5" },
output = "elepower_dynamics:micro_circuit",
time = 18,
},
{
recipe = { "elepower_dynamics:chip 8", "elepower_dynamics:integrated_circuit 2", "elepower_dynamics:capacitor 4" },
output = "elepower_dynamics:control_circuit",
time = 20,
},
{
recipe = { "elepower_dynamics:wound_copper_coil 4", "elepower_dynamics:wound_silver_coil 2", "basic_materials:copper_wire" },
output = "elepower_dynamics:induction_coil",
time = 16,
},
{
recipe = { "elepower_dynamics:induction_coil 4", "basic_materials:copper_wire", "elepower_dynamics:zinc_dust 2" },
output = "elepower_dynamics:induction_coil_advanced",
time = 18,
},
{
recipe = { "elepower_machines:power_cell_0", "elepower_machines:hardened_capacitor 2", "elepower_dynamics:invar_plate 8" },
output = "elepower_machines:hardened_power_cell_0",
time = 18,
},
{
recipe = { "elepower_machines:hardened_power_cell_0", "elepower_machines:reinforced_capacitor 2", "elepower_dynamics:electrum_plate 8" },
output = "elepower_machines:reinforced_power_cell_0",
time = 20,
},
{
recipe = { "elepower_machines:reinforced_power_cell_0", "elepower_machines:resonant_capacitor 2", "elepower_dynamics:viridisium_plate 8" },
output = "elepower_machines:resonant_power_cell_0",
time = 22,
},
{
recipe = { "elepower_machines:resonant_power_cell_0", "elepower_machines:super_capacitor 2", "elepower_dynamics:xycrone_lump" },
output = "elepower_machines:super_power_cell_0",
time = 24,
},
{
recipe = { "elepower_dynamics:integrated_circuit", "elepower_dynamics:induction_coil 2", "elepower_dynamics:soc" },
output = "elepower_machines:upgrade_speed",
time = 16,
},
{
recipe = { "elepower_dynamics:integrated_circuit", "elepower_machines:hardened_capacitor 2", "elepower_dynamics:soc" },
output = "elepower_machines:upgrade_efficiency",
time = 16,
},
{
recipe = { "elepower_machines:upgrade_efficiency", "elepower_machines:resonant_capacitor 2", "elepower_dynamics:soc" },
output = "elepower_machines:upgrade_efficiency_2",
time = 16,
}
}
-- Register solderer recipes
for _,i in pairs(soldering_recipes) do
elepm.register_craft({
type = "solder",
recipe = i.recipe,
output = i.output,
time = i.time or 4
})
end
-------------
-- Canning --
-------------
--******************--
-- CRAFTING RECIPES --
--******************--
-- Capacitors
minetest.register_craft({
output = "elepower_machines:hardened_capacitor",
recipe = {
{"basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet"},
{"elepower_dynamics:invar_plate", "default:mese_crystal", "elepower_dynamics:invar_plate"},
{"elepower_dynamics:invar_plate", "elepower_dynamics:capacitor", "elepower_dynamics:invar_plate"},
}
})
minetest.register_craft({
output = "elepower_machines:reinforced_capacitor",
recipe = {
{"elepower_dynamics:invar_plate", "elepower_dynamics:invar_plate", "elepower_dynamics:invar_plate"},
{"elepower_dynamics:electrum_plate", "default:mese_crystal", "elepower_dynamics:electrum_plate"},
{"elepower_dynamics:electrum_plate", "elepower_machines:hardened_capacitor", "elepower_dynamics:electrum_plate"},
}
})
minetest.register_craft({
output = "elepower_machines:resonant_capacitor",
recipe = {
{"elepower_dynamics:electrum_plate", "elepower_dynamics:electrum_plate", "elepower_dynamics:electrum_plate"},
{"elepower_dynamics:viridisium_plate", "default:mese_crystal", "elepower_dynamics:viridisium_plate"},
{"elepower_dynamics:viridisium_plate", "elepower_machines:reinforced_capacitor", "elepower_dynamics:viridisium_plate"},
}
})
minetest.register_craft({
output = "elepower_machines:super_capacitor",
recipe = {
{"elepower_dynamics:viridisium_plate", "elepower_dynamics:viridisium_plate", "elepower_dynamics:viridisium_plate"},
{"elepower_dynamics:viridisium_plate", "elepower_dynamics:xycrone_lump", "elepower_dynamics:viridisium_plate"},
{"elepower_dynamics:xycrone_lump", "elepower_machines:resonant_capacitor", "elepower_dynamics:xycrone_lump"},
}
})
minetest.register_craft({
output = "elepower_machines:heavy_filter",
recipe = {
{"elepower_dynamics:steel_plate", "fluid_transfer:fluid_duct", "elepower_dynamics:steel_plate"},
{"basic_materials:silicon", "elepower_dynamics:servo_valve", "basic_materials:silicon"},
{"elepower_dynamics:carbon_sheet", "fluid_transfer:fluid_duct", "elepower_dynamics:carbon_sheet"}
}
})
minetest.register_craft({
output = "elepower_machines:opaque_duct_roll",
recipe = {
{"elepower_dynamics:opaque_duct", "elepower_dynamics:opaque_duct", "elepower_dynamics:opaque_duct"},
{"elepower_dynamics:opaque_duct", "basic_materials:motor", "elepower_dynamics:opaque_duct"},
{"elepower_dynamics:opaque_duct", "elepower_dynamics:opaque_duct", "elepower_dynamics:opaque_duct"},
}
})
minetest.register_craft({
output = "elepower_machines:wind_turbine_blade",
recipe = {
{"", "default:wood", "default:wood"},
{"default:stick", "default:wood", "default:wood"},
{"default:stick", "default:stick", ""},
}
})
minetest.register_craft({
output = "elepower_machines:wind_turbine_blades",
recipe = {
{"elepower_machines:wind_turbine_blade", "elepower_machines:wind_turbine_blade", "elepower_machines:wind_turbine_blade"},
{"elepower_machines:wind_turbine_blade", "default:wood", "elepower_machines:wind_turbine_blade"},
{"elepower_machines:wind_turbine_blade", "elepower_machines:wind_turbine_blade", "elepower_machines:wind_turbine_blade"},
}
})
-- Nodes
-- Coal-fired Alloy Furnace
minetest.register_craft({
output = "elepower_machines:coal_alloy_furnace",
recipe = {
{"default:brick", "default:brick", "default:brick"},
{"default:furnace", "", "default:furnace"},
{"default:brick", "default:brick", "default:brick"},
}
})
-- Grindstone
minetest.register_craft({
output = "elepower_machines:grindstone",
recipe = {
{"group:stone", "group:stone", "group:stone"},
{"default:flint", "default:flint", "default:flint"},
{"default:cobble", "default:cobble", "default:cobble"},
}
})
minetest.register_craft({
output = "elepower_machines:crank",
recipe = {
{"group:stick", "group:stick", "group:stick"},
{"", "", "group:stick"},
{"", "", "group:stick"},
}
})
-- Machine block
minetest.register_craft({
output = "elepower_machines:machine_block",
recipe = {
{"default:steel_ingot", "default:glass", "default:steel_ingot"},
{"default:glass", "elepower_dynamics:brass_gear", "default:glass"},
{"default:steel_ingot", "basic_materials:motor", "default:steel_ingot"},
}
})
-- Generator
minetest.register_craft({
output = "elepower_machines:generator",
recipe = {
{"", "default:steel_ingot", ""},
{"default:steel_ingot", "elepower_machines:machine_block", "default:steel_ingot"},
{"elepower_dynamics:wound_copper_coil", "default:furnace", "elepower_dynamics:wound_copper_coil"}
}
})
-- Liquid Fuel Combustion Generator
minetest.register_craft({
output = "elepower_machines:fuel_burner",
recipe = {
{"elepower_dynamics:wound_copper_coil", "elepower_dynamics:integrated_circuit", "elepower_dynamics:wound_copper_coil"},
{"default:brick", "elepower_dynamics:portable_tank", "default:brick"},
{"elepower_dynamics:servo_valve", "elepower_machines:generator", "elepower_dynamics:servo_valve"},
}
})
-- Alloy Furnace
minetest.register_craft({
output = "elepower_machines:alloy_furnace",
recipe = {
{"", "elepower_dynamics:integrated_circuit", ""},
{"default:brick", "elepower_machines:machine_block", "default:brick"},
{
"elepower_dynamics:wound_copper_coil",
"elepower_machines:coal_alloy_furnace",
"elepower_dynamics:wound_copper_coil"
},
}
})
-- Solderer
minetest.register_craft({
output = "elepower_machines:solderer",
recipe = {
{"", "elepower_dynamics:integrated_circuit", ""},
{"elepower_dynamics:chip", "elepower_machines:machine_block", "elepower_dynamics:chip"},
{
"elepower_dynamics:invar_gear",
"elepower_dynamics:wound_copper_coil",
"elepower_dynamics:invar_gear"
},
}
})
-- Furnace
minetest.register_craft({
output = "elepower_machines:furnace",
recipe = {
{"", "elepower_dynamics:integrated_circuit", ""},
{"default:clay_brick", "elepower_machines:machine_block", "default:clay_brick"},
{"elepower_dynamics:wound_copper_coil", "default:furnace", "elepower_dynamics:wound_copper_coil"},
}
})
-- Pulverizer
minetest.register_craft({
output = "elepower_machines:pulverizer",
recipe = {
{"", "elepower_dynamics:integrated_circuit", ""},
{"default:flint", "elepower_machines:machine_block", "default:flint"},
{"elepower_dynamics:wound_copper_coil", "elepower_dynamics:lead_gear", "elepower_dynamics:wound_copper_coil"},
}
})
-- Sawmill
minetest.register_craft({
output = "elepower_machines:sawmill",
recipe = {
{"", "elepower_dynamics:integrated_circuit", ""},
{"elepower_dynamics:steel_gear", "elepower_machines:machine_block", "elepower_dynamics:steel_gear"},
{"elepower_dynamics:lead_ingot", "elepower_dynamics:diamond_gear", "elepower_dynamics:lead_ingot"},
}
})
-- Power Cell
minetest.register_craft({
output = "elepower_machines:power_cell_0",
recipe = {
{"elepower_dynamics:lead_ingot", "elepower_dynamics:control_circuit", "elepower_dynamics:lead_ingot"},
{"elepower_dynamics:wound_copper_coil", "elepower_machines:machine_block", "elepower_dynamics:wound_copper_coil"},
{"elepower_dynamics:lead_ingot", "elepower_dynamics:battery", "elepower_dynamics:lead_ingot"},
}
})
-- Water Accumulator
minetest.register_craft({
output = "elepower_machines:accumulator",
recipe = {
{"", "fluid_transfer:fluid_duct", ""},
{"default:glass", "elepower_machines:machine_block", "default:glass"},
{"elepower_dynamics:steel_gear", "elepower_dynamics:servo_valve", "elepower_dynamics:steel_gear"},
}
})
-- Lava Cooler
minetest.register_craft({
output = "elepower_machines:lava_cooler",
recipe = {
{"bucket:bucket_water", "elepower_dynamics:control_circuit", "bucket:bucket_lava"},
{"fluid_transfer:fluid_duct", "elepower_machines:machine_block", "fluid_transfer:fluid_duct"},
{"elepower_dynamics:servo_valve", "elepower_dynamics:tin_gear", "elepower_dynamics:servo_valve"},
},
replacements = {
{"bucket:bucket_water", "bucket:bucket_empty"},
{"bucket:bucket_lava", "bucket:bucket_empty"},
}
})
-- Lava Generator
minetest.register_craft({
output = "elepower_machines:lava_generator",
recipe = {
{"elepower_dynamics:wound_silver_coil", "elepower_dynamics:control_circuit", "elepower_dynamics:wound_silver_coil"},
{"default:brick", "elepower_machines:machine_block", "default:brick"},
{"elepower_dynamics:invar_gear", "elepower_dynamics:servo_valve", "elepower_dynamics:invar_gear"},
},
})
-- Compressor Piston
minetest.register_craft({
output = "elepower_machines:compressor_piston",
recipe = {
{"", "default:steel_ingot", ""},
{"", "default:steel_ingot", ""},
{"default:bronze_ingot", "default:bronze_ingot", "default:bronze_ingot"},
}
})
minetest.register_craft({
output = "elepower_machines:compressor_piston",
recipe = {
{"", "default:steel_ingot", ""},
{"", "default:steel_ingot", ""},
{"", "elepower_dynamics:bronze_plate", ""},
}
})
-- Compressor
minetest.register_craft({
output = "elepower_machines:compressor",
recipe = {
{"elepower_dynamics:integrated_circuit", "elepower_machines:compressor_piston", "elepower_dynamics:wound_copper_coil"},
{"elepower_dynamics:steel_gear", "elepower_machines:machine_block", "elepower_dynamics:steel_gear"},
{"default:steel_ingot", "elepower_machines:compressor_piston", "default:steel_ingot"},
}
})
-- Turbine blades
minetest.register_craft({
output = "elepower_machines:turbine_blades",
recipe = {
{"elepower_dynamics:steel_plate", "elepower_dynamics:steel_plate", "elepower_dynamics:steel_plate"},
{"elepower_dynamics:steel_plate", "default:steel_ingot", "elepower_dynamics:steel_plate"},
{"elepower_dynamics:steel_plate", "elepower_dynamics:steel_plate", "elepower_dynamics:steel_plate"},
}
})
-- Steam Turbine
minetest.register_craft({
output = "elepower_machines:steam_turbine",
recipe = {
{"elepower_dynamics:induction_coil", "elepower_machines:turbine_blades", "elepower_dynamics:induction_coil"},
{"elepower_dynamics:steel_plate", "elepower_machines:machine_block", "elepower_dynamics:steel_plate"},
{"elepower_dynamics:invar_gear", "elepower_machines:turbine_blades", "elepower_dynamics:invar_gear"},
}
})
-- Canning Machine
minetest.register_craft({
output = "elepower_machines:canning_machine",
recipe = {
{"elepower_dynamics:wound_copper_coil", "elepower_machines:compressor_piston", "elepower_dynamics:wound_copper_coil"},
{"elepower_dynamics:tin_can", "elepower_machines:machine_block", "elepower_dynamics:tin_can"},
{"elepower_dynamics:steel_gear", "elepower_dynamics:tin_gear", "elepower_dynamics:steel_gear"},
}
})
-- Bucketer
minetest.register_craft({
output = "elepower_machines:bucketer",
recipe = {
{"", "elepower_dynamics:portable_tank", ""},
{"elepower_dynamics:tin_can", "elepower_machines:machine_block", "elepower_dynamics:tin_can"},
{"elepower_dynamics:servo_valve", "elepower_dynamics:tin_gear", "elepower_dynamics:servo_valve"},
}
})
-- Electrolyzer
minetest.register_craft({
output = "elepower_machines:electrolyzer",
recipe = {
{"elepower_dynamics:copper_plate", "elepower_dynamics:integrated_circuit", "elepower_dynamics:zinc_plate"},
{"bucket:bucket_empty", "elepower_machines:machine_block", "elepower_dynamics:gas_container"},
{"elepower_dynamics:servo_valve", "elepower_dynamics:wound_copper_coil", "elepower_dynamics:servo_valve"},
}
})
-- Advanced Machine Block
minetest.register_craft({
output = "elepower_machines:advanced_machine_block 4",
recipe = {
{"elepower_dynamics:electrum_plate", "elepower_dynamics:induction_coil_advanced", "elepower_dynamics:electrum_plate"},
{"elepower_dynamics:brass_plate", "elepower_machines:heat_casing", "elepower_dynamics:brass_plate"},
{"elepower_dynamics:electrum_plate", "elepower_dynamics:induction_coil_advanced", "elepower_dynamics:electrum_plate"},
}
})
-- Pump
minetest.register_craft({
output = "elepower_machines:pump",
recipe = {
{"elepower_dynamics:lead_gear", "elepower_dynamics:integrated_circuit", "elepower_dynamics:lead_gear"},
{"bucket:bucket_empty", "elepower_machines:machine_block", "bucket:bucket_empty"},
{"elepower_dynamics:electrum_plate", "elepower_machines:opaque_duct_roll", "elepower_dynamics:electrum_plate"},
}
})
-- Wind Turbine
minetest.register_craft({
output = "elepower_machines:wind_turbine",
recipe = {
{"elepower_dynamics:wound_copper_coil", "elepower_machines:turbine_blades", "elepower_dynamics:wound_copper_coil"},
{"elepower_dynamics:steel_plate", "elepower_machines:machine_block", "elepower_dynamics:steel_plate"},
{"elepower_dynamics:invar_gear", "elepower_dynamics:steel_plate", "elepower_dynamics:invar_gear"},
}
})
-- Evaporizer
minetest.register_craft({
output = "elepower_machines:evaporator",
recipe = {
{"elepower_dynamics:steel_plate", "default:steelblock", "elepower_dynamics:steel_plate"},
{"elepower_dynamics:steel_plate", "elepower_machines:machine_block", "elepower_dynamics:steel_plate"},
{"elepower_dynamics:induction_coil", "elepower_dynamics:zinc_plate", "elepower_dynamics:induction_coil"},
}
})
-- PCB Plant
minetest.register_craft({
output = "elepower_machines:pcb_plant",
recipe = {
{"", "elepower_dynamics:integrated_circuit", ""},
{"elepower_dynamics:chip", "elepower_machines:machine_block", "elepower_dynamics:chip"},
{"elepower_dynamics:servo_valve", "elepower_dynamics:uv_bulb", "elepower_dynamics:bronze_gear"},
}
})