
Here is an example of how to register a bow:

bows.register_bow("bow_wood",{
	description = "Wooden bow",
	texture = "bows_bow.png",
	texture_loaded = "bows_bow_loaded.png",
	uses = 50, -- How many time you can use a bow to shoot
	level = 1, -- Higher levels mean faster arrows

	-- Crafting recipe to make bow, can be left nil
	craft = {
		{"", "group:stick", "farming:string"},
		{"group:stick", "", "farming:string"},
		{"", "group:stick", "farming:string"}
	},
})


Here is an example of how to register an arrow:

bows.register_arrow("arrow_steel",{
	description = "Steel arrow",
	-- Arrow texture, the ^[colorize section changes the default arrows colour
	texture = "bows_arrow_wood.png^[colorize:#FFFFFFcc",
	damage = 8, -- How many 1/2 hearts damage it can do
	craft_count = 4, -- How many arrows are made from recipe below

	craft = {
		{"default:steel_ingot", "group:stick", bows.feather}
	},

	-- Special function when an entity or mob is hit
	on_hit_object = function(self, target, hp, user, lastpos)
		if target:get_luaentity().name == "mob_horse:horse" then
			print ("--- aww da horsey!!! " .. hp .. " damage points!")
		end
	end,

	-- Special function when arrow hits a node
	on_hit_node = function(self, pos, user, arrow_pos)
		if self.node.name == "default:glass" then
			minetest.sound_play("default_break_glass", {
				pos = pos, gain = 1.0, max_hear_distance = 10})
			minetest.remove_node(pos)
			minetest.add_item(pos, "vessels:glass_fragments")
		end
	end,
})
