diff options
Diffstat (limited to 'mods/vzxv_itemstacks/loose.lua')
-rw-r--r-- | mods/vzxv_itemstacks/loose.lua | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/mods/vzxv_itemstacks/loose.lua b/mods/vzxv_itemstacks/loose.lua index 58952f8..48488de 100644 --- a/mods/vzxv_itemstacks/loose.lua +++ b/mods/vzxv_itemstacks/loose.lua @@ -1,9 +1,25 @@ +local surrounding = { + {0,0,0}, + {0,1,0}, + {0,-1,0}, + {1,0,0}, + {0,0,1}, + {-1,0,0}, + {0,0,-1} +} + minetest.register_entity("vzxv_itemstacks:loose_itemstack",{ initial_properties = { physical = true, pointable = false, visual = "wielditem", visual_size = {x = 0.4, y = 0.4}, + collision_box = { + type = "fixed", + fixed = { + {-0.001,-0.5,-0.001,0.001,0.10,0.001}, + }, + }, }, on_activate = function(self,staticdata) local luaent = self @@ -18,9 +34,18 @@ minetest.register_entity("vzxv_itemstacks:loose_itemstack",{ npos.y = npos.y - 1 if minetest.get_node(npos).name ~= "air" then npos.y = npos.y + 1 - if minetest.get_node(npos).name == "air" then - vzxv.drop(npos, ItemStack(self._stack)) - self.object:remove() + for i=1, #surrounding do + local s = surrounding[i] + local tpos = { + x=npos.x+s[1], + y=npos.y+s[2], + z=npos.z+s[3] + } + if minetest.get_node(tpos).name == "air" then + vzxv.drop(tpos, ItemStack(self._stack)) + self.object:remove() + break + end end end end, @@ -30,4 +55,8 @@ minetest.register_entity("vzxv_itemstacks:loose_itemstack",{ end }) -vzxv.register_gravity("vzxv_itemstacks:loose_itemstack")
\ No newline at end of file +vzxv.register_gravity("vzxv_itemstacks:loose_itemstack") + +function vzxv.drop_loose(pos,stack) + minetest.add_entity(pos,"vzxv_itemstacks:loose_itemstack",stack:to_string()) +end
\ No newline at end of file |