1 -- Minetest 0.4 mod: bucket
2 -- See README.txt for licensing and other information.
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")
8 minetest.register_craft({
9 output = 'bucket:bucket_empty 1',
11 {'default:steel_ingot', '', 'default:steel_ingot'},
12 {'', 'default:steel_ingot', ''},
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] = {
31 bucket.liquids[flowing] = bucket.liquids[source]
33 if itemname ~= nil then
34 minetest.register_craftitem(itemname, {
35 inventory_image = inventory_image,
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
43 -- Check if pointing to a liquid
44 n = minetest.env:get_node(pointed_thing.under)
45 if bucket.liquids[n.name] == nil then
47 minetest.env:add_node(pointed_thing.above, {name=source})
48 elseif n.name ~= source then
50 minetest.env:add_node(pointed_thing.under, {name=source})
52 return {name="bucket:bucket_empty"}
58 minetest.register_craftitem("bucket:bucket_empty", {
59 description = "Empty Bucket",
60 inventory_image = "bucket.png",
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
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}
78 bucket.register_liquid(
79 "default:water_source",
80 "default:water_flowing",
81 "bucket:bucket_water",
85 bucket.register_liquid(
86 "default:lava_source",
87 "default:lava_flowing",
92 minetest.register_craft({
94 recipe = "bucket:bucket_lava",