1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-08-16 18:01:40 +00:00

Clarify documentation on node/item callbacks (#16385)

This commit is contained in:
sfan5 2025-08-13 20:38:41 +02:00 committed by GitHub
parent a5197a6719
commit 2a96b31ffc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 39 additions and 36 deletions

View file

@ -353,7 +353,7 @@ function core.item_place(itemstack, placer, pointed_thing, param2)
return itemstack, nil return itemstack, nil
end end
function core.item_secondary_use(itemstack, placer) function core.item_secondary_use(itemstack, user)
return itemstack return itemstack
end end
@ -390,7 +390,7 @@ function core.item_pickup(itemstack, picker, pointed_thing, ...)
end end
end end
-- Pickup item. -- Pick up item
local inv = picker and picker:get_inventory() local inv = picker and picker:get_inventory()
if inv then if inv then
return inv:add_item("main", itemstack) return inv:add_item("main", itemstack)
@ -639,6 +639,7 @@ core.nodedef_default = {
on_drop = redef_wrapper(core, 'item_drop'), -- core.item_drop on_drop = redef_wrapper(core, 'item_drop'), -- core.item_drop
on_pickup = redef_wrapper(core, 'item_pickup'), -- core.item_pickup on_pickup = redef_wrapper(core, 'item_pickup'), -- core.item_pickup
on_use = nil, on_use = nil,
after_use = nil,
can_dig = nil, can_dig = nil,
on_punch = redef_wrapper(core, 'node_punch'), -- core.node_punch on_punch = redef_wrapper(core, 'node_punch'), -- core.node_punch

View file

@ -6148,34 +6148,34 @@ Call these functions only at load time!
* Called every server step, usually interval of 0.1s. * Called every server step, usually interval of 0.1s.
* `dtime` is the time since last execution in seconds. * `dtime` is the time since last execution in seconds.
* `core.register_on_mods_loaded(function())` * `core.register_on_mods_loaded(function())`
* Called after mods have finished loading and before the media is cached or the * Called after all mods have finished loading and before the media is cached
aliases handled. or aliases are handled.
* `core.register_on_shutdown(function())` * `core.register_on_shutdown(function())`
* Called before server shutdown * Called during server shutdown before players are kicked.
* Players that were kicked by the shutdown procedure are still fully accessible
in `core.get_connected_players()`.
* **Warning**: If the server terminates abnormally (i.e. crashes), the * **Warning**: If the server terminates abnormally (i.e. crashes), the
registered callbacks **will likely not be run**. Data should be saved at registered callbacks will likely **not run**. Data should be saved at
semi-frequent intervals as well as on server shutdown. semi-frequent intervals as well as on server shutdown.
* `core.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack, pointed_thing))` * `core.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack, pointed_thing))`
* Called when a node has been placed * Called after a node has been placed.
* If return `true` no item is taken from `itemstack` * If `true` is returned no item is taken from `itemstack`
* `placer` may be any valid ObjectRef or nil. * `placer` may be any valid ObjectRef or nil.
* **Not recommended**; use `on_construct` or `after_place_node` in node * **Not recommended**; use `on_construct` or `after_place_node` in node
definition whenever possible. definition whenever possible.
* `core.register_on_dignode(function(pos, oldnode, digger))` * `core.register_on_dignode(function(pos, oldnode, digger))`
* Called when a node has been dug. * Called after a node has been dug.
* **Not recommended**; Use `on_destruct` or `after_dig_node` in node * **Not recommended**; Use `on_destruct` or `after_dig_node` in node
definition whenever possible. definition whenever possible.
* `core.register_on_punchnode(function(pos, node, puncher, pointed_thing))` * `core.register_on_punchnode(function(pos, node, puncher, pointed_thing))`
* Called when a node is punched * Called when a node is punched
* `core.register_on_generated(function(minp, maxp, blockseed))` * `core.register_on_generated(function(minp, maxp, blockseed))`
* Called after generating a piece of world between `minp` and `maxp`. * Called after a piece of world between `minp` and `maxp` has been
generated and written into the map.
* **Avoid using this** whenever possible. As with other callbacks this blocks * **Avoid using this** whenever possible. As with other callbacks this blocks
the main thread and introduces noticeable latency. the main thread and is prone to introduce noticeable latency/lag.
Consider [Mapgen environment](#mapgen-environment) for an alternative. Consider [Mapgen environment](#mapgen-environment) as an alternative.
* `core.register_on_newplayer(function(ObjectRef))` * `core.register_on_newplayer(function(player))`
* Called when a new player enters the world for the first time * Called when a new player enters the world for the first time
* `player`: ObjectRef
* `core.register_on_punchplayer(function(player, hitter, time_from_last_punch, tool_capabilities, dir, damage))` * `core.register_on_punchplayer(function(player, hitter, time_from_last_punch, tool_capabilities, dir, damage))`
* Called when a player is punched * Called when a player is punched
* Note: This callback is invoked even if the punched player is dead. * Note: This callback is invoked even if the punched player is dead.
@ -7116,8 +7116,12 @@ Defaults for the `on_place` and `on_drop` item definition functions
* `core.item_pickup(itemstack, picker, pointed_thing, time_from_last_punch, ...)` * `core.item_pickup(itemstack, picker, pointed_thing, time_from_last_punch, ...)`
* Runs callbacks registered by `core.register_on_item_pickup` and adds * Runs callbacks registered by `core.register_on_item_pickup` and adds
the item to the picker's `"main"` inventory list. the item to the picker's `"main"` inventory list.
* Parameters are the same as in `on_pickup`. * Parameters and return value are the same as `on_pickup`.
* Returns the leftover itemstack. * **Note**: is not called when wielded item overrides `on_pickup`
* `core.item_secondary_use(itemstack, user)`
* Global secondary use callback. Does nothing.
* Parameters and return value are the same as `on_secondary_use`.
* **Note**: is not called when wielded item overrides `on_secondary_use`
* `core.item_drop(itemstack, dropper, pos)` * `core.item_drop(itemstack, dropper, pos)`
* Converts `itemstack` to an in-world Lua entity. * Converts `itemstack` to an in-world Lua entity.
* `itemstack` (`ItemStack`) is modified (cleared) on success. * `itemstack` (`ItemStack`) is modified (cleared) on success.
@ -7140,7 +7144,7 @@ Defaults for the `on_punch` and `on_dig` node definition callbacks
* Calls functions registered by `core.register_on_punchnode()` * Calls functions registered by `core.register_on_punchnode()`
* `core.node_dig(pos, node, digger)` * `core.node_dig(pos, node, digger)`
* Checks if node can be dug, puts item into inventory, removes node * Checks if node can be dug, puts item into inventory, removes node
* Calls functions registered by `core.registered_on_dignodes()` * Calls functions registered by `core.register_on_dignode()`
Sounds Sounds
------ ------
@ -9988,15 +9992,15 @@ Used by `core.register_node`, `core.register_craftitem`, and
-- When item is eaten with `core.do_item_eat` -- When item is eaten with `core.do_item_eat`
punch_use = <SimpleSoundSpec>, punch_use = <SimpleSoundSpec>,
-- When item is used with the 'punch/mine' key pointing at a node or entity -- When item is used with the 'punch/dig' key pointing at a node or entity
punch_use_air = <SimpleSoundSpec>, punch_use_air = <SimpleSoundSpec>,
-- When item is used with the 'punch/mine' key pointing at nothing (air) -- When item is used with the 'punch/dig' key pointing at nothing (air)
}, },
on_place = function(itemstack, placer, pointed_thing), on_place = function(itemstack, placer, pointed_thing),
-- When the 'place' key was pressed with the item in hand -- Called when the 'place' key was pressed with the item in hand
-- and a node was pointed at. -- and pointing at a node.
-- Shall place item and return the leftover itemstack -- Shall place item and return the leftover itemstack
-- or nil to not modify the inventory. -- or nil to not modify the inventory.
-- The placer may be any ObjectRef or nil. -- The placer may be any ObjectRef or nil.
@ -10007,7 +10011,7 @@ Used by `core.register_node`, `core.register_craftitem`, and
-- Function must return either nil if inventory shall not be modified, -- Function must return either nil if inventory shall not be modified,
-- or an itemstack to replace the original itemstack. -- or an itemstack to replace the original itemstack.
-- The user may be any ObjectRef or nil. -- The user may be any ObjectRef or nil.
-- default: nil -- default: core.item_secondary_use
on_drop = function(itemstack, dropper, pos), on_drop = function(itemstack, dropper, pos),
-- Shall drop item and return the leftover itemstack. -- Shall drop item and return the leftover itemstack.
@ -10025,28 +10029,26 @@ Used by `core.register_node`, `core.register_craftitem`, and
-- luaentity) as `type="object"` `pointed_thing`. -- luaentity) as `type="object"` `pointed_thing`.
-- * `time_from_last_punch, ...` (optional): Other parameters from -- * `time_from_last_punch, ...` (optional): Other parameters from
-- `luaentity:on_punch`. -- `luaentity:on_punch`.
-- default: `core.item_pickup` -- default: core.item_pickup
on_use = function(itemstack, user, pointed_thing), on_use = function(itemstack, user, pointed_thing),
-- default: nil -- Called when user presses the 'punch/dig' key with the item in hand.
-- When user pressed the 'punch/mine' key with the item in hand.
-- Function must return either nil if inventory shall not be modified, -- Function must return either nil if inventory shall not be modified,
-- or an itemstack to replace the original itemstack. -- or an itemstack to replace the original itemstack.
-- e.g. itemstack:take_item(); return itemstack -- e.g. itemstack:take_item(); return itemstack
-- Otherwise, the function is free to do what it wants.
-- The user may be any ObjectRef or nil. -- The user may be any ObjectRef or nil.
-- The default functions handle regular use cases. -- Note that defining this callback will prevent normal punching/digging
-- behavior on the client, as the interaction is instead "forwarded" to the
-- server.
-- default: nil
after_use = function(itemstack, user, node, digparams), after_use = function(itemstack, user, node, digparams),
-- default: nil -- Called after a tool is used to dig a node and will replace the default
-- If defined, should return an itemstack and will be called instead of -- tool wear-out handling.
-- wearing out the item (if tool). If returns nil, does nothing. -- Shall return the leftover itemstack or nil to not
-- If after_use doesn't exist, it is the same as: -- modify the dropped item.
-- function(itemstack, user, node, digparams)
-- itemstack:add_wear(digparams.wear)
-- return itemstack
-- end
-- The user may be any ObjectRef or nil. -- The user may be any ObjectRef or nil.
-- default: nil
_custom_field = whatever, _custom_field = whatever,
-- Add your own custom fields. By convention, all custom field names -- Add your own custom fields. By convention, all custom field names