fix a bug where spigot pouring would replace the node under it with
authorVanessa Ezekowitz <vanessaezekowitz@gmail.com>
Sun, 28 Apr 2013 21:45:25 +0000 (17:45 -0400)
committerVanessa Ezekowitz <vanessaezekowitz@gmail.com>
Sun, 28 Apr 2013 21:45:25 +0000 (17:45 -0400)
water.  Also clean up spigot logic slightly.

flowing_logic.lua

index ea5b09e4d467d6e7dbeb2c0f0f6413df39218954..e943488d061bf25dc3bb263ecd74ba475da67ad5 100644 (file)
@@ -67,7 +67,9 @@ end
 local update_outlet = function(pos)
        local top = minetest.env:get_node({x=pos.x,y=pos.y+1,z=pos.z}).name
        if string.find(top,'_loaded') then
-               minetest.env:add_node({x=pos.x,y=pos.y-1,z=pos.z},{name='default:water_source'}) 
+               if minetest.env:get_node({x=pos.x,y=pos.y-1,z=pos.z}).name == 'air' then
+                       minetest.env:add_node({x=pos.x,y=pos.y-1,z=pos.z},{name='default:water_source'}) 
+               end
        elseif minetest.env:get_node({x=pos.x,y=pos.y-1,z=pos.z}).name == 'default:water_source' then
                minetest.env:remove_node({x=pos.x,y=pos.y-1,z=pos.z})
        end
@@ -81,10 +83,14 @@ local spigot_check = function(pos,node)
        dbg('found '..top)
        if string.find(top,'_loaded') then
                minetest.env:add_node({x=pos.x,y=pos.y,z=pos.z},{name='pipeworks:spigot_pouring', param2 = fdir}) 
-               minetest.env:add_node({x=pos.x,y=pos.y-1,z=pos.z},{name='default:water_source'}) 
-       elseif minetest.env:get_node({x=pos.x,y=pos.y-1,z=pos.z}).name == 'default:water_source' then
+               if minetest.env:get_node({x=pos.x,y=pos.y-1,z=pos.z}).name == 'air' then
+                       minetest.env:add_node({x=pos.x,y=pos.y-1,z=pos.z},{name='default:water_source'}) 
+               end
+       else
                minetest.env:add_node({x=pos.x,y=pos.y,z=pos.z},{name='pipeworks:spigot', param2 = fdir}) 
-               minetest.env:remove_node({x=pos.x,y=pos.y-1,z=pos.z})
+               if minetest.env:get_node({x=pos.x,y=pos.y-1,z=pos.z}).name == 'default:water_source' then
+                       minetest.env:remove_node({x=pos.x,y=pos.y-1,z=pos.z})
+               end
        end
 end