diff --git a/mods/ITEMS/mcl_lush_caves/init.lua b/mods/ITEMS/mcl_lush_caves/init.lua index eafc7004bd..5afd8cecc0 100644 --- a/mods/ITEMS/mcl_lush_caves/init.lua +++ b/mods/ITEMS/mcl_lush_caves/init.lua @@ -51,10 +51,10 @@ local function dripleaf_grow(pos, node) minetest.set_node(target,{name = "mcl_lush_caves:dripleaf_big"}) end -function mcl_lush_caves.makelake(pos,pr) +function mcl_lush_caves.makelake(pos,def,pr) local p1 = vector.offset(pos,-5,-2,-5) local p2 = vector.offset(pos,5,1,5) - local nn = minetest.find_nodes_in_area_under_air(p1,p2,{"group:material_stone","mcl_core:clay"}) + local nn = minetest.find_nodes_in_area_under_air(p1,p2,{"group:material_stone","mcl_core:clay","mcl_lush_caves:moss"}) table.sort(nn,function(a, b) return vector_distance_xz(pos, a) < vector_distance_xz(pos, b) end) @@ -88,9 +88,10 @@ function mcl_lush_caves.makelake(pos,pr) end end end + return true end -function mcl_lush_caves.makeazaela(pos,pr) +function mcl_lush_caves.makeazaela(pos,def,pr) local airup = minetest.find_nodes_in_area_under_air(vector.offset(pos,0,40,0),pos,{"mcl_core:dirt_with_grass"}) if #airup == 0 then return end @@ -630,42 +631,47 @@ minetest.register_globalstep(function(dtime) end end) +local lushcaves = { "LushCaves", "LushCaves_underground", "LushCaves_ocean", "LushCaves_deep_ocean"} + +mcl_structures.register_structure("clay_pool",{ + place_on = {"group:material_stone","mcl_core:gravel","mcl_lush_caves:moss","mcl_core:clay"}, + spawn_by = {"air"}, + num_spawn_by = 1, + noise_params = { + offset = 0, + scale = 0.01, + spread = {x = 250, y = 250, z = 250}, + seed = 78375213, + octaves = 5, + persist = 0.1, + flags = "absvalue", + }, + flags = "all_floors", + y_max = -10, + biomes = lushcaves, + place_func = mcl_lush_caves.makelake, +}) + local azaleas = {} local az_limit = 500 - -local deco_id_makelake = minetest.get_decoration_id("mcl_biomes:lake_structblock") -local deco_id_makeazalea = minetest.get_decoration_id("mcl_biomes:azalea_structblock") -minetest.set_gen_notify({decoration=true}, { deco_id_makelake }) -minetest.set_gen_notify({decoration=true}, { deco_id_makeazalea }) - -mcl_mapgen_core.register_generator("mcl_lush_caves", nil, function(minp, maxp, blockseed) - local gennotify = minetest.get_mapgen_object("gennotify") - local pr = PseudoRandom(blockseed + 15) - - local az = false - for _, pos in pairs(gennotify["decoration#"..deco_id_makeazalea] or {}) do - local realpos = vector.offset(pos,0,-1,0) - local node = minetest.get_node(realpos) - if node and node.name == "mcl_lush_caves:azalea_structblock" then - minetest.remove_node(realpos) - for _,a in pairs(azaleas) do - if vector.distance(realpos,a) < az_limit then - az = true - end +mcl_structures.register_structure("azalea_tree",{ + place_on = {"group:material_stone","mcl_core:gravel","mcl_lush_caves:moss","mcl_core:clay"}, + spawn_by = {"air"}, + num_spawn_by = 1, + fill_ratio = 0.15, + flags = "all_ceilings", + y_max =-10, + y_min = mcl_vars.mg_overworld_min + 15, + biomes = lushcaves, + place_func = function(pos,def,pr) + for _,a in pairs(azaleas) do + if vector.distance(pos,a) < az_limit then + return true end - if not az and mcl_lush_caves.makeazaela(realpos) then - table.insert(azaleas,realpos) - az = true + if mcl_lush_caves.makeazalea(pos,def,pr) then + table.insert(azaleas,pos) + return true end end end - - for _, pos in pairs(gennotify["decoration#"..deco_id_makelake] or {}) do - local realpos = vector.offset(pos,0,1,0) - local node = minetest.get_node(realpos) - if node and node.name == "mcl_lush_caves:lake_structblock" then - minetest.remove_node(realpos) - mcl_lush_caves.makelake(realpos, pr) - end - end -end) +}) diff --git a/mods/ITEMS/mcl_lush_caves/mod.conf b/mods/ITEMS/mcl_lush_caves/mod.conf index 0e464c5d91..6c612c6734 100644 --- a/mods/ITEMS/mcl_lush_caves/mod.conf +++ b/mods/ITEMS/mcl_lush_caves/mod.conf @@ -1,3 +1,3 @@ name = mcl_lush_caves author = cora -depends = mcl_sounds, mesecons, mcl_mapgen_core +depends = mcl_sounds, mesecons, mcl_mapgen_core, mcl_structures diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 5ebab3d805..85f6d49a1c 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -4401,34 +4401,6 @@ local function register_decorations() fill_ratio = 0.1, }) - minetest.register_decoration({ - name = "mcl_biomes:lake_structblock", - decoration = "mcl_lush_caves:lake_structblock", - deco_type = "simple", - place_on = {"group:material_stone","mcl_core:gravel","mcl_lush_caves:moss","mcl_core:clay"}, - spawn_by = {"air"}, - num_spawn_by = 2, - sidelen = 16, - fill_ratio = 1, - y_max = -10, - flags = "all_floors", - biomes = lushcaves, - }) - - minetest.register_decoration({ - name = "mcl_biomes:azalea_structblock", - decoration = "mcl_lush_caves:azalea_structblock", - deco_type = "simple", - place_on = {"group:material_stone","mcl_core:gravel","mcl_lush_caves:moss","mcl_core:clay"}, - spawn_by = {"air"}, - num_spawn_by = 4, - y_min = -25, - y_max = -5, - sidelen = 16, - fill_ratio = 0.2, - flags = "all_ceilings", - biomes = lushcaves, - }) minetest.register_decoration({ decoration = "mcl_lush_caves:cave_vines",