+++ /dev/null
-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.
+++ /dev/null
--- 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
-
+++ /dev/null
-Changelog
----------
-
-2012-08-24: Added square-ish pneumatic tubes, with their own autoplace code
-(they do not connect to the steel pipes or their related devices).
-
-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%). 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
-for some upcoming rules changes. Made storage tanks' upper/lower fittins and
-intake grate participate in autoplace algorithm.
-
-2012-08-20: Added temporary nodes for storage tank and intake grating, but
-without autoplace.
-
-2012-08-19: Pumps and valves now fully participate in the
-auto-rotate/auto-place algorithm.
-
-2012-08-18: Total rewrite again. All pipes are now nice and round-looking, and
-they auto-connect! Also added temporary nodes for pump and valve (each with an
-on/off setting - punch to change). No crafting recipes yet and the pipes still
-don't do anything useful yet. Soon.
-
-2012-08-06: Moved this changelog off the forum post and into a separate file.
-
-2012-08-05 (multiple updates): Rewrote pipeworks to use loops and tables to
-create the nodes. Requires far less code now. Added -X, +X, -Y, +Y, -Z, +Z
-capped stubs and a short centered horizontal segment. Changed node definitions
-so that the aforementioned "short centered" segment is given on dig/drop.
-Renamed it to just "pipeworks:pipe" (and pipe_loaded). Added empty/loaded
-indicator images to the capped ends, removed some redundant comments. Made the
-empty/loaded indication at the capped end more prominent.
-
-2012-07-21: Added screenshot showing pipes as they look now that nodebox
-texture rotation is fixed.
-
-2012-07-18: Changed the mod name and all internals to 'pipeworks' instead of
-'pipes'... after a couple of mistakes :-)
-
-2012-07-12: moved project to github.
-
-2012-06-23: Initial release, followed by reworking the textures a bit.
+++ /dev/null
--- Crafting recipes for pipeworks
-
--- If the technic mod is present, then don't bother registering these recipes
--- as that mod supplies its own.
-
-if io.open(minetest.get_modpath("pipeworks").."/../technic/init.lua", "r") == nil then
-
- -- If homedecor is not installed, we need to register a few of its crafts
- -- manually so we can use them.
-
- if minetest.get_modpath("homedecor") == nil then
-
- minetest.register_craftitem(":homedecor:plastic_sheeting", {
- description = "Plastic sheet",
- inventory_image = "pipeworks_plastic_sheeting.png",
- })
-
- minetest.register_craft({
- type = "cooking",
- output = "homedecor:plastic_sheeting",
- recipe = "default:junglegrass",
- })
-
- minetest.register_craft({
- type = 'fuel',
- recipe = 'homedecor:plastic_sheeting',
- burntime = 30,
- })
- end
-
- minetest.register_craft( {
- output = "pipeworks:pipe_110000_empty 12",
- recipe = {
- { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" },
- { "", "", "" },
- { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" }
- },
- })
-
- minetest.register_craft( {
- output = "pipeworks:pump 2",
- recipe = {
- { "default:stone", "default:stone", "default:stone" },
- { "default:steel_ingot", "default:stick", "default:steel_ingot" },
- { "default:stone", "default:stone", "default:stone" }
- },
- })
-
- minetest.register_craft( {
- output = "pipeworks:valve 2",
- recipe = {
- { "", "default:stick", "" },
- { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" },
- { "", "default:steel_ingot", "" }
- },
- })
-
- minetest.register_craft( {
- output = "pipeworks:storage_tank 2",
- recipe = {
- { "", "default:steel_ingot", "default:steel_ingot" },
- { "default:steel_ingot", "default:glass", "default:steel_ingot" },
- { "default:steel_ingot", "default:steel_ingot", "" }
- },
- })
-
- minetest.register_craft( {
- output = "pipeworks:intake 2",
- recipe = {
- { "", "default:steel_ingot", "" },
- { "default:steel_ingot", "", "default:steel_ingot" },
- { "", "default:steel_ingot", "" }
- },
- })
-
- minetest.register_craft( {
- output = "pipeworks:outlet 2",
- recipe = {
- { "default:steel_ingot", "", "default:steel_ingot" },
- { "", "default:steel_ingot", "" },
- { "default:steel_ingot", "", "default:steel_ingot" }
- },
- })
-
- minetest.register_craft( {
- output = "pipeworks:tube 12",
- recipe = {
- { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
- { "", "", "" },
- { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
- },
- })
-
-end
+++ /dev/null
--- List of devices that should participate in the autoplace algorithm
-
-pipes_devicelist = {
- "pump",
- "valve",
- "storage_tank_0",
- "storage_tank_1",
- "storage_tank_2",
- "storage_tank_3",
- "storage_tank_4",
- "storage_tank_5",
- "storage_tank_6",
- "storage_tank_7",
- "storage_tank_8",
- "storage_tank_9",
- "storage_tank_10"
-}
-
--- tables
-
-minetest.register_alias("pipeworks:pump", "pipeworks:pump_off_x")
-minetest.register_alias("pipeworks:valve", "pipeworks:valve_off_x")
-minetest.register_alias("pipeworks:storage_tank", "pipeworks:storage_tank_0_x")
-
-pipe_pumpbody_x = {
- { -6/16, -8/16, -6/16, 6/16, 8/16, 6/16 }
-}
-
-pipe_pumpbody_z = {
- { -6/16, -8/16, -6/16, 6/16, 8/16, 6/16 }
-}
-
-pipe_valvebody_x = {
- { -4/16, -4/16, -4/16, 4/16, 4/16, 4/16 }
-}
-
-pipe_valvebody_z = {
- { -4/16, -4/16, -4/16, 4/16, 4/16, 4/16 }
-}
-
-pipe_valvehandle_on_x = {
- { -5/16, 4/16, -1/16, 0, 5/16, 1/16 }
-}
-
-pipe_valvehandle_on_z = {
- { -1/16, 4/16, -5/16, 1/16, 5/16, 0 }
-}
-
-pipe_valvehandle_off_x = {
- { -1/16, 4/16, -5/16, 1/16, 5/16, 0 }
-}
-
-pipe_valvehandle_off_z = {
- { -5/16, 4/16, -1/16, 0, 5/16, 1/16 }
-}
-
--- Now define the nodes.
-
-local states = { "on", "off" }
-local dgroups = ""
-
-for s in ipairs(states) do
-
- if states[s] == "off" then
- dgroups = {snappy=3, pipe=1}
- else
- dgroups = {snappy=3, pipe=1, not_in_creative_inventory=1}
- end
-
- local pumpboxes = {}
- pipe_addbox(pumpboxes, pipe_leftstub)
- pipe_addbox(pumpboxes, pipe_pumpbody_x)
- pipe_addbox(pumpboxes, pipe_rightstub)
- local tilex = "pipeworks_pump_ends.png"
- local tilez = "pipeworks_pump_"..states[s]..".png"
-
- minetest.register_node("pipeworks:pump_"..states[s].."_x", {
- description = "Pump Module ("..states[s]..")",
- drawtype = "nodebox",
- tiles = {
- "pipeworks_pump_top_x.png",
- "pipeworks_pump_sides.png",
- tilex,
- tilex,
- "pipeworks_pump_sides.png",
- tilez
- },
- paramtype = "light",
- selection_box = {
- type = "fixed",
- fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }
- },
- node_box = {
- type = "fixed",
- fixed = pumpboxes
- },
- groups = dgroups,
- sounds = default.node_sound_wood_defaults(),
- walkable = true,
- stack_max = 99,
- after_place_node = function(pos)
- pipe_device_autorotate(pos, states[s], "pipeworks:pump")
- pipe_scanforobjects(pos)
- end,
- after_dig_node = function(pos)
- pipe_scanforobjects(pos)
- end,
- drop = "pipeworks:pump_off_x"
- })
-
- local pumpboxes = {}
- pipe_addbox(pumpboxes, pipe_frontstub)
- pipe_addbox(pumpboxes, pipe_pumpbody_z)
- pipe_addbox(pumpboxes, pipe_backstub)
-
- minetest.register_node("pipeworks:pump_"..states[s].."_z", {
- description = "Pump Module ("..states[s]..", Z-axis)",
- drawtype = "nodebox",
- tiles = {
- "pipeworks_pump_top_z.png",
- "pipeworks_pump_sides.png",
- tilez,
- tilez,
- "pipeworks_pump_sides.png",
- tilex
- },
- paramtype = "light",
- selection_box = {
- type = "fixed",
- fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }
- },
- node_box = {
- type = "fixed",
- fixed = pumpboxes
- },
- groups = {snappy=3, pipe=1, not_in_creative_inventory=1},
- sounds = default.node_sound_wood_defaults(),
- walkable = true,
- stack_max = 99,
- after_place_node = function(pos)
- pipe_device_autorotate(pos, states[s], "pipeworks:pump")
- pipe_scanforobjects(pos)
- end,
- after_dig_node = function(pos)
- pipe_scanforobjects(pos)
- end,
- drop = "pipeworks:pump_off_x"
- })
-
- local valveboxes = {}
- pipe_addbox(valveboxes, pipe_leftstub)
- pipe_addbox(valveboxes, pipe_valvebody_x)
- if states[s] == "off" then
- pipe_addbox(valveboxes, pipe_valvehandle_off_x)
- else
- pipe_addbox(valveboxes, pipe_valvehandle_on_x)
- end
- pipe_addbox(valveboxes, pipe_rightstub)
- local tilex = "pipeworks_valvebody_ends.png"
- local tilez = "pipeworks_valvebody_sides.png"
-
- minetest.register_node("pipeworks:valve_"..states[s].."_x", {
- description = "Valve ("..states[s]..")",
- drawtype = "nodebox",
- tiles = {
- "pipeworks_valvebody_top_"..states[s].."_x.png",
- "pipeworks_valvebody_bottom.png",
- tilex,
- tilex,
- tilez,
- tilez,
- },
- paramtype = "light",
- selection_box = {
- type = "fixed",
- fixed = { -8/16, -4/16, -5/16, 8/16, 5/16, 5/16 }
- },
- node_box = {
- type = "fixed",
- fixed = valveboxes
- },
- groups = dgroups,
- sounds = default.node_sound_wood_defaults(),
- walkable = true,
- stack_max = 99,
- after_place_node = function(pos)
- pipe_device_autorotate(pos, states[s], "pipeworks:valve")
- pipe_scanforobjects(pos)
- end,
- after_dig_node = function(pos)
- pipe_scanforobjects(pos)
- end,
- drop = "pipeworks:valve_off_x",
- pipelike=1,
- on_construct = function(pos)
- local meta = minetest.env:get_meta(pos)
- meta:set_int("pipelike",1)
- end,
- })
-
- local valveboxes = {}
- pipe_addbox(valveboxes, pipe_frontstub)
- pipe_addbox(valveboxes, pipe_valvebody_z)
- if states[s] == "off" then
- pipe_addbox(valveboxes, pipe_valvehandle_off_z)
- else
- pipe_addbox(valveboxes, pipe_valvehandle_on_z)
- end
- pipe_addbox(valveboxes, pipe_backstub)
-
- minetest.register_node("pipeworks:valve_"..states[s].."_z", {
- description = "Valve ("..states[s]..", Z-axis)",
- drawtype = "nodebox",
- tiles = {
- "pipeworks_valvebody_top_"..states[s].."_z.png",
- "pipeworks_valvebody_bottom.png",
- tilez,
- tilez,
- tilex,
- tilex,
- },
- paramtype = "light",
- selection_box = {
- type = "fixed",
- fixed = { -5/16, -4/16, -8/16, 5/16, 5/16, 8/16 }
- },
- node_box = {
- type = "fixed",
- fixed = valveboxes
- },
- groups = {snappy=3, pipe=1, not_in_creative_inventory=1},
- sounds = default.node_sound_wood_defaults(),
- walkable = true,
- stack_max = 99,
- after_place_node = function(pos)
- pipe_device_autorotate(pos, states[s], "pipeworks:valve")
- pipe_scanforobjects(pos)
-
- end,
- after_dig_node = function(pos)
- pipe_scanforobjects(pos)
- end,
- drop = "pipeworks:valve_off_x",
- pipelike=1,
- on_construct = function(pos)
- local meta = minetest.env:get_meta(pos)
- meta:set_int("pipelike",1)
- end,
- })
-end
-
--- intake grate
-
-minetest.register_node("pipeworks:intake", {
- description = "Intake grate",
- drawtype = "nodebox",
- tiles = {
- "pipeworks_intake_top.png",
- "pipeworks_intake_sides.png",
- "pipeworks_intake_sides.png",
- "pipeworks_intake_sides.png",
- "pipeworks_intake_sides.png",
- "pipeworks_intake_sides.png"
- },
- selection_box = {
- type = "fixed",
- fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }
- },
- node_box = {
- type = "fixed",
- fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }
- },
- paramtype = "light",
- groups = {snappy=3, pipe=1},
- sounds = default.node_sound_wood_defaults(),
- walkable = true,
- stack_max = 99,
- after_place_node = function(pos)
- pipe_scanforobjects(pos)
- end,
- after_dig_node = function(pos)
- pipe_scanforobjects(pos)
- end,
- pipelike=1,
- on_construct = function(pos)
- local meta = minetest.env:get_meta(pos)
- meta:set_int("pipelike",1)
- end,
-})
-
--- outlet grate
-
-minetest.register_node("pipeworks:outlet", {
- description = "Outlet grate",
- drawtype = "nodebox",
- tiles = {
- "pipeworks_outlet_top.png",
- "pipeworks_outlet_sides.png",
- "pipeworks_outlet_sides.png",
- "pipeworks_outlet_sides.png",
- "pipeworks_outlet_sides.png",
- "pipeworks_outlet_sides.png"
- },
- selection_box = {
- type = "fixed",
- fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }
- },
- node_box = {
- type = "fixed",
- fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }
- },
- paramtype = "light",
- groups = {snappy=3, pipe=1},
- sounds = default.node_sound_wood_defaults(),
- walkable = true,
- stack_max = 99,
- after_place_node = function(pos)
- pipe_scanforobjects(pos)
- end,
- after_dig_node = function(pos)
- pipe_scanforobjects(pos)
- end,
- pipelike=1,
- on_construct = function(pos)
- local meta = minetest.env:get_meta(pos)
- meta:set_int("pipelike",1)
- end,
-})
-
--- tanks
-
-for fill = 0, 10 do
- if fill == 0 then
- filldesc="empty"
- sgroups = {snappy=3, pipe=1, tankfill=fill+1}
- else
- filldesc=fill.."0% full"
- 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_back.png",
- "pipeworks_storage_tank_fittings.png",
- "pipeworks_storage_tank_fittings.png",
- "pipeworks_storage_tank_back.png",
- "pipeworks_storage_tank_front_"..fill..".png"
- },
- paramtype = "light",
- groups = sgroups,
- sounds = default.node_sound_wood_defaults(),
- walkable = true,
- stack_max = 99,
- after_place_node = function(pos)
- 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)
- pipe_scanforobjects(pos)
- end,
- pipelike=1,
- on_construct = function(pos)
- local meta = minetest.env:get_meta(pos)
- meta:set_int("pipelike",1)
- end,
- })
-
- minetest.register_node("pipeworks:storage_tank_"..fill.."_z", {
- description = "Fluid Storage Tank (Z axis, "..filldesc..")... You hacker, you.",
- tiles = {
- "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",
- "pipeworks_storage_tank_fittings.png"
- },
- paramtype = "light",
- 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)
- 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)
- pipe_scanforobjects(pos)
- end,
- pipelike=1,
- on_construct = function(pos)
- local meta = minetest.env:get_meta(pos)
- meta:set_int("pipelike",1)
- end,
- })
-end
-
--- various actions
-
-local axes = { "x", "z" }
-
-for a in ipairs(axes) do
- minetest.register_on_punchnode(function (pos, node)
- if node.name=="pipeworks:valve_on_"..axes[a] then
- minetest.env:add_node(pos, { name = "pipeworks:valve_off_"..axes[a] })
- local meta = minetest.env:get_meta(pos)
- meta:set_int("pipelike",0)
- end
- end)
-
- minetest.register_on_punchnode(function (pos, node)
- if node.name=="pipeworks:valve_off_"..axes[a] then
- minetest.env:add_node(pos, { name = "pipeworks:valve_on_"..axes[a] })
- local meta = minetest.env:get_meta(pos)
- meta:set_int("pipelike",1)
- end
- end)
-
- minetest.register_on_punchnode(function (pos, node)
- if node.name=="pipeworks:pump_on_"..axes[a] then
- minetest.env:add_node(pos, { name = "pipeworks:pump_off_"..axes[a] })
- end
- end)
-
- minetest.register_on_punchnode(function (pos, node)
- if node.name=="pipeworks:pump_off_"..axes[a] then
- minetest.env:add_node(pos, { name = "pipeworks:pump_on_"..axes[a] })
- end
- end)
-end
-
+++ /dev/null
--- Pipeworks mod by Vanessa Ezekowitz - 2012-08-05
---
--- Entirely my own code. This mod supplies various shapes of pipes
--- and devices that they can connect to such as pumps, valves, etc.
--- All pipes autoconnect as you lay them out, and devices will auto-
--- connect to them.
---
--- License: WTFPL
---
-
--- Un-comment the following dofile line to re-enable the old pipe nodes.
--- dofile(minetest.get_modpath("pipeworks").."/oldpipes.lua")
-
-minetest.register_alias("pipeworks:pipe", "pipeworks:pipe_110000_empty")
-
-pipe_leftstub = {
- { -32/64, -2/64, -6/64, 1/64, 2/64, 6/64 }, -- pipe segment against -X face
- { -32/64, -4/64, -5/64, 1/64, 4/64, 5/64 },
- { -32/64, -5/64, -4/64, 1/64, 5/64, 4/64 },
- { -32/64, -6/64, -2/64, 1/64, 6/64, 2/64 },
-
- { -32/64, -3/64, -8/64, -30/64, 3/64, 8/64 }, -- (the flange for it)
- { -32/64, -5/64, -7/64, -30/64, 5/64, 7/64 },
- { -32/64, -6/64, -6/64, -30/64, 6/64, 6/64 },
- { -32/64, -7/64, -5/64, -30/64, 7/64, 5/64 },
- { -32/64, -8/64, -3/64, -30/64, 8/64, 3/64 }
-}
-
-pipe_rightstub = {
- { -1/64, -2/64, -6/64, 32/64, 2/64, 6/64 }, -- pipe segment against +X face
- { -1/64, -4/64, -5/64, 32/64, 4/64, 5/64 },
- { -1/64, -5/64, -4/64, 32/64, 5/64, 4/64 },
- { -1/64, -6/64, -2/64, 32/64, 6/64, 2/64 },
-
- { 30/64, -3/64, -8/64, 32/64, 3/64, 8/64 }, -- (the flange for it)
- { 30/64, -5/64, -7/64, 32/64, 5/64, 7/64 },
- { 30/64, -6/64, -6/64, 32/64, 6/64, 6/64 },
- { 30/64, -7/64, -5/64, 32/64, 7/64, 5/64 },
- { 30/64, -8/64, -3/64, 32/64, 8/64, 3/64 }
-}
-
-pipe_bottomstub = {
- { -2/64, -32/64, -6/64, 2/64, 1/64, 6/64 }, -- pipe segment against -Y face
- { -4/64, -32/64, -5/64, 4/64, 1/64, 5/64 },
- { -5/64, -32/64, -4/64, 5/64, 1/64, 4/64 },
- { -6/64, -32/64, -2/64, 6/64, 1/64, 2/64 },
-
- { -3/64, -32/64, -8/64, 3/64, -30/64, 8/64 }, -- (the flange for it)
- { -5/64, -32/64, -7/64, 5/64, -30/64, 7/64 },
- { -6/64, -32/64, -6/64, 6/64, -30/64, 6/64 },
- { -7/64, -32/64, -5/64, 7/64, -30/64, 5/64 },
- { -8/64, -32/64, -3/64, 8/64, -30/64, 3/64 }
-}
-
-
-pipe_topstub = {
- { -2/64, -1/64, -6/64, 2/64, 32/64, 6/64 }, -- pipe segment against +Y face
- { -4/64, -1/64, -5/64, 4/64, 32/64, 5/64 },
- { -5/64, -1/64, -4/64, 5/64, 32/64, 4/64 },
- { -6/64, -1/64, -2/64, 6/64, 32/64, 2/64 },
-
- { -3/64, 30/64, -8/64, 3/64, 32/64, 8/64 }, -- (the flange for it)
- { -5/64, 30/64, -7/64, 5/64, 32/64, 7/64 },
- { -6/64, 30/64, -6/64, 6/64, 32/64, 6/64 },
- { -7/64, 30/64, -5/64, 7/64, 32/64, 5/64 },
- { -8/64, 30/64, -3/64, 8/64, 32/64, 3/64 }
-}
-
-pipe_frontstub = {
- { -6/64, -2/64, -32/64, 6/64, 2/64, 1/64 }, -- pipe segment against -Z face
- { -5/64, -4/64, -32/64, 5/64, 4/64, 1/64 },
- { -4/64, -5/64, -32/64, 4/64, 5/64, 1/64 },
- { -2/64, -6/64, -32/64, 2/64, 6/64, 1/64 },
-
- { -8/64, -3/64, -32/64, 8/64, 3/64, -30/64 }, -- (the flange for it)
- { -7/64, -5/64, -32/64, 7/64, 5/64, -30/64 },
- { -6/64, -6/64, -32/64, 6/64, 6/64, -30/64 },
- { -5/64, -7/64, -32/64, 5/64, 7/64, -30/64 },
- { -3/64, -8/64, -32/64, 3/64, 8/64, -30/64 }
-}
-
-pipe_backstub = {
- { -6/64, -2/64, -1/64, 6/64, 2/64, 32/64 }, -- pipe segment against -Z face
- { -5/64, -4/64, -1/64, 5/64, 4/64, 32/64 },
- { -4/64, -5/64, -1/64, 4/64, 5/64, 32/64 },
- { -2/64, -6/64, -1/64, 2/64, 6/64, 32/64 },
-
- { -8/64, -3/64, 30/64, 8/64, 3/64, 32/64 }, -- (the flange for it)
- { -7/64, -5/64, 30/64, 7/64, 5/64, 32/64 },
- { -6/64, -6/64, 30/64, 6/64, 6/64, 32/64 },
- { -5/64, -7/64, 30/64, 5/64, 7/64, 32/64 },
- { -3/64, -8/64, 30/64, 3/64, 8/64, 32/64 }
-}
-
-pipe_selectboxes = {
- { -32/64, -8/64, -8/64, 8/64, 8/64, 8/64 },
- { -8/64 , -8/64, -8/64, 32/64, 8/64, 8/64 },
- { -8/64 , -32/64, -8/64, 8/64, 8/64, 8/64 },
- { -8/64 , -8/64, -8/64, 8/64, 32/64, 8/64 },
- { -8/64 , -8/64, -32/64, 8/64, 8/64, 8/64 },
- { -8/64 , -8/64, -8/64, 8/64, 8/64, 32/64 }
-}
-
-pipe_bendsphere = {
- { -4/64, -4/64, -4/64, 4/64, 4/64, 4/64 },
- { -5/64, -3/64, -3/64, 5/64, 3/64, 3/64 },
- { -3/64, -5/64, -3/64, 3/64, 5/64, 3/64 },
- { -3/64, -3/64, -5/64, 3/64, 3/64, 5/64 }
-}
-
--- Functions
-
-dbg = function(s)
- if DEBUG == 1 then
- print('[PIPEWORKS] ' .. s)
- end
-end
-
-function pipes_fix_image_names(table, replacement)
- outtable={}
- for i in ipairs(table) do
- outtable[i]=string.gsub(table[i], "_XXXXX", replacement)
- end
-
- return outtable
-end
-
-function pipe_addbox(t, b)
- for i in ipairs(b)
- do table.insert(t, b[i])
- end
-end
-
--- now define the nodes!
-
-for xm = 0, 1 do
-for xp = 0, 1 do
-for ym = 0, 1 do
-for yp = 0, 1 do
-for zm = 0, 1 do
-for zp = 0, 1 do
- local outboxes = {}
- local outsel = {}
- local outimgs = {}
-
- if yp==1 then
- pipe_addbox(outboxes, pipe_topstub)
- table.insert(outsel, pipe_selectboxes[4])
- table.insert(outimgs, "pipeworks_pipe_end.png")
- else
- table.insert(outimgs, "pipeworks_plain.png")
- end
- if ym==1 then
- pipe_addbox(outboxes, pipe_bottomstub)
- table.insert(outsel, pipe_selectboxes[3])
- table.insert(outimgs, "pipeworks_pipe_end.png")
- else
- table.insert(outimgs, "pipeworks_plain.png")
- end
- if xp==1 then
- pipe_addbox(outboxes, pipe_rightstub)
- table.insert(outsel, pipe_selectboxes[2])
- table.insert(outimgs, "pipeworks_pipe_end.png")
- else
- table.insert(outimgs, "pipeworks_plain.png")
- end
- if xm==1 then
- pipe_addbox(outboxes, pipe_leftstub)
- table.insert(outsel, pipe_selectboxes[1])
- table.insert(outimgs, "pipeworks_pipe_end.png")
- else
- table.insert(outimgs, "pipeworks_plain.png")
- end
- if zp==1 then
- pipe_addbox(outboxes, pipe_backstub)
- table.insert(outsel, pipe_selectboxes[6])
- table.insert(outimgs, "pipeworks_pipe_end.png")
- else
- table.insert(outimgs, "pipeworks_plain.png")
- end
- if zm==1 then
- pipe_addbox(outboxes, pipe_frontstub)
- table.insert(outsel, pipe_selectboxes[5])
- table.insert(outimgs, "pipeworks_pipe_end.png")
- else
- table.insert(outimgs, "pipeworks_plain.png")
- end
-
- local jx = xp+xm
- local jy = yp+ym
- local jz = zp+zm
-
- if (jx+jy+jz) == 1 then
- if xm == 1 then
- table.remove(outimgs, 3)
- table.insert(outimgs, 3, "pipeworks_pipe_end_XXXXX.png")
- end
- if xp == 1 then
- table.remove(outimgs, 4)
- table.insert(outimgs, 4, "pipeworks_pipe_end_XXXXX.png")
- end
- if ym == 1 then
- table.remove(outimgs, 1)
- table.insert(outimgs, 1, "pipeworks_pipe_end_XXXXX.png")
- end
- if xp == 1 then
- table.remove(outimgs, 2)
- table.insert(outimgs, 2, "pipeworks_pipe_end_XXXXX.png")
- end
- if zm == 1 then
- table.remove(outimgs, 5)
- table.insert(outimgs, 5, "pipeworks_pipe_end_XXXXX.png")
- end
- if zp == 1 then
- table.remove(outimgs, 6)
- table.insert(outimgs, 6, "pipeworks_pipe_end_XXXXX.png")
- end
- end
-
- if (jx==1 and jy==1 and jz~=1) or (jx==1 and jy~=1 and jz==1) or (jx~= 1 and jy==1 and jz==1) then
- pipe_addbox(outboxes, pipe_bendsphere)
- end
-
- if (jx==2 and jy~=2 and jz~=2) then
- table.remove(outimgs, 5)
- table.remove(outimgs, 5)
- table.insert(outimgs, 5, "pipeworks_windowed_XXXXX.png")
- table.insert(outimgs, 5, "pipeworks_windowed_XXXXX.png")
- end
-
- if (jx~=2 and jy~=2 and jz==2) or (jx~=2 and jy==2 and jz~=2) then
- table.remove(outimgs, 3)
- table.remove(outimgs, 3)
- table.insert(outimgs, 3, "pipeworks_windowed_XXXXX.png")
- table.insert(outimgs, 3, "pipeworks_windowed_XXXXX.png")
- end
-
- local pname = xm..xp..ym..yp..zm..zp
- local pgroups = ""
-
- if pname ~= "110000" then
- pgroups = {snappy=3, pipe=1, not_in_creative_inventory=1}
- pipedesc = "Pipe segment (empty, "..pname..")... You hacker, you."
- else
- pgroups = {snappy=3, pipe=1}
- pipedesc = "Pipe segment"
- end
-
- minetest.register_node("pipeworks:pipe_"..pname.."_empty", {
- description = pipedesc,
- drawtype = "nodebox",
- tiles = pipes_fix_image_names(outimgs, "_empty"),
- paramtype = "light",
- selection_box = {
- type = "fixed",
- fixed = outsel
- },
- node_box = {
- type = "fixed",
- fixed = outboxes
- },
- groups = pgroups,
- sounds = default.node_sound_wood_defaults(),
- walkable = true,
- stack_max = 99,
- drop = "pipeworks:pipe_110000_empty",
- pipelike=1,
- on_construct = function(pos)
- local meta = minetest.env:get_meta(pos)
- meta:set_int("pipelike",1)
- end,
- after_place_node = function(pos)
- pipe_scanforobjects(pos)
- end,
- after_dig_node = function(pos)
- pipe_scanforobjects(pos)
- end,
- })
-
- minetest.register_node("pipeworks:pipe_"..pname.."_loaded", {
- description = "Pipe segment (loaded, "..pname..")... You hacker, you.",
- drawtype = "nodebox",
- tiles = pipes_fix_image_names(outimgs, "_loaded"),
- paramtype = "light",
- selection_box = {
- type = "fixed",
- fixed = outsel
- },
- node_box = {
- type = "fixed",
- fixed = outboxes
- },
- groups = {snappy=3, pipe=1, not_in_creative_inventory=1},
- sounds = default.node_sound_wood_defaults(),
- walkable = true,
- stack_max = 99,
- drop = "pipeworks:pipe_110000_loaded",
- pipelike=1,
- on_construct = function(pos)
- local meta = minetest.env:get_meta(pos)
- meta:set_int("pipelike",1)
- end,
- after_place_node = function(pos)
- pipe_scanforobjects(pos)
- end,
- after_dig_node = function(pos)
- pipe_scanforobjects(pos)
- end
- })
-end
-end
-end
-end
-end
-end
-
-dofile(minetest.get_modpath("pipeworks").."/tubes.lua")
-dofile(minetest.get_modpath("pipeworks").."/devices.lua")
-dofile(minetest.get_modpath("pipeworks").."/autoplace.lua")
-dofile(minetest.get_modpath("pipeworks").."/crafts.lua")
-
-print("Pipeworks loaded!")
+++ /dev/null
--- This file is basically most of the old init.lua and only supplies the
--- old nodes created by the previous verison of Pipeworks.
---
--- License: WTFPL
---
-
-local nodenames = {
- "vertical",
- "horizontal",
- "junction_xy",
- "junction_xz",
- "bend_xy_down",
- "bend_xy_up",
- "bend_xz",
- "crossing_xz",
- "crossing_xy",
- "crossing_xyz",
- "pipe_segment",
- "cap_neg_x",
- "cap_pos_x",
- "cap_neg_y",
- "cap_pos_y",
- "cap_neg_z",
- "cap_pos_z"
-}
-
-local descriptions = {
- "vertical",
- "horizontal",
- "junction between X and Y axes",
- "junction between X and Z axes",
- "downward bend between X and Y axes",
- "upward bend between X and Y axes",
- "bend between X/Z axes",
- "4-way crossing between X and Z axes",
- "4-way crossing between X/Z and Y axes",
- "6-way crossing",
- "basic segment",
- "capped, negative X half only",
- "capped, positive X half only",
- "capped, negative Y half only",
- "capped, positive Y half only",
- "capped, negative Z half only",
- "capped, positive Z half only"
-}
-
-local nodeimages = {
- {"pipeworks_pipe_end.png",
- "pipeworks_pipe_end.png",
- "pipeworks_plain.png",
- "pipeworks_plain.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png"},
-
- {"pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_pipe_end.png",
- "pipeworks_pipe_end.png",
- "pipeworks_plain.png",
- "pipeworks_plain.png"},
-
- {"pipeworks_pipe_end.png",
- "pipeworks_pipe_end.png",
- "pipeworks_pipe_end.png",
- "pipeworks_plain.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png"},
-
- {"pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_pipe_end.png",
- "pipeworks_pipe_end.png",
- "pipeworks_pipe_end.png",
- "pipeworks_plain.png"},
-
- {"pipeworks_plain.png",
- "pipeworks_pipe_end.png",
- "pipeworks_pipe_end.png",
- "pipeworks_plain.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png"},
-
- {"pipeworks_pipe_end.png",
- "pipeworks_plain.png",
- "pipeworks_pipe_end.png",
- "pipeworks_plain.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png"},
-
- {"pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_pipe_end.png",
- "pipeworks_plain.png",
- "pipeworks_pipe_end.png",
- "pipeworks_plain.png"},
-
- {"pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_pipe_end.png",
- "pipeworks_pipe_end.png",
- "pipeworks_pipe_end.png",
- "pipeworks_pipe_end.png"},
-
- {"pipeworks_pipe_end.png",
- "pipeworks_pipe_end.png",
- "pipeworks_pipe_end.png",
- "pipeworks_pipe_end.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png"},
-
- {"pipeworks_pipe_end.png",
- "pipeworks_pipe_end.png",
- "pipeworks_pipe_end.png",
- "pipeworks_pipe_end.png",
- "pipeworks_pipe_end.png",
- "pipeworks_pipe_end.png"},
-
--- horizontal short segment
-
- {"pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_pipe_end.png",
- "pipeworks_pipe_end.png",
- "pipeworks_plain.png",
- "pipeworks_plain.png"},
-
--- capped
-
- {"pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_pipe_end.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png"},
-
- {"pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_pipe_end.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png"},
-
- {"pipeworks_windowed_XXXXX.png",
- "pipeworks_pipe_end.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png"},
-
- {"pipeworks_pipe_end.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png"},
-
- {"pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_pipe_end.png"},
-
- {"pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_windowed_XXXXX.png",
- "pipeworks_pipe_end.png",
- "pipeworks_windowed_XXXXX.png"},
-}
-
-local selectionboxes = {
- { -0.15, -0.5, -0.15, 0.15, 0.5, 0.15 },
- { -0.5, -0.15, -0.15, 0.5, 0.15, 0.15 },
- { -0.15, -0.5, -0.15, 0.5, 0.5, 0.15 },
- { -0.5, -0.15, -0.15, 0.5, 0.15, 0.5 },
- { -0.15, -0.5, -0.15, 0.5, 0.15, 0.15 },
- { -0.15, -0.15, -0.15, 0.5, 0.5, 0.15 },
- { -0.15, -0.15, -0.15, 0.5, 0.15, 0.5 },
- { -0.5, -0.15, -0.5, 0.5, 0.15, 0.5 },
- { -0.5, -0.5, -0.15, 0.5, 0.5, 0.15 },
- { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 },
- { -0.3, -0.15, -0.15, 0.3, 0.15, 0.15 },
- { -0.5, -0.15, -0.15, 0, 0.15, 0.15 },
- { 0, -0.15, -0.15, 0.5, 0.15, 0.15 },
- { -0.15, -0.5, -0.15, 0.15, 0, 0.15 },
- { -0.15, 0, -0.15, 0.15, 0.5, 0.15 },
- { -0.15, -0.15, -0.5, 0.15, 0.15, 0 },
- { -0.15, -0.15, 0, 0.15, 0.15, 0.5 },
-}
-
-local nodeboxes = {
- {{ -0.15, -0.5 , -0.15, 0.15, -0.45, 0.15 }, -- vertical
- { -0.1 , -0.45, -0.1 , 0.1 , 0.45, 0.1 },
- { -0.15, 0.45, -0.15, 0.15, 0.5 , 0.15 }},
-
- {{ -0.5 , -0.15, -0.15, -0.45, 0.15, 0.15 }, -- horizontal
- { -0.45, -0.1 , -0.1 , 0.45, 0.1 , 0.1 },
- { 0.45, -0.15, -0.15, 0.5 , 0.15, 0.15 }},
-
- {{ -0.15, -0.5 , -0.15, 0.15, -0.45, 0.15 }, -- vertical with X/Z junction
- { -0.1 , -0.45, -0.1 , 0.1 , 0.45, 0.1 },
- { -0.15, 0.45, -0.15, 0.15, 0.5 , 0.15 },
- { 0.1 , -0.1 , -0.1 , 0.45, 0.1 , 0.1 },
- { 0.45, -0.15, -0.15, 0.5 , 0.15, 0.15 }},
-
- {{ -0.15, -0.15, 0.45, 0.15, 0.15, 0.5 }, -- horizontal with X/Z junction
- { -0.1 , -0.1 , 0.1 , 0.1 , 0.1 , 0.45 },
- { -0.5 , -0.15, -0.15, -0.45, 0.15, 0.15 },
- { -0.45, -0.1 , -0.1 , 0.45, 0.1 , 0.1 },
- { 0.45, -0.15, -0.15, 0.5 , 0.15, 0.15 }},
-
- {{ -0.15, -0.5 , -0.15, 0.15, -0.45, 0.15 }, -- bend down from X/Z to Y axis
- { -0.1 , -0.45, -0.1 , 0.1 , 0.1 , 0.1 },
- { -0.1 , -0.1 , -0.1 , 0.45, 0.1 , 0.1 },
- { 0.45, -0.15, -0.15, 0.5 , 0.15, 0.15 }},
-
- {{ -0.15, 0.45 , -0.15, 0.15, 0.5, 0.15 }, -- bend up from X/Z to Y axis
- { -0.1 , -0.1 , -0.1 , 0.1 , 0.45, 0.1 },
- { -0.1 , -0.1 , -0.1 , 0.45, 0.1 , 0.1 },
- { 0.45, -0.15, -0.15, 0.5 , 0.15, 0.15 }},
-
- {{ -0.15, -0.15, 0.45, 0.15, 0.15, 0.5 }, -- bend between X and Z axes
- { -0.1 , -0.1 , 0.1 , 0.1 , 0.1 , 0.45 },
- { -0.1 , -0.1 , -0.1 , 0.45, 0.1 , 0.1 },
- { 0.45, -0.15, -0.15, 0.5 , 0.15, 0.15 }},
-
- {{ -0.5 , -0.15, -0.15, -0.45, 0.15, 0.15 }, -- 4-way crossing between X and Z axes
- { -0.45, -0.1 , -0.1 , 0.45, 0.1 , 0.1 },
- { 0.45, -0.15, -0.15, 0.5 , 0.15, 0.15 },
- { -0.15, -0.15, -0.5 , 0.15, 0.15, -0.45 },
- { -0.1 , -0.1 , -0.45, 0.1 , 0.1 , 0.45 },
- { -0.15, -0.15, 0.45, 0.15, 0.15, 0.5 }},
-
- {{ -0.15, -0.5 , -0.15, 0.15, -0.45, 0.15 }, -- 4-way crossing between X/Z and Y axes
- { -0.1 , -0.45, -0.1 , 0.1 , 0.45, 0.1 },
- { -0.15, 0.45, -0.15, 0.15, 0.5 , 0.15 },
- { -0.5 , -0.15, -0.15, -0.45, 0.15, 0.15 },
- { -0.45, -0.1 , -0.1 , 0.45, 0.1 , 0.1 },
- { 0.45, -0.15, -0.15, 0.5 , 0.15, 0.15 }},
-
- {{ -0.5 , -0.15, -0.15, -0.45, 0.15, 0.15 }, -- 6-way crossing (all 3 axes)
- { -0.45, -0.1 , -0.1 , 0.45, 0.1 , 0.1 },
- { 0.45, -0.15, -0.15, 0.5 , 0.15, 0.15 },
- { -0.15, -0.15, -0.5 , 0.15, 0.15, -0.45 },
- { -0.1 , -0.1 , -0.45, 0.1 , 0.1 , 0.45 },
- { -0.15, -0.15, 0.45, 0.15, 0.15, 0.5 },
- { -0.15, -0.5 , -0.15, 0.15, -0.45, 0.15 },
- { -0.1 , -0.45, -0.1 , 0.1 , 0.45, 0.1 },
- { -0.15, 0.45, -0.15, 0.15, 0.5 , 0.15 }},
-
- {{ -0.3 , -0.15, -0.15, -0.25, 0.15, 0.15 }, -- main center segment
- { -0.25, -0.1 , -0.1 , 0.25, 0.1 , 0.1 },
- { 0.25, -0.15, -0.15, 0.3 , 0.15, 0.15 }},
-
- {{ -0.5, -0.15, -0.15, -0.45, 0.15, 0.15 }, -- anchored at -X
- { -0.45, -0.1, -0.1, -0.2, 0.1, 0.1 },
- { -0.2, -0.15, -0.15, -0.15, 0.15, 0.15 },
- { -0.15, -0.12, -0.12, -0.1, 0.12, 0.12 },
- { -0.1, -0.08, -0.08, -0.05, 0.08, 0.08 },
- { -0.05, -0.04, -0.04, 0, 0.04, 0.04 }},
-
- {{ 0.45, -0.15, -0.15, 0.5, 0.15, 0.15 }, -- anchored at +X
- { 0.2, -0.1, -0.1, 0.45, 0.1, 0.1 },
- { 0.15, -0.15, -0.15, 0.2, 0.15, 0.15 },
- { 0.1, -0.12, -0.12, 0.15, 0.12, 0.12 },
- { 0.05, -0.08, -0.08, 0.1, 0.08, 0.08 },
- { 0, -0.04, -0.04, 0.05, 0.04, 0.04 }},
-
- {{ -0.15, -0.5, -0.15, 0.15, -0.45, 0.15 }, -- anchored at -Y
- { -0.1, -0.45, -0.1, 0.1, -0.2, 0.1 },
- { -0.15, -0.2, -0.15, 0.15, -0.15, 0.15 },
- { -0.12, -0.15, -0.12, 0.12, -0.1, 0.12 },
- { -0.08, -0.1, -0.08, 0.08, -0.05, 0.08 },
- { -0.04, -0.05, -0.04, 0.04, 0, 0.04 }},
-
- {{ -0.15, 0.45, -0.15, 0.15, 0.5, 0.15 }, -- anchored at +Y
- { -0.1, 0.2, -0.1, 0.1, 0.45, 0.1 },
- { -0.15, 0.15, -0.15, 0.15, 0.2, 0.15 },
- { -0.12, 0.1, -0.12, 0.12, 0.15, 0.12 },
- { -0.08, 0.05, -0.08, 0.08, 0.1, 0.08 } ,
- { -0.04, 0, -0.04, 0.04, 0.05, 0.04 }},
-
- {{ -0.15, -0.15, -0.5, 0.15, 0.15, -0.45 }, -- anchored at -Z
- { -0.1, -0.1, -0.45, 0.1, 0.1, -0.2 },
- { -0.15, -0.15, -0.2, 0.15, 0.15, -0.15 },
- { -0.12, -0.12, -0.15, 0.12, 0.12, -0.1 },
- { -0.08, -0.08, -0.1, 0.08, 0.08, -0.05 },
- { -0.04, -0.04, -0.05, 0.04, 0.04, 0 }},
-
- {{ -0.15, -0.15, 0.45, 0.15, 0.15, 0.5 }, -- anchored at +Z
- { -0.1, -0.1, 0.2, 0.1, 0.1, 0.45 },
- { -0.15, -0.15, 0.15, 0.15, 0.15, 0.2 },
- { -0.12, -0.12, 0.1, 0.12, 0.12, 0.15 },
- { -0.08, -0.08, 0.05, 0.08, 0.08, 0.1 },
- { -0.04, -0.04, 0, 0.04, 0.04, 0.05 }},
-}
-
-function fix_image_names(node, replacement)
- outtable={}
- for i in ipairs(nodeimages[node]) do
- outtable[i]=string.gsub(nodeimages[node][i], "_XXXXX", replacement)
- end
-
- return outtable
-end
-
--- Now define the actual nodes
-
-for node in ipairs(nodenames) do
-
- if node ~= 2 then
- pgroups = {snappy=3, pipe=1, not_in_creative_inventory=1}
- else
- pgroups = {snappy=3, pipe=1}
- end
-
- minetest.register_node("pipeworks:"..nodenames[node], {
- description = "Empty Pipe ("..descriptions[node]..")",
- drawtype = "nodebox",
- tiles = fix_image_names(node, "_empty"),
- paramtype = "light",
- paramtype2 = "facedir",
- selection_box = {
- type = "fixed",
- fixed = selectionboxes[node],
- },
- node_box = {
- type = "fixed",
- fixed = nodeboxes[node]
- },
- groups = pgroups,
- sounds = default.node_sound_wood_defaults(),
- walkable = true,
- stack_max = 99,
- drop = "pipeworks:pipe"
- })
-
- minetest.register_node("pipeworks:"..nodenames[node].."_loaded", {
- description = "Loaded Pipe ("..descriptions[node]..")",
- drawtype = "nodebox",
- tiles = fix_image_names(node, "_loaded"),
- paramtype = "light",
- paramtype2 = "facedir",
- selection_box = {
- type = "fixed",
- fixed = selectionboxes[node],
- },
- node_box = {
- type = "fixed",
- fixed = nodeboxes[node]
- },
- groups = {snappy=3, pipe=1, not_in_creative_inventory=1},
- sounds = default.node_sound_wood_defaults(),
- walkable = true,
- stack_max = 99,
- drop = "pipeworks:pipe"
- })
-end
-
+++ /dev/null
--- This file supplies pneumatic tubes and a 'test' device
-
-minetest.register_node("pipeworks:testobject", {
- description = "Pneumatic tube test ojbect",
- tiles = {
- "pipeworks_testobject.png",
- },
- paramtype = "light",
- groups = {snappy=3, tubedevice=1},
- sounds = default.node_sound_wood_defaults(),
- walkable = true,
- after_place_node = function(pos)
- tube_scanforobjects(pos)
- end,
- after_dig_node = function(pos)
- tube_scanforobjects(pos)
- end,
-})
-
--- tables
-
-minetest.register_alias("pipeworks:tube", "pipeworks:tube_000000")
-
-tube_leftstub = {
- { -32/64, -9/64, -9/64, 9/64, 9/64, 9/64 }, -- tube segment against -X face
-}
-
-tube_rightstub = {
- { -9/64, -9/64, -9/64, 32/64, 9/64, 9/64 }, -- tube segment against +X face
-}
-
-tube_bottomstub = {
- { -9/64, -32/64, -9/64, 9/64, 9/64, 9/64 }, -- tube segment against -Y face
-}
-
-
-tube_topstub = {
- { -9/64, -9/64, -9/64, 9/64, 32/64, 9/64 }, -- tube segment against +Y face
-}
-
-tube_frontstub = {
- { -9/64, -9/64, -32/64, 9/64, 9/64, 9/64 }, -- tube segment against -Z face
-}
-
-tube_backstub = {
- { -9/64, -9/64, -9/64, 9/64, 9/64, 32/64 }, -- tube segment against -Z face
-}
-
-tube_selectboxes = {
- { -32/64, -10/64, -10/64, 10/64, 10/64, 10/64 },
- { -10/64 , -10/64, -10/64, 32/64, 10/64, 10/64 },
- { -10/64 , -32/64, -10/64, 10/64, 10/64, 10/64 },
- { -10/64 , -10/64, -10/64, 10/64, 32/64, 10/64 },
- { -10/64 , -10/64, -32/64, 10/64, 10/64, 10/64 },
- { -10/64 , -10/64, -10/64, 10/64, 10/64, 32/64 }
-}
-
--- Functions
-
-function tube_addbox(t, b)
- for i in ipairs(b)
- do table.insert(t, b[i])
- end
-end
-
--- now define the nodes!
-
-for xm = 0, 1 do
-for xp = 0, 1 do
-for ym = 0, 1 do
-for yp = 0, 1 do
-for zm = 0, 1 do
-for zp = 0, 1 do
- local outboxes = {}
- local outsel = {}
- local outimgs = {}
-
- if yp==1 then
- tube_addbox(outboxes, tube_topstub)
- table.insert(outsel, tube_selectboxes[4])
- table.insert(outimgs, "pipeworks_tube_noctr.png")
- else
- table.insert(outimgs, "pipeworks_tube_plain.png")
- end
- if ym==1 then
- tube_addbox(outboxes, tube_bottomstub)
- table.insert(outsel, tube_selectboxes[3])
- table.insert(outimgs, "pipeworks_tube_noctr.png")
- else
- table.insert(outimgs, "pipeworks_tube_plain.png")
- end
- if xp==1 then
- tube_addbox(outboxes, tube_rightstub)
- table.insert(outsel, tube_selectboxes[2])
- table.insert(outimgs, "pipeworks_tube_noctr.png")
- else
- table.insert(outimgs, "pipeworks_tube_plain.png")
- end
- if xm==1 then
- tube_addbox(outboxes, tube_leftstub)
- table.insert(outsel, tube_selectboxes[1])
- table.insert(outimgs, "pipeworks_tube_noctr.png")
- else
- table.insert(outimgs, "pipeworks_tube_plain.png")
- end
- if zp==1 then
- tube_addbox(outboxes, tube_backstub)
- table.insert(outsel, tube_selectboxes[6])
- table.insert(outimgs, "pipeworks_tube_noctr.png")
- else
- table.insert(outimgs, "pipeworks_tube_plain.png")
- end
- if zm==1 then
- tube_addbox(outboxes, tube_frontstub)
- table.insert(outsel, tube_selectboxes[5])
- table.insert(outimgs, "pipeworks_tube_noctr.png")
- else
- table.insert(outimgs, "pipeworks_tube_plain.png")
- end
-
- local jx = xp+xm
- local jy = yp+ym
- local jz = zp+zm
-
- if (jx+jy+jz) == 1 then
- if xm == 1 then
- table.remove(outimgs, 3)
- table.insert(outimgs, 3, "pipeworks_tube_end.png")
- end
- if xp == 1 then
- table.remove(outimgs, 4)
- table.insert(outimgs, 4, "pipeworks_tube_end.png")
- end
- if ym == 1 then
- table.remove(outimgs, 1)
- table.insert(outimgs, 1, "pipeworks_tube_end.png")
- end
- if xp == 1 then
- table.remove(outimgs, 2)
- table.insert(outimgs, 2, "pipeworks_tube_end.png")
- end
- if zm == 1 then
- table.remove(outimgs, 5)
- table.insert(outimgs, 5, "pipeworks_tube_end.png")
- end
- if zp == 1 then
- table.remove(outimgs, 6)
- table.insert(outimgs, 6, "pipeworks_tube_end.png")
- end
- end
-
- local tname = xm..xp..ym..yp..zm..zp
- local tgroups = ""
-
- if tname ~= "000000" then
- tgroups = {snappy=3, tube=1, not_in_creative_inventory=1}
- tubedesc = "Pneumatic tube segment ("..tname..")... You hacker, you."
- iimg=nil
- wscale = {x=1,y=1,z=1}
- else
- tgroups = {snappy=3, tube=1}
- tubedesc = "Pneumatic tube segment"
- iimg="pipeworks_tube_inv.png"
- outimgs = {
- "pipeworks_tube_short.png",
- "pipeworks_tube_short.png",
- "pipeworks_tube_end.png",
- "pipeworks_tube_end.png",
- "pipeworks_tube_short.png",
- "pipeworks_tube_short.png"
- }
- outboxes = { -24/64, -9/64, -9/64, 24/64, 9/64, 9/64 }
- outsel = { -24/64, -10/64, -10/64, 24/64, 10/64, 10/64 }
- wscale = {x=1,y=1,z=0.01}
- end
-
- minetest.register_node("pipeworks:tube_"..tname, {
- description = tubedesc,
- drawtype = "nodebox",
- tiles = outimgs,
- inventory_image=iimg,
- wield_image=iimg,
- wield_scale=wscale,
- paramtype = "light",
- selection_box = {
- type = "fixed",
- fixed = outsel
- },
- node_box = {
- type = "fixed",
- fixed = outboxes
- },
- groups = tgroups,
- sounds = default.node_sound_wood_defaults(),
- walkable = true,
- stack_max = 99,
- drop = "pipeworks:tube_000000",
- tubelike=1,
- on_construct = function(pos)
- local meta = minetest.env:get_meta(pos)
- meta:set_int("tubelike",1)
- end,
- after_place_node = function(pos)
- tube_scanforobjects(pos)
- end,
- after_dig_node = function(pos)
- tube_scanforobjects(pos)
- end
- })
-
-end
-end
-end
-end
-end
-end
-