46cd8b111d
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.
431 lines
14 KiB
Lua
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
|