function mcl_amethyst.grow_amethyst_bud(pos,ignore_budding_amethyst) local node = minetest.get_node(pos) if not node.name then return false end local def = minetest.registered_nodes[node.name] if not def then return false end if not def.groups and def.groups.amethyst_buds then return false end local next_gen = def._mcl_amethyst_next_grade if not next_gen then return false end -- Check Budding Amethyst if not ignore_budding_amethyst then local dir = minetest.wallmounted_to_dir(node.param2) local ba_pos = vector.add(pos,dir) local ba_node = minetest.get_node(ba_pos) if ba_node.name ~= "mcl_amethyst:budding_amethyst_block" then return false end end local swap_result = table.copy(node) swap_result.name = next_gen minetest.swap_node(pos,swap_result) return true end local function get_growing_tool_handle(ignore) return function(itemstack, user, pointed_thing) if not user:is_player() then return end local name = user:get_player_name() local pos = minetest.get_pointed_thing_position(pointed_thing) if minetest.is_protected(pos, name) then minetest.record_protection_violation(pos, name) minetest.chat_send_player(name,"Not allowed to use Amethyst Growing Tool in a protected area!") return end if not mcl_amethyst.grow_amethyst_bud(pos, ignore) then minetest.chat_send_player(name,"Growing Failed") end end end minetest.register_tool("mcl_amethyst:growing_tool",{ description = "Amethyst Growing Tool", on_use = get_growing_tool_handle(true), on_place = get_growing_tool_handle(false), inventory_image = "amethyst_cluster.png^amethyst_shard.png", groups = { tool = 1, }, }) mcl_wip.register_experimental_item("mcl_amethyst:growing_tool")