-- LUALOCALS < --------------------------------------------------------- local error, ipairs, minetest, nodecore = error, ipairs, minetest, nodecore -- LUALOCALS > --------------------------------------------------------- local modname = minetest.get_current_modname() local function ezschem(key, yslices, init) local size = {} local data = {} size.y = #yslices for y, ys in ipairs(yslices) do if size.z and size.z ~= #ys then error("inconsistent z size") end size.z = #ys for z, zs in ipairs(ys) do if size.x and size.x ~= #zs then error("inconsistent x size") end size.x = #zs for x = 1, zs:len() do data[(z - 1) * size.x * size.y + (y - 1) * size.x + x] = key[zs:sub(x, x)] end end end init = init or {} init.size = size init.data = data return minetest.register_schematic(init) end local root = { " ", " ", " r ", " ", " ", } local trunk = { " ", " ", " t ", " ", " ", } local bot = { " ", " ebe ", " btb ", " ebe ", " ", } local low = { " lll ", "lebel", "lbtbl", "lebel", " lll ", } local hi = { " lll ", "llell", "lebel", "llell", " lll ", } local top = { " ", " lll ", " lll ", " lll ", " ", } nodecore.tree_schematic = ezschem( { [" "] = {name = "air", prob = 0}, r = {name = modname .. ":root", prob = 255, force_place = true}, t = {name = modname .. ":tree", prob = 255}, b = {name = modname .. ":leaves", param2 = 2, prob = 255}, e = {name = modname .. ":leaves", param2 = 1,prob = 255}, l = {name = modname .. ":leaves", prob = 240}, }, { root, trunk, trunk, trunk, bot, low, low, hi, top }, { yslice_prob = { {ypos = 1, prob = 255}, {ypos = 2, prob = 160}, {ypos = 3, prob = 160}, {ypos = 4, prob = 160}, {ypos = 5, prob = 255}, {ypos = 6, prob = 160}, {ypos = 7, prob = 160}, {ypos = 8, prob = 255}, } } )