techage/init.lua
Eternal-Study 46cd8b111d
Water to Salt + River Water Recipe
This pull requests adds a Water to River Water reactor recipe. If it detects a farming:salt node (as found in the Farming Redo mod) then it adds salt to the powder group, allowing it to be stored in silos, and changes the recipe to Water → Salt with River Water as a waste product.

It should be noted that issue [insert issue number here] must be resolved to implement this pull request, as otherwise nodes cannot be loaded into the silo, even if they are in the powder group. This pull request was tested with pull request [insert pull request number] implemented. Using another solution to issue [insert issue number here] may require updates to the pull request.

I release this code under the terms of AGPL v3, and transfer copyright to Joachim Stolberg.
2024-06-29 20:28:22 -04:00

431 lines
14 KiB
Lua

--[[
TechAge
=======
Copyright (C) 2019-2024 Joachim Stolberg
AGPL v3
See LICENSE.txt for more information
]]--
techage = {}
-- Version for compatibility checks, see readme.md/history
techage.version = 1.18
if minetest.global_exists("tubelib") then
minetest.log("error", "[techage] Techage can't be used together with the mod tubelib!")
return
elseif minetest.global_exists("ironage") then
minetest.log("error", "[techage] Techage can't be used together with the mod ironage!")
return
elseif minetest.global_exists("techpack") then
minetest.log("error", "[techage] Techage can't be used together with the modpack techpack!")
return
elseif minetest.global_exists("tubelib2") and tubelib2.version < 2.2 then
minetest.log("error", "[techage] Techage requires tubelib2 version 2.2 or newer!")
return
elseif minetest.global_exists("minecart") and minecart.version < 2.04 then
minetest.log("error", "[techage] Techage requires minecart version 2.04 or newer!")
return
elseif minetest.global_exists("lcdlib") and lcdlib.version < 1.03 then
minetest.log("error", "[techage] Techage requires lcdlib version 1.03 or newer!")
return
elseif minetest.global_exists("safer_lua") and safer_lua.version < 1.01 then
minetest.log("error", "[techage] Techage requires safer_lua version 1.01 or newer!")
return
elseif minetest.global_exists("networks") and networks.version < 0.13 then
minetest.log("error", "[techage] Techage requires networks version 0.13 or newer!")
return
elseif minetest.global_exists("hyperloop") and hyperloop.version < 2.07 then
minetest.log("error", "[techage] Techage requires hyperloop version 2.07 or newer!")
return
end
-- Test MT 5.4 new string mode
techage.CLIP = minetest.features.use_texture_alpha_string_modes and "clip" or false
techage.BLEND = minetest.features.use_texture_alpha_string_modes and "blend" or true
techage.NodeDef = {} -- node registration info
techage.max_num_forceload_blocks = tonumber(minetest.settings:get("techage_max_num_forceload_blocks")) or 24
techage.ore_rarity = tonumber(minetest.settings:get("techage_ore_rarity")) or 1
techage.modified_recipes_enabled = minetest.settings:get_bool("techage_modified_recipes_enabled") ~= false
techage.collider_min_depth = tonumber(minetest.settings:get("techage_collider_min_depth")) or -28
techage.recipe_checker_enabled = minetest.settings:get_bool("techage_recipe_checker_enabled") ~= false
techage.stair_aliases_enabled = minetest.settings:get_bool("techage_stair_aliases_enabled") ~= false
-- allow to load marshal and sqlite3
techage.IE = minetest.request_insecure_environment()
-- Load support for I18n.
techage.S = minetest.get_translator("techage")
-- Load mod storage
techage.storage = minetest.get_mod_storage()
-- Ensure compatibility with older Minetest versions by providing
-- a dummy implementation of `minetest.get_translated_string`.
if not minetest.get_translated_string then
minetest.get_translated_string = function(lang_code, string)
return string
end
end
-- Basis features
local MP = minetest.get_modpath("techage")
dofile(MP.."/basis/lib.lua") -- helper functions
dofile(MP.."/basis/counting.lua") -- command counting
dofile(MP.."/basis/fake_player.lua") -- dummy player object
dofile(MP.."/basis/node_store.lua")
dofile(MP.."/basis/gravel_lib.lua") -- ore probability
dofile(MP.."/basis/node_states.lua") -- state model
dofile(MP.."/basis/tubes.lua") -- tubes for item transport
dofile(MP.."/basis/tubes_ta4.lua") -- TA4 tubes for item transport
dofile(MP.."/basis/tube_wall_entry.lua")
dofile(MP.."/basis/command.lua") -- command API
dofile(MP.."/basis/firebox_lib.lua") -- common firebox functions
dofile(MP.."/basis/boiler_lib.lua") -- common boiler functions
dofile(MP.."/basis/liquid_lib.lua") -- common liquids functions
dofile(MP.."/basis/fuel_lib.lua") -- common fuel functions
dofile(MP.."/basis/mark.lua")
dofile(MP.."/basis/mark2.lua")
dofile(MP.."/basis/assemble.lua")
dofile(MP.."/basis/recipe_lib.lua")
dofile(MP.."/basis/formspec_update.lua")
dofile(MP.."/basis/windturbine_lib.lua")
dofile(MP.."/basis/laser_lib.lua")
dofile(MP.."/basis/legacy.lua")
dofile(MP.."/basis/hyperloop.lua")
dofile(MP.."/basis/oggfiles.lua")
dofile(MP.."/basis/submenu.lua")
dofile(MP.."/basis/shared_inv.lua")
dofile(MP.."/basis/shared_tank.lua")
dofile(MP.."/basis/teleport.lua")
dofile(MP.."/basis/fly_lib.lua")
dofile(MP.."/basis/pack_lib.lua")
-- Main doc
dofile(MP.."/doc/guide.lua")
dofile(MP.."/doc/plans.lua")
dofile(MP.."/doc/items.lua")
dofile(MP.."/items/filling.lua")
-- Power networks
dofile(MP.."/power/formspecs.lua")
dofile(MP.."/power/drive_axle.lua")
dofile(MP.."/power/gearbox.lua")
dofile(MP.."/power/steam_pipe.lua")
dofile(MP.."/power/electric_cable.lua")
dofile(MP.."/power/junctionbox.lua")
dofile(MP.."/power/power_terminal.lua")
dofile(MP.."/power/power_terminal2.lua")
dofile(MP.."/power/powerswitchbox_legacy.lua")
dofile(MP.."/power/powerswitchbox.lua")
dofile(MP.."/power/powerswitch.lua")
dofile(MP.."/power/protection.lua")
dofile(MP.."/power/power_line.lua")
dofile(MP.."/power/ta4_cable.lua")
dofile(MP.."/power/ta4_cable_wall_entry.lua")
-- Iron Age
dofile(MP.."/iron_age/main.lua")
dofile(MP.."/iron_age/gravelsieve.lua")
dofile(MP.."/iron_age/hopper.lua")
dofile(MP.."/iron_age/hammer.lua")
dofile(MP.."/iron_age/lighter.lua")
dofile(MP.."/iron_age/charcoalpile.lua")
dofile(MP.."/iron_age/coalburner.lua")
dofile(MP.."/iron_age/meltingpot.lua")
if techage.modified_recipes_enabled then
dofile(MP.."/iron_age/tools.lua")
end
-- TA1 Watermill
dofile(MP.."/ta1_watermill/ta1_axle.lua")
dofile(MP.."/ta1_watermill/watermill.lua")
dofile(MP.."/ta1_watermill/sluice.lua")
dofile(MP.."/ta1_watermill/millboard.lua")
dofile(MP.."/ta1_watermill/mill.lua")
dofile(MP.."/iron_age/recipes.lua")
if minetest.global_exists("wielded_light") or minetest.global_exists("illumination") then
dofile(MP.."/iron_age/meridium.lua")
end
-- Steam Engine
dofile(MP.."/steam_engine/firebox.lua")
dofile(MP.."/steam_engine/boiler.lua")
dofile(MP.."/steam_engine/cylinder.lua")
dofile(MP.."/steam_engine/flywheel.lua")
-- TA2 gravity-based energy storage
dofile(MP.."/ta2_energy_storage/ta2_rope.lua")
dofile(MP.."/ta2_energy_storage/ta2_winch.lua")
dofile(MP.."/ta2_energy_storage/ta2_weight_chest.lua")
dofile(MP.."/ta2_energy_storage/ta2_clutch.lua")
-- Liquids I
dofile(MP.."/liquids/liquid_pipe.lua")
dofile(MP.."/liquids/valve.lua")
dofile(MP.."/liquids/pipe_wall_entry.lua")
dofile(MP.."/fusion_reactor/gas_pipe.lua")
-- Basic Machines
dofile(MP.."/basic_machines/consumer.lua") -- consumer base model
dofile(MP.."/basic_machines/source.lua")
dofile(MP.."/basic_machines/pusher.lua")
dofile(MP.."/basic_machines/foreign_nodes.lua")
dofile(MP.."/basic_machines/mods_support.lua")
dofile(MP.."/basic_machines/grinder.lua")
dofile(MP.."/basic_machines/distributor.lua")
dofile(MP.."/basic_machines/gravelsieve.lua")
dofile(MP.."/basic_machines/gravelrinser.lua")
dofile(MP.."/basic_machines/chest.lua")
dofile(MP.."/basic_machines/autocrafter.lua")
dofile(MP.."/basic_machines/electronic_fab.lua")
dofile(MP.."/basic_machines/liquidsampler.lua")
dofile(MP.."/basic_machines/quarry.lua")
dofile(MP.."/basic_machines/ta4_chest.lua")
dofile(MP.."/basic_machines/ta4_injector.lua")
dofile(MP.."/basic_machines/itemsource.lua")
dofile(MP.."/basic_machines/recycler.lua")
dofile(MP.."/basic_machines/concentrator.lua")
dofile(MP.."/basic_machines/recipeblock.lua")
dofile(MP.."/basic_machines/ta5_chest.lua")
-- Liquids II
dofile(MP.."/liquids/tank.lua")
dofile(MP.."/liquids/filler.lua")
dofile(MP.."/liquids/silo.lua")
dofile(MP.."/liquids/pump.lua")
dofile(MP.."/liquids/waterpump.lua")
dofile(MP.."/liquids/waterinlet.lua")
dofile(MP.."/liquids/ta5_tank.lua")
-- Coal power station
dofile(MP.."/coal_power_station/firebox.lua")
dofile(MP.."/coal_power_station/boiler_base.lua")
dofile(MP.."/coal_power_station/boiler_top.lua")
dofile(MP.."/coal_power_station/generator.lua")
dofile(MP.."/coal_power_station/turbine.lua")
dofile(MP.."/coal_power_station/cooler.lua")
dofile(MP.."/coal_power_station/oilfirebox.lua")
-- Industrial Furnace
dofile(MP.."/furnace/firebox.lua")
dofile(MP.."/furnace/cooking.lua")
dofile(MP.."/furnace/furnace_top.lua")
dofile(MP.."/furnace/booster.lua")
dofile(MP.."/furnace/heater.lua")
dofile(MP.."/furnace/recipes.lua")
-- Tools
dofile(MP.."/tools/trowel.lua")
dofile(MP.."/tools/end_wrench.lua")
dofile(MP.."/tools/assembly_tool.lua")
dofile(MP.."/tools/pipe_wrench.lua")
dofile(MP.."/basic_machines/blackhole.lua")
dofile(MP.."/basic_machines/forceload.lua")
dofile(MP.."/tools/screwdriver.lua")
-- Lamps
dofile(MP.."/lamps/lib.lua")
dofile(MP.."/lamps/lightblock.lua")
dofile(MP.."/lamps/simplelamp.lua")
dofile(MP.."/lamps/streetlamp.lua")
dofile(MP.."/lamps/streetlamp2.lua")
dofile(MP.."/lamps/ceilinglamp.lua")
dofile(MP.."/lamps/industriallamp1.lua")
dofile(MP.."/lamps/industriallamp2.lua")
dofile(MP.."/lamps/industriallamp3.lua")
dofile(MP.."/lamps/industriallamp4.lua")
dofile(MP.."/lamps/growlight.lua")
dofile(MP.."/lamps/lampholder.lua")
-- Oil
dofile(MP.."/oil/explore.lua")
dofile(MP.."/oil/tower.lua")
dofile(MP.."/oil/drillbox.lua")
dofile(MP.."/oil/pumpjack.lua")
dofile(MP.."/oil/distiller.lua")
dofile(MP.."/oil/reboiler.lua")
-- dofile(MP.."/oil/gasflare.lua")
-- TA3 power based
dofile(MP.."/ta3_power/tiny_generator.lua")
dofile(MP.."/ta3_power/akkubox.lua")
dofile(MP.."/ta3_power/axle2power.lua")
dofile(MP.."/ta3_power/power2axle.lua")
-- TA4 power based
dofile(MP.."/ta4_power/laser.lua")
dofile(MP.."/ta4_power/transformer.lua")
dofile(MP.."/ta4_power/electricmeter.lua")
-- Digtron
if minetest.global_exists("digtron") then
dofile(MP.."/digtron/battery.lua")
end
-- Logic
dofile(MP.."/logic/lib.lua")
dofile(MP.."/logic/terminal.lua")
dofile(MP.."/logic/button.lua")
dofile(MP.."/logic/detector.lua")
dofile(MP.."/logic/repeater.lua")
dofile(MP.."/logic/programmer.lua")
dofile(MP.."/logic/signallamp.lua")
dofile(MP.."/logic/sequencer.lua")
dofile(MP.."/logic/sequencer2.lua")
dofile(MP.."/logic/timer.lua")
dofile(MP.."/logic/lua_logic.lua") -- old
dofile(MP.."/logic/logic_block.lua") -- new
dofile(MP.."/logic/node_detector.lua")
dofile(MP.."/logic/light_detector.lua")
dofile(MP.."/logic/player_detector.lua")
dofile(MP.."/logic/gaze_sensor.lua")
dofile(MP.."/logic/command_converter.lua")
dofile(MP.."/logic/flipflop.lua")
dofile(MP.."/logic/mba_detector.lua")
dofile(MP.."/logic/cart_detector.lua")
dofile(MP.."/logic/charge_detector.lua")
dofile(MP.."/logic/collector.lua")
dofile(MP.."/logic/button_2x.lua")
dofile(MP.."/logic/button_4x.lua")
dofile(MP.."/logic/signallamp_2x.lua")
dofile(MP.."/logic/signallamp_4x.lua")
if minetest.global_exists("mesecon") then
dofile(MP.."/logic/mesecons_converter.lua")
end
-- move_controller
dofile(MP.."/move_controller/gateblock.lua")
dofile(MP.."/move_controller/doorblock.lua")
dofile(MP.."/move_controller/doorcontroller.lua") -- old
dofile(MP.."/move_controller/doorcontroller2.lua") -- new
dofile(MP.."/move_controller/movecontroller.lua")
dofile(MP.."/move_controller/turncontroller.lua")
dofile(MP.."/move_controller/flycontroller.lua")
dofile(MP.."/move_controller/soundblock.lua")
-- Test
if techage.recipe_checker_enabled then
dofile(MP.."/recipe_checker.lua")
end
dofile(MP.."/.test/sink.lua")
dofile(MP.."/.test/testblock.lua")
-- Solar
dofile(MP.."/solar/minicell.lua")
dofile(MP.."/solar/solarcell.lua")
dofile(MP.."/solar/inverter.lua")
-- Wind
dofile(MP.."/wind_turbine/rotor.lua")
dofile(MP.."/wind_turbine/pillar.lua")
dofile(MP.."/wind_turbine/signallamp.lua")
-- TA4 Energy Storage
dofile(MP.."/energy_storage/heatexchanger3.lua")
dofile(MP.."/energy_storage/heatexchanger2.lua")
dofile(MP.."/energy_storage/heatexchanger1.lua")
dofile(MP.."/energy_storage/generator.lua")
dofile(MP.."/energy_storage/turbine.lua")
dofile(MP.."/energy_storage/inlet.lua")
dofile(MP.."/energy_storage/nodes.lua")
-- Chemistry
dofile(MP.."/chemistry/ta4_reactor.lua")
dofile(MP.."/chemistry/ta4_stand.lua")
dofile(MP.."/chemistry/ta4_doser.lua")
dofile(MP.."/chemistry/ta4_liquid_filter.lua")
-- Hydrogen
dofile(MP.."/hydrogen/fuelcellstack.lua")
dofile(MP.."/hydrogen/electrolyzer.lua")
dofile(MP.."/hydrogen/fuelcell.lua")
-- ICTA Controller
dofile(MP.."/icta_controller/submenu.lua")
dofile(MP.."/icta_controller/condition.lua")
dofile(MP.."/icta_controller/action.lua")
dofile(MP.."/icta_controller/formspec.lua")
dofile(MP.."/icta_controller/controller.lua")
dofile(MP.."/icta_controller/commands.lua")
dofile(MP.."/icta_controller/edit.lua")
dofile(MP.."/icta_controller/battery.lua")
dofile(MP.."/icta_controller/display.lua")
dofile(MP.."/icta_controller/signaltower.lua")
-- Lua Controller
dofile(MP.."/lua_controller/controller.lua")
dofile(MP.."/lua_controller/commands.lua")
dofile(MP.."/lua_controller/server.lua")
dofile(MP.."/lua_controller/sensorchest.lua")
dofile(MP.."/lua_controller/terminal.lua")
-- Items
dofile(MP.."/items/registered_nodes.lua")
dofile(MP.."/items/barrel.lua")
dofile(MP.."/items/baborium.lua")
dofile(MP.."/items/usmium.lua")
dofile(MP.."/items/lye.lua")
dofile(MP.."/items/oil.lua")
dofile(MP.."/items/petroleum.lua")
dofile(MP.."/items/bauxit.lua")
dofile(MP.."/items/silicon.lua")
dofile(MP.."/items/steelmat.lua")
dofile(MP.."/items/aluminium.lua")
dofile(MP.."/items/powder.lua")
dofile(MP.."/items/epoxy.lua")
dofile(MP.."/items/plastic.lua")
dofile(MP.."/items/hydrogen.lua")
dofile(MP.."/items/electronic.lua")
dofile(MP.."/items/redstone.lua")
dofile(MP.."/items/cement.lua")
dofile(MP.."/items/cracking.lua")
dofile(MP.."/items/ceramic.lua")
dofile(MP.."/items/basalt.lua")
dofile(MP.."/items/moreblocks.lua")
dofile(MP.."/items/salt.lua")
-- Carts
dofile(MP.."/carts/tank_cart.lua")
dofile(MP.."/carts/chest_cart.lua")
-- TA4 Collider
dofile(MP.."/collider/vacuumtube.lua")
dofile(MP.."/collider/magnet.lua")
dofile(MP.."/collider/inlets.lua")
dofile(MP.."/collider/cooler.lua")
dofile(MP.."/collider/detector.lua")
dofile(MP.."/collider/worker.lua")
-- TA5 Teleport
dofile(MP.."/teleport/teleport_tube.lua")
dofile(MP.."/teleport/teleport_pipe.lua")
-- TA5 Fusion Reactor
dofile(MP.."/fusion_reactor/shell.lua")
dofile(MP.."/fusion_reactor/magnet.lua")
dofile(MP.."/fusion_reactor/controller.lua")
dofile(MP.."/fusion_reactor/heatexchanger3.lua")
dofile(MP.."/fusion_reactor/heatexchanger2.lua")
dofile(MP.."/fusion_reactor/heatexchanger1.lua")
dofile(MP.."/fusion_reactor/generator.lua")
dofile(MP.."/fusion_reactor/turbine.lua")
dofile(MP.."/fusion_reactor/ta5_pump.lua")
-- Beduino extensions
dofile(MP.."/beduino/kv_store.lua")
-- Prevent other mods from using IE
techage.IE = nil