-- path to default and ethereal schematics local path = minetest.get_modpath("ethereal") .. "/schematics/" local dpath = minetest.get_modpath("default") .. "/schematics/" -- load schematic tables dofile(path .. "orange_tree.lua") dofile(path .. "banana_tree.lua") dofile(path .. "bamboo_tree.lua") dofile(path .. "birch_tree.lua") dofile(path .. "bush.lua") dofile(path .. "waterlily.lua") dofile(path .. "volcanom.lua") dofile(path .. "volcanol.lua") dofile(path .. "frosttrees.lua") dofile(path .. "palmtree.lua") dofile(path .. "pinetree.lua") dofile(path .. "yellowtree.lua") dofile(path .. "mushroomone.lua") dofile(path .. "mushroomtwo.lua") dofile(path .. "willow.lua") dofile(path .. "bigtree.lua") dofile(path .. "redwood_tree.lua") dofile(path .. "redwood_small_tree.lua") dofile(path .. "vinetree.lua") dofile(path .. "sakura.lua") dofile(path .. "igloo.lua") dofile(path .. "lemon_tree.lua") dofile(path .. "olive_tree.lua") dofile(path .. "basandra_bush.lua") dofile(path .. "desertstone_spike.lua") dofile(path .. "desertstone_under_spike.lua") --dofile(path .. "pond.lua") -- register decoration helper local function register_decoration(enabled, def) if enabled ~= 1 then return end def.sidelen = def.sidelen or 80 -- some handy defaults def.deco_type = def.deco_type or "schematic" def.y_min = def.y_min or 1 def.y_max = def.y_max or 31000 def.flags = def.flags or "place_center_x, place_center_z" def.rotation = def.rotation or "random" minetest.register_decoration(def) end -- Special grass in jumble biome which must be place before schematics register_decoration(ethereal.jumble, { deco_type = "simple", place_on = {"default:dirt_with_rainforest_litter"}, sidelen = 8, noise_params = { offset = -0.3125, scale = -1.25, spread = {x = 150, y = 100, z = 150}, seed = 330, octaves = 3, persist = 0.95 }, biomes = {"jumble"}, decoration = "default:dirt_with_grass", place_offset_y = -1, flags = "force_placement" }) register_decoration(ethereal.bamboo, { name = "ethereal:small_sakura_tree", deco_type = "schematic", place_on = "ethereal:bamboo_dirt", sidelen = 80, fill_ratio = 0.00275, biomes = {"bamboo"}, y_min = 5, y_max = 31000, schematic = path.."cherry_tree_1.mts", flags = "place_center_x,place_center_z", rotation = "random", }) register_decoration(ethereal.bamboo, { name = "ethereal:large_sakura_tree", deco_type = "schematic", place_on = "ethereal:bamboo_dirt", sidelen = 80, fill_ratio = 0.000285, biomes = {"bamboo"}, y_min = 5, y_max = 31000, schematic = path.."cherry_tree_2.mts", flags = "place_center_x,place_center_z", replacements = { ["cherry:cherry_tree"] = "ethereal:sakura_trunk", ["cherry:cherry_leaves"] = "ethereal:sakura_leaves", }, rotation = "random", }) if ethereal.bamboo == 1 then local did_sakura = minetest.get_decoration_id('ethereal:large_sakura_tree') minetest.set_gen_notify('decoration',{ did_sakura }) did_sakura = 'decoration#' .. did_sakura minetest.register_on_generated(function(minp, maxp) if maxp.y > 4 then -- -- Sakura Tree - fix light -- local gennotify = minetest.get_mapgen_object('gennotify') for _, pos in ipairs(gennotify[did_sakura] or {}) do minetest.after(0.2,function() minetest.fix_light(pos:offset(-9, -1, -9), pos:offset(9, 20, 9)) end) end end end) minetest.register_abm({ label = "Sakura petals", nodenames = {"ethereal:sakura_leaves"}, interval = 6, chance = 25, catch_up = false, action = function(pos) minetest.add_particlespawner({ amount = 1, time = 1, minpos = {x = pos.x, y = pos.y, z = pos.z}, maxpos = {x = pos.x, y = pos.y, z = pos.z}, minvel = {x = -0.75, y = -0.4, z = -0.75}, maxvel = {x = 0.75, y = -0.2, z = 0.75}, minacc = {x = -0.2, y = -0.4, z = -0.2}, maxacc = {x = 0.2, y = -0.1, z = 0.2}, minexptime = 8, maxexptime = 10, minsize = 1.5, maxsize = 1.75, texture = "cherry_leaves_particul.png", collisiondetection = true, collision_removal = true, vertical = false, }) end, }) end -- grove trees for i,tree in ipairs({ ethereal.bananatree, ethereal.orangetree, ethereal.lemontree, }) do register_decoration(ethereal.grove, { deco_type = "schematic", sidelen = 16, place_on = {"ethereal:grove_dirt"}, noise_params = { offset = -0.005, scale = 0.01125, spread = {x = 100, y = 20, z = 100}, seed = 8888 - i, octaves = 1, persistence = 0.75, lacunarity = 0.9, }, y_max = 31000, y_min = 5, biomes = {"grove"}, schematic = tree, }) end register_decoration(1, { deco_type = "schematic", sidelen = 16, place_on = {"group:soil"}, noise_params = { offset = -0.005, scale = 0.00875, spread = {x = 100, y = 20, z = 100}, seed = 76, octaves = 1, persistence = 0.75, lacunarity = 0.9, }, y_max = 31000, y_min = 48, biomes = { "frost", "taiga", "glacier", "frost_floatland", }, schematic = ethereal.yellowtree, flags = "place_center_x,place_center_z", }) -- old biome setting (when enabled old heat/humidity values are used) local old = minetest.settings:get_bool("ethereal.old_biomes") -- desertstone spike register_decoration(minetest.get_modpath("stairs") and ethereal.caves, { place_on = "default:desert_stone", sidelen = 16, fill_ratio = 0.01, y_min = 5, y_max = 42, biomes = {"caves"}, schematic = ethereal.desertstone_spike, spawn_by = "default:desert_stone", num_spawn_by = 8, flags = "place_center_x, place_center_z, force_placement", rotation = "random"}) -- desertstone under spike register_decoration(ethereal.caves, { place_on = "default:stone", sidelen = 16, fill_ratio = 0.01, y_min = 5, y_max = 42, biomes = {"caves"}, schematic = ethereal.desertstone_under_spike, flags = "place_center_x, place_center_z, all_floors", rotation = "random"}) -- redwood tree register_decoration(ethereal.mesa, { place_on = "default:dirt_with_dry_grass", fill_ratio = 0.000625, biomes = {"mesa"}, schematic = ethereal.redwood_tree, flags = "place_center_x, place_center_z", spawn_by = "default:dirt_with_dry_grass", num_spawn_by = 8}) register_decoration(ethereal.mesa, { place_on = "default:dirt_with_dry_grass", fill_ratio = 0.000325, biomes = {"mesa"}, schematic = ethereal.redwood_small_tree, flags = "place_center_x, place_center_z", spawn_by = "default:dirt_with_dry_grass", num_spawn_by = 8}) -- igloo register_decoration(ethereal.glacier, { place_on = "default:snowblock", fill_ratio = 0.0005, y_min = 3, y_max = 30, biomes = {"glacier"}, schematic = ethereal.igloo, place_offset_y = -1, spawn_by = "default:snowblock", num_spawn_by = 8, flags = "place_center_x, place_center_z, force_placement", rotation = "random"}) -- crystal frost tree register_decoration(ethereal.frost, { place_on = "ethereal:crystal_dirt", fill_ratio = 0.01, y_min = 1, y_max = 4000, biomes = {"frost", "frost_floatland"}, schematic = ethereal.frosttrees, spawn_by = "ethereal:crystal_dirt", num_spawn_by = 8}) -- giant red mushroom register_decoration(ethereal.mushroom, { place_on = "ethereal:mushroom_dirt", sidelen = 16, noise_params = { offset = 0.01, scale = 0.0075, spread = {x = 100, y = 100, z = 100}, seed = 328, octaves = 2, persist = 0.6 }, biomes = {"mushroom"}, schematic = ethereal.mushroomone, spawn_by = "ethereal:mushroom_dirt", num_spawn_by = 8}) register_decoration(ethereal.jumble, { place_on = "default:dirt_with_rainforest_litter", fill_ratio = 0.000275, biomes = {"jumble"}, schematic = ethereal.mushroomone, spawn_by = "default:dirt_with_rainforest_litter", num_spawn_by = 8, rotation = "random"}) -- giant brown mushroom register_decoration(ethereal.mushroom, { place_on = "ethereal:mushroom_dirt", sidelen = 16, noise_params = { offset = 0.005, scale = 0.0075, spread = {x = 100, y = 100, z = 100}, seed = 329, octaves = 2, persist = 0.9 }, biomes = {"mushroom"}, schematic = ethereal.mushroomtwo, spawn_by = "ethereal:mushroom_dirt", num_spawn_by = 6, rotation = "random"}) register_decoration(ethereal.jumble, { place_on = "default:dirt_with_rainforest_litter", fill_ratio = 0.0001, biomes = {"jumble"}, schematic = ethereal.mushroomtwo, spawn_by = "default:dirt_with_rainforest_litter", num_spawn_by = 8, rotation = "random"}) -- small lava crater register_decoration(ethereal.fiery, { place_on = "ethereal:fiery_dirt", fill_ratio = 0.00275, biomes = {"fiery"}, schematic = ethereal.volcanom, spawn_by = "ethereal:fiery_dirt", num_spawn_by = 8}) -- large lava crater register_decoration(ethereal.fiery, { place_on = "ethereal:fiery_dirt", fill_ratio = 0.00125, biomes = {"fiery"}, schematic = ethereal.volcanol, spawn_by = "ethereal:fiery_dirt", num_spawn_by = 8, rotation = "random"}) -- basandra bush register_decoration(ethereal.fiery, { place_on = "ethereal:fiery_dirt", fill_ratio = 0.03, biomes = {"fiery"}, schematic = ethereal.basandrabush}) -- default jungle tree register_decoration(ethereal.junglee, { place_on = "default:dirt_with_rainforest_litter", fill_ratio = 0.08, biomes = {"rainforest"}, schematic = dpath .. "jungle_tree.mts"}) -- special silver sand terrain for grayness which must be placed before trees register_decoration(ethereal.grayness, { name = node, deco_type = "simple", sidelen = 16, place_on = {"ethereal:gray_dirt"}, noise_params = { offset = -0.25, scale = 3, spread = {x = 100, y = 100, z = 100}, seed = 666, octaves = 3, persist = 0.6, lacunarity = 1.2, }, y_max = 31000, y_min = 1, biomes = {"grayness"}, decoration = "default:silver_sand", place_offset_y = -1, flags = "force_placement", }) -- willow tree register_decoration(ethereal.grayness, { place_on = "ethereal:gray_dirt", fill_ratio = 0.015, biomes = {"grayness"}, schematic = ethereal.willow, spawn_by = "ethereal:gray_dirt", num_spawn_by = 6}) -- small pine tree for shore elevation register_decoration(ethereal.snowy, { place_on = {"default:dirt_with_coniferous_litter"}, fill_ratio = 0.025, y_min = 3, y_max = 9, biomes = {"coniferous_forest"}, schematic = dpath .. "small_pine_tree.mts"}) -- ethereal.pinetree -- small pine tree for lower elevation register_decoration(ethereal.snowy, { place_on = {"default:dirt_with_coniferous_litter"}, fill_ratio = 0.03, y_min = 10, y_max = 48, biomes = {"coniferous_forest"}, schematic = dpath .. "small_pine_tree.mts"}) -- ethereal.pinetree -- default large pine tree for lower elevation register_decoration(ethereal.snowy, { place_on = {"default:dirt_with_coniferous_litter"}, fill_ratio = 0.03, y_min = 10, y_max = 48, biomes = {"coniferous_forest"}, schematic = dpath .. "pine_tree.mts"}) -- small pine for higher elevation register_decoration(ethereal.snowy, { place_on = {"default:dirt_with_snow"}, fill_ratio = 0.03, y_min = 48, y_max = 31000, biomes = {"taiga"}, schematic = dpath .. "snowy_small_pine_tree_from_sapling.mts"}) -- ethereal.pinetree register_decoration(ethereal.snowy, { place_on = {"default:dirt_with_snow"}, fill_ratio = 0.03, y_min = 48, y_max = 31000, biomes = {"taiga"}, schematic = dpath .. "snowy_pine_tree_from_sapling.mts"}) -- default apple tree register_decoration(ethereal.jumble, { deco_type = "schematic", place_on = {"default:dirt_with_rainforest_litter"}, fill_ratio = 0.0005, biomes = {"jumble"}, schematic = dpath.."apple_tree.mts", flags = "place_center_x, place_center_z", rotation = "random", spawn_by = "default:dirt_with_rainforest_litter", num_spawn_by = 6, }) register_decoration(ethereal.jumble, { deco_type = "schematic", place_on = {"default:dirt_with_grass"}, place_offset_y = 1, fill_ratio = 0.000275, biomes = {"jumble"}, schematic = path.."gaunt_tree_1.mts", flags = "place_center_x, place_center_z", rotation = "random", spawn_by = "default:dirt_with_grass", num_spawn_by = 5, }) register_decoration(ethereal.jumble, { deco_type = "schematic", place_on = {"default:dirt_with_grass"}, place_offset_y = 1, fill_ratio = 0.0005, biomes = {"jumble"}, schematic = path.."gaunt_tree_2.mts", flags = "place_center_x, place_center_z", rotation = "random", spawn_by = "default:dirt_with_grass", num_spawn_by = 5, }) register_decoration(ethereal.jumble, { deco_type = "schematic", place_on = {"default:dirt_with_grass"}, place_offset_y = 1, fill_ratio = 0.0005, biomes = {"jumble"}, schematic = path.."gaunt_tree_3.mts", flags = "place_center_x, place_center_z", rotation = "random", spawn_by = "default:dirt_with_grass", num_spawn_by = 5, }) -- deciduous forest trees register_decoration(ethereal.grassy, { deco_type = "schematic", place_on = {"default:dirt_with_grass"}, place_offset_y = 0, sidelen = 16, fill_ratio = 0.0175, biomes = {"deciduous_forest"}, y_max = 31000, y_min = 1, schematic = path.."meadow_tree_1.mts", flags = "place_center_x, place_center_z", rotation = "random", }) register_decoration(ethereal.grassy, { deco_type = "schematic", place_on = {"default:dirt_with_grass"}, place_offset_y = 0, sidelen = 16, fill_ratio = 0.0025, biomes = {"deciduous_forest"}, y_max = 31000, y_min = 1, schematic = path.."meadow_tree_2.mts", flags = "place_center_x, place_center_z", rotation = "random", }) register_decoration(ethereal.grassy, { deco_type = "schematic", place_on = {"default:dirt_with_grass"}, place_offset_y = 0, sidelen = 16, fill_ratio = 0.00275, biomes = {"deciduous_forest"}, y_max = 31000, y_min = 1, schematic = dpath.."apple_tree.mts", flags = "place_center_x, place_center_z", rotation = "random", }) -- big old tree register_decoration(ethereal.jumble, { deco_type = "schematic", place_on = {"default:dirt_with_grass","default:dirt_with_rainforest_litter"}, place_offset_y = 1, fill_ratio = 0.00225, biomes = {"jumble"}, schematic = path.."overgrown_tree.mts", flags = "place_center_x, place_center_z", rotation = "random", spawn_by = "default:dirt_with_rainforest_litter", num_spawn_by = 6, }) register_decoration(ethereal.jumble, { deco_type = "schematic", place_on = {"default:dirt_with_grass","default:dirt_with_rainforest_litter"}, place_offset_y = 1, fill_ratio = 0.00275, biomes = {"jumble"}, schematic = ethereal.bigtree, flags = "place_center_x, place_center_z", rotation = "random", spawn_by = "default:dirt_with_rainforest_litter", num_spawn_by = 6, }) -- default aspen tree register_decoration(ethereal.grassytwo, { deco_type = "schematic", place_on = {"default:dirt_with_grass"}, place_offset_y = 1, fill_ratio = 0.0025, y_min = 1, y_max = 50, biomes = {"grassytwo"}, schematic = dpath.."aspen_tree.mts", flags = "place_center_x, place_center_z", rotation = "random", }) -- birch tree register_decoration(ethereal.grassytwo, { deco_type = "schematic", place_on = {"default:dirt_with_grass"}, place_offset_y = 1, fill_ratio = 0.0025, y_min = 51, y_max = 31000, biomes = {"grassytwo"}, schematic = ethereal.birchtree, flags = "place_center_x, place_center_z", rotation = "random", }) -- orange tree register_decoration(ethereal.prairie, { place_on = "ethereal:prairie_dirt", fill_ratio = 0.01, biomes = {"prairie"}, schematic = ethereal.orangetree}) -- default acacia tree register_decoration(ethereal.savanna, { place_on = {"default:dry_dirt_with_dry_grass", "default:dirt_with_dry_grass"}, fill_ratio = 0.004, biomes = {"savanna"}, schematic = dpath .. "acacia_tree.mts"}) -- palm tree register_decoration(1, { place_on = "default:sand", noise_params = { offset = 0, scale = 0.005, spread = {x = 100, y = 20, z = 100}, seed = 4444333221, octaves = 1, persist = 1.0 }, y_min = 1, y_max = 3, biomes = {"desert_shore", "naturalbiomes:mediterranean_shore", "sandstone_desert_shore", "grove_shore"}, schematic = ethereal.palmtree}) -- bamboo tree register_decoration(ethereal.bamboo, { place_on = "ethereal:bamboo_dirt", fill_ratio = 0.0025, biomes = {"bamboo"}, place_offset_y = 1, schematic = ethereal.bambootree}) -- vine tree register_decoration(ethereal.swamp, { place_on = "default:dirt_with_grass", fill_ratio = 0.0175, biomes = {"swamp"}, schematic = ethereal.vinetree}) -- lemon tree register_decoration(ethereal.mediterranean, { place_on = "ethereal:grove_dirt", fill_ratio = 0.004, y_min = 5, y_max = 50, biomes = {"mediterranean"}, schematic = ethereal.lemontree}) -- olive tree register_decoration(ethereal.mediterranean, { place_on = "ethereal:grove_dirt", fill_ratio = 0.004, y_min = 5, y_max = 45, biomes = {"mediterranean"}, schematic = ethereal.olivetree}) -- default large cactus register_decoration(ethereal.desert, { deco_type = "schematic", place_on = { "default:desert_sand", "default:sand", }, sidelen = 80, noise_params = { offset = -0.0001, scale = 0.0005, spread = {x = 100, y = 100, z = 100}, seed = 230, octaves = 1, persist = 0.6 }, biomes = { "desert", "sandstone_desert", }, y_min = 5, y_max = 31000, schematic = dpath .. "large_cactus.mts", flags = "place_center_x", rotation = "random", }) -- default bush register_decoration(1, { 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 = 137, octaves = 3, persist = 0.7, }, biomes = {"deciduous_forest", "grassytwo"}, y_min = 1, y_max = 31000, schematic = dpath .. "bush.mts", flags = "place_center_x, place_center_z", rotation = "random" }) -- extra bushes for jumble biome register_decoration(ethereal.jumble, { deco_type = "schematic", place_on = {"default:dirt_with_rainforest_litter"}, spawn_by = "default:dirt_with_rainforest_litter", num_spawn_by = 3, sidelen = 16, noise_params = { offset = 0.0125, scale = 0.01, spread = {x = 100, y = 100, z = 100}, seed = 34343, octaves = 2, persist = 0.6, }, biomes = {"jumble"}, y_min = 1, y_max = 31000, schematic = dpath .. "bush.mts", flags = "place_center_x, place_center_z", rotation = "random" }) -- default tropical bush register_decoration(1, { deco_type = "schematic", place_on = {"ethereal:grove_dirt", "default:dirt_with_rainforest_litter"}, replacements = {["default:bush_leaves"] = "default:jungleleaves"}, --sidelen = 16, noise_params = { offset = 0, scale = 0.01, spread = {x = 100, y = 100, z = 100}, seed = 137, octaves = 3, persist = 0.5 }, biomes = {"grove", "rainforest"}, y_min = 1, y_max = 31000, schematic = dpath .. "bush.mts", flags = "place_center_x, place_center_z", rotation = "random" }) -- default acacia bush register_decoration(1, { deco_type = "schematic", place_on = { "default:dirt_with_dry_grass", "default:dry_dirt_with_dry_grass", "naturalbiomes:savannalitter" }, sidelen = 16, noise_params = { offset = -0.00525, scale = 0.0125, spread = {x = 7, y = 7, z = 7}, seed = 90155, octaves = 2, persist = 0.8, lacunarity = 1.5, }, biomes = {"mesa","savanna"}, y_min = 1, y_max = 31000, schematic = dpath .. "acacia_bush.mts", flags = "place_center_x, place_center_z", rotation = "random" }) -- default pine bush register_decoration((minetest.registered_nodes["default:pine_bush"] and 1), { name = "default:pine_bush", place_on = {"default:dirt_with_snow", "default:cold_dirt"}, sidelen = 16, y_min = 4, y_max = 120, noise_params = { offset = -0.004, scale = 0.01, spread = {x = 100, y = 100, z = 100}, seed = 137, octaves = 3, persist = 0.7}, biomes = {"taiga", "snowy_grassland"}, schematic = dpath .. "pine_bush.mts"}) -- default blueberry bush register_decoration((minetest.registered_nodes["default:blueberry_bush_leaves"] and 1), { name = "default:blueberry_bush", deco_type = "schematic", place_on = { "default:dirt_with_coniferous_litter", "default:dirt_with_snow", "ethereal:grove_dirt"}, sidelen = 16, fill_ratio = 0.00075, biomes = {"coniferous_forest", "taiga", "grove"}, y_max = 31000, y_min = 1, place_offset_y = 1, schematic = dpath .. "blueberry_bush.mts", flags = "place_center_x, place_center_z", rotation = "random" }) -- place waterlily in beach areas local sandy_biomes = {} local desert_biomes = { desert = true, sandstone_desert = true, desert_shore = true, sandstone_desert_shore = true, desert_below = true, sandstone_desert_below = true, } for biome,def in pairs(asuna.biomes) do if def.shore == "default:sand" and (def.ocean == "temperate" or def.ocean == "tropical") and not desert_biomes[biome] then table.insert(sandy_biomes,biome) end end register_decoration(1, { deco_type = "schematic", place_on = {"default:sand"}, sidelen = 16, noise_params = { offset = -0.12, scale = 0.3, spread = {x = 200, y = 200, z = 200}, seed = 33, octaves = 3, persist = 0.7 }, biomes = sandy_biomes, y_min = 0, y_max = 0, schematic = ethereal.waterlily, rotation = "random" }) -- coral reef if ethereal.reefs == 1 then -- override corals so crystal shovel can pick them up intact minetest.override_item("default:coral_skeleton", {groups = {crumbly = 3}}) minetest.override_item("default:coral_orange", {groups = {crumbly = 3}}) minetest.override_item("default:coral_brown", {groups = {crumbly = 3}}) --[[register_decoration(1, { deco_type = "schematic", place_on = {"default:sand"}, noise_params = { offset = -0.15, scale = 0.1, spread = {x = 100, y = 100, z = 100}, seed = 7013, octaves = 3, persist = 1}, biomes = {"desert_ocean", "grove_ocean"}, y_min = -8, y_max = -2, schematic = path .. "corals.mts", flags = "place_center_x, place_center_z", rotation = "random" })]] end -- tree logs if ethereal.logs == 1 then register_decoration(ethereal.prairie, { name = "default:apple_log", place_on = {"default:dirt_with_grass", "ethereal:prairie_dirt"}, sidelen = 16, fill_ratio = 0.001, biomes = {"deciduous_forest", "jumble", "swamp", "prairie"}, schematic = dpath .. "apple_log.mts", place_offset_y = 1, flags = "place_center_x", rotation = "random", spawn_by = {"default:dirt_with_grass", "ethereal:prairie_dirt"}, num_spawn_by = 8}) register_decoration(ethereal.junglee, { name = "default:jungle_log", place_on = {"default:dirt_with_rainforest_litter"}, fill_ratio = 0.005, biomes = {"rainforest"}, schematic = dpath .. "jungle_log.mts", place_offset_y = 1, flags = "place_center_x", rotation = "random", spawn_by = "default:dirt_with_rainforest_litter", num_spawn_by = 8}) register_decoration(ethereal.snowy, { name = "default:pine_log", place_on = {"default:dirt_with_snow", "default:dirt_with_coniferous_litter"}, fill_ratio = 0.0018, y_min = 4, y_max = 100, biomes = {"taiga", "coniferous_forest"}, schematic = dpath .. "pine_log.mts", place_offset_y = 1, flags = "place_center_x", rotation = "random", spawn_by = {"default:dirt_with_snow", "default:dirt_with_coniferous_litter"}, num_spawn_by = 8}) register_decoration(ethereal.savanna, { name = "default:acacia_log", deco_type = "schematic", place_on = {"default:dry_dirt_with_dry_grass"}, sidelen = 16, noise_params = { offset = 0, scale = 0.001, spread = {x = 250, y = 250, z = 250}, seed = 2, octaves = 3, persist = 0.66}, biomes = {"savanna"}, schematic = dpath .. "acacia_log.mts", place_offset_y = 1, flags = "place_center_x", rotation = "random", spawn_by = "default:dry_dirt_with_dry_grass", num_spawn_by = 8}) register_decoration(ethereal.plains, { name = "ethereal:scorched_log", place_on = {"ethereal:dry_dirt"}, fill_ratio = 0.0018, y_min = 4, y_max = 100, biomes = {"plains"}, schematic = { size = {x = 3, y = 1, z = 1}, data = { {name = "ethereal:scorched_tree", param1 = 201, param2 = 16}, {name = "ethereal:scorched_tree", param1 = 255, param2 = 16}, {name = "ethereal:scorched_tree", param1 = 255, param2 = 16} } }, place_offset_y = 1, flags = "place_center_x", rotation = "random", spawn_by = "ethereal:dry_dirt", num_spawn_by = 8}) register_decoration(ethereal.grove, { name = "ethereal:banana_log", place_on = {"ethereal:grove_dirt"}, fill_ratio = 0.0018, y_min = 4, y_max = 100, biomes = {"grove"}, schematic = { size = {x = 3, y = 1, z = 1}, data = { {name = "ethereal:banana_trunk", param1 = 255, param2 = 16}, {name = "ethereal:banana_trunk", param1 = 255, param2 = 16}, {name = "ethereal:banana_trunk", param1 = 201, param2 = 16} } }, place_offset_y = 1, flags = "place_center_x", rotation = "random", spawn_by = "ethereal:grove_dirt", num_spawn_by = 8}) end -- deep see fumerole / vent print("register_decoration for nether:fumarole") register_decoration(minetest.get_modpath("nether") and 1, { name = "nether:fumarole", place_on = {"default:sand"}, sidelen = 16, y_min = -192, y_max = -45, fill_ratio = 0.0001, schematic = { size = {x = 1, y = 2, z = 2}, data = { {name = "default:lava_source", param1 = 255, force_place = true}, {name = "nether:fumarole", param1 = 255, force_place = true}, {name = "default:sand", param1 = 192, force_place = true}, {name = "ethereal:sandy", param1 = 192, force_place = true}, } }, place_offset_y = -1, spawn_by = {"default:water_source"}, num_spawn_by = 8}) print("register_decoration for nether:fumarole done") if minetest.get_modpath("nether") then print("register_lbm for nether:fumarole") minetest.register_lbm({ name = ":nether:extra_fumarole_timer", nodenames = {"nether:fumarole"}, run_at_every_load = false, action = function(pos) minetest.get_node_timer(pos):start(10) end }) print("register_lbm for nether:fumarole done ") end print("whole nether:fumarole stuff done ")