summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--autoplace.lua12
-rw-r--r--changelog.txt4
-rw-r--r--devices.lua50
3 files changed, 54 insertions, 12 deletions
diff --git a/autoplace.lua b/autoplace.lua
index b615b64..2f7c7f1 100644
--- a/autoplace.lua
+++ b/autoplace.lua
@@ -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
diff --git a/changelog.txt b/changelog.txt
index a1ef58a..8db2a4a 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -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
diff --git a/devices.lua b/devices.lua
index 1991d10..80f69c7 100644
--- a/devices.lua
+++ b/devices.lua
@@ -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)