PyuTestCore.make_tool = function (nsname, desc, groups, wield_image, extra_conf) local conf = { description = Translate(desc), wield_image = wield_image, inventory_image = wield_image, groups = PyuTestCore.util.tableconcat(groups, { tool = 1 }) } if extra_conf ~= nil then for k, v in pairs(extra_conf) do conf[k] = v end end minetest.register_tool(nsname, conf) end PyuTestCore.make_food = function (nsname, desc, wield_image, health_fill, extra_code) local code = extra_code or function()end PyuTestCore.make_item(nsname, desc, {}, wield_image, { on_use = function (itemstack, user, pt) if user == nil then return end minetest.sound_play({name = "eat", gain = 1}, {pos = user:get_pos(), start_time = 1.2}) minetest.do_item_eat(health_fill, "", itemstack, user, pt) code() end }) end PyuTestCore.make_tool("pyutest_core:wooden_pickaxe", "Wooden Pickaxe", {}, "wooden-pickaxe.png", { stack_max = 1, tool_capabilities = { groupcaps = { block = { times = { [PyuTestCore.BLOCK_BREAKABLE_INSTANT] = 0.085, [PyuTestCore.BLOCK_BREAKABLE_NORMAL] = 0.75, [PyuTestCore.BLOCK_BREAKABLE_CHOPPY] = 1.3, [PyuTestCore.BLOCK_BREAKABLE_MIDDLE] = 2.4, }, uses = 200, } }, punch_attack_uses = 100, damage_groups = {fleshy = 3} } }) PyuTestCore.make_tool("pyutest_core:stone_pickaxe", "Stone Pickaxe", {}, "stone-pickaxe.png", { stack_max = 1, tool_capabilities = { groupcaps = { block = { times = { [PyuTestCore.BLOCK_BREAKABLE_INSTANT] = 0.065, [PyuTestCore.BLOCK_BREAKABLE_NORMAL] = 0.55, [PyuTestCore.BLOCK_BREAKABLE_CHOPPY] = 0.9, [PyuTestCore.BLOCK_BREAKABLE_MIDDLE] = 1.1, [PyuTestCore.BLOCK_BREAKABLE_LONG] = 2.1, [PyuTestCore.BLOCK_BREAKABLE_VERYLONG] = 9, [PyuTestCore.BLOCK_BREAKABLE_FOREVER] = 15 }, uses = 450, } }, punch_attack_uses = 225, damage_groups = {fleshy = 3} } }) PyuTestCore.make_tool("pyutest_core:iron_pickaxe", "Iron Pickaxe", {}, "iron-pickaxe.png", { stack_max = 1, tool_capabilities = { groupcaps = { block = { times = { [PyuTestCore.BLOCK_BREAKABLE_INSTANT] = 0.035, [PyuTestCore.BLOCK_BREAKABLE_NORMAL] = 0.35, [PyuTestCore.BLOCK_BREAKABLE_CHOPPY] = 0.8, [PyuTestCore.BLOCK_BREAKABLE_MIDDLE] = 0.8, [PyuTestCore.BLOCK_BREAKABLE_LONG] = 1.7, [PyuTestCore.BLOCK_BREAKABLE_VERYLONG] = 7, [PyuTestCore.BLOCK_BREAKABLE_FOREVER] = 11 }, uses = 750, } }, punch_attack_uses = 375, damage_groups = {fleshy = 4} } }) PyuTestCore.make_tool("pyutest_core:diamond_pickaxe", "Diamond Pickaxe", {}, "diamond-pickaxe.png", { stack_max = 1, tool_capabilities = { groupcaps = { block = { times = { [PyuTestCore.BLOCK_BREAKABLE_INSTANT] = 0.035, [PyuTestCore.BLOCK_BREAKABLE_NORMAL] = 0.35, [PyuTestCore.BLOCK_BREAKABLE_CHOPPY] = 0.6, [PyuTestCore.BLOCK_BREAKABLE_MIDDLE] = 0.6, [PyuTestCore.BLOCK_BREAKABLE_LONG] = 1.3, [PyuTestCore.BLOCK_BREAKABLE_VERYLONG] = 5, [PyuTestCore.BLOCK_BREAKABLE_FOREVER] = 8 }, uses = 1200, } }, punch_attack_uses = 600, damage_groups = {fleshy = 4} } }) PyuTestCore.make_item("pyutest_core:bomb", "Bomb", {}, "bomb.png", { stack_max = 16, on_use = function (_, user) if user == nil then return end local pos = user:get_pos() PyuTestCore.create_explosion(pos, 2, false, 3, user) local stack = user:get_wielded_item() stack:set_count(stack:get_count() - 1) user:set_wielded_item(stack) end }) PyuTestCore.make_item("pyutest_core:windball", "Windball", {}, "windball.png", { stack_max = 16, on_use = function (_, user) if user == nil then return end local pos = user:get_pos() minetest.sound_play({name = "spellbook_action", gain = 0.75}, {pos = pos}) math.randomseed(os.time()) user:add_velocity({ x = 0, z = 0, y = math.random(12, 22) }) local stack = user:get_wielded_item() stack:set_count(stack:get_count() - 1) user:set_wielded_item(stack) end }) PyuTestCore.make_food("pyutest_core:apple", "Apple", "apple.png", 5) PyuTestCore.make_food("pyutest_core:bread", "Bread", "bread.png", 3) PyuTestCore.make_food("pyutest_core:water_bottle", "Water Bottle", "water-bottle.png", 2)