mirror of
https://github.com/minetest/minetest_game.git
synced 2024-12-22 22:22:25 +01:00
Bucket: Add optional 'force-renew' bool to registration
River water needs to be 'liquid_renewable = false' to avoid a mess caused by spreading of sources, however picking it up with a bucket then creates a hole in the river. Allow a 'force-renew' of the source node if it has a source neighbour.
This commit is contained in:
parent
78311a27a1
commit
7b30c26a45
@ -26,7 +26,10 @@ The bucket API allows registering new types of buckets for non-default liquids.
|
||||
"bucket:bucket_lava", -- name of the new bucket item (or nil if liquid is not takeable)
|
||||
"bucket_lava.png", -- texture of the new bucket item (ignored if itemname == nil)
|
||||
"Lava Bucket", -- text description of the bucket item
|
||||
{lava_bucket = 1} -- groups of the bucket item, OPTIONAL
|
||||
{lava_bucket = 1}, -- groups of the bucket item, OPTIONAL
|
||||
false -- force-renew, OPTIONAL. Force the liquid source to renew if it has
|
||||
-- a source neighbour, even if defined as 'liquid_renewable = false'.
|
||||
-- Needed to avoid creating holes in sloping rivers.
|
||||
)
|
||||
|
||||
Beds API
|
||||
|
@ -36,12 +36,17 @@ end
|
||||
-- inventory_image = texture of the new bucket item (ignored if itemname == nil)
|
||||
-- name = text description of the bucket item
|
||||
-- groups = (optional) groups of the bucket item, for example {water_bucket = 1}
|
||||
-- force_renew = (optional) bool. Force the liquid source to renew if it has a
|
||||
-- source neighbour, even if defined as 'liquid_renewable = false'.
|
||||
-- Needed to avoid creating holes in sloping rivers.
|
||||
-- This function can be called from any mod (that depends on bucket).
|
||||
function bucket.register_liquid(source, flowing, itemname, inventory_image, name, groups)
|
||||
function bucket.register_liquid(source, flowing, itemname, inventory_image, name,
|
||||
groups, force_renew)
|
||||
bucket.liquids[source] = {
|
||||
source = source,
|
||||
flowing = flowing,
|
||||
itemname = itemname,
|
||||
force_renew = force_renew,
|
||||
}
|
||||
bucket.liquids[flowing] = bucket.liquids[source]
|
||||
|
||||
@ -149,7 +154,15 @@ minetest.register_craftitem("bucket:bucket_empty", {
|
||||
|
||||
end
|
||||
|
||||
minetest.add_node(pointed_thing.under, {name="air"})
|
||||
-- force_renew requires a source neighbour
|
||||
local source_neighbor = false
|
||||
if liquiddef.force_renew then
|
||||
source_neighbor =
|
||||
minetest.find_node_near(pointed_thing.under, 1, liquiddef.source)
|
||||
end
|
||||
if not (source_neighbor and liquiddef.force_renew) then
|
||||
minetest.add_node(pointed_thing.under, {name = "air"})
|
||||
end
|
||||
|
||||
return ItemStack(giving_back)
|
||||
end
|
||||
@ -171,7 +184,8 @@ bucket.register_liquid(
|
||||
"bucket:bucket_river_water",
|
||||
"bucket_river_water.png",
|
||||
"River Water Bucket",
|
||||
{water_bucket = 1}
|
||||
{water_bucket = 1},
|
||||
true
|
||||
)
|
||||
|
||||
bucket.register_liquid(
|
||||
|
Loading…
Reference in New Issue
Block a user