From 68020d2e93a5a7fda5076d5a0933bb099065500c Mon Sep 17 00:00:00 2001
From: PilzAdam <adam-k@outlook.com>
Date: Fri, 9 Nov 2012 15:25:21 +0100
Subject: [PATCH] Dont allow the bucket to replace nodes that are not buildable
 to

---
 mods/bucket/init.lua | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/mods/bucket/init.lua b/mods/bucket/init.lua
index 0c340f7..d725466 100644
--- a/mods/bucket/init.lua
+++ b/mods/bucket/init.lua
@@ -40,14 +40,21 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image)
 				if pointed_thing.type ~= "node" then
 					return
 				end
-				-- Check if pointing to a liquid
+				-- Check if pointing to a buildable node
 				n = minetest.env:get_node(pointed_thing.under)
-				if bucket.liquids[n.name] == nil then
-					-- Not a liquid
-					minetest.env:add_node(pointed_thing.above, {name=source})
-				elseif n.name ~= source then
-					-- It's a liquid
+				if minetest.registered_nodes[n.name].buildable_to then
+					-- buildable; replace the node
 					minetest.env:add_node(pointed_thing.under, {name=source})
+				else
+					-- not buildable to; place the liquid above
+					-- check if the node above can be replaced
+					n = minetest.env:get_node(pointed_thing.above)
+					if minetest.registered_nodes[n.name].buildable_to then
+						minetest.env:add_node(pointed_thing.above,{name=source})
+					else
+						-- do not remove the bucket with the liquid
+						return
+					end
 				end
 				return {name="bucket:bucket_empty"}
 			end