Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
306b407
commit b8d7762
Showing
348 changed files
with
3,257 additions
and
248 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
*~ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
This simple mod uses nodeboxes to supply a complete set of 3D flanged pipes, | ||
along with "valve" and "pump" devices. | ||
|
||
Unlike the previous version of this mod, these pipes are rounded, and when | ||
placed, they'll automatically join together as needed. Pipes can go vertically | ||
or horizontally, and there are enough nodes defined to allow for all possible | ||
connections. Valves and pumps can only be placed horizontally, and will | ||
automatically rotate and join with neighboring pipes as objects are added, as | ||
well as joining with each other under certain circumstances. | ||
|
||
Pipes come in two variants: one type bears one or more dark windows on each | ||
pipe, suggesting they're empty, while the other type bears green-tinted | ||
windows, as if full (the two colors should also be easy to select if you want | ||
to change them in a paint program). These windows only appear on straight | ||
lengths and on certain junctions. | ||
|
||
There are no crafting recipes, yet, but you can use /giveme as usual, namely | ||
"/giveme pipeworks:pipe 999" or so, and then place them as needed. See | ||
init.lua for more details. | ||
|
||
This mod is intended to be used as a basis or at least as sort of a model for | ||
something else to build on (perhaps a nicer-looking oil mod?), and does not | ||
provide any of the code necessary to cause anything to flow through them. Like | ||
the pipes, the valve and pump don't do anything useful yet, but you can punch | ||
them to turn them "on" and "off". Note that the valve and pump textures and | ||
shapes are not yet complete (hence their boxy appearance). | ||
|
||
This mod is a work in progress. | ||
|
||
Please note that owing to the nature of this mod, I have opted to use 64px | ||
textures. Anything less just looks terrible. | ||
|
||
If you don't need the old node names from the previous version of this mod, | ||
edit init.lua and comment-out the 'dofile' line at the top. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,176 @@ | ||
-- autorouting for pipes | ||
|
||
function pipe_scanforobjects(pos) | ||
pipe_autoroute({ x=pos.x-1, y=pos.y , z=pos.z }, "_loaded") | ||
pipe_autoroute({ x=pos.x+1, y=pos.y , z=pos.z }, "_loaded") | ||
pipe_autoroute({ x=pos.x , y=pos.y-1, z=pos.z }, "_loaded") | ||
pipe_autoroute({ x=pos.x , y=pos.y+1, z=pos.z }, "_loaded") | ||
pipe_autoroute({ x=pos.x , y=pos.y , z=pos.z-1 }, "_loaded") | ||
pipe_autoroute({ x=pos.x , y=pos.y , z=pos.z+1 }, "_loaded") | ||
pipe_autoroute(pos, "_loaded") | ||
|
||
pipe_autoroute({ x=pos.x-1, y=pos.y , z=pos.z }, "_empty") | ||
pipe_autoroute({ x=pos.x+1, y=pos.y , z=pos.z }, "_empty") | ||
pipe_autoroute({ x=pos.x , y=pos.y-1, z=pos.z }, "_empty") | ||
pipe_autoroute({ x=pos.x , y=pos.y+1, z=pos.z }, "_empty") | ||
pipe_autoroute({ x=pos.x , y=pos.y , z=pos.z-1 }, "_empty") | ||
pipe_autoroute({ x=pos.x , y=pos.y , z=pos.z+1 }, "_empty") | ||
pipe_autoroute(pos, "_empty") | ||
end | ||
|
||
function pipe_autoroute(pos, state) | ||
nctr = minetest.env:get_node(pos) | ||
if (string.find(nctr.name, "pipeworks:pipe_") == nil) then return end | ||
|
||
pipes_scansurroundings(pos) | ||
|
||
nsurround = pxm..pxp..pym..pyp..pzm..pzp | ||
if nsurround == "000000" then nsurround = "110000" end | ||
minetest.env:add_node(pos, { name = "pipeworks:pipe_"..nsurround..state }) | ||
end | ||
|
||
-- autorouting for pneumatic tubes | ||
|
||
function tube_scanforobjects(pos) | ||
tube_autoroute({ x=pos.x-1, y=pos.y , z=pos.z }) | ||
tube_autoroute({ x=pos.x+1, y=pos.y , z=pos.z }) | ||
tube_autoroute({ x=pos.x , y=pos.y-1, z=pos.z }) | ||
tube_autoroute({ x=pos.x , y=pos.y+1, z=pos.z }) | ||
tube_autoroute({ x=pos.x , y=pos.y , z=pos.z-1 }) | ||
tube_autoroute({ x=pos.x , y=pos.y , z=pos.z+1 }) | ||
tube_autoroute(pos) | ||
end | ||
|
||
function tube_autoroute(pos) | ||
nctr = minetest.env:get_node(pos) | ||
print ("minetest.get_item_group("..nctr.name..',"tubedevice") == '..minetest.get_item_group(nctr.name, "tubedevice")) | ||
if (string.find(nctr.name, "pipeworks:tube_") == nil) | ||
and minetest.get_item_group(nctr.name, "tubedevice") ~= 1 then return end | ||
|
||
pxm=0 | ||
pxp=0 | ||
pym=0 | ||
pyp=0 | ||
pzm=0 | ||
pzp=0 | ||
|
||
nxm = minetest.env:get_node({ x=pos.x-1, y=pos.y , z=pos.z }) | ||
nxp = minetest.env:get_node({ x=pos.x+1, y=pos.y , z=pos.z }) | ||
nym = minetest.env:get_node({ x=pos.x , y=pos.y-1, z=pos.z }) | ||
nyp = minetest.env:get_node({ x=pos.x , y=pos.y+1, z=pos.z }) | ||
nzm = minetest.env:get_node({ x=pos.x , y=pos.y , z=pos.z-1 }) | ||
nzp = minetest.env:get_node({ x=pos.x , y=pos.y , z=pos.z+1 }) | ||
|
||
if (string.find(nxm.name, "pipeworks:tube_") ~= nil) | ||
or minetest.get_item_group(nxm.name, "tubedevice") == 1 then pxm=1 end | ||
if (string.find(nxp.name, "pipeworks:tube_") ~= nil) | ||
or minetest.get_item_group(nxp.name, "tubedevice") == 1 then pxp=1 end | ||
if (string.find(nym.name, "pipeworks:tube_") ~= nil) | ||
or minetest.get_item_group(nym.name, "tubedevice") == 1 then pym=1 end | ||
if (string.find(nyp.name, "pipeworks:tube_") ~= nil) | ||
or minetest.get_item_group(nyp.name, "tubedevice") == 1 then pyp=1 end | ||
if (string.find(nzm.name, "pipeworks:tube_") ~= nil) | ||
or minetest.get_item_group(nzm.name, "tubedevice") == 1 then pzm=1 end | ||
if (string.find(nzp.name, "pipeworks:tube_") ~= nil) | ||
or minetest.get_item_group(nzp.name, "tubedevice") == 1 then pzp=1 end | ||
|
||
nsurround = pxm..pxp..pym..pyp..pzm..pzp | ||
if minetest.get_item_group(nctr.name, "tubedevice") ~= 1 then | ||
minetest.env:add_node(pos, { name = "pipeworks:tube_"..nsurround }) | ||
end | ||
|
||
end | ||
|
||
-- auto-rotation code for various devices the tubes attach to | ||
|
||
function pipe_device_autorotate(pos, state, bname) | ||
|
||
if state == nil then | ||
nname = bname | ||
else | ||
nname = bname.."_"..state | ||
end | ||
|
||
local nctr = minetest.env:get_node(pos) | ||
|
||
pipes_scansurroundings(pos) | ||
|
||
if (pxm+pxp) ~= 0 then | ||
minetest.env:add_node(pos, { name = nname.."_x" }) | ||
return | ||
end | ||
|
||
if (pzm+pzp) ~= 0 then | ||
minetest.env:add_node(pos, { name = nname.."_z" }) | ||
end | ||
|
||
end | ||
|
||
function pipes_scansurroundings(pos) | ||
pxm=0 | ||
pxp=0 | ||
pym=0 | ||
pyp=0 | ||
pzm=0 | ||
pzp=0 | ||
|
||
nxm = minetest.env:get_node({ x=pos.x-1, y=pos.y , z=pos.z }) | ||
nxp = minetest.env:get_node({ x=pos.x+1, y=pos.y , z=pos.z }) | ||
nym = minetest.env:get_node({ x=pos.x , y=pos.y-1, z=pos.z }) | ||
nyp = minetest.env:get_node({ x=pos.x , y=pos.y+1, z=pos.z }) | ||
nzm = minetest.env:get_node({ x=pos.x , y=pos.y , z=pos.z-1 }) | ||
nzp = minetest.env:get_node({ x=pos.x , y=pos.y , z=pos.z+1 }) | ||
|
||
if (string.find(nxm.name, "pipeworks:pipe_") ~= nil) then pxm=1 end | ||
if (string.find(nxp.name, "pipeworks:pipe_") ~= nil) then pxp=1 end | ||
if (string.find(nym.name, "pipeworks:pipe_") ~= nil) then pym=1 end | ||
if (string.find(nyp.name, "pipeworks:pipe_") ~= nil) then pyp=1 end | ||
if (string.find(nzm.name, "pipeworks:pipe_") ~= nil) then pzm=1 end | ||
if (string.find(nzp.name, "pipeworks:pipe_") ~= nil) then pzp=1 end | ||
|
||
for p in ipairs(pipes_devicelist) do | ||
pdev = pipes_devicelist[p] | ||
if (string.find(nxm.name, "pipeworks:"..pdev.."_off_x") ~= nil) or | ||
(string.find(nxm.name, "pipeworks:"..pdev.."_on_x") ~= nil) or | ||
(string.find(nxm.name, "pipeworks:"..pdev.."_x") ~= nil) then | ||
pxm=1 | ||
end | ||
|
||
if (string.find(nxp.name, "pipeworks:"..pdev.."_off_x") ~= nil) or | ||
(string.find(nxp.name, "pipeworks:"..pdev.."_on_x") ~= nil) or | ||
(string.find(nxp.name, "pipeworks:"..pdev.."_x") ~= nil) then | ||
pxp=1 | ||
end | ||
|
||
if (string.find(nzm.name, "pipeworks:"..pdev.."_off_z") ~= nil) or | ||
(string.find(nzm.name, "pipeworks:"..pdev.."_on_z") ~= nil) or | ||
(string.find(nzm.name, "pipeworks:"..pdev.."_z") ~= nil) then | ||
pzm=1 | ||
end | ||
|
||
if (string.find(nzp.name, "pipeworks:"..pdev.."_off_z") ~= nil) or | ||
(string.find(nzp.name, "pipeworks:"..pdev.."_on_z") ~= nil) or | ||
(string.find(nzp.name, "pipeworks:"..pdev.."_z") ~= nil) then | ||
pzp=1 | ||
end | ||
end | ||
|
||
-- storage tanks and intake grates have vertical connections | ||
-- also, so they require a special case | ||
|
||
if (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 | ||
|
||
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 | ||
|
Oops, something went wrong.