From a2d4e577164162102220c831b93a7eb9a974b026 Mon Sep 17 00:00:00 2001
From: Auke Kok <sofar@foo-projects.org>
Date: Thu, 31 Mar 2016 16:07:15 -0700
Subject: [PATCH] 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
---
 mods/tnt/init.lua | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua
index f465620..a8deeb0 100644
--- a/mods/tnt/init.lua
+++ b/mods/tnt/init.lua
@@ -247,6 +247,19 @@ local function tnt_explode(pos, radius, ignore_protection, ignore_on_blast)
 	vm:update_map()
 	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
 		local dist = math.max(1, vector.distance(data.pos, pos))
 		local intensity = (radius * radius) / (dist * dist)