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