50 lines
1.7 KiB
Lua
50 lines
1.7 KiB
Lua
local S = minetest.get_translator(minetest.get_current_modname())
|
|
|
|
function mcl_amethyst.grow_amethyst_bud(pos, ignore_budding_amethyst)
|
|
local node = minetest.get_node(pos)
|
|
local def = minetest.registered_nodes[node.name]
|
|
if not (def and def.groups and def.groups.amethyst_buds) then return end
|
|
local next_gen = def._mcl_amethyst_next_grade
|
|
if not next_gen then return 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 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, S("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, S("Growing Failed"))
|
|
end
|
|
end
|
|
end
|
|
|
|
minetest.register_tool("mcl_amethyst:growing_tool",{
|
|
description = S("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")
|