diff --git a/mesecons_detector/init.lua b/mesecons_detector/init.lua
index 1a8595d4f7e31ba8854b0efa2abf84f78bb8188e..e58967648bb60623d71580f730356305e0ef652a 100644
--- a/mesecons_detector/init.lua
+++ b/mesecons_detector/init.lua
@@ -135,8 +135,12 @@ end
 
 -- returns true if player was found, false if not
 local node_detector_scan = function (pos)
-	local node = minetest.get_node(pos)
-	local frontpos = vector.subtract(pos, minetest.facedir_to_dir(node.param2))
+	if not pos then return end
+	local node = minetest.get_node_or_nil(pos)
+	if not node then return end
+	local scandir = minetest.facedir_to_dir(node.param2)
+	if not scandir then return end
+	local frontpos = vector.subtract(pos, scandir)
 	local frontnode = minetest.get_node(frontpos)
 	local meta = minetest.get_meta(pos)
 	return (frontnode.name == meta:get_string("scanname")) or