PyuTestCore.make_tool = function (nsname, sname, desc, groups, wield_image, extra_conf) local conf = { description = Translate(desc), wield_image = wield_image, inventory_image = wield_image, groups = groups } if extra_conf ~= nil then for k, v in pairs(extra_conf) do conf[k] = v end end minetest.register_tool(nsname, conf) minetest.register_alias(sname, nsname) end PyuTestCore.make_tool("pyutest_core:pickaxe", "pickaxe", "Pickaxe", {}, "pickaxe.png", { range = 15, stack_max = 1, tool_capabilities = { groupcaps = { block = { times = { [PyuTestCore.BLOCK_BREAKABLE_INSTANT] = 0.025, [PyuTestCore.BLOCK_BREAKABLE_NORMAL] = 0.075, [PyuTestCore.BLOCK_BREAKABLE_LONG] = 0.45, [PyuTestCore.BLOCK_BREAKABLE_FOREVER] = 2 }, uses = 1 } } } }) PyuTestCore.make_tool("pyutest_core:stick", "stick", "Stick", {}, "stick.png", { stack_max = 99 }) PyuTestCore.make_tool("pyutest_core:bomb", "bomb", "Bomb", {}, "bomb.png", { on_use = function (itemstack, user) if user == nil then return end local pos = user:get_pos() local range = tonumber(minetest.settings:get("bomb_range")) or 2 for dx = -range, range do for dz = -range, range do for dy = -range, range do minetest.remove_node({x = pos.x + dx, y = pos.y + dy, z = pos.z + dz}) end end end minetest.sound_play("block_break", { pos = pos, gain = 1 }) end })