summaryrefslogtreecommitdiff
path: root/mods/vzxv_itemstacks/loose.lua
diff options
context:
space:
mode:
Diffstat (limited to 'mods/vzxv_itemstacks/loose.lua')
-rw-r--r--mods/vzxv_itemstacks/loose.lua37
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