summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--flowing_logic.lua16
-rw-r--r--register_flow_logic.lua21
2 files changed, 35 insertions, 2 deletions
diff --git a/flowing_logic.lua b/flowing_logic.lua
index 62d75ab..50a4c99 100644
--- a/flowing_logic.lua
+++ b/flowing_logic.lua
@@ -234,3 +234,19 @@ pipeworks.run_pump_intake = function(pos, node)
-- debuglog("oldpressure "..currentpressure.." intake_limit "..intake_limit.." actual_intake "..actual_intake.." newpressure "..newpressure)
meta:set_float(label_pressure, newpressure)
end
+
+
+
+pipeworks.run_spigot_output = function(pos, node)
+ -- try to output a water source node if there's enough pressure and space below.
+ local meta = minetest.get_meta(pos)
+ local currentpressure = meta:get_float(label_pressure)
+ if currentpressure > 1 then
+ local below = {x=pos.x, y=pos.y-1, z=pos.z}
+ local name = minetest.get_node(below).name
+ if (name == "air") or (name == "default:water_flowing") then
+ minetest.set_node(below, {name="default:water_source"})
+ meta:set_float(label_pressure, currentpressure - 1)
+ end
+ end
+end
diff --git a/register_flow_logic.lua b/register_flow_logic.lua
index e027dae..c6fc46f 100644
--- a/register_flow_logic.lua
+++ b/register_flow_logic.lua
@@ -7,13 +7,20 @@ local pipes_empty_nodenames = pipeworks.pipes_empty_nodenames
-- FIXME: DRY principle, get this from elsewhere in the code
local pump_on = "pipeworks:pump_on"
local pump_off = "pipeworks:pump_off"
+local spigot_off = "pipeworks:spigot"
+local spigot_on = "pipeworks:spigot_pouring"
local pipes_all_nodenames = pipes_full_nodenames
for _, pipe in ipairs(pipes_empty_nodenames) do
table.insert(pipes_all_nodenames, pipe)
end
-table.insert(pipes_all_nodenames, pump_off)
-table.insert(pipes_all_nodenames, pump_on)
+
+if pipeworks.enable_pipe_devices then
+ table.insert(pipes_all_nodenames, pump_off)
+ table.insert(pipes_all_nodenames, pump_on)
+ table.insert(pipes_all_nodenames, spigot_on)
+ table.insert(pipes_all_nodenames, spigot_off)
+end
if pipeworks.enable_pipes then
@@ -37,4 +44,14 @@ if pipeworks.enable_pipe_devices then
pipeworks.run_pump_intake(pos, node)
end
})
+ -- output water from spigots
+ -- add both "on/off" spigots so one can be used to indicate a certain level of fluid.
+ minetest.register_abm({
+ nodenames = { spigot_on, spigot_off },
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ pipeworks.run_spigot_output(pos, node)
+ end
+ })
end