mirror of
https://github.com/minetest/minetest_game.git
synced 2024-12-23 07:10:19 +01:00
Bucket: Allow buckets to trigger the on_punch of entities and nodes
The purpose of this is to allow mods to be able to interact (e.g. fill up) an empty bucket when it is used to punch a node that's not a liquid source or when punching a custom entity (e.g. milking a cow).
This commit is contained in:
parent
56d6eaed85
commit
5b2a896180
@ -19,7 +19,6 @@ Bucket API
|
|||||||
|
|
||||||
The bucket API allows registering new types of buckets for non-default liquids.
|
The bucket API allows registering new types of buckets for non-default liquids.
|
||||||
|
|
||||||
|
|
||||||
bucket.register_liquid(
|
bucket.register_liquid(
|
||||||
"default:lava_source", -- name of the source node
|
"default:lava_source", -- name of the source node
|
||||||
"default:lava_flowing", -- name of the flowing node
|
"default:lava_flowing", -- name of the flowing node
|
||||||
@ -32,6 +31,9 @@ The bucket API allows registering new types of buckets for non-default liquids.
|
|||||||
-- Needed to avoid creating holes in sloping rivers.
|
-- Needed to avoid creating holes in sloping rivers.
|
||||||
)
|
)
|
||||||
|
|
||||||
|
The filled bucket item is returned to the player that uses an empty bucket pointing to the given liquid source.
|
||||||
|
When punching with an empty bucket pointing to an entity or a non-liquid node, the on_punch of the entity or node will be triggered.
|
||||||
|
|
||||||
Beds API
|
Beds API
|
||||||
--------
|
--------
|
||||||
|
|
||||||
|
@ -115,8 +115,11 @@ minetest.register_craftitem("bucket:bucket_empty", {
|
|||||||
stack_max = 99,
|
stack_max = 99,
|
||||||
liquids_pointable = true,
|
liquids_pointable = true,
|
||||||
on_use = function(itemstack, user, pointed_thing)
|
on_use = function(itemstack, user, pointed_thing)
|
||||||
-- Must be pointing to node
|
if pointed_thing.type == "object" then
|
||||||
if pointed_thing.type ~= "node" then
|
pointed_thing.ref:punch(user, 1.0, { full_punch_interval=1.0 }, nil)
|
||||||
|
return user:get_wielded_item()
|
||||||
|
elseif pointed_thing.type ~= "node" then
|
||||||
|
-- do nothing if it's neither object nor node
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
-- Check if pointing to a liquid source
|
-- Check if pointing to a liquid source
|
||||||
@ -165,6 +168,13 @@ minetest.register_craftitem("bucket:bucket_empty", {
|
|||||||
end
|
end
|
||||||
|
|
||||||
return ItemStack(giving_back)
|
return ItemStack(giving_back)
|
||||||
|
else
|
||||||
|
-- non-liquid nodes will have their on_punch triggered
|
||||||
|
local node_def = minetest.registered_nodes[node.name]
|
||||||
|
if node_def then
|
||||||
|
node_def.on_punch(pointed_thing.under, node, user, pointed_thing)
|
||||||
|
end
|
||||||
|
return user:get_wielded_item()
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user