2021-06-27 13:01:59 -04:00

68 lines
2.6 KiB
Lua

local function bucket_on_place(itemstack, user, pointed_thing, liquid_source)
local pos
if pointed_thing.type == "node" then
local node = minetest.get_node_or_nil(pointed_thing.under)
local def = node and minetest.registered_nodes[node.name]
if not user:get_player_control().sneak and def and def.on_rightclick then
return def.on_rightclick(pointed_thing.under, node, user, itemstack)
end
if def and def.buildable_to then pos = pointed_thing.under
else
pos = pointed_thing.above
local anode = minetest.get_node_or_nil(pos)
if not minetest.registered_nodes[anode.name] or not minetest.registered_nodes[anode.name].buildable_to then
return itemstack
end
end
elseif pointed_thing.type == "object" then
pos = pointed_thing.ref:get_pos()
else return end
minetest.set_node(pos, {name = liquid_source})
return ItemStack("fl_bucket:bucket")
end
minetest.register_craftitem(":fl_bucket:bucket_water", {
description = "bucket of water",
inventory_image = "farlands_bucket_water.png",
stack_max = 1,
liquids_pointable = true,
on_place = function(itemstack, user, pointed_thing)
return bucket_on_place(itemstack, user, pointed_thing, "fl_liquids:water_source")
end,
on_secondary_use = function(itemstack, user, pointed_thing)
return bucket_on_place(itemstack, user, pointed_thing, "fl_liquids:water_source")
end,
groups = {bucket = 1},
})
minetest.register_craftitem(":fl_bucket:bucket_river_water", {
description = "bucket of river water",
inventory_image = "farlands_bucket_river_water.png",
stack_max = 1,
liquids_pointable = true,
on_place = function(itemstack, user, pointed_thing)
return bucket_on_place(itemstack, user, pointed_thing, "fl_liquids:river_water_source")
end,
on_secondary_use = function(itemstack, user, pointed_thing)
return bucket_on_place(itemstack, user, pointed_thing, "fl_liquids:river_water_source")
end,
groups = {bucket = 1},
})
minetest.register_craftitem(":fl_bucket:bucket_lava", {
description = "bucket of lava",
inventory_image = "farlands_bucket_lava.png",
stack_max = 1,
liquids_pointable = true,
on_place = function(itemstack, user, pointed_thing)
return bucket_on_place(itemstack, user, pointed_thing, "fl_liquids:lava_source")
end,
on_secondary_use = function(itemstack, user, pointed_thing)
return bucket_on_place(itemstack, user, pointed_thing, "fl_liquids:lava_source")
end,
groups = {bucket = 1},
})