forked from VoxeLibre/VoxeLibre
make lush caves use new structures api
This commit is contained in:
parent
394eaa5db8
commit
d52827de69
|
@ -51,10 +51,10 @@ local function dripleaf_grow(pos, node)
|
||||||
minetest.set_node(target,{name = "mcl_lush_caves:dripleaf_big"})
|
minetest.set_node(target,{name = "mcl_lush_caves:dripleaf_big"})
|
||||||
end
|
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 p1 = vector.offset(pos,-5,-2,-5)
|
||||||
local p2 = vector.offset(pos,5,1,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)
|
table.sort(nn,function(a, b)
|
||||||
return vector_distance_xz(pos, a) < vector_distance_xz(pos, b)
|
return vector_distance_xz(pos, a) < vector_distance_xz(pos, b)
|
||||||
end)
|
end)
|
||||||
|
@ -88,9 +88,10 @@ function mcl_lush_caves.makelake(pos,pr)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
return true
|
||||||
end
|
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"})
|
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
|
if #airup == 0 then
|
||||||
return end
|
return end
|
||||||
|
@ -630,42 +631,47 @@ minetest.register_globalstep(function(dtime)
|
||||||
end
|
end
|
||||||
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 azaleas = {}
|
||||||
local az_limit = 500
|
local az_limit = 500
|
||||||
|
mcl_structures.register_structure("azalea_tree",{
|
||||||
local deco_id_makelake = minetest.get_decoration_id("mcl_biomes:lake_structblock")
|
place_on = {"group:material_stone","mcl_core:gravel","mcl_lush_caves:moss","mcl_core:clay"},
|
||||||
local deco_id_makeazalea = minetest.get_decoration_id("mcl_biomes:azalea_structblock")
|
spawn_by = {"air"},
|
||||||
minetest.set_gen_notify({decoration=true}, { deco_id_makelake })
|
num_spawn_by = 1,
|
||||||
minetest.set_gen_notify({decoration=true}, { deco_id_makeazalea })
|
fill_ratio = 0.15,
|
||||||
|
flags = "all_ceilings",
|
||||||
mcl_mapgen_core.register_generator("mcl_lush_caves", nil, function(minp, maxp, blockseed)
|
y_max =-10,
|
||||||
local gennotify = minetest.get_mapgen_object("gennotify")
|
y_min = mcl_vars.mg_overworld_min + 15,
|
||||||
local pr = PseudoRandom(blockseed + 15)
|
biomes = lushcaves,
|
||||||
|
place_func = function(pos,def,pr)
|
||||||
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
|
for _,a in pairs(azaleas) do
|
||||||
if vector.distance(realpos,a) < az_limit then
|
if vector.distance(pos,a) < az_limit then
|
||||||
az = true
|
return true
|
||||||
end
|
end
|
||||||
end
|
if mcl_lush_caves.makeazalea(pos,def,pr) then
|
||||||
if not az and mcl_lush_caves.makeazaela(realpos) then
|
table.insert(azaleas,pos)
|
||||||
table.insert(azaleas,realpos)
|
return true
|
||||||
az = true
|
|
||||||
end
|
end
|
||||||
end
|
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)
|
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
name = mcl_lush_caves
|
name = mcl_lush_caves
|
||||||
author = cora
|
author = cora
|
||||||
depends = mcl_sounds, mesecons, mcl_mapgen_core
|
depends = mcl_sounds, mesecons, mcl_mapgen_core, mcl_structures
|
||||||
|
|
|
@ -4401,34 +4401,6 @@ local function register_decorations()
|
||||||
fill_ratio = 0.1,
|
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({
|
minetest.register_decoration({
|
||||||
decoration = "mcl_lush_caves:cave_vines",
|
decoration = "mcl_lush_caves:cave_vines",
|
||||||
|
|
Loading…
Reference in New Issue