123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- local S = minetest.get_translator("pipeworks")
- if pipeworks.enable_detector_tube then
- local detector_tube_step = 5 * tonumber(minetest.settings:get("dedicated_server_step"))
- pipeworks.register_tube("pipeworks:detector_tube_on", {
- description = S("Detecting Pneumatic Tube Segment on"),
- inventory_image = "pipeworks_detector_tube_inv.png",
- plain = { "pipeworks_detector_tube_plain.png" },
- node_def = {
- tube = {can_go = function(pos, node, velocity, stack)
- local meta = minetest.get_meta(pos)
- local name = minetest.get_node(pos).name
- local nitems = meta:get_int("nitems")+1
- meta:set_int("nitems", nitems)
- local saved_pos = vector.new(pos)
- minetest.after(detector_tube_step, minetest.registered_nodes[name].item_exit, saved_pos)
- return pipeworks.notvel(pipeworks.meseadjlist,velocity)
- end},
- groups = {mesecon = 2, not_in_creative_inventory = 1},
- drop = "pipeworks:detector_tube_off_1",
- mesecons = {receptor = {state = "on", rules = pipeworks.mesecons_rules}},
- item_exit = function(pos)
- local meta = minetest.get_meta(pos)
- local nitems = meta:get_int("nitems")-1
- local node = minetest.get_node(pos)
- local name = node.name
- local fdir = node.param2
- if nitems == 0 then
- minetest.set_node(pos, {name = string.gsub(name, "on", "off"), param2 = fdir})
- mesecon.receptor_off(pos, pipeworks.mesecons_rules)
- else
- meta:set_int("nitems", nitems)
- end
- end,
- on_construct = function(pos)
- local meta = minetest.get_meta(pos)
- meta:set_int("nitems", 1)
- local name = minetest.get_node(pos).name
- local saved_pos = vector.new(pos)
- minetest.after(detector_tube_step, minetest.registered_nodes[name].item_exit, saved_pos)
- end,
- },
- })
- pipeworks.register_tube("pipeworks:detector_tube_off", {
- description = S("Detecting Pneumatic Tube Segment"),
- inventory_image = "pipeworks_detector_tube_inv.png",
- plain = { "pipeworks_detector_tube_plain.png" },
- node_def = {
- tube = {can_go = function(pos, node, velocity, stack)
- local node = minetest.get_node(pos)
- local name = node.name
- local fdir = node.param2
- minetest.set_node(pos,{name = string.gsub(name, "off", "on"), param2 = fdir})
- mesecon.receptor_on(pos, pipeworks.mesecons_rules)
- return pipeworks.notvel(pipeworks.meseadjlist, velocity)
- end},
- groups = {mesecon = 2},
- mesecons = {receptor = {state = "off", rules = pipeworks.mesecons_rules }},
- },
- })
- minetest.register_craft( {
- output = "pipeworks:detector_tube_off_1 2",
- recipe = {
- { "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" },
- { "mesecons:mesecon", "mesecons_materials:silicon", "mesecons:mesecon" },
- { "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" }
- },
- })
- end
- local digiline_enabled = minetest.get_modpath("digilines") ~= nil
- if digiline_enabled and pipeworks.enable_digiline_detector_tube then
- pipeworks.register_tube("pipeworks:digiline_detector_tube", {
- description = S("Digiline Detecting Pneumatic Tube Segment"),
- inventory_image = "pipeworks_digiline_detector_tube_inv.png",
- plain = { "pipeworks_digiline_detector_tube_plain.png" },
- node_def = {
- tube = {can_go = function(pos, node, velocity, stack)
- local meta = minetest.get_meta(pos)
- local setchan = meta:get_string("channel")
- digiline:receptor_send(pos, digiline.rules.default, setchan, stack:to_table())
- return pipeworks.notvel(pipeworks.meseadjlist, velocity)
- end},
- on_construct = function(pos)
- local meta = minetest.get_meta(pos)
- meta:set_string("formspec",
- "size[8.6,2.2]"..
- "field[0.6,0.6;8,1;channel;"..S("Channel")..";${channel}]"..
- "image[0.3,1.3;1,1;pipeworks_digiline_detector_tube_inv.png]"..
- "label[1.6,1.2;"..S("Digiline Detecting Tube").."]"
- )
- end,
- on_receive_fields = function(pos, formname, fields, sender)
- if fields.channel then
- minetest.get_meta(pos):set_string("channel", fields.channel)
- end
- end,
- groups = {},
- digiline = {
- receptor = {},
- effector = {
- action = function(pos,node,channel,msg) end
- },
- wire = {
- rules = pipeworks.digilines_rules
- },
- },
- },
- })
- minetest.register_craft( {
- output = "pipeworks:digiline_detector_tube_1 2",
- recipe = {
- { "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" },
- { "digilines:wire_std_00000000", "mesecons_materials:silicon", "digilines:wire_std_00000000" },
- { "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" }
- },
- })
- end
- if pipeworks.enable_conductor_tube then
- pipeworks.register_tube("pipeworks:conductor_tube_off", {
- description = S("Conducting Pneumatic Tube Segment"),
- inventory_image = "pipeworks_conductor_tube_inv.png",
- short = "pipeworks_conductor_tube_short.png",
- plain = { "pipeworks_conductor_tube_plain.png" },
- noctr = { "pipeworks_conductor_tube_noctr.png" },
- ends = { "pipeworks_conductor_tube_end.png" },
- node_def = {
- groups = {mesecon = 2},
- mesecons = {conductor = {state = "off",
- rules = pipeworks.mesecons_rules,
- onstate = "pipeworks:conductor_tube_on_#id"}}
- },
- })
- pipeworks.register_tube("pipeworks:conductor_tube_on", {
- description = S("Conducting Pneumatic Tube Segment on"),
- inventory_image = "pipeworks_conductor_tube_inv.png",
- short = "pipeworks_conductor_tube_short.png",
- plain = { "pipeworks_conductor_tube_on_plain.png" },
- noctr = { "pipeworks_conductor_tube_on_noctr.png" },
- ends = { "pipeworks_conductor_tube_on_end.png" },
- node_def = {
- groups = {mesecon = 2, not_in_creative_inventory = 1},
- drop = "pipeworks:conductor_tube_off_1",
- mesecons = {conductor = {state = "on",
- rules = pipeworks.mesecons_rules,
- offstate = "pipeworks:conductor_tube_off_#id"}}
- },
- })
- minetest.register_craft({
- type = "shapeless",
- output = "pipeworks:conductor_tube_off_1",
- recipe = {"pipeworks:tube_1", "mesecons:mesecon"}
- })
- end
- if digiline_enabled and pipeworks.enable_digiline_conductor_tube then
- pipeworks.register_tube("pipeworks:digiline_conductor_tube", {
- description = S("Digiline Conducting Pneumatic Tube Segment"),
- inventory_image = "pipeworks_tube_inv.png^pipeworks_digiline_conductor_tube_inv.png",
- short = "pipeworks_tube_short.png^pipeworks_digiline_conductor_tube_short.png",
- plain = {"pipeworks_tube_plain.png^pipeworks_digiline_conductor_tube_plain.png"},
- noctr = {"pipeworks_tube_noctr.png^pipeworks_digiline_conductor_tube_noctr.png"},
- ends = {"pipeworks_tube_end.png^pipeworks_digiline_conductor_tube_end.png"},
- node_def = {digiline = {wire = {rules = pipeworks.digilines_rules}}},
- })
- minetest.register_craft({
- type = "shapeless",
- output = "pipeworks:digiline_conductor_tube_1",
- recipe = {"pipeworks:tube_1", "digilines:wire_std_00000000"}
- })
- end
- if digiline_enabled and pipeworks.enable_digiline_conductor_tube and
- pipeworks.enable_conductor_tube then
- pipeworks.register_tube("pipeworks:mesecon_and_digiline_conductor_tube_off", {
- description = S("Mesecon and Digiline Conducting Pneumatic Tube Segment"),
- inventory_image = "pipeworks_conductor_tube_inv.png^pipeworks_digiline_conductor_tube_inv.png",
- short = "pipeworks_conductor_tube_short.png^pipeworks_digiline_conductor_tube_short.png",
- plain = {"pipeworks_conductor_tube_plain.png^pipeworks_digiline_conductor_tube_plain.png"},
- noctr = {"pipeworks_conductor_tube_noctr.png^pipeworks_digiline_conductor_tube_noctr.png"},
- ends = {"pipeworks_conductor_tube_end.png^pipeworks_digiline_conductor_tube_end.png"},
- node_def = {
- digiline = {wire = {rules = pipeworks.digilines_rules}},
- groups = {mesecon = 2},
- mesecons = {conductor = {
- state = "off",
- rules = pipeworks.mesecons_rules,
- onstate = "pipeworks:mesecon_and_digiline_conductor_tube_on_#id"
- }},
- },
- })
- pipeworks.register_tube("pipeworks:mesecon_and_digiline_conductor_tube_on", {
- description = S("Mesecon and Digiline Conducting Pneumatic Tube Segment on"),
- inventory_image = "pipeworks_conductor_tube_inv.png^pipeworks_digiline_conductor_tube_inv.png",
- short = "pipeworks_conductor_tube_short.png^pipeworks_digiline_conductor_tube_short.png",
- plain = {"pipeworks_conductor_tube_on_plain.png^pipeworks_digiline_conductor_tube_plain.png"},
- noctr = {"pipeworks_conductor_tube_on_noctr.png^pipeworks_digiline_conductor_tube_noctr.png"},
- ends = {"pipeworks_conductor_tube_on_end.png^pipeworks_digiline_conductor_tube_end.png"},
- node_def = {
- digiline = {wire = {rules = pipeworks.digilines_rules}},
- groups = {mesecon = 2, not_in_creative_inventory = 1},
- drop = "pipeworks:mesecon_and_digiline_conductor_tube_off_1",
- mesecons = {conductor = {
- state = "on",
- rules = pipeworks.mesecons_rules,
- offstate = "pipeworks:mesecon_and_digiline_conductor_tube_off_#id"}
- },
- },
- })
- minetest.register_craft({
- type = "shapeless",
- output = "pipeworks:mesecon_and_digiline_conductor_tube_off_1",
- recipe = {"pipeworks:tube_1", "mesecons:mesecon", "digilines:wire_std_00000000"}
- })
- minetest.register_craft({
- type = "shapeless",
- output = "pipeworks:mesecon_and_digiline_conductor_tube_off_1",
- recipe = {"pipeworks:conductor_tube_off_1", "digilines:wire_std_00000000"}
- })
- minetest.register_craft({
- type = "shapeless",
- output = "pipeworks:mesecon_and_digiline_conductor_tube_off_1",
- recipe = {"pipeworks:digiline_conductor_tube_1", "mesecons:mesecon"}
- })
- end
|