Bugfix when droping many items

This commit is contained in:
PilzAdam 2012-09-02 16:12:39 +02:00
parent 155b646053
commit 6f49a19fc2

@ -99,20 +99,39 @@ end
minetest.register_on_dignode(function(pos, oldnode, digger) minetest.register_on_dignode(function(pos, oldnode, digger)
local drop = minetest.get_drops(oldnode.name, digger:get_wielded_item():get_name()) local drop = minetest.get_drops(oldnode.name, digger:get_wielded_item():get_name())
if drop == nil then
return
end
for _,item in ipairs(drop) do for _,item in ipairs(drop) do
for i=1,item:get_count() do if type(item) == "string" then
local obj = minetest.env:add_item(pos, item:get_name()) local obj = minetest.env:add_item(pos, item)
if obj ~= nil then if obj ~= nil then
obj:get_luaentity().collect = true obj:get_luaentity().collect = true
local x = math.random(1, 5) local x = math.random(1, 5)
if math.random(1,2) == 1 then if math.random(1,2) == 1 then
x = -x x = -x
end
local z = math.random(1, 5)
if math.random(1,2) == 1 then
z = -z
end
obj:setvelocity({x=1/x, y=obj:getvelocity().y, z=1/z})
end end
local z = math.random(1, 5) else
if math.random(1,2) == 1 then for i=1,item:get_count() do
z = -z local obj = minetest.env:add_item(pos, item:get_name())
if obj ~= nil then
obj:get_luaentity().collect = true
local x = math.random(1, 5)
if math.random(1,2) == 1 then
x = -x
end
local z = math.random(1, 5)
if math.random(1,2) == 1 then
z = -z
end
obj:setvelocity({x=1/x, y=obj:getvelocity().y, z=1/z})
end end
obj:setvelocity({x=1/x, y=obj:getvelocity().y, z=1/z})
end end
end end
end end