forked from VoxeLibre/VoxeLibre
Generate red deserts in v6
This commit is contained in:
parent
602058716f
commit
02d2f7ae1a
|
@ -53,6 +53,7 @@ local c_sand = minetest.get_content_id("mcl_core:sand")
|
||||||
local c_sandstone = minetest.get_content_id("mcl_core:sandstone")
|
local c_sandstone = minetest.get_content_id("mcl_core:sandstone")
|
||||||
local c_redsand = minetest.get_content_id("mcl_core:redsand")
|
local c_redsand = minetest.get_content_id("mcl_core:redsand")
|
||||||
local c_redsandstone = minetest.get_content_id("mcl_core:redsandstone")
|
local c_redsandstone = minetest.get_content_id("mcl_core:redsandstone")
|
||||||
|
local c_hardened_clay_orange = minetest.get_content_id("mcl_colorblocks:hardened_clay_orange")
|
||||||
local c_void = minetest.get_content_id("mcl_core:void")
|
local c_void = minetest.get_content_id("mcl_core:void")
|
||||||
local c_lava = minetest.get_content_id("mcl_core:lava_source")
|
local c_lava = minetest.get_content_id("mcl_core:lava_source")
|
||||||
local c_water = minetest.get_content_id("mcl_core:water_source")
|
local c_water = minetest.get_content_id("mcl_core:water_source")
|
||||||
|
@ -1044,7 +1045,7 @@ end
|
||||||
-- Perlin noise objects
|
-- Perlin noise objects
|
||||||
local perlin_structures
|
local perlin_structures
|
||||||
local perlin_vines, perlin_vines_fine, perlin_vines_upwards, perlin_vines_length, perlin_vines_density
|
local perlin_vines, perlin_vines_fine, perlin_vines_upwards, perlin_vines_length, perlin_vines_density
|
||||||
local perlin_clay
|
local perlin_clay, perlin_red_desert_v6
|
||||||
|
|
||||||
local function generate_clay(minp, maxp, seed, voxelmanip_data, voxelmanip_area, lvm_used)
|
local function generate_clay(minp, maxp, seed, voxelmanip_data, voxelmanip_area, lvm_used)
|
||||||
-- TODO: Make clay generation reproducible for same seed.
|
-- TODO: Make clay generation reproducible for same seed.
|
||||||
|
@ -1097,6 +1098,56 @@ local function generate_clay(minp, maxp, seed, voxelmanip_data, voxelmanip_area,
|
||||||
return lvm_used
|
return lvm_used
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Replaces parts of ordinary v6 deserts with red sand and sandstone
|
||||||
|
local function generate_red_desert_v6(minp, maxp, seed, data, area, lvm_used)
|
||||||
|
|
||||||
|
if not perlin_red_desert_v6 then
|
||||||
|
local noise = minetest.get_noiseparams("mgv6_np_biome")
|
||||||
|
if not noise then
|
||||||
|
noise = {
|
||||||
|
offset = 0,
|
||||||
|
scale = 1,
|
||||||
|
spread = { x = 500, y = 500, z = 500 },
|
||||||
|
seed = 6932,
|
||||||
|
octaves = 3,
|
||||||
|
persist = 0.5,
|
||||||
|
lacunarity = 2.0,
|
||||||
|
}
|
||||||
|
else
|
||||||
|
noise.seed = noise.seed + 32
|
||||||
|
end
|
||||||
|
|
||||||
|
perlin_red_desert_v6 = minetest.get_perlin(noise)
|
||||||
|
end
|
||||||
|
|
||||||
|
local red_desert_min = 4
|
||||||
|
local red_desert_max = mcl_vars.mg_overworld_max
|
||||||
|
|
||||||
|
if maxp.y < red_desert_min or minp.y > red_desert_max then
|
||||||
|
return lvm_used
|
||||||
|
end
|
||||||
|
|
||||||
|
for x = minp.x, maxp.x do
|
||||||
|
for z = minp.z, maxp.z do
|
||||||
|
for y = math.max(red_desert_min, minp.y), math.min(red_desert_max, maxp.y) do
|
||||||
|
local p_pos = area:index(x, y, z)
|
||||||
|
if perlin_red_desert_v6:get2d({x=x, y=z}) > 0.5 then
|
||||||
|
if data[p_pos] == c_sand then
|
||||||
|
data[p_pos] = c_redsand
|
||||||
|
lvm_used = true
|
||||||
|
elseif data[p_pos] == c_sandstone then
|
||||||
|
data[p_pos] = c_hardened_clay_orange
|
||||||
|
lvm_used = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return lvm_used
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
-- TODO: Try to use more efficient structure generating code
|
-- TODO: Try to use more efficient structure generating code
|
||||||
local function generate_structures(minp, maxp, seed, biomemap)
|
local function generate_structures(minp, maxp, seed, biomemap)
|
||||||
local chunk_has_desert_well = false
|
local chunk_has_desert_well = false
|
||||||
|
@ -1746,6 +1797,11 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
||||||
-- Clay, vines, cocoas
|
-- Clay, vines, cocoas
|
||||||
lvm_used = generate_clay(minp, maxp, seed, data, area, lvm_used)
|
lvm_used = generate_clay(minp, maxp, seed, data, area, lvm_used)
|
||||||
|
|
||||||
|
-- Red deserts / mesa-like biome in v6, so that red sand can be obtained
|
||||||
|
if mg_name == "v6" then
|
||||||
|
lvm_used = generate_red_desert_v6(minp, maxp, seed, data, area, lvm_used)
|
||||||
|
end
|
||||||
|
|
||||||
local biomemap = minetest.get_mapgen_object("biomemap")
|
local biomemap = minetest.get_mapgen_object("biomemap")
|
||||||
lvm_used = generate_tree_decorations(minp, maxp, seed, data, param2_data, area, biomemap, lvm_used)
|
lvm_used = generate_tree_decorations(minp, maxp, seed, data, param2_data, area, biomemap, lvm_used)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue