RealBadAngel
2013-02-03 6123493fd73a9c70210eb89274b5690caf562823
commit | author | age
82cba9 1 minetest.register_craft({
R 2     output = 'technic:deployer_off 1',
3     recipe = {
4         {'default:wood', 'default:chest','default:wood'},
5         {'default:stone', 'mesecons:piston','default:stone'},
6         {'default:stone', 'mesecons:mesecon','default:stone'},
7
8     }
9 })
10
061e6b 11 deployer_signal_on = function(pos, node)
R 12     local pos1={}
13     pos1.x=pos.x
14     pos1.y=pos.y
15     pos1.z=pos.z
16     if node.param2==3 then pos1.x=pos1.x+1 end
17     if node.param2==2 then pos1.z=pos1.z+1 end
18     if node.param2==1 then pos1.x=pos1.x-1 end
19     if node.param2==0 then pos1.z=pos1.z-1 end
20
21     if node.name == "technic:deployer_off" then
fdc056 22         local node1=minetest.env:get_node(pos1)
R 23         if node1.name == "air" then 
24             hacky_swap_node(pos,"technic:deployer_on")
25             nodeupdate(pos)
26             local meta = minetest.env:get_meta(pos);
27             local inv = meta:get_inventory()
28             local i=0
29             for _,stack in ipairs(inv:get_list("main")) do
30             i=i+1
31             if stack:get_name() ~=nil and minetest.registered_nodes[stack:get_name()]~=nil then 
32                 node1={name=stack:get_name(), param1=0, param2=node.param2}
33                 minetest.env:place_node(pos1,node1)
34                 stack:take_item(1);
35                 inv:set_stack("main", i, stack)
36                 return
b55bae 37                 end
061e6b 38             end
R 39     end
40     end
41 end
42
43 deployer_signal_off = function(pos, node)
44     if node.name == "technic:deployer_on" then
45         hacky_swap_node(pos,"technic:deployer_off")
46         nodeupdate(pos)
47     end
48 end
49
82cba9 50 minetest.register_node("technic:deployer_off", {
R 51     description = "Deployer",
52     tile_images = {"technic_deployer_top.png","technic_deployer_bottom.png","technic_deployer_side2.png","technic_deployer_side1.png",
53             "technic_deployer_back.png","technic_deployer_front_off.png"},
54     is_ground_content = true,
55     paramtype2 = "facedir",
061e6b 56     groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2, mesecon = 2,tubedevice=1, tubedevice_receiver=1},
R 57     mesecons = {effector={action_on=deployer_signal_on}},
58     tube={insert_object=function(pos,node,stack,direction)
59             local meta=minetest.env:get_meta(pos)
60             local inv=meta:get_inventory()
61             return inv:add_item("main",stack)
62         end,
63         can_insert=function(pos,node,stack,direction)
64             local meta=minetest.env:get_meta(pos)
65             local inv=meta:get_inventory()
66             return inv:room_for_item("main",stack)
67         end,
68         input_inventory="main"},
82cba9 69     sounds = default.node_sound_stone_defaults(),
R 70     on_construct = function(pos)
71     local meta = minetest.env:get_meta(pos)
72     meta:set_string("formspec",
73                 "invsize[8,9;]"..
74                 "label[0,0;Deployer]"..
75                 "list[current_name;main;4,1;3,3;]"..
76                 "list[current_player;main;0,5;8,4;]")
77         meta:set_string("infotext", "Deployer")
78         local inv = meta:get_inventory()
79         inv:set_size("main", 3*3)
80     end,
81
82     can_dig = function(pos,player)
83         local meta = minetest.env:get_meta(pos);
84         local inv = meta:get_inventory()
85         if not inv:is_empty("main") then
86             return false
87         end
88         return true
89         end,
90     
91 })
92
93 minetest.register_node("technic:deployer_on", {
94     description = "Deployer",
95     tile_images = {"technic_deployer_top.png","technic_deployer_bottom.png","technic_deployer_side2.png","technic_deployer_side1.png",
96             "technic_deployer_back.png","technic_deployer_front_on.png"},
97     is_ground_content = true,
98     paramtype2 = "facedir",
061e6b 99     groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2, mesecon = 2,tubedevice=1, tubedevice_receiver=1,not_in_creative_inventory=1},
R 100     mesecons = {effector={action_off=deployer_signal_off}},
fdc056 101         tube={insert_object=function(pos,node,stack,direction)
R 102             local meta=minetest.env:get_meta(pos)
103             local inv=meta:get_inventory()
104             return inv:add_item("main",stack)
105         end,
106         can_insert=function(pos,node,stack,direction)
107             local meta=minetest.env:get_meta(pos)
108             local inv=meta:get_inventory()
109             return inv:room_for_item("main",stack)
110         end,
111         input_inventory="main"},
82cba9 112     sounds = default.node_sound_stone_defaults(),
R 113 })