Follow the naming convention and make the first letter Bucket capitalized
[oweals/minetest_game.git] / mods / bucket / init.lua
1 -- Minetest 0.4 mod: bucket
2 -- See README.txt for licensing and other information.
3
4 minetest.register_alias("bucket", "bucket:bucket_empty")
5 minetest.register_alias("bucket_water", "bucket:bucket_water")
6 minetest.register_alias("bucket_lava", "bucket:bucket_lava")
7
8 minetest.register_craft({
9         output = 'bucket:bucket_empty 1',
10         recipe = {
11                 {'default:steel_ingot', '', 'default:steel_ingot'},
12                 {'', 'default:steel_ingot', ''},
13         }
14 })
15
16 bucket = {}
17 bucket.liquids = {}
18
19 -- Register a new liquid
20 --   source = name of the source node
21 --   flowing = name of the flowing node
22 --   itemname = name of the new bucket item (or nil if liquid is not takeable)
23 --   inventory_image = texture of the new bucket item (ignored if itemname == nil)
24 -- This function can be called from any mod (that depends on bucket).
25 function bucket.register_liquid(source, flowing, itemname, inventory_image)
26         bucket.liquids[source] = {
27                 source = source,
28                 flowing = flowing,
29                 itemname = itemname,
30         }
31         bucket.liquids[flowing] = bucket.liquids[source]
32
33         if itemname ~= nil then
34                 minetest.register_craftitem(itemname, {
35                         inventory_image = inventory_image,
36                         stack_max = 1,
37                         liquids_pointable = true,
38                         on_use = function(itemstack, user, pointed_thing)
39                                 -- Must be pointing to node
40                                 if pointed_thing.type ~= "node" then
41                                         return
42                                 end
43                                 -- Check if pointing to a liquid
44                                 n = minetest.env:get_node(pointed_thing.under)
45                                 if bucket.liquids[n.name] == nil then
46                                         -- Not a liquid
47                                         minetest.env:add_node(pointed_thing.above, {name=source})
48                                 elseif n.name ~= source then
49                                         -- It's a liquid
50                                         minetest.env:add_node(pointed_thing.under, {name=source})
51                                 end
52                                 return {name="bucket:bucket_empty"}
53                         end
54                 })
55         end
56 end
57
58 minetest.register_craftitem("bucket:bucket_empty", {
59         description = "Empty Bucket",
60         inventory_image = "bucket.png",
61         stack_max = 1,
62         liquids_pointable = true,
63         on_use = function(itemstack, user, pointed_thing)
64                 -- Must be pointing to node
65                 if pointed_thing.type ~= "node" then
66                         return
67                 end
68                 -- Check if pointing to a liquid source
69                 n = minetest.env:get_node(pointed_thing.under)
70                 liquiddef = bucket.liquids[n.name]
71                 if liquiddef ~= nil and liquiddef.source == n.name and liquiddef.itemname ~= nil then
72                         minetest.env:add_node(pointed_thing.under, {name="air"})
73                         return {name=liquiddef.itemname}
74                 end
75         end,
76 })
77
78 bucket.register_liquid(
79         "default:water_source",
80         "default:water_flowing",
81         "bucket:bucket_water",
82         "bucket_water.png"
83 )
84
85 bucket.register_liquid(
86         "default:lava_source",
87         "default:lava_flowing",
88         "bucket:bucket_lava",
89         "bucket_lava.png"
90 )
91
92 minetest.register_craft({
93         type = "fuel",
94         recipe = "bucket:bucket_lava",
95         burntime = 60,
96 })