mirror of
https://github.com/minetest-mods/throwing.git
synced 2025-01-09 17:50:25 +01:00
Check for the presence of a throwing_entity field in item definition table
This commit is contained in:
parent
a45399bfea
commit
552b958dba
@ -98,3 +98,7 @@ throwing.register_arrow("arrow", {
|
||||
end
|
||||
})
|
||||
```
|
||||
|
||||
If the item to throw is an arrow registered using `minetest.register_arrow`, the entity used will be the registered entity.
|
||||
Otherwise, if its definition contains a `throwing_entity` field, this field will be used as the entity name if it is a string, otherwise it will be called as a function(pos, player) that has to make the object to spawn and to return the corresponding ObjectRef.
|
||||
If the item is neither an arrow nor has any `throwing_entity` field, the corresponding `__builtin:item` will be used.
|
||||
|
6
init.lua
6
init.lua
@ -27,6 +27,12 @@ local function shoot_arrow(itemstack, player)
|
||||
local obj
|
||||
if throwing.is_arrow(arrow) then
|
||||
obj = minetest.add_entity(pos, arrow.."_entity")
|
||||
elseif minetest.registered_items[arrow].throwing_entity then
|
||||
if type(minetest.registered_items[arrow].throwing_entity) == "string" then
|
||||
obj = minetest.add_entity(pos, minetest.registered_items[arrow].throwing_entity)
|
||||
else -- Type is a function
|
||||
obj = minetest.registered_items[arrow].throwing_entity(pos, player)
|
||||
end
|
||||
else
|
||||
obj = minetest.add_entity(pos, "__builtin:item", arrow)
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user