RealBadAngel
2013-02-01 061e6bbadc89a4e4be2818a691436f8144327cf1
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
22         hacky_swap_node(pos,"technic:deployer_on")
23         nodeupdate(pos)
24         local meta = minetest.env:get_meta(pos);
25         local inv = meta:get_inventory()
26         local i=0
27         for _,stack in ipairs(inv:get_list("main")) do
28         i=i+1
29         if stack:get_name() ~=nil then 
30             node1={name=stack:get_name(), param1=0, param2=node.param2}
31             minetest.env:place_node(pos1,node1)
32             stack:take_item(1);
33             inv:set_stack("main", i, stack)
34             return
35             end
36     end
37     end
38 end
39
40 deployer_signal_off = function(pos, node)
41     if node.name == "technic:deployer_on" then
42         hacky_swap_node(pos,"technic:deployer_off")
43         nodeupdate(pos)
44     end
45 end
46
82cba9 47 minetest.register_node("technic:deployer_off", {
R 48     description = "Deployer",
49     tile_images = {"technic_deployer_top.png","technic_deployer_bottom.png","technic_deployer_side2.png","technic_deployer_side1.png",
50             "technic_deployer_back.png","technic_deployer_front_off.png"},
51     is_ground_content = true,
52     paramtype2 = "facedir",
061e6b 53     groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2, mesecon = 2,tubedevice=1, tubedevice_receiver=1},
R 54     mesecons = {effector={action_on=deployer_signal_on}},
55     tube={insert_object=function(pos,node,stack,direction)
56             local meta=minetest.env:get_meta(pos)
57             local inv=meta:get_inventory()
58             return inv:add_item("main",stack)
59         end,
60         can_insert=function(pos,node,stack,direction)
61             local meta=minetest.env:get_meta(pos)
62             local inv=meta:get_inventory()
63             return inv:room_for_item("main",stack)
64         end,
65         input_inventory="main"},
82cba9 66     sounds = default.node_sound_stone_defaults(),
R 67     on_construct = function(pos)
68     local meta = minetest.env:get_meta(pos)
69     meta:set_string("formspec",
70                 "invsize[8,9;]"..
71                 "label[0,0;Deployer]"..
72                 "list[current_name;main;4,1;3,3;]"..
73                 "list[current_player;main;0,5;8,4;]")
74         meta:set_string("infotext", "Deployer")
75         local inv = meta:get_inventory()
76         inv:set_size("main", 3*3)
77     end,
78
79     can_dig = function(pos,player)
80         local meta = minetest.env:get_meta(pos);
81         local inv = meta:get_inventory()
82         if not inv:is_empty("main") then
83             return false
84         end
85         return true
86         end,
87     
88 })
89
90 minetest.register_node("technic:deployer_on", {
91     description = "Deployer",
92     tile_images = {"technic_deployer_top.png","technic_deployer_bottom.png","technic_deployer_side2.png","technic_deployer_side1.png",
93             "technic_deployer_back.png","technic_deployer_front_on.png"},
94     is_ground_content = true,
95     paramtype2 = "facedir",
96     tubelike=1,
061e6b 97     groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2, mesecon = 2,tubedevice=1, tubedevice_receiver=1,not_in_creative_inventory=1},
R 98     mesecons = {effector={action_off=deployer_signal_off}},
82cba9 99     sounds = default.node_sound_stone_defaults(),
R 100 })