]> git.lizzy.rs Git - xdecor.git/blobdiff - itemframe.lua
Don't crash on nil-player in can_dig and check the right players for attachment in...
[xdecor.git] / itemframe.lua
index f17f1b9f3beab0a99e9eb915c10472308e7f2398..02d83d6fe7992a4bf104ce933f4bf5ec6871939b 100644 (file)
@@ -71,7 +71,9 @@ function itemframe.rightclick(pos, node, clicker, itemstack)
        local meta = minetest.get_meta(pos)
        local player = clicker:get_player_name()
        local owner = meta:get_string("owner")
-       if player ~= owner or not itemstack then return end
+       if player ~= owner or not itemstack then
+               return itemstack
+       end
 
        drop_item(pos, node)
        local itemstring = itemstack:take_item():to_string()
@@ -92,14 +94,12 @@ end
 
 function itemframe.dig(pos, player)
        local meta = minetest.get_meta(pos)
-       local pname = player:get_player_name()
+       local pname = player and player:get_player_name()
        local owner = meta:get_string("owner")
 
-       return player and pname == owner
+       return pname == owner
 end
 
-minetest.register_alias("xdecor:frame", "xdecor:itemframe")
-
 xdecor.register("itemframe", {
        description = "Item Frame",
        groups = {choppy=3, oddly_breakable_by_hand=2, flammable=3},
@@ -125,6 +125,11 @@ minetest.register_entity("xdecor:f_item", {
        physical = false,
        textures = {"air"},
        on_activate = function(self, staticdata)
+               local pos = self.object:getpos()
+               if minetest.get_node(pos).name ~= "xdecor:itemframe" then
+                       self.object:remove()
+               end
+
                if tmp.nodename and tmp.texture then
                        self.nodename = tmp.nodename
                        tmp.nodename = nil