From f0014b2bb1714768ac77de119738db7e54134d71 Mon Sep 17 00:00:00 2001 From: SmokeyDope Date: Wed, 8 Feb 2023 20:10:43 +0000 Subject: [PATCH] Add copper shovel --- mcl_copper_stuff/tools.lua | 70 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/mcl_copper_stuff/tools.lua b/mcl_copper_stuff/tools.lua index ede702d..42c05ef 100644 --- a/mcl_copper_stuff/tools.lua +++ b/mcl_copper_stuff/tools.lua @@ -85,6 +85,67 @@ minetest.register_tool("mcl_copper_stuff:axe", { }, }) +-- Shovel path making function +local make_grass_path = function(itemstack, placer, pointed_thing) + -- Use pointed node's on_rightclick function first, if present + local node = minetest.get_node(pointed_thing.under) + if placer and not placer:get_player_control().sneak then + if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then + return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack) or itemstack + end + end + + -- Only make grass path if tool used on side or top of target node + if pointed_thing.above.y < pointed_thing.under.y then + return itemstack + end + + if (minetest.get_item_group(node.name, "path_creation_possible") == 1) then + local above = table.copy(pointed_thing.under) + above.y = above.y + 1 + if minetest.get_node(above).name == "air" then + if minetest.is_protected(pointed_thing.under, placer:get_player_name()) then + minetest.record_protection_violation(pointed_thing.under, placer:get_player_name()) + return itemstack + end + + if not minetest.is_creative_enabled(placer:get_player_name()) then + -- Add wear (as if digging a shovely node) + local toolname = itemstack:get_name() + local wear = mcl_autogroup.get_wear(toolname, "shovely") + itemstack:add_wear(wear) + end + minetest.sound_play({name="default_grass_footstep", gain=1}, {pos = above}, true) + minetest.swap_node(pointed_thing.under, {name="mcl_core:grass_path"}) + end + end + return itemstack +end + + +-- Copper Shovel +minetest.register_tool("mcl_copper_stuff:shovel", { + description = S("Copper Shovel"), + _doc_items_longdesc = shovel_longdesc, + _doc_items_usagehelp = shovel_use, + inventory_image = "default_tool_coppershovel.png", + wield_scale = wield_scale, + groups = { tool=1, shovel=1, dig_speed_class=3, enchantability=9 }, + tool_capabilities = { + -- 1/1.2 + full_punch_interval = 1, + max_drop_level=3, + damage_groups = {fleshy=3}, + punch_attack_uses = 96, + }, + on_place = make_grass_path, + sound = { breaks = "default_tool_breaks" }, + _repair_material = "mcl_copper:copper_ingot", + _mcl_toollike_wield = true, + _mcl_diggroups = { + shovely = { speed = 5, level = 3, uses = 192 } + }, +}) -- Registering crafts minetest.register_craft({ @@ -103,4 +164,13 @@ minetest.register_craft({ {"mcl_copper:copper_ingot", "mcl_core:stick"}, {"", "mcl_core:stick"}, } +}) + +minetest.register_craft({ + output = "mcl_copper_stuff:shovel", + recipe = { + {"mcl_copper:copper_ingot"}, + {"mcl_core:stick"}, + {"mcl_core:stick"}, + } }) \ No newline at end of file