mirror of
https://gitlab.com/gaelysam/mapgen_rivers.git
synced 2025-01-01 05:50:34 +01:00
Added snow and ice in function of temperature.
Uses noise parameters of builtin biomegen
This commit is contained in:
parent
4edd1a946e
commit
625768f967
38
init.lua
38
init.lua
@ -54,10 +54,18 @@ local noise_distort_params = {
|
|||||||
flags = "absvalue",
|
flags = "absvalue",
|
||||||
}
|
}
|
||||||
|
|
||||||
local noise_x_obj, noise_z_obj, noise_distort_obj
|
local noise_heat_params = minetest.get_mapgen_setting_noiseparams('mg_biome_np_heat')
|
||||||
|
local noise_heat_blend_params = minetest.get_mapgen_setting_noiseparams('mg_biome_np_heat_blend')
|
||||||
|
|
||||||
|
local elevation_chill = 0.25
|
||||||
|
noise_heat_params.offset = noise_heat_params.offset + sea_level*elevation_chill
|
||||||
|
|
||||||
|
local noise_x_obj, noise_z_obj, noise_distort_obj, noise_heat_obj, noise_heat_blend_obj
|
||||||
local noise_x_map = {}
|
local noise_x_map = {}
|
||||||
local noise_z_map = {}
|
local noise_z_map = {}
|
||||||
local noise_distort_map = {}
|
local noise_distort_map = {}
|
||||||
|
local noise_heat_map = {}
|
||||||
|
local noise_heat_blend_map = {}
|
||||||
local mapsize
|
local mapsize
|
||||||
local init = false
|
local init = false
|
||||||
|
|
||||||
@ -76,13 +84,18 @@ local function generate(minp, maxp, seed)
|
|||||||
}
|
}
|
||||||
noise_x_obj = minetest.get_perlin_map(noise_x_params, mapsize)
|
noise_x_obj = minetest.get_perlin_map(noise_x_params, mapsize)
|
||||||
noise_z_obj = minetest.get_perlin_map(noise_z_params, mapsize)
|
noise_z_obj = minetest.get_perlin_map(noise_z_params, mapsize)
|
||||||
|
noise_heat_obj = minetest.get_perlin_map(noise_heat_params, chulens)
|
||||||
|
noise_heat_blend_obj = minetest.get_perlin_map(noise_heat_blend_params, chulens)
|
||||||
noise_distort_obj = minetest.get_perlin_map(noise_distort_params, chulens)
|
noise_distort_obj = minetest.get_perlin_map(noise_distort_params, chulens)
|
||||||
init = true
|
init = true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local minp2d = {x=minp.x, y=minp.z}
|
||||||
noise_x_obj:get_3d_map_flat(minp, noise_x_map)
|
noise_x_obj:get_3d_map_flat(minp, noise_x_map)
|
||||||
noise_z_obj:get_3d_map_flat(minp, noise_z_map)
|
noise_z_obj:get_3d_map_flat(minp, noise_z_map)
|
||||||
noise_distort_obj:get_2d_map_flat(minp, noise_distort_map)
|
noise_distort_obj:get_2d_map_flat(minp2d, noise_distort_map)
|
||||||
|
noise_heat_obj:get_2d_map_flat(minp2d, noise_heat_map)
|
||||||
|
noise_heat_blend_obj:get_2d_map_flat(minp2d, noise_heat_blend_map)
|
||||||
|
|
||||||
local xmin, xmax, zmin, zmax = minp.x, maxp.x, minp.z, maxp.z
|
local xmin, xmax, zmin, zmax = minp.x, maxp.x, minp.z, maxp.z
|
||||||
local i = 0
|
local i = 0
|
||||||
@ -115,9 +128,12 @@ local function generate(minp, maxp, seed)
|
|||||||
local c_stone = minetest.get_content_id("default:stone")
|
local c_stone = minetest.get_content_id("default:stone")
|
||||||
local c_dirt = minetest.get_content_id("default:dirt")
|
local c_dirt = minetest.get_content_id("default:dirt")
|
||||||
local c_lawn = minetest.get_content_id("default:dirt_with_grass")
|
local c_lawn = minetest.get_content_id("default:dirt_with_grass")
|
||||||
|
local c_dirtsnow = minetest.get_content_id("default:dirt_with_snow")
|
||||||
|
local c_snow = minetest.get_content_id("default:snowblock")
|
||||||
local c_sand = minetest.get_content_id("default:sand")
|
local c_sand = minetest.get_content_id("default:sand")
|
||||||
local c_water = minetest.get_content_id("default:water_source")
|
local c_water = minetest.get_content_id("default:water_source")
|
||||||
local c_rwater = minetest.get_content_id("default:river_water_source")
|
local c_rwater = minetest.get_content_id("default:river_water_source")
|
||||||
|
local c_ice = minetest.get_content_id("default:ice")
|
||||||
|
|
||||||
local vm, emin, emax = minetest.get_mapgen_object("voxelmanip")
|
local vm, emin, emax = minetest.get_mapgen_object("voxelmanip")
|
||||||
vm:get_data(data)
|
vm:get_data(data)
|
||||||
@ -130,10 +146,13 @@ local function generate(minp, maxp, seed)
|
|||||||
local incrX = 1 - mapsize.y*incrY
|
local incrX = 1 - mapsize.y*incrY
|
||||||
local incrZ = mapsize.x*mapsize.y - mapsize.x*incrX - mapsize.x*mapsize.y*incrY
|
local incrZ = mapsize.x*mapsize.y - mapsize.x*incrX - mapsize.x*mapsize.y*incrY
|
||||||
|
|
||||||
|
local i2d = 1
|
||||||
|
|
||||||
for z = minp.z, maxp.z do
|
for z = minp.z, maxp.z do
|
||||||
for x = minp.x, maxp.x do
|
for x = minp.x, maxp.x do
|
||||||
local ivm = a:index(x, minp.y, z)
|
local ivm = a:index(x, minp.y, z)
|
||||||
local ground_above = false
|
local ground_above = false
|
||||||
|
local temperature = noise_heat_map[i2d]+noise_heat_blend_map[i2d]
|
||||||
for y = maxp.y+1, minp.y, -1 do
|
for y = maxp.y+1, minp.y, -1 do
|
||||||
local xn = noise_x_map[nid]
|
local xn = noise_x_map[nid]
|
||||||
local zn = noise_z_map[nid]
|
local zn = noise_z_map[nid]
|
||||||
@ -154,13 +173,25 @@ local function generate(minp, maxp, seed)
|
|||||||
if y <= terrain then
|
if y <= terrain then
|
||||||
if y <= terrain-1 or ground_above then
|
if y <= terrain-1 or ground_above then
|
||||||
data[ivm] = c_stone
|
data[ivm] = c_stone
|
||||||
elseif is_lake then
|
elseif is_lake or y < sea_level then
|
||||||
data[ivm] = c_sand
|
data[ivm] = c_sand
|
||||||
else
|
else
|
||||||
|
local temperature_y = temperature - y*elevation_chill
|
||||||
|
if temperature_y >= 15 then
|
||||||
data[ivm] = c_lawn
|
data[ivm] = c_lawn
|
||||||
|
elseif temperature_y >= 0 then
|
||||||
|
data[ivm] = c_dirtsnow
|
||||||
|
else
|
||||||
|
data[ivm] = c_snow
|
||||||
|
end
|
||||||
end
|
end
|
||||||
elseif y <= lake and lake > sea_level then
|
elseif y <= lake and lake > sea_level then
|
||||||
|
local temperature_y = temperature - y*elevation_chill
|
||||||
|
if temperature_y >= 0 then
|
||||||
data[ivm] = c_rwater
|
data[ivm] = c_rwater
|
||||||
|
else
|
||||||
|
data[ivm] = c_ice
|
||||||
|
end
|
||||||
elseif y <= sea_level then
|
elseif y <= sea_level then
|
||||||
data[ivm] = c_water
|
data[ivm] = c_water
|
||||||
end
|
end
|
||||||
@ -172,6 +203,7 @@ local function generate(minp, maxp, seed)
|
|||||||
nid = nid + incrY
|
nid = nid + incrY
|
||||||
end
|
end
|
||||||
nid = nid + incrX
|
nid = nid + incrX
|
||||||
|
i2d = i2d + 1
|
||||||
end
|
end
|
||||||
nid = nid + incrZ
|
nid = nid + incrZ
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user