RealBadAngel
2013-03-02 310cdb06ad3c2db5ca9114da3441413047fa7922
commit | author | age
a4a3c2 1 --[[
R 2
3 Bags for Minetest
4
5 Copyright (c) 2012 cornernote, Brett O'Donnell <cornernote@gmail.com>
6 Source Code: https://github.com/cornernote/minetest-particles
7 License: GPLv3
8
9 ]]--
10
11 -- register_on_joinplayer
12 minetest.register_on_joinplayer(function(player)
13     local player_inv = player:get_inventory()
14     local bags_inv = minetest.create_detached_inventory(player:get_player_name().."_bags",{
15         on_put = function(inv, listname, index, stack, player)
16             player:get_inventory():set_stack(listname, index, stack)
17             player:get_inventory():set_size(listname.."contents", stack:get_definition().groups.bagslots)
18         end,
19         on_take = function(inv, listname, index, stack, player)
20             player:get_inventory():set_stack(listname, index, nil)
21         end,
22         allow_put = function(inv, listname, index, stack, player)
23             if stack:get_definition().groups.bagslots then
24                 return 1
25             else
26                 return 0
27             end
28         end,
29         allow_take = function(inv, listname, index, stack, player)
30             if player:get_inventory():is_empty(listname.."contents")==true then
31                 return stack:get_count()
32             else
33                 return 0
34             end
35         end,
36         allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
37             return 0
38         end,
39     })
40     for i=1,4 do
41         local bag = "bag"..i
42         player_inv:set_size(bag, 1)
43         bags_inv:set_size(bag, 1)
44         bags_inv:set_stack(bag,1,player_inv:get_stack(bag,1))
45     end
46 end)
47
48 -- register bag tools
49 minetest.register_tool("unified_inventory:bag_small", {
50     description = "Small Bag",
51     inventory_image = "bags_small.png",
52     groups = {bagslots=8},
53 })
54 minetest.register_tool("unified_inventory:bag_medium", {
55     description = "Medium Bag",
56     inventory_image = "bags_medium.png",
57     groups = {bagslots=16},
58 })
59 minetest.register_tool("unified_inventory:bag_large", {
60     description = "Large Bag",
61     inventory_image = "bags_large.png",
62     groups = {bagslots=24},
63 })
64
65 -- register bag crafts
66 minetest.register_craft({
67     output = "unified_inventory:bag_small",
68     recipe = {
69         {"", "default:stick", ""},
70         {"default:wood", "default:wood", "default:wood"},
71         {"default:wood", "default:wood", "default:wood"},
72     },
73 })
74 minetest.register_craft({
75     output = "unified_inventory:bag_medium",
76     recipe = {
77         {"", "default:stick", ""},
78         {"unified_inventory:bag_small", "unified_inventory:bag_small", "unified_inventory:bag_small"},
79         {"unified_inventory:bag_small", "unified_inventory:bag_small", "unified_inventory:bag_small"},
80     },
81 })
82 minetest.register_craft({
83     output = "unified_inventory:bag_large",
84     recipe = {
85         {"", "default:stick", ""},
86         {"unified_inventory:bag_medium", "unified_inventory:bag_medium", "unified_inventory:bag_medium"},
87         {"unified_inventory:bag_medium", "unified_inventory:bag_medium", "unified_inventory:bag_medium"},
88     },
89 })