From b80a7a9693999d8c7fdfec5213fe4920e40c1799 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Fri, 27 Feb 2015 11:48:51 -0500 Subject: [PATCH] use find_nodes_in_area_under_air() if available instead of manually searching for air above find_nodes_in_area() list --- plants_lib/init.lua | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/plants_lib/init.lua b/plants_lib/init.lua index fc7bf17..edb28e1 100644 --- a/plants_lib/init.lua +++ b/plants_lib/init.lua @@ -339,17 +339,22 @@ function plantslib:generate_block_with_air_checking(dtime) if not plantslib.surface_nodes_aircheck.blockhash then - local search_area = minetest.find_nodes_in_area(minp, maxp, plantslib.surfaceslist_aircheck) + if type(minetest.find_nodes_in_area_under_air) == "function" then -- use newer API call + plantslib.surface_nodes_aircheck.blockhash = + minetest.find_nodes_in_area_under_air(minp, maxp, plantslib.surfaceslist_aircheck) + else + local search_area = minetest.find_nodes_in_area(minp, maxp, plantslib.surfaceslist_aircheck) - -- search the generated block for air-bounded surfaces + -- search the generated block for air-bounded surfaces the slow way. - plantslib.surface_nodes_aircheck.blockhash = {} + plantslib.surface_nodes_aircheck.blockhash = {} - for i = 1, #search_area do - local pos = search_area[i] - local p_top = { x=pos.x, y=pos.y+1, z=pos.z } - if minetest.get_node(p_top).name == "air" then - plantslib.surface_nodes_aircheck.blockhash[#plantslib.surface_nodes_aircheck.blockhash + 1] = pos + for i = 1, #search_area do + local pos = search_area[i] + local p_top = { x=pos.x, y=pos.y+1, z=pos.z } + if minetest.get_node(p_top).name == "air" then + plantslib.surface_nodes_aircheck.blockhash[#plantslib.surface_nodes_aircheck.blockhash + 1] = pos + end end end plantslib.actioncount_aircheck.blockhash = 1