From 45e48295d203b653041404a75c6e2744b78ced45 Mon Sep 17 00:00:00 2001 From: Paramat Date: Wed, 16 May 2018 20:49:46 +0100 Subject: Pointed_thing_to_face_pos: Avoid crash when player is inside a node (#7342) 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 | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/builtin/common/misc_helpers.lua b/builtin/common/misc_helpers.lua index 43a6dda48..23b00eafe 100644 --- a/builtin/common/misc_helpers.lua +++ b/builtin/common/misc_helpers.lua @@ -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 -- cgit v1.2.3