local ground_dir = {
	[0] = {x =  0, y = -1, z =  0},
	      {x =  0, y =  0, z = -1},
	      {x =  0, y =  0, z =  1},
	      {x = -1, y =  0, z =  0},
	      {x =  1, y =  0, z =  0},
	      {x =  0, y =  1, z =  0},
}

minetest.register_lbm({
	label = "Upgrade legacy pistons pointing up",
	name = "mesecons_pistons:replace_legacy_piston_up",
	nodenames = {
		"mesecons_pistons:piston_up_normal_off",
		"mesecons_pistons:piston_up_normal_on",
		"mesecons_pistons:piston_up_pusher_normal",
		"mesecons_pistons:piston_up_sticky_off",
		"mesecons_pistons:piston_up_sticky_on",
		"mesecons_pistons:piston_up_pusher_sticky",
	},
	run_at_every_load = false,
	action = function(pos, node)
		local dir = ground_dir[math.floor(node.param2/4)]
		node.param2 = minetest.dir_to_facedir(dir, true)
		node.name = node.name:sub(1, 24)..node.name:sub(28)
		minetest.swap_node(pos, node)
	end,
})

minetest.register_lbm({
	label = "Upgrade legacy pistons pointing down",
	name = "mesecons_pistons:replace_legacy_piston_down",
	nodenames = {
		"mesecons_pistons:piston_down_normal_off",
		"mesecons_pistons:piston_down_normal_on",
		"mesecons_pistons:piston_down_pusher_normal",
		"mesecons_pistons:piston_down_sticky_off",
		"mesecons_pistons:piston_down_sticky_on",
		"mesecons_pistons:piston_down_pusher_sticky",
	},
	run_at_every_load = false,
	action = function(pos, node)
		local dir = vector.multiply(ground_dir[math.floor(node.param2/4)], -1)
		node.param2 = minetest.dir_to_facedir(dir, true)
		node.name = node.name:sub(1, 24)..node.name:sub(30)
		minetest.swap_node(pos, node)
	end,
})