From 4b45f856873573476925c6ead5f30d40dcb1b206 Mon Sep 17 00:00:00 2001 From: stujones11 Date: Fri, 24 Feb 2017 22:32:27 +0000 Subject: [PATCH] Improve bones locating and fallback, fixes #84 --- 3d_armor/armor.lua | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/3d_armor/armor.lua b/3d_armor/armor.lua index 1685b55..018810c 100644 --- a/3d_armor/armor.lua +++ b/3d_armor/armor.lua @@ -511,21 +511,21 @@ if ARMOR_DROP == true or ARMOR_DESTROY == true then end if ARMOR_DESTROY == false then minetest.after(ARMOR_BONES_DELAY, function() - local node = minetest.get_node(vector.round(pos)) - if node then - if node.name ~= "bones:bones" then - pos.y = pos.y+1 - node = minetest.get_node(vector.round(pos)) - if node.name ~= "bones:bones" then - minetest.log("warning", "Failed to add armor to bones node.") - return - end + local node, meta = nil, nil + local maxp = vector.add(pos, 8) + local minp = vector.subtract(pos, 8) + local bones = minetest.find_nodes_in_area(minp, maxp, {"bones:bones"}) + for _, p in pairs(bones) do + meta = minetest.get_meta(p) + if meta:get_string("owner") == name then + node = minetest.get_node(p) + break end - local meta = minetest.get_meta(vector.round(pos)) - local owner = meta:get_string("owner") + end + if node and meta then local inv = meta:get_inventory() for _,stack in ipairs(drop) do - if name == owner and inv:room_for_item("main", stack) then + if inv:room_for_item("main", stack) then inv:add_item("main", stack) else armor.drop_armor(pos, stack)