mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Make it more convenient to customize node drops (#15872)
* Provide tool and digger to get_node_drops This gives games/mods the ability to modify node drops depending on item and/or player metadata without overriding node_dig or other workarounds. * Copy wielded item to prevent modification in get_node_drops * Also pass node pos to get_node_drops Allowing properties of the node and its surroundings to affect node drops. * Copy pos to prevent modification in get_node_drops Co-authored-by: Lars Müller <34514239+appgurueu@users.noreply.github.com> * Don't pass empty item stack to get_node_drops if wielded is nil --------- Co-authored-by: sfan5 <sfan5@live.de> Co-authored-by: Lars Müller <34514239+appgurueu@users.noreply.github.com>
This commit is contained in:
parent
23bfb2db72
commit
2f464843cb
2 changed files with 10 additions and 4 deletions
|
@ -513,7 +513,8 @@ function core.node_dig(pos, node, digger)
|
|||
.. node.name .. " at " .. core.pos_to_string(pos))
|
||||
|
||||
local wielded = digger and digger:get_wielded_item()
|
||||
local drops = core.get_node_drops(node, wielded and wielded:get_name())
|
||||
local drops = core.get_node_drops(node, wielded and wielded:get_name(),
|
||||
wielded and ItemStack(wielded), digger, vector.copy(pos))
|
||||
|
||||
if wielded then
|
||||
local wdef = wielded:get_definition()
|
||||
|
|
|
@ -6910,11 +6910,16 @@ Item handling
|
|||
given `param2` value.
|
||||
* Returns `nil` if the given `paramtype2` does not contain color
|
||||
information.
|
||||
* `core.get_node_drops(node, toolname)`
|
||||
* Returns list of itemstrings that are dropped by `node` when dug
|
||||
with the item `toolname` (not limited to tools).
|
||||
* `core.get_node_drops(node, toolname[, tool, digger, pos])`
|
||||
* Returns list of itemstrings that are dropped by `node` when dug with the
|
||||
item `toolname` (not limited to tools). The default implementation doesn't
|
||||
use `tool`, `digger`, and `pos`, but these are provided by `core.node_dig`
|
||||
since 5.12.0 for games/mods implementing customized drops.
|
||||
* `node`: node as table or node name
|
||||
* `toolname`: name of the item used to dig (can be `nil`)
|
||||
* `tool`: `ItemStack` used to dig (can be `nil`)
|
||||
* `digger`: the ObjectRef that digs the node (can be `nil`)
|
||||
* `pos`: the pos of the dug node (can be `nil`)
|
||||
* `core.get_craft_result(input)`: returns `output, decremented_input`
|
||||
* `input.method` = `"normal"` or `"cooking"` or `"fuel"`
|
||||
* `input.width` = for example `3`
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue