here, if you wanna make Don the Dredger
Code: Select all
--[[
-------------------------------------------------------
-------------- water levelling ---------------------------
---------------------------------------------------------------
minetest.register_abm({
nodenames = {"multinode:pump"},
interval = 20,
chance = 1,
action = function(pos, node, _, _)
local nodes = {{x=pos.x,y=pos.y+1,z=pos.z}, {x=pos.x+1,y=pos.y,z=pos.z}, {x=pos.x-1,y=pos.y,z=pos.z}, {x=pos.x,y=pos.y,z=pos.z+1}, {x=pos.x,y=pos.y,z=pos.z+1}}
for i,po in pairs(nodes) do
local node = minetest.env:get_node(po)
if node.name == 'riventest:water_source' or node.name == 'riventest:water_flowing' or node.name == 'default:water_source' or node.name == 'default:water_flowing' then
minetest.env:add_node(po,{type="node",name='multinode:pump'})
end
end
end,
})
minetest.register_abm({
nodenames = {"multinode:pump"},
interval = 45,
chance = 1,
action = function(pos, node, _, _)
local nodes = {{x=pos.x,y=pos.y+1,z=pos.z}, {x=pos.x+1,y=pos.y,z=pos.z}, {x=pos.x-1,y=pos.y,z=pos.z}, {x=pos.x,y=pos.y,z=pos.z+1}, {x=pos.x,y=pos.y,z=pos.z+1}}
local found_something = false
for i,po in pairs(nodes) do
local node = minetest.env:get_node(po)
if node.name == 'riventest:water_source' or node.name == 'riventest:water_flowing' or node.name == 'default:water_source' or node.name == 'default:water_flowing' then
found_something = true end
end
if found_something == false then minetest.env:remove_node(pos) end
end,
})
minetest.register_node("multinode:pump", {
description = "pump",
tile_images = {"default_cobble.png"},
inventory_image = "default_cobble.png",
wield_image = "default_cobble.png",
paramtype = "light",
groups = {choppy=2,dig_immediate=2},
sounds = default.node_sound_defaults(),
})]]--
basically this node replaces all the water next to and over itself (not below) with copies of itself, which then disappear when it no longer detects water on any of its sides.