VoxeLibre/mods/ITEMS/mcl_amethyst/grow.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")