Fixed explosion bugs

master
TenPlus1 2015-08-28 10:30:36 +01:00
parent 2346a59172
commit fc3bd23f14
1 changed files with 11 additions and 6 deletions

17
api.lua
View File

@ -1,4 +1,4 @@
-- Mobs Api (19th August 2015)
-- Mobs Api (28th August 2015)
mobs = {}
mobs.mod = "redo"
@ -1312,7 +1312,6 @@ function mobs:explosion(pos, radius, fire, smoke, sound)
if not fire then fire = 0 end
if not smoke then smoke = 0 end
local pos = vector.round(pos)
local radius = 1
local vm = VoxelManip()
local minp, maxp = vm:read_from_map(vector.subtract(pos, radius), vector.add(pos, radius))
local a = VoxelArea:new({MinEdge = minp, MaxEdge = maxp})
@ -1342,8 +1341,10 @@ function mobs:explosion(pos, radius, fire, smoke, sound)
p.x = pos.x + x
p.y = pos.y + y
p.z = pos.z + z
if data[vi] ~= c_air and data[vi] ~= c_ignore
and data[vi] ~= c_obsidian and data[vi] ~= c_brick
if data[vi] ~= c_air
and data[vi] ~= c_ignore
and data[vi] ~= c_obsidian
and data[vi] ~= c_brick
and data[vi] ~= c_chest then
local n = minetest.get_node(p).name
if minetest.get_item_group(n, "unbreakable") ~= 1 then
@ -1353,9 +1354,13 @@ function mobs:explosion(pos, radius, fire, smoke, sound)
local inv = meta:get_inventory()
for i = 1,32 do
local m_stack = inv:get_stack("main", i)
local obj = minetest.add_item(pos, m_stack)
local obj = minetest.add_item(p, m_stack)
if obj then
obj:setvelocity({x = math.random(-2, 2), y = 7, z = math.random(-2, 2)})
obj:setvelocity({
x = math.random(-2, 2),
y = 7,
z = math.random(-2, 2)
})
end
end
end