Add fountainhead (vertical spigot, basically).

This commit is contained in:
Vanessa Ezekowitz 2013-10-27 22:38:19 -04:00
parent a59e147013
commit 3d19cca557
5 changed files with 131 additions and 0 deletions

View File

@ -479,6 +479,12 @@ function pipes_scansurroundings(pos)
pym=1
end
-- ...fountainheads...
if (string.find(nyp.name, "pipeworks:fountainhead") ~= nil) then
pyp=1
end
-- ... and storage tanks.
if (string.find(nym.name, "pipeworks:storage_tank_") ~= nil) then

View File

@ -75,6 +75,28 @@ spigot_stream = {
entry_panel = {
{ -8/16, -8/16, -1/16, 8/16, 8/16, 1/16 }
}
fountainhead_model = {
{ -2/64, -32/64, -6/64, 2/64, 21/64, 6/64 }, -- main segment
{ -4/64, -32/64, -5/64, 4/64, 21/64, 5/64 },
{ -5/64, -32/64, -4/64, 5/64, 21/64, 4/64 },
{ -6/64, -32/64, -2/64, 6/64, 21/64, 2/64 },
{ -3/64, -32/64, -8/64, 3/64, -30/64, 8/64 }, -- bottom flange
{ -5/64, -32/64, -7/64, 5/64, -30/64, 7/64 },
{ -6/64, -32/64, -6/64, 6/64, -30/64, 6/64 },
{ -7/64, -32/64, -5/64, 7/64, -30/64, 5/64 },
{ -8/64, -32/64, -3/64, 8/64, -30/64, 3/64 },
{ -3/64, 20/64, -8/64, 3/64, 32/64, 8/64 }, -- top flange/outlet
{ -5/64, 20/64, -7/64, 5/64, 32/64, 7/64 },
{ -6/64, 20/64, -6/64, 6/64, 32/64, 6/64 },
{ -7/64, 20/64, -5/64, 7/64, 32/64, 5/64 },
{ -8/64, 20/64, -3/64, 8/64, 32/64, 3/64 }
}
-- Now define the nodes.
local states = { "on", "off" }
@ -652,6 +674,77 @@ for fill = 0, 10 do
})
end
-- fountainhead
minetest.register_node("pipeworks:fountainhead", {
description = "Fountainhead",
drawtype = "nodebox",
tiles = {
"pipeworks_fountainhead_top.png",
"pipeworks_pipe_end.png",
"pipeworks_plain.png",
},
sunlight_propagates = true,
paramtype = "light",
groups = {snappy=3, pipe=1},
sounds = default.node_sound_wood_defaults(),
walkable = true,
after_place_node = function(pos)
pipe_scanforobjects(pos)
end,
after_dig_node = function(pos)
pipe_scanforobjects(pos)
end,
on_construct = function(pos)
if mesecon then
mesecon:receptor_on(pos, rules)
end
end,
node_box = {
type = "fixed",
fixed = fountainhead_model ,
},
selection_box = {
type = "fixed",
fixed = { -2/16, -8/16, -2/16, 2/16, 8/16, 2/16 }
},
})
minetest.register_node("pipeworks:fountainhead_pouring", {
description = "Fountainhead",
drawtype = "nodebox",
tiles = {
"pipeworks_fountainhead_top.png",
"pipeworks_pipe_end.png",
"pipeworks_plain.png",
},
sunlight_propagates = true,
paramtype = "light",
groups = {snappy=3, pipe=1, not_in_creative_inventory=1},
sounds = default.node_sound_wood_defaults(),
walkable = true,
after_place_node = function(pos)
pipe_scanforobjects(pos)
end,
after_dig_node = function(pos)
pipe_scanforobjects(pos)
end,
on_construct = function(pos)
if mesecon then
mesecon:receptor_on(pos, rules)
end
end,
node_box = {
type = "fixed",
fixed = fountainhead_model,
},
selection_box = {
type = "fixed",
fixed = { -2/16, -8/16, -2/16, 2/16, 8/16, 2/16 },
},
drop = "pipeworks:fountainhead"
})
-- various actions
minetest.register_on_punchnode(function (pos, node)

View File

@ -97,3 +97,25 @@ pipeworks_spigot_check = function(pos, node)
end
end
pipeworks_fountainhead_check = function(pos, node)
local abovename = minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z}).name
if abovename and (abovename == "air" or abovename == "default:water_flowing" or abovename == "default:water_source") then
local fountainhead_name = minetest.get_node(pos).name
local near_node = minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z})
if near_node and string.find(near_node.name, "_loaded") then
if fountainhead_name and fountainhead_name == "pipeworks:fountainhead" then
minetest.add_node(pos,{name = "pipeworks:fountainhead_pouring"})
if finitewater or abovename ~= "default:water_source" then
minetest.add_node({x=pos.x,y=pos.y+1,z=pos.z},{name = "default:water_source"})
end
end
else
if fountainhead_name == "pipeworks:fountainhead_pouring" then
minetest.add_node({x=pos.x,y=pos.y,z=pos.z},{name = "pipeworks:fountainhead"})
if abovename == "default:water_source" and not finitewater then
minetest.remove_node({x=pos.x,y=pos.y+1,z=pos.z})
end
end
end
end
end

View File

@ -312,3 +312,13 @@ minetest.register_abm({
pipeworks_spigot_check(pos,node)
end
})
minetest.register_abm({
nodenames = {"pipeworks:fountainhead","pipeworks:fountainhead_pouring"},
interval = 1,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
pipeworks_fountainhead_check(pos,node)
end
})

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB