1
0
Fork 0
MineClone2/mods/ITEMS/mcl_amethyst/grow.lua

55 lines
1.6 KiB
Lua
Raw Permalink Normal View History

2022-02-05 02:27:23 +00:00
local interval = 10
local chance = 5
local function grow(pos, node)
2022-02-04 22:39:40 +00:00
local def = minetest.registered_nodes[node.name]
local next_gen = def._mcl_amethyst_next_grade
if not next_gen then return end
2022-02-05 02:27:23 +00:00
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
2022-02-04 22:39:40 +00:00
local swap_result = table.copy(node)
swap_result.name = next_gen
minetest.swap_node(pos, swap_result)
2021-07-28 12:44:30 +00:00
end
2022-02-05 02:27:23 +00:00
minetest.register_abm({
label = "Amethyst Bud Growth",
nodenames = {"group:amethyst_buds"},
neighbors = {"mcl_amethyst:budding_amethyst_block"},
interval = interval,
chance = chance,
action = grow,
2021-07-28 12:44:30 +00:00
})
2022-02-05 02:27:23 +00:00
local all_directions = {
vector.new(1, 0, 0),
vector.new(0, 1, 0),
vector.new(0, 0, 1),
vector.new(-1, 0, 0),
vector.new(0, -1, 0),
vector.new(0, 0, -1),
2022-02-05 02:27:23 +00:00
}
minetest.register_abm({
label = "Spawn Amethyst Bud",
2023-01-30 07:21:34 +00:00
nodenames = { "mcl_amethyst:budding_amethyst_block" },
neighbors = { "air", "group:water" },
interval = 34.135, -- 34.135 is 1/2 of 68.27, which is the average time for one bud to grow 1 stage.
2022-02-05 02:27:23 +00:00
chance = 2,
action = function(pos)
local check_pos = vector.add(all_directions[math.random(1, #all_directions)], pos)
local check_node = minetest.get_node(check_pos)
local check_node_name = check_node.name
2023-01-30 07:21:34 +00:00
if check_node_name ~= "air" and minetest.get_item_group(check_node_name, "water") == 0 then
return
end
2022-02-05 02:27:23 +00:00
local param2 = minetest.dir_to_wallmounted(vector.subtract(pos, check_pos))
2023-01-30 07:21:34 +00:00
local new_node = { name = "mcl_amethyst:small_amethyst_bud", param2 = param2 }
2022-02-05 02:27:23 +00:00
minetest.swap_node(check_pos, new_node)
end,
})