forked from minetest/minetest_game
Call nodeupdate on the entire blast zone
This will make sand and gravel blocks on top of TNT actually fly in the air. https://youtu.be/4omndVZijLc
This commit is contained in:
parent
8114c3dbab
commit
a2d4e57716
|
@ -247,6 +247,19 @@ local function tnt_explode(pos, radius, ignore_protection, ignore_on_blast)
|
||||||
vm:update_map()
|
vm:update_map()
|
||||||
vm:update_liquids()
|
vm:update_liquids()
|
||||||
|
|
||||||
|
-- call nodeupdate for everything within 1.5x blast radius
|
||||||
|
for z = -radius * 1.5, radius * 1.5 do
|
||||||
|
for x = -radius * 1.5, radius * 1.5 do
|
||||||
|
for y = -radius * 1.5, radius * 1.5 do
|
||||||
|
local s = vector.add(pos, {x = x, y = y, z = z})
|
||||||
|
local r = vector.distance(pos, s)
|
||||||
|
if r / radius < 1.4 then
|
||||||
|
nodeupdate(s)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
for _, data in ipairs(on_blast_queue) do
|
for _, data in ipairs(on_blast_queue) do
|
||||||
local dist = math.max(1, vector.distance(data.pos, pos))
|
local dist = math.max(1, vector.distance(data.pos, pos))
|
||||||
local intensity = (radius * radius) / (dist * dist)
|
local intensity = (radius * radius) / (dist * dist)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user