[mapgen] Use more readable constants, increase max_block_generate_distance

This commit is contained in:
kay27 2021-04-29 00:53:48 +04:00
parent c23bb1d59d
commit 3c5bf8c9b2
12 changed files with 113 additions and 105 deletions

View File

@ -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.

View File

@ -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,9 +161,11 @@ minetest.register_on_generated(function(minp, maxp, blockseed)
vm:update_liquids() vm:update_liquids()
end end
if chunk_is_ready then
for _, v in pairs(node_chunk_queue) do for _, v in pairs(node_chunk_queue) do
v.f(minp, maxp, blockseed) v.f(minp, maxp, blockseed)
end end
end
for i, b in pairs(current_blocks) do for i, b in pairs(current_blocks) do
for _, v in pairs(node_block_queue) do for _, v in pairs(node_block_queue) 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

View File

@ -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

View File

@ -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

View File

@ -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,
} }

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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,

View File

@ -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

View File

@ -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)

View File

@ -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)