forked from MineClone5/MineClone5
#204 Add own Perlin noise
This commit is contained in:
parent
dffdfb3cad
commit
c21f9b4c40
|
@ -7,7 +7,20 @@ local chance_per_chunk = 1
|
||||||
local noise_multiplier = 1
|
local noise_multiplier = 1
|
||||||
local random_offset = 1
|
local random_offset = 1
|
||||||
local random_multiply = 19
|
local random_multiply = 19
|
||||||
local struct_threshold = chance_per_chunk - 1
|
local struct_threshold = chance_per_chunk -- 1
|
||||||
|
local noise_params = {
|
||||||
|
offset = 0,
|
||||||
|
scale = 2,
|
||||||
|
spread = {
|
||||||
|
x = mcl_mapgen.CS_NODES * chance_per_chunk,
|
||||||
|
y = mcl_mapgen.CS_NODES * chance_per_chunk,
|
||||||
|
z = mcl_mapgen.CS_NODES * chance_per_chunk,
|
||||||
|
},
|
||||||
|
seed = 842458,
|
||||||
|
octaves = 2,
|
||||||
|
persistence = 0.5,
|
||||||
|
}
|
||||||
|
local perlin_noise
|
||||||
local modname = minetest.get_current_modname()
|
local modname = minetest.get_current_modname()
|
||||||
local modpath = minetest.get_modpath(modname)
|
local modpath = minetest.get_modpath(modname)
|
||||||
local S = minetest.get_translator(modname)
|
local S = minetest.get_translator(modname)
|
||||||
|
@ -57,7 +70,7 @@ local villages = minetest.deserialize(storage:get_string("villages") or "return
|
||||||
local minetest_get_spawn_level = minetest.get_spawn_level
|
local minetest_get_spawn_level = minetest.get_spawn_level
|
||||||
local minetest_get_node = minetest.get_node
|
local minetest_get_node = minetest.get_node
|
||||||
local minetest_find_nodes_in_area = minetest.find_nodes_in_area
|
local minetest_find_nodes_in_area = minetest.find_nodes_in_area
|
||||||
local mcl_structures_get_perlin_noise_level = mcl_structures.get_perlin_noise_level
|
local minetest_get_perlin = minetest.get_perlin
|
||||||
local math_pi = math.pi
|
local math_pi = math.pi
|
||||||
local math_cos = math.cos
|
local math_cos = math.cos
|
||||||
local math_sin = math.sin
|
local math_sin = math.sin
|
||||||
|
@ -412,7 +425,8 @@ if mg_name ~= "singlenode" then
|
||||||
if minp.y < minp_min then return end
|
if minp.y < minp_min then return end
|
||||||
local pr = PseudoRandom(chunkseed * random_multiply + random_offset)
|
local pr = PseudoRandom(chunkseed * random_multiply + random_offset)
|
||||||
local random_number = pr:next(1, chance_per_chunk)
|
local random_number = pr:next(1, chance_per_chunk)
|
||||||
local noise = mcl_structures_get_perlin_noise_level(minp) * noise_multiplier
|
perlin_noise = perlin_noise or minetest_get_perlin(noise_params)
|
||||||
|
local noise = perlin_noise:get_3d(minp) * noise_multiplier
|
||||||
if (random_number + noise) < struct_threshold then return end
|
if (random_number + noise) < struct_threshold then return end
|
||||||
local min, max = 9999999, -9999999
|
local min, max = 9999999, -9999999
|
||||||
for i = 1, pr:next(5,10) do
|
for i = 1, pr:next(5,10) do
|
||||||
|
|
Loading…
Reference in New Issue