Allow external mod to choose the bow/arrow prefix

This commit is contained in:
upsilon 2017-06-20 16:29:36 +02:00
parent 1778b89597
commit a45399bfea
No known key found for this signature in database
GPG Key ID: A80DAE1F266E1C3C
2 changed files with 14 additions and 6 deletions

View File

@ -30,7 +30,7 @@ There are two available functions in the mod API:
```lua
function throwing.register_bow(name, definition)
--[[
Name: Bow name (in second part of the itemstring).
Name: Bow name. If it doesn't contain ":", the "throwing:" prefix will be added.
Definition: definition table, containing:
* itemcraft (optional, you may want to register your own craft or to make the bow uncraftable): item used to craft the bow.
* description (highly recommended): description of the bow.
@ -53,7 +53,7 @@ throwing.register_bow("bow_wood", {
itemcraft, craft_quantity, description, tiles, on_hit_sound, on_hit[, on_throw[, groups]]
function throwing.register_arrow(name, definition table)
--[[
Name: Arrow name (in second part of the itemstring).
Name: Arrow name. If it doesn't contain ":", the "throwing:" prefix will be added.
Definition: definition table, containing:
* itemcraft (optional, you may want to register your own craft or to make the arrow uncraftable): item used to craft the arrow.
* craft_quantity (optional, defaulting to 1 if itemcraft is non-nil, pointless otherwise): quantity of arrows in the craft output.

View File

@ -187,7 +187,11 @@ on_throw(pos, hitter)
Unlike on_hit, it is optional.
]]
function throwing.register_arrow(name, def)
table.insert(throwing.arrows, throwing.modname..":"..name)
if not string.find(name, ":") then
name = throwing.modname..":"..name
end
table.insert(throwing.arrows, name)
local groups = {dig_immediate = 3}
if def.groups then
@ -195,7 +199,7 @@ function throwing.register_arrow(name, def)
groups[k] = v
end
end
minetest.register_node(throwing.modname..":"..name, {
minetest.register_node(name, {
drawtype = "nodebox",
paramtype = "light",
node_box = {
@ -241,7 +245,7 @@ function throwing.register_arrow(name, def)
end
})
minetest.register_entity(throwing.modname..":"..name.."_entity", {
minetest.register_entity(name.."_entity", {
physical = false,
timer = 0,
visual = "wielditem",
@ -280,12 +284,16 @@ end
---------- Bows -----------
function throwing.register_bow(name, def)
if not string.find(name, ":") then
name = throwing.modname..":"..name
end
if not def.allow_shot then
def.allow_shot = function(player, itemstack)
return throwing.is_arrow(itemstack)
end
end
minetest.register_tool(throwing.modname..":"..name, {
minetest.register_tool(name, {
description = def.description,
inventory_image = def.texture,
on_use = function(itemstack, user, pointed_thing)