many worldgen mods and gonna try technic now
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
|
||||
-- Returns a consistent list of random points within a volume.
|
||||
-- Each call to this method will give the same set of points if the same parameters are provided
|
||||
mapgen_helper.get_random_points = function(minp, maxp, min_output_size, max_output_size)
|
||||
local next_seed = math.random(1, 2^21) -- should be 2^31, but I've had a report that this causes a crash in the Lua interpreter on some systems.
|
||||
math.randomseed(minetest.hash_node_position(minp) + mapgen_helper.mapgen_seed)
|
||||
|
||||
local count = math.random(min_output_size, max_output_size)
|
||||
local result = {}
|
||||
while count > 0 do
|
||||
local point = {}
|
||||
point.x = math.random(minp.x, maxp.x)
|
||||
point.y = math.random(minp.y, maxp.y)
|
||||
point.z = math.random(minp.z, maxp.z)
|
||||
table.insert(result, point)
|
||||
count = count - 1
|
||||
end
|
||||
|
||||
math.randomseed(next_seed)
|
||||
return result
|
||||
end
|
||||
|
||||
-- Returns a random value based on the x and z coordinates of pos, always the same for the same x and z
|
||||
mapgen_helper.xz_consistent_randomp = function(pos)
|
||||
local next_seed = math.random(1, 2^21) -- should be 2^31, but I've had a report that this causes a crash in the Lua interpreter on some systems.
|
||||
math.randomseed(pos.x + pos.z * 2 ^ 8)
|
||||
local output = math.random()
|
||||
math.randomseed(next_seed)
|
||||
return output
|
||||
end
|
||||
|
||||
mapgen_helper.xz_consistent_randomi = function(area, vi)
|
||||
local pos = area:position(vi)
|
||||
return mapgen_helper.xz_consistent_randomp(pos)
|
||||
end
|
||||
Reference in New Issue
Block a user