flags = "place_center_x, place_center_z",
})
+ -- Blueberry bush
+
+ minetest.register_decoration({
+ name = "default:blueberry_bush",
+ deco_type = "schematic",
+ place_on = {"default:dirt_with_grass", "default:dirt_with_snow"},
+ sidelen = 16,
+ noise_params = {
+ offset = -0.004,
+ scale = 0.01,
+ spread = {x = 100, y = 100, z = 100},
+ seed = 697,
+ octaves = 3,
+ persist = 0.7,
+ },
+ biomes = {"grassland", "snowy_grassland"},
+ y_max = 31000,
+ y_min = 1,
+ place_offset_y = 1,
+ schematic = minetest.get_modpath("default") .. "/schematics/blueberry_bush.mts",
+ flags = "place_center_x, place_center_z",
+ })
+
-- Acacia bush
minetest.register_decoration({
default:pine_bush_stem
default:pine_bush_needles
default:pine_bush_sapling
+default:blueberry_bush_leaves_with_berries
+default:blueberry_bush_leaves
+default:blueberry_bush_sapling
default:sand_with_kelp
end,
})
+minetest.register_node("default:blueberry_bush_leaves_with_berries", {
+ description = "Blueberry Bush Leaves with Berries",
+ drawtype = "allfaces_optional",
+ waving = 1,
+ tiles = {"default_blueberry_bush_leaves.png^default_blueberry_overlay.png"},
+ paramtype = "light",
+ groups = {snappy = 3, flammable = 2, leaves = 1, dig_immediate = 3},
+ drop = "default:blueberries",
+ sounds = default.node_sound_leaves_defaults(),
+ node_dig_prediction = "default:blueberry_bush_leaves",
+
+ after_dig_node = function(pos, oldnode, oldmetadata, digger)
+ minetest.set_node(pos, {name = "default:blueberry_bush_leaves"})
+ minetest.get_node_timer(pos):start(math.random(300, 1500))
+ end,
+})
+
+minetest.register_node("default:blueberry_bush_leaves", {
+ description = "Blueberry Bush Leaves",
+ drawtype = "allfaces_optional",
+ waving = 1,
+ tiles = {"default_blueberry_bush_leaves.png"},
+ paramtype = "light",
+ groups = {snappy = 3, flammable = 2, leaves = 1},
+ drop = {
+ max_items = 1,
+ items = {
+ {items = {"default:blueberry_bush_sapling"}, rarity = 5},
+ {items = {"default:blueberry_bush_leaves"}}
+ }
+ },
+ sounds = default.node_sound_leaves_defaults(),
+
+ on_timer = function(pos, elapsed)
+ if minetest.get_node_light(pos) < 11 then
+ minetest.get_node_timer(pos):start(200)
+ else
+ minetest.set_node(pos, {name = "default:blueberry_bush_leaves_with_berries"})
+ end
+ end,
+
+ after_place_node = default.after_place_leaves,
+})
+
+minetest.register_node("default:blueberry_bush_sapling", {
+ description = "Blueberry Bush Sapling",
+ drawtype = "plantlike",
+ tiles = {"default_blueberry_bush_sapling.png"},
+ inventory_image = "default_blueberry_bush_sapling.png",
+ wield_image = "default_blueberry_bush_sapling.png",
+ paramtype = "light",
+ sunlight_propagates = true,
+ walkable = false,
+ on_timer = default.grow_sapling,
+ selection_box = {
+ type = "fixed",
+ fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 2 / 16, 4 / 16}
+ },
+ groups = {snappy = 2, dig_immediate = 3, flammable = 2,
+ attached_node = 1, sapling = 1},
+ sounds = default.node_sound_leaves_defaults(),
+
+ on_construct = function(pos)
+ minetest.get_node_timer(pos):start(math.random(300, 1500))
+ end,
+
+ on_place = function(itemstack, placer, pointed_thing)
+ itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
+ "default:blueberry_bush_sapling",
+ -- minp, maxp to be checked, relative to sapling pos
+ {x = -1, y = 0, z = -1},
+ {x = 1, y = 1, z = 1},
+ -- maximum interval of interior volume check
+ 2)
+
+ return itemstack
+ end,
+})
+
minetest.register_node("default:acacia_bush_stem", {
description = "Acacia Bush Stem",
drawtype = "plantlike",
minetest.log("action", "A bush sapling grows into a bush at "..
minetest.pos_to_string(pos))
default.grow_bush(pos)
+ elseif node.name == "default:blueberry_bush_sapling" then
+ minetest.log("action", "A blueberry bush sapling grows into a bush at "..
+ minetest.pos_to_string(pos))
+ default.grow_blueberry_bush(pos)
elseif node.name == "default:acacia_bush_sapling" then
minetest.log("action", "An acacia bush sapling grows into a bush at "..
minetest.pos_to_string(pos))
path, "0", nil, false)
end
+-- Blueberry bush
+
+function default.grow_blueberry_bush(pos)
+ local path = minetest.get_modpath("default") ..
+ "/schematics/blueberry_bush.mts"
+ minetest.place_schematic({x = pos.x - 1, y = pos.y, z = pos.z - 1},
+ path, "0", nil, false)
+end
+
-- Acacia bush
convert the Lua tables into .mts files. Such mods often have two functions to
process two formats of the 'data' table:
-The standard table format is described in the 'Schematic specifier' section of
+The standard table format is described in the 'Schematic specifier' section of
the lua_api.txt file in the Minetest Engine.
The 'data' table appears as a sequence of vertical slices through the structure
the schematic describes.
})
+-- Blueberry bush
+
+local L = {name = "default:blueberry_bush_leaves_with_berries", prob = 255, force_place = true}
+local M = {name = "default:blueberry_bush_leaves_with_berries", prob = 223}
+local N = {name = "default:blueberry_bush_leaves_with_berries", prob = 95}
+
+mts_save("blueberry_bush", {
+ size = {x = 3, y = 1, z = 3},
+ data = {
+ N, M, N,
+
+ M, L, M,
+
+ N, M, N,
+ },
+})
+
+
-- Acacia bush
local L = {name = "default:acacia_bush_leaves", prob = 255}