From 1859503c559e2c9b25900d8e930450dd238e06df Mon Sep 17 00:00:00 2001 From: BuckarooBanzay <BuckarooBanzay@users.noreply.github.com> Date: Fri, 6 Nov 2020 14:49:13 +0100 Subject: [PATCH] load target area of teleport destination / teleport _above_ bones fixes #8 --- bridge/search.lua | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/bridge/search.lua b/bridge/search.lua index 481724b..fac0f00 100644 --- a/bridge/search.lua +++ b/bridge/search.lua @@ -39,14 +39,24 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end if fields.teleport then + -- teleport player to selected item if not minetest.check_player_privs(playername, "teleport") then minetest.chat_send_player(playername, "Missing priv: 'teleport'") return end + -- flat destination coordinates per default local pos1 = vector.subtract(item.pos, {x=2, y=0, z=2}) local pos2 = vector.add(item.pos, {x=2, y=0, z=2}) + if item.type == "bones" then + -- search for air _above_ the bones + pos1 = vector.subtract(item.pos, {x=0, y=0, z=0}) + pos2 = vector.add(item.pos, {x=0, y=10, z=0}) + end + + -- forceload target coordinates before searching for air + minetest.get_voxel_manip():read_from_map(pos1, pos2) local nodes = minetest.find_nodes_in_area(pos1, pos2, "air") if #nodes > 0 then -- GitLab