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 local groups = node.groups if minetest.get_item_group(node, "attached_node") == 1 then groups = {fleshy=3, dig_immediate=3, flammable=2, leafdecay = 1, leafdecay_drop = 1} end -- override fruit minetest.override_item(node, { groups = groups, -- make sure (moretrees) fruits don't fall on dig after_place_node = function(pos, placer) -- make sure (moretrees and plumtree) fruits aren't placed by player if placer:is_player() and node == "plumtree:plum" then minetest.set_node(pos, {name = node, param2 = 0}) elseif placer:is_player() then minetest.set_node(pos, {name = node, param2 = 1}) end end, 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 and oldnode.name ~= "plumtree:plum" or oldnode.name == "plumtree:plum" and oldnode.param2 == 1 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) elseif node == "plumtree:plum" then minetest.set_node(pos, {name = node, param2 = 1}) 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") 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") -- farming_plus add_fruit_regrowable("cocoa", "farming_plus:cocoa", "farming_plus:cocoa_leaves") add_fruit_regrowable("banana_plus", "farming_plus:banana", "farming_plus:banana_leaves")