Tubes now update their connections when rotated with the screwdriver.

This commit is contained in:
12Me21 2018-09-15 10:30:13 -04:00
parent a69c210b56
commit d8ed6d3af4
4 changed files with 20 additions and 0 deletions

@ -111,6 +111,22 @@ function pipeworks.after_dig(pos)
pipeworks.scan_for_tube_objects(pos) pipeworks.scan_for_tube_objects(pos)
end end
-- Screwdriver calls this function before rotating a node.
-- However, connections must be updated *after* the node is rotated
-- So, this function does the rotation itself and returns `true`.
-- (Note: screwdriver already checks for protected areas.)
-- This should only be used for tubes that don't autoconnect.
-- (For example, one-way tubes.)
-- Autoconnecting tubes will just revert back to their original state
-- when they are updated.
function pipeworks.on_rotate(pos, node, user, mode, new_param2)
node.param2 = new_param2
minetest.set_node(pos, node)
pipeworks.scan_for_tube_objects(pos)
return true
end
if minetest.get_modpath("mesecons_mvps") then if minetest.get_modpath("mesecons_mvps") then
mesecon.register_on_mvps_move(function(moved_nodes) mesecon.register_on_mvps_move(function(moved_nodes)
for _, n in ipairs(moved_nodes) do for _, n in ipairs(moved_nodes) do

@ -24,6 +24,7 @@ minetest.register_node("pipeworks:steel_block_embedded_tube", {
}, },
after_place_node = pipeworks.after_place, after_place_node = pipeworks.after_place,
after_dig_node = pipeworks.after_dig, after_dig_node = pipeworks.after_dig,
on_rotate = pipeworks.on_rotate,
}) })
minetest.register_craft( { minetest.register_craft( {
@ -71,6 +72,7 @@ minetest.register_node("pipeworks:steel_pane_embedded_tube", {
}, },
after_place_node = pipeworks.after_place, after_place_node = pipeworks.after_place,
after_dig_node = pipeworks.after_dig, after_dig_node = pipeworks.after_dig,
on_rotate = pipeworks.on_rotate,
}) })
minetest.register_craft( { minetest.register_craft( {

@ -161,6 +161,7 @@ if pipeworks.enable_one_way_tube then
}, },
after_place_node = pipeworks.after_place, after_place_node = pipeworks.after_place,
after_dig_node = pipeworks.after_dig, after_dig_node = pipeworks.after_dig,
on_rotate = pipeworks.on_rotate,
}) })
minetest.register_craft({ minetest.register_craft({
output = "pipeworks:one_way_tube 2", output = "pipeworks:one_way_tube 2",

@ -108,6 +108,7 @@ local register_one_tube = function(name, tname, dropname, desc, plain, noctrs, e
}, },
after_place_node = pipeworks.after_place, after_place_node = pipeworks.after_place,
after_dig_node = pipeworks.after_dig, after_dig_node = pipeworks.after_dig,
on_rotate = false,
on_blast = function(pos, intensity) on_blast = function(pos, intensity)
if not intensity or intensity > 1 + 3^0.5 then if not intensity or intensity > 1 + 3^0.5 then
minetest.remove_node(pos) minetest.remove_node(pos)