Itemframe: fix previous commit
This commit is contained in:
parent
c7e77cbf06
commit
7b7cd4084c
@ -1,7 +1,7 @@
|
|||||||
local tmp, itemframe = {}, {}
|
local tmp = {}
|
||||||
screwdriver = screwdriver or {}
|
screwdriver = screwdriver or {}
|
||||||
|
|
||||||
function itemframe:remove_item(pos, node)
|
local function remove_item(pos, node)
|
||||||
local objs = minetest.get_objects_inside_radius(pos, 0.5)
|
local objs = minetest.get_objects_inside_radius(pos, 0.5)
|
||||||
if not objs then return end
|
if not objs then return end
|
||||||
|
|
||||||
@ -18,8 +18,8 @@ local facedir = {
|
|||||||
{x=0, y=0, z=-1},{x=-1, y=0, z=0}
|
{x=0, y=0, z=-1},{x=-1, y=0, z=0}
|
||||||
}
|
}
|
||||||
|
|
||||||
function itemframe:update_item(pos, node)
|
local function update_item(pos, node)
|
||||||
self:remove_item(pos, node)
|
remove_item(pos, node)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
local itemstring = meta:get_string("item")
|
local itemstring = meta:get_string("item")
|
||||||
local posad = facedir[node.param2]
|
local posad = facedir[node.param2]
|
||||||
@ -36,14 +36,14 @@ function itemframe:update_item(pos, node)
|
|||||||
entity:setyaw(yaw)
|
entity:setyaw(yaw)
|
||||||
end
|
end
|
||||||
|
|
||||||
function itemframe:drop_item(pos, node)
|
local function drop_item(pos, node)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
local item = meta:get_string("item")
|
local item = meta:get_string("item")
|
||||||
if item == "" then return end
|
if item == "" then return end
|
||||||
|
|
||||||
minetest.add_item(pos, item)
|
minetest.add_item(pos, item)
|
||||||
meta:set_string("item", "")
|
meta:set_string("item", "")
|
||||||
self:remove_item(pos, node)
|
remove_item(pos, node)
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_entity("xdecor:f_item", {
|
minetest.register_entity("xdecor:f_item", {
|
||||||
@ -100,10 +100,10 @@ xdecor.register("frame", {
|
|||||||
local owner = meta:get_string("owner")
|
local owner = meta:get_string("owner")
|
||||||
if player ~= owner or not itemstack then return end
|
if player ~= owner or not itemstack then return end
|
||||||
|
|
||||||
itemframe:drop_item(pos, node)
|
drop_item(pos, node)
|
||||||
local itemstring = itemstack:take_item():to_string()
|
local itemstring = itemstack:take_item():to_string()
|
||||||
meta:set_string("item", itemstring)
|
meta:set_string("item", itemstring)
|
||||||
itemframe:update_item(pos, node)
|
update_item(pos, node)
|
||||||
|
|
||||||
return itemstack
|
return itemstack
|
||||||
end,
|
end,
|
||||||
@ -113,7 +113,7 @@ xdecor.register("frame", {
|
|||||||
local owner = meta:get_string("owner")
|
local owner = meta:get_string("owner")
|
||||||
|
|
||||||
if player ~= owner then return end
|
if player ~= owner then return end
|
||||||
itemframe:drop_item(pos, node)
|
drop_item(pos, node)
|
||||||
end,
|
end,
|
||||||
can_dig = function(pos, player)
|
can_dig = function(pos, player)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
@ -122,7 +122,7 @@ xdecor.register("frame", {
|
|||||||
|
|
||||||
return player and pname == owner
|
return player and pname == owner
|
||||||
end,
|
end,
|
||||||
after_destruct = itemframe:remove_item(pos, node)
|
after_destruct = remove_item
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_abm({
|
minetest.register_abm({
|
||||||
@ -131,6 +131,6 @@ minetest.register_abm({
|
|||||||
action = function(pos, node)
|
action = function(pos, node)
|
||||||
local num = #minetest.get_objects_inside_radius(pos, 0.5)
|
local num = #minetest.get_objects_inside_radius(pos, 0.5)
|
||||||
if num > 0 then return end
|
if num > 0 then return end
|
||||||
itemframe:update_item(pos, node)
|
update_item(pos, node)
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user