diff --git a/mods/mcl_throwing/init.lua b/mods/mcl_throwing/init.lua index c987d61884..834c577583 100644 --- a/mods/mcl_throwing/init.lua +++ b/mods/mcl_throwing/init.lua @@ -41,16 +41,21 @@ local player_shoot_arrow = function(itemstack, player) return false end +local powerup_function = function(nextbow) + return function(itemstack, placer, pointed_thing) + local wear = itemstack:get_wear() + itemstack:replace(nextbow) + itemstack:add_wear(wear) + return itemstack + end +end + minetest.register_tool("mcl_throwing:bow", { description = "Bow", inventory_image = "mcl_throwing_bow.png", - stack_max = 1, - on_place = function(itemstack, placer, pointed_thing) - local wear = itemstack:get_wear() - itemstack:replace("mcl_throwing:bow_0") - itemstack:add_wear(wear) - return itemstack - end, + stack_max = 1, + on_place = powerup_function("mcl_throwing:bow_0"), + on_secondary_use = powerup_function("mcl_throwing:bow_0"), groups = {weapon=1,weapon_ranged=1}, on_use = function(itemstack, user, pointed_thing) local wear = itemstack:get_wear() @@ -67,15 +72,11 @@ minetest.register_tool("mcl_throwing:bow", { minetest.register_tool("mcl_throwing:bow_0", { description = "Bow", inventory_image = "mcl_throwing_bow_0.png", - stack_max = 1, + stack_max = 1, groups = {not_in_creative_inventory=1, not_in_craft_guide=1}, - on_place = function(itemstack, placer, pointed_thing) - local wear = itemstack:get_wear() - itemstack:replace("mcl_throwing:bow_1") - itemstack:add_wear(wear) - return itemstack - end, - on_use = function(itemstack, user, pointed_thing) + on_place = powerup_function("mcl_throwing:bow_1"), + on_secondary_use = powerup_function("mcl_throwing:bow_1"), + on_use = function(itemstack, user, pointed_thing) local wear = itemstack:get_wear() itemstack:add_wear(wear) if player_shoot_arrow(itemstack, user, pointed_thing) then @@ -90,14 +91,10 @@ minetest.register_tool("mcl_throwing:bow_0", { minetest.register_tool("mcl_throwing:bow_1", { description = "Bow", inventory_image = "mcl_throwing_bow_1.png", - stack_max = 1, + stack_max = 1, groups = {not_in_creative_inventory=1, not_in_craft_guide=1}, - on_place = function(itemstack, placer, pointed_thing) - local wear = itemstack:get_wear() - itemstack:replace("mcl_throwing:bow_2") - itemstack:add_wear(wear) - return itemstack - end, + on_place = powerup_function("mcl_throwing:bow_2"), + on_secondary_use = powerup_function("mcl_throwing:bow_2"), on_use = function(itemstack, user, pointed_thing) local wear = itemstack:get_wear() itemstack:add_wear(wear) @@ -113,7 +110,7 @@ minetest.register_tool("mcl_throwing:bow_1", { minetest.register_tool("mcl_throwing:bow_2", { description = "Bow", inventory_image = "mcl_throwing_bow_2.png", - stack_max = 1, + stack_max = 1, groups = {not_in_creative_inventory=1, not_in_craft_guide=1}, on_use = function(itemstack, user, pointed_thing) local wear = itemstack:get_wear()