Pointed_thing_to_face_pos: Avoid crash when player is inside a node (#7342)
authorParamat <paramat@users.noreply.github.com>
Wed, 16 May 2018 19:49:46 +0000 (20:49 +0100)
committerGitHub <noreply@github.com>
Wed, 16 May 2018 19:49:46 +0000 (20:49 +0100)
Avoid crash in some situations when player is inside a node, causing
'above' to equal 'under'.
In this situation return 'under' which is the node position very close
to the face position that would normally be returned.

builtin/common/misc_helpers.lua

index 43a6dda48239ecd118b88a07f658180cbeb1c441..23b00eafe42437125fe5e7b35a06d20a11c230f8 100644 (file)
@@ -685,6 +685,12 @@ end
 -- Returns the exact coordinate of a pointed surface
 --------------------------------------------------------------------------------
 function core.pointed_thing_to_face_pos(placer, pointed_thing)
+       -- Avoid crash in some situations when player is inside a node, causing
+       -- 'above' to equal 'under'.
+       if vector.equals(pointed_thing.above, pointed_thing.under) then
+               return pointed_thing.under
+       end
+
        local eye_height = placer:get_properties().eye_height
        local eye_offset_first = placer:get_eye_offset()
        local node_pos = pointed_thing.under