summaryrefslogtreecommitdiff
path: root/vacuum_tubes.lua
diff options
context:
space:
mode:
authorTim <t4im@users.noreply.github.com>2015-01-29 22:24:14 +0100
committerTim <t4im@users.noreply.github.com>2015-01-29 22:37:29 +0100
commita98af7bf159a06bb1fd26902ef4c91105aabe2a0 (patch)
treeb7018056dcdb1e95aca53ccdea219aa6e5039c41 /vacuum_tubes.lua
parentb54a868c339969b8f3d88b59153b1bfba44e5fdc (diff)
downloadpipeworks-a98af7bf159a06bb1fd26902ef4c91105aabe2a0.tar
pipeworks-a98af7bf159a06bb1fd26902ef4c91105aabe2a0.tar.gz
pipeworks-a98af7bf159a06bb1fd26902ef4c91105aabe2a0.tar.bz2
pipeworks-a98af7bf159a06bb1fd26902ef4c91105aabe2a0.tar.xz
pipeworks-a98af7bf159a06bb1fd26902ef4c91105aabe2a0.zip
split the big tubes file up into functional modules independend from the tube registration and add their respective crafting recipes
use this opportunity to remove some whitespaces issues from it
Diffstat (limited to 'vacuum_tubes.lua')
-rw-r--r--vacuum_tubes.lua145
1 files changed, 145 insertions, 0 deletions
diff --git a/vacuum_tubes.lua b/vacuum_tubes.lua
new file mode 100644
index 0000000..35fc063
--- /dev/null
+++ b/vacuum_tubes.lua
@@ -0,0 +1,145 @@
+if pipeworks.enable_sand_tube then
+ local sand_noctr_textures = {"pipeworks_sand_tube_noctr.png", "pipeworks_sand_tube_noctr.png", "pipeworks_sand_tube_noctr.png",
+ "pipeworks_sand_tube_noctr.png", "pipeworks_sand_tube_noctr.png", "pipeworks_sand_tube_noctr.png"}
+ local sand_plain_textures = {"pipeworks_sand_tube_plain.png", "pipeworks_sand_tube_plain.png", "pipeworks_sand_tube_plain.png",
+ "pipeworks_sand_tube_plain.png", "pipeworks_sand_tube_plain.png", "pipeworks_sand_tube_plain.png"}
+ local sand_end_textures = {"pipeworks_sand_tube_end.png", "pipeworks_sand_tube_end.png", "pipeworks_sand_tube_end.png",
+ "pipeworks_sand_tube_end.png", "pipeworks_sand_tube_end.png", "pipeworks_sand_tube_end.png"}
+ local sand_short_texture = "pipeworks_sand_tube_short.png"
+ local sand_inv_texture = "pipeworks_sand_tube_inv.png"
+
+ pipeworks.register_tube("pipeworks:sand_tube", "Vacuuming Pneumatic Tube Segment", sand_plain_textures, sand_noctr_textures, sand_end_textures,
+ sand_short_texture, sand_inv_texture,
+ {groups = {sand_tube = 1}})
+
+ minetest.register_abm({nodenames = {"group:sand_tube"},
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ for _, object in ipairs(minetest.get_objects_inside_radius(pos, 2)) do
+ if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" then
+ if object:get_luaentity().itemstring ~= "" then
+ pipeworks.tube_inject_item(pos, pos, vector.new(0, 0, 0), object:get_luaentity().itemstring)
+ end
+ object:get_luaentity().itemstring = ""
+ object:remove()
+ end
+ end
+ end
+ })
+end
+
+if pipeworks.enable_mese_sand_tube then
+ local mese_sand_noctr_textures = {"pipeworks_mese_sand_tube_noctr.png", "pipeworks_mese_sand_tube_noctr.png", "pipeworks_mese_sand_tube_noctr.png",
+ "pipeworks_mese_sand_tube_noctr.png", "pipeworks_mese_sand_tube_noctr.png", "pipeworks_mese_sand_tube_noctr.png"}
+ local mese_sand_plain_textures = {"pipeworks_mese_sand_tube_plain.png", "pipeworks_mese_sand_tube_plain.png", "pipeworks_mese_sand_tube_plain.png",
+ "pipeworks_mese_sand_tube_plain.png", "pipeworks_mese_sand_tube_plain.png", "pipeworks_mese_sand_tube_plain.png"}
+ local mese_sand_end_textures = {"pipeworks_mese_sand_tube_end.png", "pipeworks_mese_sand_tube_end.png", "pipeworks_mese_sand_tube_end.png",
+ "pipeworks_mese_sand_tube_end.png", "pipeworks_mese_sand_tube_end.png", "pipeworks_mese_sand_tube_end.png"}
+ local mese_sand_short_texture = "pipeworks_mese_sand_tube_short.png"
+ local mese_sand_inv_texture = "pipeworks_mese_sand_tube_inv.png"
+
+ pipeworks.register_tube("pipeworks:mese_sand_tube", "Adjustable Vacuuming Pneumatic Tube Segment", mese_sand_plain_textures, mese_sand_noctr_textures,
+ mese_sand_end_textures, mese_sand_short_texture,mese_sand_inv_texture,
+ {groups = {mese_sand_tube = 1},
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_int("dist", 0)
+ meta:set_string("formspec",
+ "size[2,1]"..
+ "field[.5,.5;1.5,1;dist;distance;${dist}]")
+ meta:set_string("infotext", "Adjustable Vacuuming Pneumatic Tube Segment")
+ end,
+ on_receive_fields = function(pos,formname,fields,sender)
+ local meta = minetest.get_meta(pos)
+ local dist
+ _, dist = pcall(tonumber, fields.dist)
+ if dist and 0 <= dist and dist <= 8 then meta:set_int("dist", dist) end
+ end,
+ })
+
+ local function get_objects_with_square_radius(pos, rad)
+ rad = rad + .5;
+ local objs = {}
+ for _,object in ipairs(minetest.get_objects_inside_radius(pos, math.sqrt(3)*rad)) do
+ if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" then
+ local opos = object:getpos()
+ if pos.x - rad <= opos.x and opos.x <= pos.x + rad and pos.y - rad <= opos.y and opos.y <= pos.y + rad and pos.z - rad <= opos.z and opos.z <= pos.z + rad then
+ objs[#objs + 1] = object
+ end
+ end
+ end
+ return objs
+ end
+
+ minetest.register_abm({nodenames = {"group:mese_sand_tube"},
+ interval = 1,
+ chance = 1,
+ action = function(pos, node, active_object_count, active_object_count_wider)
+ for _,object in ipairs(get_objects_with_square_radius(pos, minetest.get_meta(pos):get_int("dist"))) do
+ if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" then
+ if object:get_luaentity().itemstring ~= "" then
+ pipeworks.tube_inject_item(pos, pos, vector.new(0, 0, 0), object:get_luaentity().itemstring)
+ end
+ object:get_luaentity().itemstring = ""
+ object:remove()
+ end
+ end
+ end
+ })
+end
+
+minetest.register_craft( {
+ output = "pipeworks:sand_tube_1 2",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "default:sand", "default:sand", "default:sand" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
+ },
+})
+
+minetest.register_craft( {
+ output = "pipeworks:sand_tube_1 2",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "default:desert_sand", "default:desert_sand", "default:desert_sand" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
+ },
+})
+
+minetest.register_craft( {
+ output = "pipeworks:sand_tube_1",
+ recipe = {
+ { "default:desert_sand", "pipeworks:tube_1", "default:desert_sand" },
+ },
+})
+
+minetest.register_craft( {
+ output = "pipeworks:mese_sand_tube_1 2",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "default:sand", "default:mese_crystal", "default:sand" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
+ },
+})
+
+minetest.register_craft( {
+ output = "pipeworks:mese_sand_tube_1 2",
+ recipe = {
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
+ { "default:desert_sand", "default:mese_crystal", "default:desert_sand" },
+ { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
+ },
+})
+
+minetest.register_craft( {
+ type = "shapeless",
+ output = "pipeworks:mese_sand_tube_1",
+ recipe = {
+ "pipeworks:sand_tube_1",
+ "default:mese_crystal_fragment",
+ "default:mese_crystal_fragment",
+ "default:mese_crystal_fragment",
+ "default:mese_crystal_fragment"
+ },
+})