RealBadAngel
2013-01-27 e9050c43fd1c2d635006cb99800bbc7a2f52122c
commit | author | age
167434 1 minetest.register_craft({
MK 2     output = 'technic:iron_chest 1',
3     recipe = {
4         {'default:steel_ingot','default:steel_ingot','default:steel_ingot'},
5         {'default:steel_ingot','default:chest','default:steel_ingot'},
6         {'default:steel_ingot','default:steel_ingot','default:steel_ingot'},
7     }
8 })
eabde4 9
MK 10 minetest.register_craft({
11     output = 'technic:iron_locked_chest 1',
12     recipe = {
13         {'default:steel_ingot','default:steel_ingot','default:steel_ingot'},
d5a7ad 14         {'default:steel_ingot','default:chest_locked','default:steel_ingot'},
eabde4 15         {'default:steel_ingot','default:steel_ingot','default:steel_ingot'},
MK 16     }
17 })
18
167434 19 minetest.register_craft({
MK 20     output = 'technic:iron_locked_chest 1',
21     recipe = {
22         {'default:steel_ingot'},
23         {'technic:iron_chest'},
24     }
25 })
26
27
28 minetest.register_craftitem("technic:iron_chest", {
29     description = "Iron Chest",
30     stack_max = 99,
31 })
32 minetest.register_craftitem("technic:iron_locked_chest", {
33     description = "Iron Locked Chest",
34     stack_max = 99,
35 })
36
eabde4 37 minetest.register_alias("blabla", "technic:iron_chest")
MK 38
167434 39 minetest.register_node("technic:iron_chest", {
MK 40     description = "Iron Chest",
41     tiles = {"technic_iron_chest_top.png", "technic_iron_chest_top.png", "technic_iron_chest_side.png",
42         "technic_iron_chest_side.png", "technic_iron_chest_side.png", "technic_iron_chest_front.png"},
43     paramtype2 = "facedir",
876218 44     groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,tubedevice=1,tubedevice_receiver=1},
R 45     tube={insert_object=function(pos,node,stack,direction)
46             local meta=minetest.env:get_meta(pos)
47             local inv=meta:get_inventory()
48             return inv:add_item("main",stack)
49         end,
50         can_insert=function(pos,node,stack,direction)
51             local meta=minetest.env:get_meta(pos)
52             local inv=meta:get_inventory()
53             return inv:room_for_item("main",stack)
54         end,
55         input_inventory="main"},
167434 56     legacy_facedir_simple = true,
MK 57     sounds = default.node_sound_wood_defaults(),
58     on_construct = function(pos)
59         local meta = minetest.env:get_meta(pos)
60         meta:set_string("formspec",
61                 "invsize[9,9;]"..
62                 "list[current_name;main;0,0;9,4;]"..
63                 "list[current_player;main;0,5;8,4;]")
64         meta:set_string("infotext", "Iron Chest")
65         local inv = meta:get_inventory()
66         inv:set_size("main", 9*4)
67     end,
68     can_dig = function(pos,player)
69         local meta = minetest.env:get_meta(pos);
70         local inv = meta:get_inventory()
71         return inv:is_empty("main")
72     end,
73     on_metadata_inventory_move = function(pos, from_list, from_index,
74             to_list, to_index, count, player)
75         minetest.log("action", player:get_player_name()..
76                 " moves stuff in chest at "..minetest.pos_to_string(pos))
77         return minetest.node_metadata_inventory_move_allow_all(
78                 pos, from_list, from_index, to_list, to_index, count, player)
79     end,
80     on_metadata_inventory_offer = function(pos, listname, index, stack, player)
81         minetest.log("action", player:get_player_name()..
82                 " moves stuff to chest at "..minetest.pos_to_string(pos))
83         return minetest.node_metadata_inventory_offer_allow_all(
84                 pos, listname, index, stack, player)
85     end,
86       on_metadata_inventory_take = function(pos, listname, index, stack, player)
87         minetest.log("action", player:get_player_name()..
88                 " takes stuff from chest at "..minetest.pos_to_string(pos))
89     end,
90 })
91
92 local function has_locked_chest_privilege(meta, player)
93     if player:get_player_name() ~= meta:get_string("owner") then
94         return false
95     end
96     return true
97 end
98
99 minetest.register_node("technic:iron_locked_chest", {
100     description = "Iron Locked Chest",
101     tiles = {"technic_iron_chest_top.png", "technic_iron_chest_top.png", "technic_iron_chest_side.png",
102         "technic_iron_chest_side.png", "technic_iron_chest_side.png", "technic_iron_chest_locked.png"},
103     paramtype2 = "facedir",
876218 104     groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,tubedevice=1,tubedevice_receiver=1},
R 105     tube={insert_object=function(pos,node,stack,direction)
106             local meta=minetest.env:get_meta(pos)
107             local inv=meta:get_inventory()
108             return inv:add_item("main",stack)
109         end,
110         can_insert=function(pos,node,stack,direction)
111             local meta=minetest.env:get_meta(pos)
112             local inv=meta:get_inventory()
113             return inv:room_for_item("main",stack)
114         end,
115         input_inventory="main"},
167434 116     legacy_facedir_simple = true,
MK 117     sounds = default.node_sound_wood_defaults(),
118     after_place_node = function(pos, placer)
119         local meta = minetest.env:get_meta(pos)
120         meta:set_string("owner", placer:get_player_name() or "")
121         meta:set_string("infotext", "Locked Iron Chest (owned by "..
122                 meta:get_string("owner")..")")
123     end,
124 on_construct = function(pos)
125         local meta = minetest.env:get_meta(pos)
126         meta:set_string("formspec",
127                 "invsize[9,9;]"..
128                 "list[current_name;main;0,0;9,4;]"..
129                 "list[current_player;main;0,5;8,4;]")
130         meta:set_string("infotext", "Iron Locked Chest")
131         meta:set_string("owner", "")
132         local inv = meta:get_inventory()
133         inv:set_size("main", 9*4)
134     end,
135     can_dig = function(pos,player)
136         local meta = minetest.env:get_meta(pos);
137         local inv = meta:get_inventory()
138         return inv:is_empty("main")
139     end,
140     allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
141         local meta = minetest.env:get_meta(pos)
142         if not has_locked_chest_privilege(meta, player) then
143             minetest.log("action", player:get_player_name()..
144                     " tried to access a locked chest belonging to "..
145                     meta:get_string("owner").." at "..
146                     minetest.pos_to_string(pos))
147             return 0
148         end
149         return count
150     end,
151     allow_metadata_inventory_put = function(pos, listname, index, stack, player)
152         local meta = minetest.env:get_meta(pos)
153         if not has_locked_chest_privilege(meta, player) then
154             minetest.log("action", player:get_player_name()..
155                     " tried to access a locked chest belonging to "..
156                     meta:get_string("owner").." at "..
157                     minetest.pos_to_string(pos))
158             return 0
159         end
160         return stack:get_count()
161     end,
162     allow_metadata_inventory_take = function(pos, listname, index, stack, player)
163         local meta = minetest.env:get_meta(pos)
164         if not has_locked_chest_privilege(meta, player) then
165             minetest.log("action", player:get_player_name()..
166                     " tried to access a locked chest belonging to "..
167                     meta:get_string("owner").." at "..
168                     minetest.pos_to_string(pos))
169             return 0
170         end
171         return stack:get_count()
172     end,
173     on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
174         minetest.log("action", player:get_player_name()..
175                 " moves stuff in locked chest at "..minetest.pos_to_string(pos))
176     end,
177     on_metadata_inventory_put = function(pos, listname, index, stack, player)
178         minetest.log("action", player:get_player_name()..
179                 " moves stuff to locked chest at "..minetest.pos_to_string(pos))
180     end,
181     on_metadata_inventory_take = function(pos, listname, index, stack, player)
182         minetest.log("action", player:get_player_name()..
183                 " takes stuff from locked chest at "..minetest.pos_to_string(pos))
184     end,
185 })