diff --git a/default_settings.lua b/default_settings.lua index c211153..7d8bfd9 100644 --- a/default_settings.lua +++ b/default_settings.lua @@ -29,16 +29,22 @@ local settings = { delete_item_on_clearobject = true, } +pipeworks.toggles = {} -- documentation for toggles controlling pressure logic features. -- do not edit this file directly; -- instead, create pipeworks_settings.txt in your world directory, --- and copy the uncommented lines from the block comment below into it. +-- and copy the uncommented lines from the block comments below into it. +--[[ +-- flow logic implementation. +-- set to one of the following strings. +-- "classic": classic mode written by VanessaE +-- "pressure": pressure metadata based, written by thetaepsilon. +-- has caveats such as water speed issues though. +-- setting to nil inhibits all flow logic, useful for debugging ABM crashes, +-- or for rendering the pipes purely decorative. +]] +pipeworks.toggles.pipe_mode = "classic" --[[ --- enable pressure logic mode instead of "classic" mode. --- WARNING: this changes a few things, most noticeably how pumps work. --- you'll want to make sure they're fed by an infinite spring. -pipeworks.toggles.pressure_logic = true - -- force-enable finite water handling mode. -- this changes the way that water node placement is handled; -- volume will always be preserved, diff --git a/init.lua b/init.lua index 9ce6a0f..e908bcc 100644 --- a/init.lua +++ b/init.lua @@ -15,17 +15,13 @@ pipeworks.modpath = minetest.get_modpath("pipeworks") dofile(pipeworks.modpath.."/default_settings.lua") -- Read the external config file if it exists. - - --- please add any new feature toggles to be a flag in this table... -pipeworks.toggles = {} local worldsettingspath = pipeworks.worldpath.."/pipeworks_settings.txt" local worldsettingsfile = io.open(worldsettingspath, "r") if worldsettingsfile then worldsettingsfile:close() dofile(worldsettingspath) end -if pipeworks.toggles.pressure_logic then +if pipeworks.toggles.pipe_mode == "pressure" then minetest.log("warning", "pipeworks pressure logic mode comes with caveats and differences in behaviour, you have been warned!") end diff --git a/pipes.lua b/pipes.lua index 2acdfa9..602daab 100644 --- a/pipes.lua +++ b/pipes.lua @@ -213,7 +213,7 @@ pipeworks.pipes_empty_nodenames = pipes_empty_nodenames -if not pipeworks.toggles.pressure_logic then +if pipeworks.toggles.pipe_mode == "classic" then diff --git a/pressure_logic/abm_register.lua b/pressure_logic/abm_register.lua index a8e3abc..4019eef 100644 --- a/pressure_logic/abm_register.lua +++ b/pressure_logic/abm_register.lua @@ -10,7 +10,7 @@ local flowlogic = pipeworks.flowlogic -- see flowlogic.run() in abms.lua. local register_flowlogic_abm = function(nodename) - if pipeworks.toggles.pressure_logic then + if pipeworks.toggles.pipe_mode == "pressure" then minetest.register_abm({ label = "pipeworks new_flow_logic run", nodenames = { nodename }, diff --git a/pressure_logic/flowable_node_registry_install.lua b/pressure_logic/flowable_node_registry_install.lua index 9bb9e9a..5cf1941 100644 --- a/pressure_logic/flowable_node_registry_install.lua +++ b/pressure_logic/flowable_node_registry_install.lua @@ -20,14 +20,14 @@ local insertbase = function(nodename) if checkexists(nodename) then error("pipeworks.flowables duplicate registration!") end pipeworks.flowables.list.all[nodename] = true -- table.insert(pipeworks.flowables.list.nodenames, nodename) - if pipeworks.toggles.pressure_logic then + if pipeworks.toggles.pipe_mode == "pressure" then abmregister.flowlogic(nodename) end end local regwarning = function(kind, nodename) local tail = "" - if not pipeworks.toggles.pressure_logic then tail = " but pressure logic not enabled" end + if pipeworks.toggles.pipe_mode ~= "pressure" then tail = " but pressure logic not enabled" end --pipeworks.logger(kind.." flow logic registry requested for "..nodename..tail) end