Add basalt pillars

This commit is contained in:
cora 2022-06-18 16:01:25 +02:00
parent fefb15f2a8
commit 0890c719a3
2 changed files with 58 additions and 17 deletions

@ -1533,8 +1533,8 @@ local function register_dimension_biomes()
ore = "mcl_nether:soul_sand", ore = "mcl_nether:soul_sand",
wherein = { "mcl_nether:netherrack", "mcl_blackstone:soul_soil" }, wherein = { "mcl_nether:netherrack", "mcl_blackstone:soul_soil" },
clust_scarcity = 100, clust_scarcity = 100,
clust_num_ores = 100, clust_num_ores = 225,
clust_size = 10, clust_size = 15,
biomes = { "SoulsandValley" }, biomes = { "SoulsandValley" },
y_min = mcl_vars.mg_nether_min, y_min = mcl_vars.mg_nether_min,
y_max = mcl_vars.mg_nether_max + 80, y_max = mcl_vars.mg_nether_max + 80,
@ -1623,10 +1623,10 @@ local function register_dimension_biomes()
minetest.register_ore({ minetest.register_ore({
ore_type = "blob", ore_type = "blob",
ore = "mcl_blackstone:blackstone", ore = "mcl_blackstone:blackstone",
wherein = { "mcl_nether:netherrack" }, wherein = {"mcl_nether:netherrack","mcl_nether:glowstone","mcl_core:gravel","mcl_nether:soul_sand"},
clust_scarcity = 100, clust_scarcity = 100,
clust_num_ores = 100, clust_num_ores = 400,
clust_size = 10, clust_size = 20,
biomes = { "BasaltDelta" }, biomes = { "BasaltDelta" },
y_min = mcl_vars.mg_nether_min, y_min = mcl_vars.mg_nether_min,
y_max = mcl_vars.mg_nether_max + 80, y_max = mcl_vars.mg_nether_max + 80,
@ -1644,14 +1644,14 @@ local function register_dimension_biomes()
minetest.register_decoration({ minetest.register_decoration({
deco_type = "simple", deco_type = "simple",
place_on = {"mcl_nether:netherrack","mcl_nether:glowstone","mcl_blackstone:blackstone"}, place_on = {"mcl_nether:netherrack","mcl_nether:glowstone","mcl_blackstone:nether_gold","mcl_nether:quartz_ore","mcl_core:gravel","mcl_nether:soul_sand","mcl_blackstone:blackstone"},
sidelen = 16, sidelen = 16,
fill_ratio = 10, fill_ratio = 10,
biomes = { "BasaltDelta" }, biomes = { "BasaltDelta" },
y_min = -31000, y_min = -31000,
y_max = mcl_vars.mg_nether_max, y_max = mcl_vars.mg_nether_max,
decoration = "mcl_blackstone:basalt", decoration = "mcl_blackstone:basalt",
flags = "all_floors, all_ceilings", flags = "all_floors",
param2 = 0, param2 = 0,
}) })
@ -4163,8 +4163,8 @@ local function register_dimension_decorations()
biomes = {"WarpedForest"}, biomes = {"WarpedForest"},
y_min = mcl_vars.mg_lava_nether_max + 1, y_min = mcl_vars.mg_lava_nether_max + 1,
flags = "all_floors", flags = "all_floors",
height = 3, height = 2,
max_height = 5, height_max = 8,
decoration = "mcl_crimson:twisting_vines", decoration = "mcl_crimson:twisting_vines",
}) })
minetest.register_decoration({ minetest.register_decoration({

@ -10,6 +10,13 @@ local adjacents = {
vector.new(0,-1,0) vector.new(0,-1,0)
} }
local plane_adjacents = {
vector.new(1,0,0),
vector.new(-1,0,0),
vector.new(0,0,1),
vector.new(0,0,-1),
}
local function set_node_no_bedrock(pos,node) local function set_node_no_bedrock(pos,node)
local n = minetest.get_node(pos) local n = minetest.get_node(pos)
if n.name == "mcl_core:bedrock" then return end if n.name == "mcl_core:bedrock" then return end
@ -92,7 +99,7 @@ mcl_structures.register_structure("water_lake",{
offset = 0, offset = 0,
scale = 0.000032, scale = 0.000032,
spread = {x = 250, y = 250, z = 250}, spread = {x = 250, y = 250, z = 250},
seed = 734341353, seed = 756641353,
octaves = 3, octaves = 3,
persist = 0.001, persist = 0.001,
flags = "absvalue", flags = "absvalue",
@ -112,9 +119,9 @@ mcl_structures.register_structure("basalt_column",{
num_spawn_by = 2, num_spawn_by = 2,
noise_params = { noise_params = {
offset = 0, offset = 0,
scale = 0.01, scale = 0.02,
spread = {x = 250, y = 250, z = 250}, spread = {x = 250, y = 250, z = 250},
seed = 78375213, seed = 7225213,
octaves = 5, octaves = 5,
persist = 0.1, persist = 0.1,
flags = "absvalue", flags = "absvalue",
@ -130,16 +137,50 @@ mcl_structures.register_structure("basalt_column",{
end) end)
if #nn < 1 then return false end if #nn < 1 then return false end
for i=1,pr:next(1,#nn) do for i=1,pr:next(1,#nn) do
if minetest.get_node(vector.offset(nn[i],0,-1,0)).name ~= "air" then
local dst=vector.distance(pos,nn[i]) local dst=vector.distance(pos,nn[i])
for ii=0,pr:next(1,15)-dst do for ii=0,pr:next(2,14)-dst do
set_node_no_bedrock(vector.new(nn[i].x,nn[i].y + ii,nn[i].z),{name="mcl_blackstone:basalt"}) set_node_no_bedrock(vector.new(nn[i].x,nn[i].y + ii,nn[i].z),{name="mcl_blackstone:basalt"})
end end
end end
end
return true
end
})
mcl_structures.register_structure("basalt_pillar",{
place_on = {"mcl_blackstone:blackstone","mcl_blackstone:basalt"},
noise_params = {
offset = 0,
scale = 0.001,
spread = {x = 250, y = 250, z = 250},
seed = 783213,
octaves = 5,
persist = 0.1,
flags = "absvalue",
},
flags = "all_floors",
y_max = mcl_vars.mg_nether_max,
y_min = mcl_vars.mg_lava_nether_max + 1,
biomes = { "BasaltDelta" },
place_func = function(pos,def,pr)
local nn = minetest.find_nodes_in_area(vector.offset(pos,-2,-1,-2),vector.offset(pos,2,-1,2),{"air","mcl_blackstone:basalt","mcl_blackstone:blackstone"})
table.sort(nn,function(a, b)
return vector.distance(vector.new(pos.x,0,pos.z), a) < vector.distance(vector.new(pos.x,0,pos.z), b)
end)
if #nn < 1 then return false end
for i=1,pr:next(1,#nn) do
if minetest.get_node(vector.offset(nn[i],0,-1,0)).name ~= "air" then
local dst=vector.distance(pos,nn[i])
for ii=0,pr:next(19,34)-dst do
set_node_no_bedrock(vector.new(nn[i].x,nn[i].y + ii,nn[i].z),{name="mcl_blackstone:basalt"})
end
end
end
return true return true
end end
}) })
mcl_structures.register_structure("netherlavapool",{ mcl_structures.register_structure("lavadelta",{
place_on = {"mcl_blackstone:blackstone","mcl_blackstone:basalt"}, place_on = {"mcl_blackstone:blackstone","mcl_blackstone:basalt"},
spawn_by = {"mcl_blackstone:basalt","mcl_blackstone:blackstone"}, spawn_by = {"mcl_blackstone:basalt","mcl_blackstone:blackstone"},
num_spawn_by = 2, num_spawn_by = 2,
@ -157,7 +198,7 @@ mcl_structures.register_structure("netherlavapool",{
y_min = mcl_vars.mg_lava_nether_max + 1, y_min = mcl_vars.mg_lava_nether_max + 1,
biomes = { "BasaltDelta" }, biomes = { "BasaltDelta" },
place_func = function(pos,def,pr) place_func = function(pos,def,pr)
local nn = minetest.find_nodes_in_area(vector.offset(pos,-15,-1,-15),vector.offset(pos,15,-1,15),{"mcl_blackstone:basalt","mcl_blackstone:blackstone"}) local nn = minetest.find_nodes_in_area_under_air(vector.offset(pos,-10,-1,-10),vector.offset(pos,10,-1,10),{"mcl_blackstone:basalt","mcl_blackstone:blackstone"})
table.sort(nn,function(a, b) table.sort(nn,function(a, b)
return vector.distance(vector.new(pos.x,0,pos.z), a) < vector.distance(vector.new(pos.x,0,pos.z), b) return vector.distance(vector.new(pos.x,0,pos.z), a) < vector.distance(vector.new(pos.x,0,pos.z), b)
end) end)