diff --git a/technic/config.lua b/technic/config.lua index bb748ec..34ed193 100644 --- a/technic/config.lua +++ b/technic/config.lua @@ -13,6 +13,7 @@ local defaults = { enable_entity_radiation_damage = "true", enable_longterm_radiation_damage = "true", enable_nuclear_reactor_digiline_selfdestruct = "false", + creative_mode = "false", } for k, v in pairs(defaults) do diff --git a/technic/machines/creative.lua b/technic/machines/creative.lua new file mode 100644 index 0000000..39abe74 --- /dev/null +++ b/technic/machines/creative.lua @@ -0,0 +1,41 @@ +local S = technic.getter + +minetest.register_abm({ + nodenames = {"group:technic_lv", "group:technic_mv", "group:technic_hv"}, + label = "Run Machines", + interval = 1, + chance = 1, + action = function(pos,node) + local meta = minetest.get_meta(pos) + local pos1 = {x=pos.x, y=pos.y-1, z=pos.z} + local tier = technic.get_cable_tier(minetest.get_node(pos1).name) + local meta = minetest.get_meta(pos) + if not tier then + meta:set_int("active", 0) + return + end + meta:set_int("active", 1) + meta:set_int("LV_EU_input", meta:get_int("LV_EU_demand")) + meta:set_int("MV_EU_input", meta:get_int("MV_EU_demand")) + meta:set_int("HV_EU_input", meta:get_int("HV_EU_demand")) + local nodedef = minetest.registered_nodes[node.name] + if nodedef and nodedef.technic_run then + nodedef.technic_run(pos, node) + end + end, +}) + +minetest.register_lbm({ + nodenames = {"technic:switching_station", "technic:power_monitor"}, + name = "technic:update_infotext", + label = "Update switching station / power monitor infotext", + run_at_every_load = true, + action = function(pos, node) + local meta = minetest.get_meta(pos) + if node.name == "technic:switching_station" then + meta:set_string("infotext", S("Switching Station")) + elseif node.name == "technic:power_monitor" then + meta:set_string("infotext", S("Power Monitor")) + end + end, +}) diff --git a/technic/machines/init.lua b/technic/machines/init.lua index f2e31c9..00ea158 100644 --- a/technic/machines/init.lua +++ b/technic/machines/init.lua @@ -13,3 +13,8 @@ dofile(path.."/supply_converter.lua") dofile(path.."/other/init.lua") +if technic.config:get_bool("creative_mode") then + --The switching station does not handle running machines + --in this mode, so alternative means are used to do so. + dofile(path.."/creative.lua") +end diff --git a/technic/machines/power_monitor.lua b/technic/machines/power_monitor.lua index 7e8b850..0d709da 100644 --- a/technic/machines/power_monitor.lua +++ b/technic/machines/power_monitor.lua @@ -35,6 +35,12 @@ minetest.register_node("technic:power_monitor",{ end, }) +if technic.config:get_bool("creative_mode") then + --Power distribution is not used in this mode, + --so the power monitor is inert and never needs to run. + return +end + minetest.register_abm({ nodenames = {"technic:power_monitor"}, label = "Machines: run power monitor", diff --git a/technic/machines/switching_station.lua b/technic/machines/switching_station.lua index d645847..70765bf 100644 --- a/technic/machines/switching_station.lua +++ b/technic/machines/switching_station.lua @@ -88,6 +88,13 @@ minetest.register_node("technic:switching_station",{ }, }) +if technic.config:get_bool("creative_mode") then + --Power distribution is not used in this mode, + --so the switching station is inert and none of the + --network processing is needed. + return +end + -------------------------------------------------- -- Functions to traverse the electrical network --------------------------------------------------