RealBadAngel
2013-01-27 704a410fa1391318766927c8baa8a93b0731e7d0
commit | author | age
167434 1 local chest_mark_colors = {
MK 2     '_black',
3     '_blue', 
4     '_brown',
5     '_cyan',
6     '_dark_green',
7     '_dark_grey',
8     '_green',
9     '_grey',
10     '_magenta',
11     '_orange',
12     '_pink',
13     '_red',
14     '_violet',
15     '_white',
16     '_yellow',
17 }
18
19 minetest.register_craft({
20     output = 'technic:gold_chest 1',
21     recipe = {
22         {'moreores:gold_ingot','moreores:gold_ingot','moreores:gold_ingot'},
23         {'moreores:gold_ingot','technic:silver_chest','moreores:gold_ingot'},
24         {'moreores:gold_ingot','moreores:gold_ingot','moreores:gold_ingot'},
25     }
26 })
27
28 minetest.register_craft({
29     output = 'technic:gold_locked_chest 1',
30     recipe = {
31         {'moreores:gold_ingot','moreores:gold_ingot','moreores:gold_ingot'},
32         {'moreores:gold_ingot','technic:silver_locked_chest','moreores:gold_ingot'},
33         {'moreores:gold_ingot','moreores:gold_ingot','moreores:gold_ingot'},
34     }
35 })
36
37 minetest.register_craft({
38     output = 'technic:gold_locked_chest 1',
39     recipe = {
40         {'default:steel_ingot'},
41         {'technic:gold_chest'},
42     }
43 })
44
45 minetest.register_craftitem("technic:gold_chest", {
46     description = "Gold Chest",
47     stack_max = 99,
48 })
49 minetest.register_craftitem("technic:gold_locked_chest", {
50     description = "Gold Locked Chest",
51     stack_max = 99,
52 })
53
704a41 54 gold_chest_formspec    =    "invsize[12,9;]"..
R 55                         "list[current_name;main;0,0;12,4;]"..
56                         "list[current_player;main;0,5;8,4;]"
57
58 gold_chest_inv_size = 12*4
59
14506c 60 minetest.register_node("technic:gold_chest", {
MK 61     description = "Gold Chest",
62     tiles = {"technic_gold_chest_top.png", "technic_gold_chest_top.png", "technic_gold_chest_side.png",
63         "technic_gold_chest_side.png", "technic_gold_chest_side.png", "technic_gold_chest_front.png"},
64     paramtype2 = "facedir",
704a41 65     groups = chest_groups1,
R 66     tube = tubes_properties,
14506c 67     legacy_facedir_simple = true,
MK 68     sounds = default.node_sound_wood_defaults(),
704a41 69
14506c 70     on_construct = function(pos)
MK 71         local meta = minetest.env:get_meta(pos)
704a41 72         meta:set_string("formspec",gold_chest_formspec)
14506c 73         meta:set_string("infotext", "Gold Chest")
MK 74         local inv = meta:get_inventory()
704a41 75         inv:set_size("main", gold_chest_inv_size)
14506c 76     end,
704a41 77
R 78     can_dig = chest_can_dig,
79
14506c 80     on_punch = function (pos, node, puncher)
MK 81     chest_punched (pos,node,puncher);
82     end,
704a41 83
14506c 84     on_receive_fields = function(pos, formname, fields, sender)
704a41 85     local meta = minetest.env:get_meta(pos);
R 86     fields.text = fields.text or ""
87     meta:set_string("text", fields.text)
88     meta:set_string("infotext", '"'..fields.text..'"')
89     meta:set_string("formspec",gold_chest_formspec)
14506c 90     end,
MK 91
704a41 92     on_metadata_inventory_move = def_on_metadata_inventory_move,
R 93     on_metadata_inventory_put = def_on_metadata_inventory_put,
94     on_metadata_inventory_take = def_on_metadata_inventory_take 
14506c 95 })
MK 96
167434 97 for i, state in ipairs(chest_mark_colors) do
MK 98 minetest.register_node("technic:gold_chest".. state, {
99     description = "Gold Chest",
100     tiles = {"technic_gold_chest_top.png", "technic_gold_chest_top.png", "technic_gold_chest_side.png",
101         "technic_gold_chest_side.png", "technic_gold_chest_side.png", "technic_gold_chest_front"..state..".png"},
102     paramtype2 = "facedir",
704a41 103     groups = chest_groups2,
R 104     tube = tubes_properties,
167434 105     legacy_facedir_simple = true,
MK 106     sounds = default.node_sound_wood_defaults(),
14506c 107     drop = "technic:gold_chest",
167434 108     on_construct = function(pos)
MK 109         local meta = minetest.env:get_meta(pos)
704a41 110         meta:set_string("formspec",gold_chest_formspec)
167434 111         meta:set_string("infotext", "Gold Chest")
MK 112         local inv = meta:get_inventory()
704a41 113         inv:set_size("main", gold_chest_inv_size)
167434 114     end,
704a41 115
R 116     can_dig =chest_can_dig,
117
167434 118     on_punch = function (pos, node, puncher)
MK 119     chest_punched (pos,node,puncher);
120     end,
121     
122     on_receive_fields = function(pos, formname, fields, sender)
123         local meta = minetest.env:get_meta(pos);
124               fields.text = fields.text or ""
125         meta:set_string("text", fields.text)
126         meta:set_string("infotext", '"'..fields.text..'"')
704a41 127         meta:set_string("formspec",gold_chest_formspec)
167434 128     end,
MK 129
704a41 130     on_metadata_inventory_move = def_on_metadata_inventory_move,
R 131     on_metadata_inventory_put = def_on_metadata_inventory_put,
132     on_metadata_inventory_take = def_on_metadata_inventory_take 
167434 133 })
MK 134 end
135
14506c 136 minetest.register_node("technic:gold_locked_chest", {
MK 137     description = "Gold Locked Chest",
138     tiles = {"technic_gold_chest_top.png", "technic_gold_chest_top.png", "technic_gold_chest_side.png",
139         "technic_gold_chest_side.png", "technic_gold_chest_side.png", "technic_gold_chest_locked.png"},
140     paramtype2 = "facedir",
eabde4 141     drop = "technic:gold_locked_chest",
704a41 142     groups = chest_groups1,
R 143     tube = tubes_properties,
14506c 144     legacy_facedir_simple = true,
MK 145     sounds = default.node_sound_wood_defaults(),
146     after_place_node = function(pos, placer)
147         local meta = minetest.env:get_meta(pos)
148         meta:set_string("owner", placer:get_player_name() or "")
149         meta:set_string("infotext", "Gold Locked Chest (owned by "..
150                 meta:get_string("owner")..")")
151     end,
152     on_construct = function(pos)
153         local meta = minetest.env:get_meta(pos)
704a41 154         meta:set_string("formspec",gold_chest_formspec)
14506c 155         meta:set_string("infotext", "Gold Locked Chest")
MK 156         meta:set_string("owner", "")
157         local inv = meta:get_inventory()
704a41 158         inv:set_size("main", gold_chest_inv_size)
14506c 159     end,
704a41 160
R 161     can_dig =chest_can_dig,
14506c 162
MK 163     on_punch = function (pos, node, puncher)
704a41 164         local meta = minetest.env:get_meta(pos);
14506c 165         if (has_locked_chest_privilege(meta, puncher)) then
704a41 166             locked_chest_punched (pos,node,puncher);
14506c 167         end
704a41 168     end,
14506c 169     
MK 170     on_receive_fields = function(pos, formname, fields, sender)
704a41 171         local meta = minetest.env:get_meta(pos);
R 172         fields.text = fields.text or ""
14506c 173         meta:set_string("text", fields.text)
MK 174         meta:set_string("infotext", '"'..fields.text..'"')
704a41 175         meta:set_string("formspec",gold_chest_formspec)
14506c 176     end,
MK 177
704a41 178     allow_metadata_inventory_move = def_allow_metadata_inventory_move,
R 179     allow_metadata_inventory_put = def_allow_metadata_inventory_put,
180     allow_metadata_inventory_take = def_allow_metadata_inventory_take,
181     on_metadata_inventory_move = def_on_metadata_inventory_move,
182     on_metadata_inventory_put = def_on_metadata_inventory_put,
183     on_metadata_inventory_take = def_on_metadata_inventory_take 
14506c 184 })
MK 185
167434 186 for i, state in ipairs(chest_mark_colors) do
MK 187 minetest.register_node("technic:gold_locked_chest".. state, {
188     description = "Gold Locked Chest",
189     tiles = {"technic_gold_chest_top.png", "technic_gold_chest_top.png", "technic_gold_chest_side.png",
190         "technic_gold_chest_side.png", "technic_gold_chest_side.png", "technic_gold_chest_locked"..state..".png"},
191     paramtype2 = "facedir",
eabde4 192     drop = "technic:gold_locked_chest",
704a41 193     groups = chest_groups2,
R 194     tube = tubes_properties,
167434 195     legacy_facedir_simple = true,
MK 196     sounds = default.node_sound_wood_defaults(),
197     after_place_node = function(pos, placer)
198         local meta = minetest.env:get_meta(pos)
199         meta:set_string("owner", placer:get_player_name() or "")
200         meta:set_string("infotext", "Gold Locked Chest (owned by "..
201                 meta:get_string("owner")..")")
202     end,
203     on_construct = function(pos)
204         local meta = minetest.env:get_meta(pos)
704a41 205         meta:set_string("formspec",gold_chest_formspec)
167434 206         meta:set_string("infotext", "Gold Locked Chest")
MK 207         meta:set_string("owner", "")
208         local inv = meta:get_inventory()
704a41 209         inv:set_size("main", gold_chest_inv_size)
167434 210     end,
704a41 211
R 212     can_dig = chest_can_dig,
167434 213
MK 214     on_punch = function (pos, node, puncher)
215             local meta = minetest.env:get_meta(pos);
216         if (has_locked_chest_privilege(meta, puncher)) then
217         locked_chest_punched (pos,node,puncher);
218         end
704a41 219     end,
R 220
167434 221     on_receive_fields = function(pos, formname, fields, sender)
704a41 222         local meta = minetest.env:get_meta(pos);
R 223         fields.text = fields.text or ""
167434 224         meta:set_string("text", fields.text)
MK 225         meta:set_string("infotext", '"'..fields.text..'"')
704a41 226         meta:set_string("formspec",gold_chest_formspec)
167434 227     end,
MK 228
704a41 229     allow_metadata_inventory_move = def_allow_metadata_inventory_move,
R 230     allow_metadata_inventory_put = def_allow_metadata_inventory_put,
231     allow_metadata_inventory_take = def_allow_metadata_inventory_take,
232     on_metadata_inventory_move = def_on_metadata_inventory_move,
233     on_metadata_inventory_put = def_on_metadata_inventory_put,
234     on_metadata_inventory_take = def_on_metadata_inventory_take 
167434 235 })
MK 236 end
237
238 function chest_punched (pos,node,puncher)
239     
240     local player_tool = puncher:get_wielded_item();
241     local item=player_tool:get_name();
242     if item == "dye:black" then
243         if (hacky_swap_node(pos,"technic:gold_chest_black")) then
244             player_tool:take_item(1);
245             puncher:set_wielded_item(player_tool);
246             return
247            end
248         end
249     if item == "dye:blue" then
250         if (hacky_swap_node(pos,"technic:gold_chest_blue")) then
251             player_tool:take_item(1);
252             puncher:set_wielded_item(player_tool);
253             return
254            end
255         end
256     if item == "dye:brown" then
257         if (hacky_swap_node(pos,"technic:gold_chest_brown")) then
258             player_tool:take_item(1);
259             puncher:set_wielded_item(player_tool);
260             return
261            end
262         end
263     if item == "dye:cyan" then
264         if (hacky_swap_node(pos,"technic:gold_chest_cyan")) then
265             player_tool:take_item(1);
266             puncher:set_wielded_item(player_tool);
267             return
268            end
269         end
270     if item == "dye:dark_green" then
271         if (hacky_swap_node(pos,"technic:gold_chest_dark_green")) then
272             player_tool:take_item(1);
273             puncher:set_wielded_item(player_tool);
274             return
275            end
276         end
277     if item == "dye:dark_grey" then
278         if (hacky_swap_node(pos,"technic:gold_chest_dark_grey")) then
279             player_tool:take_item(1);
280             puncher:set_wielded_item(player_tool);
281             return
282            end
283         end
284     if item == "dye:green" then
285         if (hacky_swap_node(pos,"technic:gold_chest_green")) then
286             player_tool:take_item(1);
287             puncher:set_wielded_item(player_tool);
288             return
289            end
290         end
291     if item == "dye:grey" then
292         if (hacky_swap_node(pos,"technic:gold_chest_grey")) then
293             player_tool:take_item(1);
294             puncher:set_wielded_item(player_tool);
295             return
296            end
297         end
298     if item == "dye:magenta" then
299         if (hacky_swap_node(pos,"technic:gold_chest_magenta")) then
300             player_tool:take_item(1);
301             puncher:set_wielded_item(player_tool);
302             return
303            end
304         end
305     if item == "dye:orange" then
306         if (hacky_swap_node(pos,"technic:gold_chest_orange")) then
307             player_tool:take_item(1);
308             puncher:set_wielded_item(player_tool);
309             return
310            end
311         end
312     if item == "dye:pink" then
313         if (hacky_swap_node(pos,"technic:gold_chest_pink")) then
314             player_tool:take_item(1);
315             puncher:set_wielded_item(player_tool);
316             return
317            end
318         end
319     if item == "dye:red" then
320         if (hacky_swap_node(pos,"technic:gold_chest_red")) then
321             player_tool:take_item(1);
322             puncher:set_wielded_item(player_tool);
323             return
324            end
325         end
326     if item == "dye:violet" then
327         if (hacky_swap_node(pos,"technic:gold_chest_violet")) then
328             player_tool:take_item(1);
329             puncher:set_wielded_item(player_tool);
330             return
331            end
332         end
333     if item == "dye:white" then
334         if (hacky_swap_node(pos,"technic:gold_chest_white")) then
335             player_tool:take_item(1);
336             puncher:set_wielded_item(player_tool);
337             return
338            end
339         end
340     if item == "dye:yellow" then
341         if (hacky_swap_node(pos,"technic:gold_chest_yellow")) then
342             player_tool:take_item(1);
343             puncher:set_wielded_item(player_tool);
344             return
345            end
346         end
347
348         local meta = minetest.env:get_meta(pos);
349                 meta:set_string("formspec", "hack:sign_text_input")
350     end
351
352
353 function locked_chest_punched (pos,node,puncher)
354     
355     local player_tool = puncher:get_wielded_item();
356     local item=player_tool:get_name();
357     if item == "dye:black" then
358         if (hacky_swap_node(pos,"technic:gold_locked_chest_black")) then
359             player_tool:take_item(1);
360             puncher:set_wielded_item(player_tool);
361             return
362            end
363         end
364     if item == "dye:blue" then
365         if (hacky_swap_node(pos,"technic:gold_locked_chest_blue")) then
366             player_tool:take_item(1);
367             puncher:set_wielded_item(player_tool);
368             return
369            end
370         end
371     if item == "dye:brown" then
372         if (hacky_swap_node(pos,"technic:gold_locked_chest_brown")) then
373             player_tool:take_item(1);
374             puncher:set_wielded_item(player_tool);
375             return
376            end
377         end
378     if item == "dye:cyan" then
379         if (hacky_swap_node(pos,"technic:gold_locked_chest_cyan")) then
380             player_tool:take_item(1);
381             puncher:set_wielded_item(player_tool);
382             return
383            end
384         end
385     if item == "dye:dark_green" then
386         if (hacky_swap_node(pos,"technic:gold_locked_chest_dark_green")) then
387             player_tool:take_item(1);
388             puncher:set_wielded_item(player_tool);
389             return
390            end
391         end
392     if item == "dye:dark_grey" then
393         if (hacky_swap_node(pos,"technic:gold_locked_chest_dark_grey")) then
394             player_tool:take_item(1);
395             puncher:set_wielded_item(player_tool);
396             return
397            end
398         end
399     if item == "dye:green" then
400         if (hacky_swap_node(pos,"technic:gold_locked_chest_green")) then
401             player_tool:take_item(1);
402             puncher:set_wielded_item(player_tool);
403             return
404            end
405         end
406     if item == "dye:grey" then
407         if (hacky_swap_node(pos,"technic:gold_locked_chest_grey")) then
408             player_tool:take_item(1);
409             puncher:set_wielded_item(player_tool);
410             return
411            end
412         end
413     if item == "dye:magenta" then
414         if (hacky_swap_node(pos,"technic:gold_locked_chest_magenta")) then
415             player_tool:take_item(1);
416             puncher:set_wielded_item(player_tool);
417             return
418            end
419         end
420     if item == "dye:orange" then
421         if (hacky_swap_node(pos,"technic:gold_locked_chest_orange")) then
422             player_tool:take_item(1);
423             puncher:set_wielded_item(player_tool);
424             return
425            end
426         end
427     if item == "dye:pink" then
428         if (hacky_swap_node(pos,"technic:gold_locked_chest_pink")) then
429             player_tool:take_item(1);
430             puncher:set_wielded_item(player_tool);
431             return
432            end
433         end
434     if item == "dye:red" then
435         if (hacky_swap_node(pos,"technic:gold_locked_chest_red")) then
436             player_tool:take_item(1);
437             puncher:set_wielded_item(player_tool);
438             return
439            end
440         end
441     if item == "dye:violet" then
442         if (hacky_swap_node(pos,"technic:gold_locked_chest_violet")) then
443             player_tool:take_item(1);
444             puncher:set_wielded_item(player_tool);
445             return
446            end
447         end
448     if item == "dye:white" then
449         if (hacky_swap_node(pos,"technic:gold_locked_chest_white")) then
450             player_tool:take_item(1);
451             puncher:set_wielded_item(player_tool);
452             return
453            end
454         end
455     if item == "dye:yellow" then
456         if (hacky_swap_node(pos,"technic:gold_locked_chest_yellow")) then
457             player_tool:take_item(1);
458             puncher:set_wielded_item(player_tool);
459             return
460            end
461         end
462
463         local meta = minetest.env:get_meta(pos);
464                 meta:set_string("formspec", "hack:sign_text_input")
465     end
876218 466