fix caves generation x2

This commit is contained in:
Xertis 2025-02-19 09:54:15 +03:00 committed by GitHub
parent 4c8b082418
commit 79cd2b45b7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -3,6 +3,28 @@ local ores = require "base:generation/ores"
math.randomseed(SEED)
ores.load(dir)
local function get_rand(seed, x, y, z)
local h = bit.bxor(bit.bor(x * 23729, y % 16786), y * x + seed)
h = bit.bxor(h, z * 47917)
h = bit.bxor(h, bit.bor(z % 12345, x + y))
local n = (h % 10000) / 10000.0
return n
end
local function gen_parameters(size, seed, x, y)
local res = {}
local rand = 0
for i=1, size do
rand = get_rand(seed, x, y, rand)
table.insert(res, rand)
end
return res
end
function place_structures(x, z, w, d, hmap, chunk_height)
local placements = {}
ores.place(placements, x, z, w, d, SEED, hmap, chunk_height)
@ -11,15 +33,17 @@ end
function place_structures_wide(x, z, w, d, chunk_height)
local placements = {}
if math.random() < 0.05 then -- generate caves
local sx = x + math.random() * 10 - 5
local sy = math.random() * (chunk_height / 4) + 10
local sz = z + math.random() * 10 - 5
local rands = gen_parameters(11, SEED, x, z)
if rands[1] < 0.05 then -- generate caves
local dir = math.random() * math.pi * 2
local dir_inertia = (math.random() - 0.5) * 2
local sx = x + rands[2] * 10 - 5
local sy = rands[3] * (chunk_height / 4) + 10
local sz = z + rands[4] * 10 - 5
local dir = rands[5] * math.pi * 2
local dir_inertia = (rands[6] - 0.5) * 2
local elevation = -3
local width = math.random() * 3 + 2
local width = rands[7] * 3 + 2
for i=1,18 do
local dx = math.sin(dir) * 10
@ -35,11 +59,11 @@ function place_structures_wide(x, z, w, d, chunk_height)
sx = ex
sy = ey
sz = ez
dir_inertia = dir_inertia * 0.8 +
(math.random() - 0.5) * math.pow(math.random(), 2) * 8
(rands[8] - 0.5) * math.pow(rands[10], 2) * 8
elevation = elevation * 0.9 +
(math.random() - 0.4) * (1.0-math.pow(math.random(), 4)) * 8
(rands[9] - 0.4) * (1.0-math.pow(rands[11], 4)) * 8
dir = dir + dir_inertia
end
end