Invert cave shape
Fixed an issue where the caves would sometimes generate walls directly down a roof, complicating the cave biome designpull/1/head
parent
a500388803
commit
5e54dedde5
|
@ -369,17 +369,17 @@ local function get_flat_cave_node_types(minp, maxp)
|
||||||
local bools = get_flat_cave_bools(minp, maxp)
|
local bools = get_flat_cave_bools(minp, maxp)
|
||||||
|
|
||||||
return Flat3dArray:from_func(minp, maxp, function (i, pos)
|
return Flat3dArray:from_func(minp, maxp, function (i, pos)
|
||||||
if not bools:get_pos(pos) then
|
if bools:get_pos(pos) then
|
||||||
return node_type.stone
|
return node_type.content
|
||||||
-- Floor takes precedence
|
-- Floor takes precedence
|
||||||
elseif pos.y == minp.y then -- Could be floor
|
elseif pos.y == maxp.y then -- Could be floor
|
||||||
return node_type.unknown
|
return node_type.unknown
|
||||||
elseif not bools:get_pos({ x = pos.x, y = pos.y - 1, z = pos.z }) then
|
elseif bools:get_pos({ x = pos.x, y = pos.y + 1, z = pos.z }) then
|
||||||
return node_type.floor
|
return node_type.floor
|
||||||
-- Then roof takes precedence
|
-- Then roof takes precedence
|
||||||
elseif pos.y == maxp.y then -- Could be roof
|
elseif pos.y == minp.y then -- Could be roof
|
||||||
return node_type.unknown
|
return node_type.unknown
|
||||||
elseif not bools:get_pos({ x = pos.x, y = pos.y + 1, z = pos.z }) then
|
elseif bools:get_pos({ x = pos.x, y = pos.y - 1, z = pos.z }) then
|
||||||
return node_type.roof
|
return node_type.roof
|
||||||
else
|
else
|
||||||
-- Check for walls
|
-- Check for walls
|
||||||
|
@ -393,29 +393,29 @@ local function get_flat_cave_node_types(minp, maxp)
|
||||||
|
|
||||||
if left.x < minp.x then
|
if left.x < minp.x then
|
||||||
on_edge = true
|
on_edge = true
|
||||||
elseif not bools:get_pos(left) then
|
elseif bools:get_pos(left) then
|
||||||
return node_type.wall
|
return node_type.wall
|
||||||
end
|
end
|
||||||
if right.x > maxp.x then
|
if right.x > maxp.x then
|
||||||
on_edge = true
|
on_edge = true
|
||||||
elseif not bools:get_pos(right) then
|
elseif bools:get_pos(right) then
|
||||||
return node_type.wall
|
return node_type.wall
|
||||||
end
|
end
|
||||||
if front.z < minp.z then
|
if front.z < minp.z then
|
||||||
on_edge = true
|
on_edge = true
|
||||||
elseif not bools:get_pos(front) then
|
elseif bools:get_pos(front) then
|
||||||
return node_type.wall
|
return node_type.wall
|
||||||
end
|
end
|
||||||
if back.z > maxp.z then
|
if back.z > maxp.z then
|
||||||
on_edge = true
|
on_edge = true
|
||||||
elseif not bools:get_pos(back) then
|
elseif bools:get_pos(back) then
|
||||||
return node_type.wall
|
return node_type.wall
|
||||||
end
|
end
|
||||||
|
|
||||||
if on_edge then
|
if on_edge then
|
||||||
return node_type.unknown
|
return node_type.unknown
|
||||||
else
|
else
|
||||||
return node_type.content
|
return node_type.stone
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
Loading…
Reference in New Issue