80 lines
No EOL
3.2 KiB
Lua
80 lines
No EOL
3.2 KiB
Lua
local regrowing_apples = minetest.settings:get_bool("regrowing_apples", true)
|
|
|
|
local add_fruit_regrowable = function(fruit, node, leaves)
|
|
|
|
-- check if node exists
|
|
if not minetest.registered_nodes[node] then
|
|
return
|
|
end
|
|
|
|
-- override fruit
|
|
minetest.override_item(node, {
|
|
drawtype = "torchlike", -- make sure (moretrees) fruits disappear when the tree is cut down
|
|
groups = {dig_immediate=3}, -- make sure (moretrees) fruits don't fall on dig
|
|
after_place_node = function(pos, placer)
|
|
if placer:is_player() then
|
|
minetest.set_node(pos, {name = node, param2 = 1})
|
|
end
|
|
end, -- make sure (moretrees) fruits aren't placed by player
|
|
on_dig = minetest.node_dig, -- override on_dig functions causing regrowth not to work
|
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
|
if oldnode.param2 == 0 then
|
|
minetest.set_node(pos, {name = "regrowing_fruits:"..fruit.."_mark"})
|
|
minetest.get_node_timer(pos):start(math.random(300, 1500))
|
|
end
|
|
end,
|
|
})
|
|
|
|
-- air node to mark fruit pos
|
|
minetest.register_node("regrowing_fruits:"..fruit.."_mark", {
|
|
description = "Air!",
|
|
drawtype = "airlike",
|
|
paramtype = "light",
|
|
sunlight_propagates = true,
|
|
walkable = false,
|
|
pointable = false,
|
|
diggable = false,
|
|
buildable_to = true,
|
|
drop = "",
|
|
groups = {not_in_creative_inventory = 1},
|
|
on_timer = function(pos, elapsed)
|
|
if not minetest.find_node_near(pos, 1, leaves) then
|
|
minetest.remove_node(pos)
|
|
elseif minetest.get_node_light(pos) < 13 then
|
|
minetest.get_node_timer(pos):start(200)
|
|
else
|
|
minetest.set_node(pos, {name = node})
|
|
end
|
|
end
|
|
})
|
|
end
|
|
|
|
-- apples
|
|
if regrowing_apples then
|
|
add_fruit_regrowable("apple", "default:apple", "default:leaves")
|
|
end
|
|
|
|
-- ethereal
|
|
add_fruit_regrowable("banana","ethereal:banana", "ethereal:bananaleaves")
|
|
add_fruit_regrowable("coconut", "ethereal:coconut", "ethereal:palmleaves")
|
|
add_fruit_regrowable("goldapple", "ethereal:golden_apple", "ethereal:yellowleaves")
|
|
add_fruit_regrowable("lemon", "ethereal:lemon", "ethereal:lemon_leaves")
|
|
add_fruit_regrowable("olive", "ethereal:olive", "ethereal:olive_leaves")
|
|
add_fruit_regrowable("orange", "ethereal:orange", "ethereal:orange_leaves")
|
|
|
|
-- cool_trees TODO: add cacao
|
|
add_fruit_regrowable("cherry", "cherrytree:cherries", "cherrytree:blossom_leaves")
|
|
add_fruit_regrowable("chestnut", "chestnuttree:bur", "chestnuttree:leaves")
|
|
add_fruit_regrowable("clementine", "clementinetree:clementine", "clementinetree:leaves")
|
|
add_fruit_regrowable("persimmon", "ebony:persimmon", "ebony:leaves")
|
|
add_fruit_regrowable("coollemon", "lemontree:lemon", "lemontree:leaves")
|
|
add_fruit_regrowable("acorn", "oak:acorn", "oak:leaves")
|
|
add_fruit_regrowable("coolcoconut", "palm:coconut", "palm:leaves")
|
|
add_fruit_regrowable("plum", "plumtree:plum", "plumtree:leaves") -- TODO: fix param2: 1
|
|
add_fruit_regrowable("pomegranate", "pomegranate:pomegranate", "pomegranate:leaves")
|
|
|
|
-- moretrees
|
|
add_fruit_regrowable("moreacorn", "moretrees:acorn", "moretrees:oak_leaves")
|
|
add_fruit_regrowable("cedar_cone", "moretrees:cedar_cone", "moretrees:cedar_leaves")
|
|
add_fruit_regrowable("fir_cone", "moretrees:fir_cone", "moretrees:fir_leaves")
|
|
add_fruit_regrowable("spruce_cone", "moretrees:spruce_cone", "moretrees:spruce_leaves") |