Added "expansion tank" that appears if the user stacks tanks upwards.
authorVanessa Ezekowitz <vanessaezekowitz@gmail.com>
Wed, 22 Aug 2012 13:56:45 +0000 (09:56 -0400)
committerVanessa Ezekowitz <vanessaezekowitz@gmail.com>
Wed, 22 Aug 2012 13:56:45 +0000 (09:56 -0400)
(Downwards is not checked).

autoplace.lua
changelog.txt
devices.lua

index b615b64a3e41ab7576a338bfaeb2097e5647ffbf..2f7c7f1dcdd432ad435a1242cd8b7130b5ae10e0 100644 (file)
@@ -106,16 +106,18 @@ pipes_scansurroundings = function(pos)
        -- also, so they require a special case
 
        if (string.find(nym.name, "pipeworks:storage_tank_") ~= nil) or
-          (string.find(nym.name, "pipeworks:storage_tank_") ~= nil) or
           (string.find(nym.name, "pipeworks:intake") ~= nil) or
           (string.find(nym.name, "pipeworks:outlet") ~= nil) then
                pym=1
        end
+end
 
-       if (string.find(nyp.name, "pipeworks:storage_tank_") ~= nil) or
-          (string.find(nyp.name, "pipeworks:storage_tank_") ~= nil) then
-               pyp=1
-       end
+function pipe_look_for_stackable_tanks(pos)
+       tym = minetest.env:get_node({ x=pos.x  , y=pos.y-1, z=pos.z   })
 
+       if string.find(tym.name, "pipeworks:storage_tank_") ~= nil or
+           string.find(tym.name, "pipeworks:expansion_tank_") ~= nil then
+               minetest.env:add_node(pos, { name =  "pipeworks:expansion_tank_0"})
+       end
 end
 
index a1ef58a03bd9a3b738fbb6dbc6663f7bf026fa2f..8db2a4ad6a97414354185e47867161372d738d0c 100644 (file)
@@ -2,7 +2,9 @@ Changelog
 ---------
 
 2012-08-22: Added outlet grate, made it participate in autoplace algorithm.  
-Extended storage tank to show fill level in 10% steps (0% to 100%).
+Extended storage tank to show fill level in 10% steps (0% to 100%).  Added 
+"expansion tank" that appears if the user stacks tanks upwards.  (Downwards is 
+not checked).
 
 2012-08-21: Made storage tank participate in autoplace algorithm.  Tuned API a 
 little to allow for more flexible placement.  Re-organized code a bit to allow 
index 1991d1083c185edf201164b4cc005f21ef7cdbb5..80f69c7952a53c1e5e9f5bb1287323fc95dc8d3c 100644 (file)
@@ -1,4 +1,4 @@
--- List of devices for use by the autoplace algorithm
+-- List of devices that should participate in the autoplace algorithm
 
 pipes_devicelist = {
        "pump",
@@ -327,7 +327,8 @@ minetest.register_node("pipeworks:outlet", {
        end,
 })
 
--- tank
+-- tanks
+
 for fill = 0, 10 do
        if fill == 0 then 
                filldesc="empty"
@@ -337,11 +338,42 @@ for fill = 0, 10 do
                sgroups = {snappy=3, pipe=1, tankfill=fill+1, not_in_creative_inventory=1}
        end
 
+       minetest.register_node("pipeworks:expansion_tank_"..fill, {
+               description = "Expansion Tank ("..filldesc..")... You hacker, you.",
+               tiles = {
+                       "pipeworks_storage_tank_fittings.png",
+                       "pipeworks_storage_tank_fittings.png",
+                       "pipeworks_storage_tank_back.png",
+                       "pipeworks_storage_tank_back.png",
+                       "pipeworks_storage_tank_back.png",
+                       "pipeworks_storage_tank_front_"..fill..".png"
+               },
+               paramtype = "light",
+               paramtype2 = "facedir",
+               groups = {snappy=3, pipe=1, tankfill=fill+1, not_in_creative_inventory=1},
+               sounds = default.node_sound_wood_defaults(),
+               walkable = true,
+               stack_max = 99,
+               drop = "pipeworks:storage_tank_"..fill.."_x",
+               after_place_node = function(pos)
+                       pipe_look_for_stackable_tanks(pos)
+                       pipe_scanforobjects(pos)
+               end,
+               after_dig_node = function(pos)
+                       pipe_scanforobjects(pos)
+               end,
+               pipelike=0,
+               on_construct = function(pos)
+               local meta = minetest.env:get_meta(pos)
+               meta:set_int("pipelike",0)
+               end,
+       })
+
        minetest.register_node("pipeworks:storage_tank_"..fill.."_x", {
                description = "Fluid Storage Tank ("..filldesc..")",
                tiles = {
                        "pipeworks_storage_tank_fittings.png",
-                       "pipeworks_storage_tank_fittings.png",
+                       "pipeworks_storage_tank_back.png",
                        "pipeworks_storage_tank_fittings.png",
                        "pipeworks_storage_tank_fittings.png",
                        "pipeworks_storage_tank_back.png",
@@ -353,7 +385,10 @@ for fill = 0, 10 do
                walkable = true,
                stack_max = 99,
                after_place_node = function(pos)
-                       pipe_device_autorotate(pos, nil, "pipeworks:storage_tank_"..fill)
+                       pipe_look_for_stackable_tanks(pos)
+                       if string.find(minetest.env:get_node(pos).name, "pipeworks:storage_tank_") ~= nil then
+                               pipe_device_autorotate(pos, nil, "pipeworks:storage_tank_"..fill)
+                       end
                        pipe_scanforobjects(pos)
                end,
                after_dig_node = function(pos)
@@ -370,7 +405,7 @@ for fill = 0, 10 do
                description = "Fluid Storage Tank (Z axis, "..filldesc..")... You hacker, you.",
                tiles = {
                        "pipeworks_storage_tank_fittings.png",
-                       "pipeworks_storage_tank_fittings.png",
+                       "pipeworks_storage_tank_back.png",
                        "pipeworks_storage_tank_front_"..fill..".png",
                        "pipeworks_storage_tank_back.png",
                        "pipeworks_storage_tank_fittings.png",
@@ -383,7 +418,10 @@ for fill = 0, 10 do
                stack_max = 99,
                drop = "pipeworks:storage_tank_"..fill.."_x",
                after_place_node = function(pos)
-                       pipe_device_autorotate(pos, nil, "pipeworks:storage_tank_"..fill)
+                       pipe_look_for_stackable_tanks(pos)
+                       if string.find(minetest.env:get_node(pos).name, "pipeworks:storage_tank_") ~= nil then
+                               pipe_device_autorotate(pos, nil, "pipeworks:storage_tank_"..fill)
+                       end
                        pipe_scanforobjects(pos)
                end,
                after_dig_node = function(pos)