From 08f7ac5704e9156076c6f6a4fc6ae2658fae4179 Mon Sep 17 00:00:00 2001
From: Casimir <jul.lutz@gmx.net>
Date: Sun, 18 Aug 2013 01:15:38 +0200
Subject: [PATCH] Remove buildable_to nodes without dropping item when replaced
 by a falling node

---
 builtin/game/falling.lua | 29 ++++++++++++++++++-----------
 1 file changed, 18 insertions(+), 11 deletions(-)

diff --git a/builtin/game/falling.lua b/builtin/game/falling.lua
index b3d5a9a8b..8f3b41d5a 100644
--- a/builtin/game/falling.lua
+++ b/builtin/game/falling.lua
@@ -79,17 +79,24 @@ core.register_entity(":__builtin:falling_node", {
 			local np = {x=bcp.x, y=bcp.y+1, z=bcp.z}
 			-- Check what's here
 			local n2 = core.get_node(np)
-			-- remove node and replace it with it's drops
-			local drops = core.get_node_drops(n2.name, "")
-			core.remove_node(np)
-			local _, dropped_item
-			for _, dropped_item in ipairs(drops) do
-				core.add_item(np, dropped_item)
-			end
-			-- Run script hook
-			local _, callback
-			for _, callback in ipairs(core.registered_on_dignodes) do
-				callback(np, n2, nil)
+			-- If it's not air or liquid, remove node and replace it with
+			-- it's drops
+			if n2.name ~= "air" and (not core.registered_nodes[n2.name] or
+					core.registered_nodes[n2.name].liquidtype == "none") then
+				core.remove_node(np)
+				if core.registered_nodes[n2.name].buildable_to == false then
+					-- Add dropped items
+					local drops = core.get_node_drops(n2.name, "")
+					local _, dropped_item
+					for _, dropped_item in ipairs(drops) do
+						core.add_item(np, dropped_item)
+					end
+				end
+				-- Run script hook
+				local _, callback
+				for _, callback in ipairs(core.registered_on_dignodes) do
+					callback(np, n2, nil)
+				end
 			end
 			-- Create node and remove entity
 			core.add_node(np, self.node)
-- 
GitLab