forked from mtcontrib/pipeworks
		
	Tubes now update their connections when rotated with the screwdriver.
This commit is contained in:
		@@ -111,6 +111,22 @@ function pipeworks.after_dig(pos)
 | 
			
		||||
	pipeworks.scan_for_tube_objects(pos)
 | 
			
		||||
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
 | 
			
		||||
	mesecon.register_on_mvps_move(function(moved_nodes)
 | 
			
		||||
		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_dig_node = pipeworks.after_dig,
 | 
			
		||||
	on_rotate = pipeworks.on_rotate,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft( {
 | 
			
		||||
@@ -71,6 +72,7 @@ minetest.register_node("pipeworks:steel_pane_embedded_tube", {
 | 
			
		||||
	},
 | 
			
		||||
	after_place_node = pipeworks.after_place,
 | 
			
		||||
	after_dig_node = pipeworks.after_dig,
 | 
			
		||||
	on_rotate = pipeworks.on_rotate,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft( {
 | 
			
		||||
 
 | 
			
		||||
@@ -161,6 +161,7 @@ if pipeworks.enable_one_way_tube then
 | 
			
		||||
		},
 | 
			
		||||
		after_place_node = pipeworks.after_place,
 | 
			
		||||
		after_dig_node = pipeworks.after_dig,
 | 
			
		||||
		on_rotate = pipeworks.on_rotate,
 | 
			
		||||
	})
 | 
			
		||||
	minetest.register_craft({
 | 
			
		||||
		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_dig_node = pipeworks.after_dig,
 | 
			
		||||
		on_rotate = false,
 | 
			
		||||
		on_blast = function(pos, intensity)
 | 
			
		||||
			if not intensity or intensity > 1 + 3^0.5 then
 | 
			
		||||
				minetest.remove_node(pos)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user