mirror of
https://git.minetest.land/VoxeLibre/VoxeLibre.git
synced 2024-11-16 16:11:06 +01:00
[mapgen] Use more readable constants, increase max_block_generate_distance
This commit is contained in:
parent
c23bb1d59d
commit
3c5bf8c9b2
12 changed files with 113 additions and 105 deletions
|
@ -27,6 +27,8 @@ movement_gravity = 10.4
|
||||||
|
|
||||||
# Mapgen stuff
|
# Mapgen stuff
|
||||||
|
|
||||||
|
max_block_generate_distance = 13
|
||||||
|
|
||||||
# altitude_chill and altitude_dry doesn't go well together with MCL2 biomes
|
# altitude_chill and altitude_dry doesn't go well together with MCL2 biomes
|
||||||
# which already include "snowed" variants as you go higher.
|
# which already include "snowed" variants as you go higher.
|
||||||
# humid_rivers would cause the MushroomIsland biome to appear frequently around rivers.
|
# humid_rivers would cause the MushroomIsland biome to appear frequently around rivers.
|
||||||
|
|
|
@ -1,10 +1,7 @@
|
||||||
mcl_mapgen = {}
|
mcl_mapgen = {}
|
||||||
mcl_mapgen.overworld = {}
|
|
||||||
mcl_mapgen.nether = {}
|
|
||||||
mcl_mapgen.end = {}
|
|
||||||
|
|
||||||
local minetest_log, math_floor = minetest.log, math.floor
|
local minetest_log, math_floor = minetest.log, math.floor
|
||||||
local minetest_get_node = minetest.get_node
|
local minetest_get_node, minetest_get_voxel_manip = minetest.get_node, minetest.get_voxel_manip
|
||||||
|
|
||||||
-- Calculate mapgen_edge_min/mapgen_edge_max
|
-- Calculate mapgen_edge_min/mapgen_edge_max
|
||||||
mcl_mapgen.CS = math.max(1, tonumber(minetest.get_mapgen_setting("chunksize")) or 5)
|
mcl_mapgen.CS = math.max(1, tonumber(minetest.get_mapgen_setting("chunksize")) or 5)
|
||||||
|
@ -88,14 +85,14 @@ minetest.register_on_generated(function(minp, maxp, blockseed)
|
||||||
vm_context.data = data
|
vm_context.data = data
|
||||||
area = VoxelArea:new({MinEdge=emin, MaxEdge=emax})
|
area = VoxelArea:new({MinEdge=emin, MaxEdge=emax})
|
||||||
vm_context.area = area
|
vm_context.area = area
|
||||||
for _, v in pairs(lvm_chunk_queue) do
|
|
||||||
vm_context = v.f(vm_context)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local chunk_is_ready = true
|
||||||
|
|
||||||
if block > 0 then
|
if block > 0 then
|
||||||
local x0, y0, z0 = minp.x, minp.y, minp.z
|
local x0, y0, z0 = minp.x, minp.y, minp.z
|
||||||
local bx0, by0, bz0 = math_floor(x0/BS), math_floor(y0/BS), math_floor(z0/BS)
|
local bx0, by0, bz0 = math_floor(x0/BS), math_floor(y0/BS), math_floor(z0/BS)
|
||||||
|
local bx1, by1, bz1 = bx0 + LAST_BLOCK, by0 + LAST_BLOCK, bz0 + LAST_BLOCK -- only for entire chunk check
|
||||||
local x1, y1, z1, x2, y2, z2 = emin.x, emin.y, emin.z, emax.x, emax.y, emax.z
|
local x1, y1, z1, x2, y2, z2 = emin.x, emin.y, emin.z, emax.x, emax.y, emax.z
|
||||||
local x, y, z = x1, y1, z1 -- iterate 7x7x7 mapchunk, {x,y,z} - first node pos. of mapblock
|
local x, y, z = x1, y1, z1 -- iterate 7x7x7 mapchunk, {x,y,z} - first node pos. of mapblock
|
||||||
local bx, by, bz -- block coords (in blocs)
|
local bx, by, bz -- block coords (in blocs)
|
||||||
|
@ -133,6 +130,7 @@ minetest.register_on_generated(function(minp, maxp, blockseed)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
blocks[bx][by][bz] = current_mapgen_block_writes
|
blocks[bx][by][bz] = current_mapgen_block_writes
|
||||||
|
chunk_is_ready = chunk_is_ready and (bx < bx0 or bx > bx1 or by < by0 or by > by1 or bz < bz0 or bz > bz1)
|
||||||
end
|
end
|
||||||
z = z + BS
|
z = z + BS
|
||||||
end
|
end
|
||||||
|
@ -147,6 +145,11 @@ minetest.register_on_generated(function(minp, maxp, blockseed)
|
||||||
end
|
end
|
||||||
|
|
||||||
if lvm > 0 then
|
if lvm > 0 then
|
||||||
|
if chunk_is_ready then
|
||||||
|
for _, v in pairs(lvm_chunk_queue) do
|
||||||
|
vm_context = v.f(vm_context)
|
||||||
|
end
|
||||||
|
end
|
||||||
if vm_context.write then
|
if vm_context.write then
|
||||||
vm:set_data(data)
|
vm:set_data(data)
|
||||||
end
|
end
|
||||||
|
@ -158,8 +161,10 @@ minetest.register_on_generated(function(minp, maxp, blockseed)
|
||||||
vm:update_liquids()
|
vm:update_liquids()
|
||||||
end
|
end
|
||||||
|
|
||||||
for _, v in pairs(node_chunk_queue) do
|
if chunk_is_ready then
|
||||||
v.f(minp, maxp, blockseed)
|
for _, v in pairs(node_chunk_queue) do
|
||||||
|
v.f(minp, maxp, blockseed)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
for i, b in pairs(current_blocks) do
|
for i, b in pairs(current_blocks) do
|
||||||
|
@ -218,13 +223,16 @@ end
|
||||||
|
|
||||||
|
|
||||||
-- Mapgen variables
|
-- Mapgen variables
|
||||||
|
local overworld, end_, nether = {}, {}, {}
|
||||||
|
mcl_mapgen.seed = minetest.get_mapgen_setting("seed")
|
||||||
mcl_mapgen.name = minetest.get_mapgen_setting("mg_name")
|
mcl_mapgen.name = minetest.get_mapgen_setting("mg_name")
|
||||||
|
mcl_mapgen.v6 = mcl_mapgen.name == "v6"
|
||||||
mcl_mapgen.superflat = mcl_mapgen.name == "flat" and minetest.get_mapgen_setting("mcl_superflat_classic") == "true"
|
mcl_mapgen.superflat = mcl_mapgen.name == "flat" and minetest.get_mapgen_setting("mcl_superflat_classic") == "true"
|
||||||
mcl_mapgen.singlenode = mcl_mapgen.name == "singlenode"
|
mcl_mapgen.singlenode = mcl_mapgen.name == "singlenode"
|
||||||
mcl_mapgen.normal = not mcl_mapgen.superflat and not mcl_mapgen.singlenode
|
mcl_mapgen.normal = not mcl_mapgen.superflat and not mcl_mapgen.singlenode
|
||||||
local superflat, singlenode, normal = mcl_mapgen.superflat, mcl_mapgen.singlenode, mcl_mapgen.normal
|
local superflat, singlenode, normal = mcl_mapgen.superflat, mcl_mapgen.singlenode, mcl_mapgen.normal
|
||||||
|
|
||||||
minetest_log("action", "[mcl_mapgen] Mapgen mode: " .. normal and "normal" or (superflat and "superflat" or "singlenode"))
|
minetest_log("action", "[mcl_mapgen] Mapgen mode: " .. (normal and "normal" or (superflat and "superflat" or "singlenode")))
|
||||||
|
|
||||||
mcl_mapgen.minecraft_height_limit = 256
|
mcl_mapgen.minecraft_height_limit = 256
|
||||||
|
|
||||||
|
@ -241,55 +249,58 @@ mcl_mapgen.bedrock_is_rough = normal
|
||||||
]]
|
]]
|
||||||
|
|
||||||
-- Overworld
|
-- Overworld
|
||||||
mcl_mapgen.overworld.min = -62
|
overworld.min = -62
|
||||||
if superflat then
|
if superflat then
|
||||||
mcl_mapgen.ground = tonumber(minetest.get_mapgen_setting("mgflat_ground_level")) or 8
|
mcl_mapgen.ground = tonumber(minetest.get_mapgen_setting("mgflat_ground_level")) or 8
|
||||||
mcl_mapgen.overworld.min = ground - 3
|
overworld.min = ground - 3
|
||||||
end
|
end
|
||||||
-- if singlenode then mcl_mapgen.overworld.min = -66 end -- DONT KNOW WHY
|
-- if singlenode then mcl_mapgen.overworld.min = -66 end -- DONT KNOW WHY
|
||||||
mcl_mapgen.overworld.max = mcl_mapgen.EDGE_MAX
|
overworld.max = mcl_mapgen.EDGE_MAX
|
||||||
|
|
||||||
mcl_mapgen.overworld.bedrock_min = mcl_mapgen.overworld.min
|
overworld.bedrock_min = overworld.min
|
||||||
mcl_mapgen.overworld.bedrock_max = mcl_mapgen.overworld.bedrock_min + (mcl_mapgen.bedrock_is_rough and 4 or 0)
|
overworld.bedrock_max = overworld.bedrock_min + (mcl_mapgen.bedrock_is_rough and 4 or 0)
|
||||||
|
|
||||||
mcl_mapgen.lava = normal
|
mcl_mapgen.lava = normal
|
||||||
mcl_mapgen.lava_overworld_max = mcl_mapgen.overworld.min + (normal and 10 or 0)
|
overworld.lava_max = overworld.min + (normal and 10 or 0)
|
||||||
|
|
||||||
|
|
||||||
-- The Nether (around Y = -29000)
|
-- The Nether (around Y = -29000)
|
||||||
mcl_mapgen.nether.min = -29067 -- Carefully chosen to be at a mapchunk border
|
nether.min = -29067 -- Carefully chosen to be at a mapchunk border
|
||||||
mcl_mapgen.nether.max = mcl_mapgen.nether.min + 128
|
nether.max = nether.min + 128
|
||||||
mcl_mapgen.nether.bedrock_bottom_min = mcl_mapgen.nether.min
|
nether.bedrock_bottom_min = nether.min
|
||||||
mcl_mapgen.nether.bedrock_top_max = mcl_mapgen.nether.max
|
nether.bedrock_top_max = nether.max
|
||||||
if not superflat then
|
if not superflat then
|
||||||
mcl_mapgen.nether.bedrock_bottom_max = mcl_vars.mg_bedrock_nether_bottom_min + 4
|
nether.bedrock_bottom_max = nether.bedrock_bottom_min + 4
|
||||||
mcl_mapgen.nether.bedrock_top_min = mcl_vars.mg_bedrock_nether_top_max - 4
|
nether.bedrock_top_min = nether.bedrock_top_max - 4
|
||||||
mcl_mapgen.nether.lava_max = mcl_mapgen.nether.min + 31
|
nether.lava_max = nether.min + 31
|
||||||
else
|
else
|
||||||
-- Thin bedrock in classic superflat mapgen
|
-- Thin bedrock in classic superflat mapgen
|
||||||
mcl_mapgen.nether.bedrock_bottom_max = mcl_vars.mg_bedrock_nether_bottom_min
|
nether.bedrock_bottom_max = nether.bedrock_bottom_min
|
||||||
mcl_mapgen.nether.bedrock_top_min = mcl_vars.mg_bedrock_nether_top_max
|
nether.bedrock_top_min = nether.bedrock_top_max
|
||||||
mcl_mapgen.nether.lava_max = mcl_mapgen.nether.min + 2
|
nether.lava_max = nether.min + 2
|
||||||
end
|
end
|
||||||
if mcl_mapgen.name == "flat" then
|
if mcl_mapgen.name == "flat" then
|
||||||
if superflat then
|
if superflat then
|
||||||
mcl_mapgen.nether.flat_nether_floor = mcl_mapgen.nether.bedrock_nether_bottom_max + 4
|
nether.flat_nether_floor = nether.bedrock_bottom_max + 4
|
||||||
mcl_mapgen.nether.flat_nether_ceiling = mcl_mapgen.nether.bedrock_nether_bottom_max + 52
|
nether.flat_nether_ceiling = nether.bedrock_bottom_max + 52
|
||||||
else
|
else
|
||||||
mcl_mapgen.nether.flat_nether_floor = mcl_mapgen.nether.lava_nether_max + 4
|
nether.flat_nether_floor = nether.lava_max + 4
|
||||||
mcl_mapgen.nether.flat_nether_ceiling = mcl_mapgen.nether.lava_nether_max + 52
|
nether.flat_nether_ceiling = nether.lava_max + 52
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- The End (surface at ca. Y = -27000)
|
-- The End (surface at ca. Y = -27000)
|
||||||
mcl_mapgen.end.min = -27073 -- Carefully chosen to be at a mapchunk border
|
end_.min = -27073 -- Carefully chosen to be at a mapchunk border
|
||||||
mcl_mapgen.end.max_official = mcl_mapgen.end.min + mcl_mapgen.minecraft_height_limit
|
end_.max = overworld.min - 2000
|
||||||
mcl_mapgen.end.max = mcl_mapgen.overworld.min - 2000
|
end_.platform_pos = { x = 100, y = end_.min + 74, z = 0 }
|
||||||
mcl_vars.mg_end_platform_pos = { x = 100, y = mcl_mapgen.end.min + 74, z = 0 }
|
|
||||||
|
|
||||||
-- Realm barrier used to safely separate the End from the void below the Overworld
|
-- Realm barrier used to safely separate the End from the void below the Overworld
|
||||||
mcl_vars.mg_realm_barrier_overworld_end_max = mcl_mapgen.end.max
|
mcl_mapgen.realm_barrier_overworld_end_max = end_.max
|
||||||
mcl_vars.mg_realm_barrier_overworld_end_min = mcl_mapgen.end.max - 11
|
mcl_mapgen.realm_barrier_overworld_end_min = end_.max - 11
|
||||||
|
|
||||||
-- Use MineClone 2-style dungeons
|
-- Use MineClone 2-style dungeons for normal mapgen
|
||||||
mcl_vars.mg_dungeons = true
|
mcl_mapgen.dungeons = normal
|
||||||
|
|
||||||
|
mcl_mapgen.overworld = overworld
|
||||||
|
mcl_mapgen.end_ = end_
|
||||||
|
mcl_mapgen.nether = nether
|
||||||
|
|
|
@ -3,8 +3,8 @@ mcl_worlds = {}
|
||||||
-- For a given position, returns a 2-tuple:
|
-- For a given position, returns a 2-tuple:
|
||||||
-- 1st return value: true if pos is in void
|
-- 1st return value: true if pos is in void
|
||||||
-- 2nd return value: true if it is in the deadly part of the void
|
-- 2nd return value: true if it is in the deadly part of the void
|
||||||
local min1, min2, min3 = mcl_mapgen.overworld.min, mcl_mapgen.end.min, mcl_mapgen.nether.min
|
local min1, min2, min3 = mcl_mapgen.overworld.min, mcl_mapgen.end_.min, mcl_mapgen.nether.min
|
||||||
local max1, max2, max3 = mcl_mapgen.overworld.max, mcl_mapgen.end.max, mcl_mapgen.nether.max+128
|
local max1, max2, max3 = mcl_mapgen.overworld.max, mcl_mapgen.end_.max, mcl_mapgen.nether.max+128
|
||||||
function mcl_worlds.is_in_void(pos)
|
function mcl_worlds.is_in_void(pos)
|
||||||
local y = pos.y
|
local y = pos.y
|
||||||
local void = not ((y < max1 and y > min1) or (y < max2 and y > min2) or (y < max3 and y > min3))
|
local void = not ((y < max1 and y > min1) or (y < max2 and y > min2) or (y < max3 and y > min3))
|
||||||
|
@ -13,7 +13,7 @@ function mcl_worlds.is_in_void(pos)
|
||||||
local deadly_tolerance = 64 -- the player must be this many nodes “deep” into the void to be damaged
|
local deadly_tolerance = 64 -- the player must be this many nodes “deep” into the void to be damaged
|
||||||
if void then
|
if void then
|
||||||
-- Overworld → Void → End → Void → Nether → Void
|
-- Overworld → Void → End → Void → Nether → Void
|
||||||
if y < mcl_vars.min1 and y > max2 then
|
if y < min1 and y > max2 then
|
||||||
void_deadly = y < min1 - deadly_tolerance
|
void_deadly = y < min1 - deadly_tolerance
|
||||||
elseif y < min2 and y > max3 then
|
elseif y < min2 and y > max3 then
|
||||||
-- The void between End and Nether. Like usual, but here, the void
|
-- The void between End and Nether. Like usual, but here, the void
|
||||||
|
@ -56,24 +56,24 @@ end
|
||||||
-- mc_dimension is one of "overworld", "nether", "end" (default: "overworld").
|
-- mc_dimension is one of "overworld", "nether", "end" (default: "overworld").
|
||||||
function mcl_worlds.layer_to_y(layer, mc_dimension)
|
function mcl_worlds.layer_to_y(layer, mc_dimension)
|
||||||
if mc_dimension == "overworld" or mc_dimension == nil then
|
if mc_dimension == "overworld" or mc_dimension == nil then
|
||||||
return layer + mcl_vars.mg_overworld_min
|
return layer + min1
|
||||||
elseif mc_dimension == "nether" then
|
elseif mc_dimension == "nether" then
|
||||||
return layer + mcl_vars.mg_nether_min
|
return layer + min3
|
||||||
elseif mc_dimension == "end" then
|
elseif mc_dimension == "end" then
|
||||||
return layer + mcl_vars.mg_end_min
|
return layer + min2
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Takes a position and returns true if this position can have weather
|
-- Takes a position and returns true if this position can have weather
|
||||||
function mcl_worlds.has_weather(pos)
|
function mcl_worlds.has_weather(pos)
|
||||||
-- Weather in the Overworld and the high part of the void below
|
-- Weather in the Overworld and the high part of the void below
|
||||||
return pos.y <= mcl_vars.mg_overworld_max and pos.y >= mcl_vars.mg_overworld_min - 64
|
return pos.y <= max1 and pos.y >= min1 - 64
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Takes a position and returns true if this position can have Nether dust
|
-- Takes a position and returns true if this position can have Nether dust
|
||||||
function mcl_worlds.has_dust(pos)
|
function mcl_worlds.has_dust(pos)
|
||||||
-- Weather in the Overworld and the high part of the void below
|
-- Weather in the Overworld and the high part of the void below
|
||||||
return pos.y <= mcl_vars.mg_nether_max + 138 and pos.y >= mcl_vars.mg_nether_min - 10
|
return pos.y <= max3 + 138 and pos.y >= min3 - 10
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Takes a position (pos) and returns true if compasses are working here
|
-- Takes a position (pos) and returns true if compasses are working here
|
||||||
|
@ -83,7 +83,7 @@ function mcl_worlds.compass_works(pos)
|
||||||
if dim == "nether" or dim == "end" then
|
if dim == "nether" or dim == "end" then
|
||||||
return false
|
return false
|
||||||
elseif dim == "void" then
|
elseif dim == "void" then
|
||||||
return pos.y <= mcl_vars.mg_overworld_max and pos.y >= mcl_vars.mg_overworld_min - 64
|
return pos.y <= max1 and pos.y >= min1 - 64
|
||||||
else
|
else
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
name = mcl_worlds
|
name = mcl_worlds
|
||||||
author = Wuzzy
|
author = Wuzzy
|
||||||
description = Utility functions for worlds and the “dimensions”.
|
description = Utility functions for worlds and the “dimensions”.
|
||||||
depends = mcl_init
|
depends = mcl_mapgen
|
||||||
|
|
||||||
|
|
|
@ -241,7 +241,7 @@ mobs_mc.override.spawn_height = {
|
||||||
nether_max = mcl_mapgen.nether.max,
|
nether_max = mcl_mapgen.nether.max,
|
||||||
|
|
||||||
-- End boundaries (inclusive)
|
-- End boundaries (inclusive)
|
||||||
end_min = mcl_mapgen.end.min,
|
end_min = mcl_mapgen.end_.min,
|
||||||
end_max = mcl_mapgen.end.max,
|
end_max = mcl_mapgen.end_.max,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
local S = minetest.get_translator("mcl_portals")
|
local S = minetest.get_translator("mcl_portals")
|
||||||
|
|
||||||
-- Parameters
|
-- Parameters
|
||||||
local SPAWN_MIN = mcl_vars.mg_end_min+70
|
local SPAWN_MIN = mcl_mapgen.end_.min+70
|
||||||
local SPAWN_MAX = mcl_vars.mg_end_min+98
|
local SPAWN_MAX = mcl_mapgen.end_.min+98
|
||||||
|
|
||||||
local mg_name = minetest.get_mapgen_setting("mg_name")
|
local mg_name = mcl_mapgen.name
|
||||||
|
|
||||||
local destroy_portal = function(pos)
|
local destroy_portal = function(pos)
|
||||||
local neighbors = {
|
local neighbors = {
|
||||||
|
@ -178,7 +178,7 @@ function mcl_portals.end_teleport(obj, pos)
|
||||||
-- Teleport to the End at a fixed position and generate a
|
-- Teleport to the End at a fixed position and generate a
|
||||||
-- 5×5 obsidian platform below.
|
-- 5×5 obsidian platform below.
|
||||||
|
|
||||||
local platform_pos = mcl_vars.mg_end_platform_pos
|
local platform_pos = mcl_mapgen.end_.platform_pos
|
||||||
-- force emerge of target1 area
|
-- force emerge of target1 area
|
||||||
minetest.get_voxel_manip():read_from_map(platform_pos, platform_pos)
|
minetest.get_voxel_manip():read_from_map(platform_pos, platform_pos)
|
||||||
if not minetest.get_node_or_nil(platform_pos) then
|
if not minetest.get_node_or_nil(platform_pos) then
|
||||||
|
|
|
@ -28,7 +28,7 @@ local DISTANCE_MAX = 128
|
||||||
local PORTAL = "mcl_portals:portal"
|
local PORTAL = "mcl_portals:portal"
|
||||||
local OBSIDIAN = "mcl_core:obsidian"
|
local OBSIDIAN = "mcl_core:obsidian"
|
||||||
local O_Y_MIN, O_Y_MAX = max(mcl_mapgen.overworld.min, -31), min(mcl_mapgen.overworld.max, 2048)
|
local O_Y_MIN, O_Y_MAX = max(mcl_mapgen.overworld.min, -31), min(mcl_mapgen.overworld.max, 2048)
|
||||||
local N_Y_MIN, N_Y_MAX = mcl_vars.mg_bedrock_nether_bottom_min, mcl_vars.mg_bedrock_nether_top_min - H_MIN
|
local N_Y_MIN, N_Y_MAX = mcl_mapgen.nether.bedrock_bottom_min, mcl_mapgen.nether.bedrock_top_min - H_MIN
|
||||||
|
|
||||||
-- Alpha and particles
|
-- Alpha and particles
|
||||||
local node_particles_allowed = minetest.settings:get("mcl_node_particles") or "none"
|
local node_particles_allowed = minetest.settings:get("mcl_node_particles") or "none"
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
local mg_name = minetest.get_mapgen_setting("mg_name")
|
local mg_seed = mcl_mapgen.seed
|
||||||
local mg_seed = minetest.get_mapgen_setting("seed")
|
|
||||||
|
|
||||||
-- Some mapgen settings
|
-- Some mapgen settings
|
||||||
local superflat = mg_name == "flat" and minetest.get_mapgen_setting("mcl_superflat_classic") == "true"
|
local superflat = mcl_mapgen.superflat
|
||||||
|
|
||||||
local generate_fallen_logs = minetest.settings:get_bool("mcl_generate_fallen_logs", false)
|
local generate_fallen_logs = minetest.settings:get_bool("mcl_generate_fallen_logs", false)
|
||||||
|
|
||||||
|
@ -1505,8 +1504,8 @@ local function register_dimension_biomes()
|
||||||
node_cave_liquid = "air",
|
node_cave_liquid = "air",
|
||||||
-- FIXME: For some reason the End stops generating early if this constant is not added.
|
-- FIXME: For some reason the End stops generating early if this constant is not added.
|
||||||
-- Figure out why.
|
-- Figure out why.
|
||||||
y_min = mcl_mapgen.end.min,
|
y_min = mcl_mapgen.end_.min,
|
||||||
y_max = mcl_mapgen.end.max + 80,
|
y_max = mcl_mapgen.end_.max + 80,
|
||||||
heat_point = 50,
|
heat_point = 50,
|
||||||
humidity_point = 50,
|
humidity_point = 50,
|
||||||
_mcl_biome_type = "medium",
|
_mcl_biome_type = "medium",
|
||||||
|
@ -1539,7 +1538,7 @@ local function register_biome_ores()
|
||||||
-- Rarely replace stone with stone monster eggs.
|
-- Rarely replace stone with stone monster eggs.
|
||||||
-- In v6 this can happen anywhere, in other mapgens only in Extreme Hills.
|
-- In v6 this can happen anywhere, in other mapgens only in Extreme Hills.
|
||||||
local monster_egg_scarcity
|
local monster_egg_scarcity
|
||||||
if mg_name == "v6" then
|
if mcl_mapgen.v6 then
|
||||||
monster_egg_scarcity = 28 * 28 * 28
|
monster_egg_scarcity = 28 * 28 * 28
|
||||||
else
|
else
|
||||||
monster_egg_scarcity = 26 * 26 * 26
|
monster_egg_scarcity = 26 * 26 * 26
|
||||||
|
@ -1561,7 +1560,7 @@ local function register_biome_ores()
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Bonus gold spawn in Mesa
|
-- Bonus gold spawn in Mesa
|
||||||
if mg_name ~= "v6" then
|
if not mcl_mapgen.v6 then
|
||||||
minetest.register_ore({
|
minetest.register_ore({
|
||||||
ore_type = "scatter",
|
ore_type = "scatter",
|
||||||
ore = "mcl_core:stone_with_gold",
|
ore = "mcl_core:stone_with_gold",
|
||||||
|
@ -2009,7 +2008,7 @@ local function register_dimension_ores()
|
||||||
wherein = {"mcl_nether:netherrack", "mcl_core:stone"},
|
wherein = {"mcl_nether:netherrack", "mcl_core:stone"},
|
||||||
clust_scarcity = 26 * 26 * 26,
|
clust_scarcity = 26 * 26 * 26,
|
||||||
clust_size = 5,
|
clust_size = 5,
|
||||||
y_min = mcl_vars.mg_lava_nether_max + 10,
|
y_min = mcl_mapgen.nether.lava_max + 10,
|
||||||
y_max = mcl_mapgen.nether.max,
|
y_max = mcl_mapgen.nether.max,
|
||||||
noise_threshold = 0.0,
|
noise_threshold = 0.0,
|
||||||
noise_params = {
|
noise_params = {
|
||||||
|
@ -2077,7 +2076,7 @@ local function register_dimension_ores()
|
||||||
clust_num_ores = 1,
|
clust_num_ores = 1,
|
||||||
clust_size = 1,
|
clust_size = 1,
|
||||||
y_min = mcl_mapgen.nether.min,
|
y_min = mcl_mapgen.nether.min,
|
||||||
y_max = mcl_vars.mg_lava_nether_max + 1,
|
y_max = mcl_mapgen.nether.lava_max + 1,
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_ore({
|
minetest.register_ore({
|
||||||
|
@ -2087,8 +2086,8 @@ local function register_dimension_ores()
|
||||||
clust_scarcity = 1000,
|
clust_scarcity = 1000,
|
||||||
clust_num_ores = 1,
|
clust_num_ores = 1,
|
||||||
clust_size = 1,
|
clust_size = 1,
|
||||||
y_min = mcl_vars.mg_lava_nether_max + 2,
|
y_min = mcl_mapgen.nether.lava_max + 2,
|
||||||
y_max = mcl_vars.mg_lava_nether_max + 12,
|
y_max = mcl_mapgen.nether.lava_max + 12,
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_ore({
|
minetest.register_ore({
|
||||||
|
@ -2098,8 +2097,8 @@ local function register_dimension_ores()
|
||||||
clust_scarcity = 2000,
|
clust_scarcity = 2000,
|
||||||
clust_num_ores = 1,
|
clust_num_ores = 1,
|
||||||
clust_size = 1,
|
clust_size = 1,
|
||||||
y_min = mcl_vars.mg_lava_nether_max + 13,
|
y_min = mcl_mapgen.nether.lava_max + 13,
|
||||||
y_max = mcl_vars.mg_lava_nether_max + 48,
|
y_max = mcl_mapgen.nether.lava_max + 48,
|
||||||
})
|
})
|
||||||
minetest.register_ore({
|
minetest.register_ore({
|
||||||
ore_type = "scatter",
|
ore_type = "scatter",
|
||||||
|
@ -2108,7 +2107,7 @@ local function register_dimension_ores()
|
||||||
clust_scarcity = 3500,
|
clust_scarcity = 3500,
|
||||||
clust_num_ores = 1,
|
clust_num_ores = 1,
|
||||||
clust_size = 1,
|
clust_size = 1,
|
||||||
y_min = mcl_vars.mg_lava_nether_max + 49,
|
y_min = mcl_mapgen.nether.lava_max + 49,
|
||||||
y_max = mcl_mapgen.nether.max,
|
y_max = mcl_mapgen.nether.max,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -2119,7 +2118,7 @@ local function register_dimension_ores()
|
||||||
-- FIXME: Broken lighting in v6 mapgen
|
-- FIXME: Broken lighting in v6 mapgen
|
||||||
|
|
||||||
local end_wherein
|
local end_wherein
|
||||||
if mg_name == "v6" then
|
if mcl_mapgen.v6 then
|
||||||
end_wherein = {"air", "mcl_core:stone"}
|
end_wherein = {"air", "mcl_core:stone"}
|
||||||
else
|
else
|
||||||
end_wherein = {"air"}
|
end_wherein = {"air"}
|
||||||
|
@ -2129,11 +2128,11 @@ local function register_dimension_ores()
|
||||||
ore_type = "stratum",
|
ore_type = "stratum",
|
||||||
ore = "mcl_end:end_stone",
|
ore = "mcl_end:end_stone",
|
||||||
wherein = end_wherein,
|
wherein = end_wherein,
|
||||||
y_min = mcl_mapgen.end.min+64,
|
y_min = mcl_mapgen.end_.min+64,
|
||||||
y_max = mcl_mapgen.end.min+80,
|
y_max = mcl_mapgen.end_.min+80,
|
||||||
|
|
||||||
noise_params = {
|
noise_params = {
|
||||||
offset = mcl_mapgen.end.min+70,
|
offset = mcl_mapgen.end_.min+70,
|
||||||
scale = -1,
|
scale = -1,
|
||||||
spread = {x=126, y=126, z=126},
|
spread = {x=126, y=126, z=126},
|
||||||
seed = mg_seed+9999,
|
seed = mg_seed+9999,
|
||||||
|
@ -2156,11 +2155,11 @@ local function register_dimension_ores()
|
||||||
ore_type = "stratum",
|
ore_type = "stratum",
|
||||||
ore = "mcl_end:end_stone",
|
ore = "mcl_end:end_stone",
|
||||||
wherein = end_wherein,
|
wherein = end_wherein,
|
||||||
y_min = mcl_mapgen.end.min+64,
|
y_min = mcl_mapgen.end_.min+64,
|
||||||
y_max = mcl_mapgen.end.min+80,
|
y_max = mcl_mapgen.end_.min+80,
|
||||||
|
|
||||||
noise_params = {
|
noise_params = {
|
||||||
offset = mcl_mapgen.end.min+72,
|
offset = mcl_mapgen.end_.min+72,
|
||||||
scale = -3,
|
scale = -3,
|
||||||
spread = {x=84, y=84, z=84},
|
spread = {x=84, y=84, z=84},
|
||||||
seed = mg_seed+999,
|
seed = mg_seed+999,
|
||||||
|
@ -2182,11 +2181,11 @@ local function register_dimension_ores()
|
||||||
ore_type = "stratum",
|
ore_type = "stratum",
|
||||||
ore = "mcl_end:end_stone",
|
ore = "mcl_end:end_stone",
|
||||||
wherein = end_wherein,
|
wherein = end_wherein,
|
||||||
y_min = mcl_mapgen.end.min+64,
|
y_min = mcl_mapgen.end_.min+64,
|
||||||
y_max = mcl_mapgen.end.min+80,
|
y_max = mcl_mapgen.end_.min+80,
|
||||||
|
|
||||||
noise_params = {
|
noise_params = {
|
||||||
offset = mcl_mapgen.end.min+70,
|
offset = mcl_mapgen.end_.min+70,
|
||||||
scale = -2,
|
scale = -2,
|
||||||
spread = {x=84, y=84, z=84},
|
spread = {x=84, y=84, z=84},
|
||||||
seed = mg_seed+99,
|
seed = mg_seed+99,
|
||||||
|
@ -3925,8 +3924,8 @@ local function register_dimension_decorations()
|
||||||
octaves = 3,
|
octaves = 3,
|
||||||
persist = 0.6
|
persist = 0.6
|
||||||
},
|
},
|
||||||
y_min = mcl_mapgen.end.min,
|
y_min = mcl_mapgen.end_.min,
|
||||||
y_max = mcl_mapgen.end.max,
|
y_max = mcl_mapgen.end_.max,
|
||||||
decoration = "mcl_end:chorus_flower",
|
decoration = "mcl_end:chorus_flower",
|
||||||
height = 1,
|
height = 1,
|
||||||
biomes = { "End" },
|
biomes = { "End" },
|
||||||
|
@ -3943,14 +3942,15 @@ end
|
||||||
--
|
--
|
||||||
-- Detect mapgen to select functions
|
-- Detect mapgen to select functions
|
||||||
--
|
--
|
||||||
if mg_name ~= "singlenode" then
|
|
||||||
|
if not mcl_mapgen.singlenode then
|
||||||
if not superflat then
|
if not superflat then
|
||||||
if mg_name ~= "v6" then
|
if not mcl_mapgen.v6 then
|
||||||
register_biomes()
|
register_biomes()
|
||||||
register_biomelike_ores()
|
register_biomelike_ores()
|
||||||
end
|
end
|
||||||
register_biome_ores()
|
register_biome_ores()
|
||||||
if mg_name ~= "v6" then
|
if not mcl_mapgen.v6 then
|
||||||
register_decorations()
|
register_decorations()
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
|
|
@ -2,10 +2,8 @@
|
||||||
|
|
||||||
mcl_dungeons = {}
|
mcl_dungeons = {}
|
||||||
|
|
||||||
local mg_name = minetest.get_mapgen_setting("mg_name")
|
|
||||||
|
|
||||||
-- Are dungeons disabled?
|
-- Are dungeons disabled?
|
||||||
if mcl_vars.mg_dungeons == false or mg_name == "singlenode" then
|
if mcl_mapgen.dungeons == false or mcl_mapgen.singlenode == true then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -35,7 +33,7 @@ local math_ceil = math.ceil
|
||||||
local get_node = mcl_mapgen.get_far_node
|
local get_node = mcl_mapgen.get_far_node
|
||||||
|
|
||||||
|
|
||||||
local min_y = math_max(mcl_mapgen.overworld.min, mcl_vars.mg_bedrock_overworld_max) + 1
|
local min_y = math_max(mcl_mapgen.overworld.min, mcl_mapgen.overworld.bedrock_max) + 1
|
||||||
local max_y = mcl_mapgen.overworld.max - 1
|
local max_y = mcl_mapgen.overworld.max - 1
|
||||||
-- Calculate the number of dungeon spawn attempts
|
-- Calculate the number of dungeon spawn attempts
|
||||||
-- In Minecraft, there 8 dungeon spawn attempts Minecraft chunk (16*256*16 = 65536 blocks).
|
-- In Minecraft, there 8 dungeon spawn attempts Minecraft chunk (16*256*16 = 65536 blocks).
|
||||||
|
@ -358,7 +356,7 @@ local function ecb_spawn_dungeon(blockpos, action, calls_remaining, param)
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Bonus loot for v6 mapgen: Otherwise unobtainable saplings.
|
-- Bonus loot for v6 mapgen: Otherwise unobtainable saplings.
|
||||||
if mg_name == "v6" then
|
if mcl_mapgen.v6 then
|
||||||
table_insert(loottable, {
|
table_insert(loottable, {
|
||||||
stacks_min = 1,
|
stacks_min = 1,
|
||||||
stacks_max = 3,
|
stacks_max = 3,
|
||||||
|
|
|
@ -1906,12 +1906,12 @@ local function basic(c)
|
||||||
-- The Air on the Nether roof, https://git.minetest.land/MineClone2/MineClone2/issues/1186
|
-- The Air on the Nether roof, https://git.minetest.land/MineClone2/MineClone2/issues/1186
|
||||||
lvm_used = set_layers(data, area, c_air , nil, mcl_mapgen.nether.max +1, mcl_mapgen.nether.max + 128 , minp, maxp, lvm_used, pr)
|
lvm_used = set_layers(data, area, c_air , nil, mcl_mapgen.nether.max +1, mcl_mapgen.nether.max + 128 , minp, maxp, lvm_used, pr)
|
||||||
-- The Void above the Nether below the End:
|
-- The Void above the Nether below the End:
|
||||||
lvm_used = set_layers(data, area, c_void , nil, mcl_mapgen.nether.max + 128 +1, mcl_mapgen.end.min -1, minp, maxp, lvm_used, pr)
|
lvm_used = set_layers(data, area, c_void , nil, mcl_mapgen.nether.max + 128 +1, mcl_mapgen.end_.min -1, minp, maxp, lvm_used, pr)
|
||||||
|
|
||||||
-- [[ THE END: mcl_mapgen.end.min mcl_mapgen.end.max ]]
|
-- [[ THE END: mcl_mapgen.end_.min mcl_mapgen.end_.max ]]
|
||||||
|
|
||||||
-- The Void above the End below the Realm barrier:
|
-- The Void above the End below the Realm barrier:
|
||||||
lvm_used = set_layers(data, area, c_void , nil, mcl_mapgen.end.max +1, mcl_vars.mg_realm_barrier_overworld_end_min-1, minp, maxp, lvm_used, pr)
|
lvm_used = set_layers(data, area, c_void , nil, mcl_mapgen.end_.max +1, mcl_vars.mg_realm_barrier_overworld_end_min-1, minp, maxp, lvm_used, pr)
|
||||||
-- Realm barrier between the Overworld void and the End
|
-- Realm barrier between the Overworld void and the End
|
||||||
lvm_used = set_layers(data, area, c_realm_barrier, nil, mcl_vars.mg_realm_barrier_overworld_end_min , mcl_vars.mg_realm_barrier_overworld_end_max , minp, maxp, lvm_used, pr)
|
lvm_used = set_layers(data, area, c_realm_barrier, nil, mcl_vars.mg_realm_barrier_overworld_end_min , mcl_vars.mg_realm_barrier_overworld_end_max , minp, maxp, lvm_used, pr)
|
||||||
-- The Void above Realm barrier below the Overworld:
|
-- The Void above Realm barrier below the Overworld:
|
||||||
|
@ -2041,7 +2041,7 @@ local function basic(c)
|
||||||
-- * Replace water with end stone or air (depending on height).
|
-- * Replace water with end stone or air (depending on height).
|
||||||
-- * Remove stone, sand, dirt in v6 so our End map generator works in v6.
|
-- * Remove stone, sand, dirt in v6 so our End map generator works in v6.
|
||||||
-- * Generate spawn platform (End portal destination)
|
-- * Generate spawn platform (End portal destination)
|
||||||
elseif minp.y <= mcl_mapgen.end.max and maxp.y >= mcl_mapgen.end.min then
|
elseif minp.y <= mcl_mapgen.end_.max and maxp.y >= mcl_mapgen.end_.min then
|
||||||
local nodes
|
local nodes
|
||||||
if mg_name == "v6" then
|
if mg_name == "v6" then
|
||||||
nodes = minetest.find_nodes_in_area(emin, emax, {"mcl_core:water_source", "mcl_core:stone", "mcl_core:sand", "mcl_core:dirt"})
|
nodes = minetest.find_nodes_in_area(emin, emax, {"mcl_core:water_source", "mcl_core:stone", "mcl_core:sand", "mcl_core:dirt"})
|
||||||
|
@ -2083,11 +2083,11 @@ local function basic(c)
|
||||||
-- Final hackery: Set sun light level in the End.
|
-- Final hackery: Set sun light level in the End.
|
||||||
-- -26912 is at a mapchunk border.
|
-- -26912 is at a mapchunk border.
|
||||||
local shadow = true
|
local shadow = true
|
||||||
if minp.y >= -26912 and maxp.y <= mcl_mapgen.end.max then
|
if minp.y >= -26912 and maxp.y <= mcl_mapgen.end_.max then
|
||||||
vm:set_lighting({day=15, night=15})
|
vm:set_lighting({day=15, night=15})
|
||||||
lvm_used = true
|
lvm_used = true
|
||||||
end
|
end
|
||||||
if minp.y >= mcl_mapgen.end.min and maxp.y <= -26911 then
|
if minp.y >= mcl_mapgen.end_.min and maxp.y <= -26911 then
|
||||||
shadow = false
|
shadow = false
|
||||||
lvm_used = true
|
lvm_used = true
|
||||||
end
|
end
|
||||||
|
|
|
@ -18,8 +18,7 @@ local stronghold_rings = {
|
||||||
local strongholds = {}
|
local strongholds = {}
|
||||||
local strongholds_inited = false
|
local strongholds_inited = false
|
||||||
|
|
||||||
local mg_name = minetest.get_mapgen_setting("mg_name")
|
local superflat = mcl_mapgen.superflat
|
||||||
local superflat = mg_name == "flat" and minetest.get_mapgen_setting("mcl_superflat_classic") == "true"
|
|
||||||
|
|
||||||
-- Determine the stronghold positions and store them into the strongholds table.
|
-- Determine the stronghold positions and store them into the strongholds table.
|
||||||
-- The stronghold positions are based on the world seed.
|
-- The stronghold positions are based on the world seed.
|
||||||
|
@ -30,7 +29,7 @@ local init_strongholds = function()
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
-- Don't generate strongholds in singlenode
|
-- Don't generate strongholds in singlenode
|
||||||
if mg_name == "singlenode" then
|
if mcl_mapgen.singlenode then
|
||||||
strongholds_inited = true
|
strongholds_inited = true
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
@ -47,9 +46,9 @@ local init_strongholds = function()
|
||||||
local dist = pr:next(ring.min, ring.max)
|
local dist = pr:next(ring.min, ring.max)
|
||||||
local y
|
local y
|
||||||
if superflat then
|
if superflat then
|
||||||
y = mcl_vars.mg_bedrock_overworld_max + 3
|
y = mcl_mapgen.overworld.bedrock_max + 3
|
||||||
else
|
else
|
||||||
y = pr:next(mcl_vars.mg_bedrock_overworld_max+1, mcl_vars.mg_overworld_min+48)
|
y = pr:next(mcl_mapgen.overworld.bedrock_max+1, mcl_mapgen.overworld.bedrock_min+48)
|
||||||
end
|
end
|
||||||
local pos = { x = math.cos(angle) * dist, y = y, z = math.sin(angle) * dist }
|
local pos = { x = math.cos(angle) * dist, y = y, z = math.sin(angle) * dist }
|
||||||
pos = vector.round(pos)
|
pos = vector.round(pos)
|
||||||
|
|
|
@ -16,8 +16,7 @@ end
|
||||||
local probability_railcaves_in_mapchunk = P(0.33333)
|
local probability_railcaves_in_mapchunk = P(0.33333)
|
||||||
setting = tonumber(minetest.settings:get("tsm_railcorridors_probability_railcaves_in_mapchunk"))
|
setting = tonumber(minetest.settings:get("tsm_railcorridors_probability_railcaves_in_mapchunk"))
|
||||||
-- Extra check to prevent mod griefing in singlenode, mcimported worlds.
|
-- Extra check to prevent mod griefing in singlenode, mcimported worlds.
|
||||||
local mg_name = minetest.get_mapgen_setting("mg_name")
|
if mcl_mapgen.singlenode then
|
||||||
if mg_name == "singlenode" then
|
|
||||||
probability_railcaves_in_mapchunk = P(0)
|
probability_railcaves_in_mapchunk = P(0)
|
||||||
elseif setting then
|
elseif setting then
|
||||||
probability_railcaves_in_mapchunk = P(setting)
|
probability_railcaves_in_mapchunk = P(setting)
|
||||||
|
@ -93,10 +92,10 @@ end
|
||||||
|
|
||||||
-- Max. and min. heights between rail corridors are generated
|
-- Max. and min. heights between rail corridors are generated
|
||||||
local height_min
|
local height_min
|
||||||
if mcl_vars.mg_lava then
|
if mcl_mapgen.lava then
|
||||||
height_min = mcl_mapgen.overworld.lava_max + 2
|
height_min = mcl_mapgen.overworld.lava_max + 2
|
||||||
else
|
else
|
||||||
height_min = mcl_vars.mg_bedrock_overworld_max + 2
|
height_min = mcl_mapgen.overworld.bedrock_max + 2
|
||||||
end
|
end
|
||||||
local height_max = mcl_worlds.layer_to_y(60)
|
local height_max = mcl_worlds.layer_to_y(60)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue