mirror of
https://git.minetest.land/MineClone2/MineClone2.git
synced 2024-11-28 05:43:43 +01:00
[mapgen] Use more readable constants, increase max_block_generate_distance
This commit is contained in:
parent
c23bb1d59d
commit
3c5bf8c9b2
@ -27,6 +27,8 @@ movement_gravity = 10.4
|
||||
|
||||
# Mapgen stuff
|
||||
|
||||
max_block_generate_distance = 13
|
||||
|
||||
# altitude_chill and altitude_dry doesn't go well together with MCL2 biomes
|
||||
# which already include "snowed" variants as you go higher.
|
||||
# humid_rivers would cause the MushroomIsland biome to appear frequently around rivers.
|
||||
|
@ -1,10 +1,7 @@
|
||||
mcl_mapgen = {}
|
||||
mcl_mapgen.overworld = {}
|
||||
mcl_mapgen.nether = {}
|
||||
mcl_mapgen.end = {}
|
||||
|
||||
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
|
||||
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
|
||||
area = VoxelArea:new({MinEdge=emin, MaxEdge=emax})
|
||||
vm_context.area = area
|
||||
for _, v in pairs(lvm_chunk_queue) do
|
||||
vm_context = v.f(vm_context)
|
||||
end
|
||||
end
|
||||
|
||||
local chunk_is_ready = true
|
||||
|
||||
if block > 0 then
|
||||
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 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 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)
|
||||
@ -133,6 +130,7 @@ minetest.register_on_generated(function(minp, maxp, blockseed)
|
||||
end
|
||||
else
|
||||
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
|
||||
z = z + BS
|
||||
end
|
||||
@ -147,6 +145,11 @@ minetest.register_on_generated(function(minp, maxp, blockseed)
|
||||
end
|
||||
|
||||
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
|
||||
vm:set_data(data)
|
||||
end
|
||||
@ -158,8 +161,10 @@ minetest.register_on_generated(function(minp, maxp, blockseed)
|
||||
vm:update_liquids()
|
||||
end
|
||||
|
||||
for _, v in pairs(node_chunk_queue) do
|
||||
v.f(minp, maxp, blockseed)
|
||||
if chunk_is_ready then
|
||||
for _, v in pairs(node_chunk_queue) do
|
||||
v.f(minp, maxp, blockseed)
|
||||
end
|
||||
end
|
||||
|
||||
for i, b in pairs(current_blocks) do
|
||||
@ -218,13 +223,16 @@ end
|
||||
|
||||
|
||||
-- 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.v6 = mcl_mapgen.name == "v6"
|
||||
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.normal = not mcl_mapgen.superflat and not mcl_mapgen.singlenode
|
||||
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
|
||||
|
||||
@ -241,55 +249,58 @@ mcl_mapgen.bedrock_is_rough = normal
|
||||
]]
|
||||
|
||||
-- Overworld
|
||||
mcl_mapgen.overworld.min = -62
|
||||
overworld.min = -62
|
||||
if superflat then
|
||||
mcl_mapgen.ground = tonumber(minetest.get_mapgen_setting("mgflat_ground_level")) or 8
|
||||
mcl_mapgen.overworld.min = ground - 3
|
||||
overworld.min = ground - 3
|
||||
end
|
||||
-- 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
|
||||
mcl_mapgen.overworld.bedrock_max = mcl_mapgen.overworld.bedrock_min + (mcl_mapgen.bedrock_is_rough and 4 or 0)
|
||||
overworld.bedrock_min = overworld.min
|
||||
overworld.bedrock_max = overworld.bedrock_min + (mcl_mapgen.bedrock_is_rough and 4 or 0)
|
||||
|
||||
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)
|
||||
mcl_mapgen.nether.min = -29067 -- Carefully chosen to be at a mapchunk border
|
||||
mcl_mapgen.nether.max = mcl_mapgen.nether.min + 128
|
||||
mcl_mapgen.nether.bedrock_bottom_min = mcl_mapgen.nether.min
|
||||
mcl_mapgen.nether.bedrock_top_max = mcl_mapgen.nether.max
|
||||
nether.min = -29067 -- Carefully chosen to be at a mapchunk border
|
||||
nether.max = nether.min + 128
|
||||
nether.bedrock_bottom_min = nether.min
|
||||
nether.bedrock_top_max = nether.max
|
||||
if not superflat then
|
||||
mcl_mapgen.nether.bedrock_bottom_max = mcl_vars.mg_bedrock_nether_bottom_min + 4
|
||||
mcl_mapgen.nether.bedrock_top_min = mcl_vars.mg_bedrock_nether_top_max - 4
|
||||
mcl_mapgen.nether.lava_max = mcl_mapgen.nether.min + 31
|
||||
nether.bedrock_bottom_max = nether.bedrock_bottom_min + 4
|
||||
nether.bedrock_top_min = nether.bedrock_top_max - 4
|
||||
nether.lava_max = nether.min + 31
|
||||
else
|
||||
-- Thin bedrock in classic superflat mapgen
|
||||
mcl_mapgen.nether.bedrock_bottom_max = mcl_vars.mg_bedrock_nether_bottom_min
|
||||
mcl_mapgen.nether.bedrock_top_min = mcl_vars.mg_bedrock_nether_top_max
|
||||
mcl_mapgen.nether.lava_max = mcl_mapgen.nether.min + 2
|
||||
nether.bedrock_bottom_max = nether.bedrock_bottom_min
|
||||
nether.bedrock_top_min = nether.bedrock_top_max
|
||||
nether.lava_max = nether.min + 2
|
||||
end
|
||||
if mcl_mapgen.name == "flat" then
|
||||
if superflat then
|
||||
mcl_mapgen.nether.flat_nether_floor = mcl_mapgen.nether.bedrock_nether_bottom_max + 4
|
||||
mcl_mapgen.nether.flat_nether_ceiling = mcl_mapgen.nether.bedrock_nether_bottom_max + 52
|
||||
nether.flat_nether_floor = nether.bedrock_bottom_max + 4
|
||||
nether.flat_nether_ceiling = nether.bedrock_bottom_max + 52
|
||||
else
|
||||
mcl_mapgen.nether.flat_nether_floor = mcl_mapgen.nether.lava_nether_max + 4
|
||||
mcl_mapgen.nether.flat_nether_ceiling = mcl_mapgen.nether.lava_nether_max + 52
|
||||
nether.flat_nether_floor = nether.lava_max + 4
|
||||
nether.flat_nether_ceiling = nether.lava_max + 52
|
||||
end
|
||||
end
|
||||
|
||||
-- The End (surface at ca. Y = -27000)
|
||||
mcl_mapgen.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
|
||||
mcl_mapgen.end.max = mcl_mapgen.overworld.min - 2000
|
||||
mcl_vars.mg_end_platform_pos = { x = 100, y = mcl_mapgen.end.min + 74, z = 0 }
|
||||
end_.min = -27073 -- Carefully chosen to be at a mapchunk border
|
||||
end_.max = overworld.min - 2000
|
||||
end_.platform_pos = { x = 100, y = end_.min + 74, z = 0 }
|
||||
|
||||
-- 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_vars.mg_realm_barrier_overworld_end_min = mcl_mapgen.end.max - 11
|
||||
mcl_mapgen.realm_barrier_overworld_end_max = end_.max
|
||||
mcl_mapgen.realm_barrier_overworld_end_min = end_.max - 11
|
||||
|
||||
-- Use MineClone 2-style dungeons
|
||||
mcl_vars.mg_dungeons = true
|
||||
-- Use MineClone 2-style dungeons for normal mapgen
|
||||
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:
|
||||
-- 1st return value: true if pos is in 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 max1, max2, max3 = mcl_mapgen.overworld.max, mcl_mapgen.end.max, mcl_mapgen.nether.max+128
|
||||
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
|
||||
function mcl_worlds.is_in_void(pos)
|
||||
local y = pos.y
|
||||
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
|
||||
if void then
|
||||
-- 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
|
||||
elseif y < min2 and y > max3 then
|
||||
-- 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").
|
||||
function mcl_worlds.layer_to_y(layer, mc_dimension)
|
||||
if mc_dimension == "overworld" or mc_dimension == nil then
|
||||
return layer + mcl_vars.mg_overworld_min
|
||||
return layer + min1
|
||||
elseif mc_dimension == "nether" then
|
||||
return layer + mcl_vars.mg_nether_min
|
||||
return layer + min3
|
||||
elseif mc_dimension == "end" then
|
||||
return layer + mcl_vars.mg_end_min
|
||||
return layer + min2
|
||||
end
|
||||
end
|
||||
|
||||
-- Takes a position and returns true if this position can have weather
|
||||
function mcl_worlds.has_weather(pos)
|
||||
-- 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
|
||||
|
||||
-- Takes a position and returns true if this position can have Nether dust
|
||||
function mcl_worlds.has_dust(pos)
|
||||
-- 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
|
||||
|
||||
-- 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
|
||||
return false
|
||||
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
|
||||
return true
|
||||
end
|
||||
|
@ -1,5 +1,4 @@
|
||||
name = mcl_worlds
|
||||
author = Wuzzy
|
||||
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,
|
||||
|
||||
-- End boundaries (inclusive)
|
||||
end_min = mcl_mapgen.end.min,
|
||||
end_max = mcl_mapgen.end.max,
|
||||
end_min = mcl_mapgen.end_.min,
|
||||
end_max = mcl_mapgen.end_.max,
|
||||
}
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
local S = minetest.get_translator("mcl_portals")
|
||||
|
||||
-- Parameters
|
||||
local SPAWN_MIN = mcl_vars.mg_end_min+70
|
||||
local SPAWN_MAX = mcl_vars.mg_end_min+98
|
||||
local SPAWN_MIN = mcl_mapgen.end_.min+70
|
||||
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 neighbors = {
|
||||
@ -178,7 +178,7 @@ function mcl_portals.end_teleport(obj, pos)
|
||||
-- Teleport to the End at a fixed position and generate a
|
||||
-- 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
|
||||
minetest.get_voxel_manip():read_from_map(platform_pos, platform_pos)
|
||||
if not minetest.get_node_or_nil(platform_pos) then
|
||||
|
@ -28,7 +28,7 @@ local DISTANCE_MAX = 128
|
||||
local PORTAL = "mcl_portals:portal"
|
||||
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 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
|
||||
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 = minetest.get_mapgen_setting("seed")
|
||||
local mg_seed = mcl_mapgen.seed
|
||||
|
||||
-- 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)
|
||||
|
||||
@ -1505,8 +1504,8 @@ local function register_dimension_biomes()
|
||||
node_cave_liquid = "air",
|
||||
-- FIXME: For some reason the End stops generating early if this constant is not added.
|
||||
-- Figure out why.
|
||||
y_min = mcl_mapgen.end.min,
|
||||
y_max = mcl_mapgen.end.max + 80,
|
||||
y_min = mcl_mapgen.end_.min,
|
||||
y_max = mcl_mapgen.end_.max + 80,
|
||||
heat_point = 50,
|
||||
humidity_point = 50,
|
||||
_mcl_biome_type = "medium",
|
||||
@ -1539,7 +1538,7 @@ local function register_biome_ores()
|
||||
-- Rarely replace stone with stone monster eggs.
|
||||
-- In v6 this can happen anywhere, in other mapgens only in Extreme Hills.
|
||||
local monster_egg_scarcity
|
||||
if mg_name == "v6" then
|
||||
if mcl_mapgen.v6 then
|
||||
monster_egg_scarcity = 28 * 28 * 28
|
||||
else
|
||||
monster_egg_scarcity = 26 * 26 * 26
|
||||
@ -1561,7 +1560,7 @@ local function register_biome_ores()
|
||||
})
|
||||
|
||||
-- Bonus gold spawn in Mesa
|
||||
if mg_name ~= "v6" then
|
||||
if not mcl_mapgen.v6 then
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "mcl_core:stone_with_gold",
|
||||
@ -2009,7 +2008,7 @@ local function register_dimension_ores()
|
||||
wherein = {"mcl_nether:netherrack", "mcl_core:stone"},
|
||||
clust_scarcity = 26 * 26 * 26,
|
||||
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,
|
||||
noise_threshold = 0.0,
|
||||
noise_params = {
|
||||
@ -2077,7 +2076,7 @@ local function register_dimension_ores()
|
||||
clust_num_ores = 1,
|
||||
clust_size = 1,
|
||||
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({
|
||||
@ -2087,8 +2086,8 @@ local function register_dimension_ores()
|
||||
clust_scarcity = 1000,
|
||||
clust_num_ores = 1,
|
||||
clust_size = 1,
|
||||
y_min = mcl_vars.mg_lava_nether_max + 2,
|
||||
y_max = mcl_vars.mg_lava_nether_max + 12,
|
||||
y_min = mcl_mapgen.nether.lava_max + 2,
|
||||
y_max = mcl_mapgen.nether.lava_max + 12,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
@ -2098,8 +2097,8 @@ local function register_dimension_ores()
|
||||
clust_scarcity = 2000,
|
||||
clust_num_ores = 1,
|
||||
clust_size = 1,
|
||||
y_min = mcl_vars.mg_lava_nether_max + 13,
|
||||
y_max = mcl_vars.mg_lava_nether_max + 48,
|
||||
y_min = mcl_mapgen.nether.lava_max + 13,
|
||||
y_max = mcl_mapgen.nether.lava_max + 48,
|
||||
})
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
@ -2108,7 +2107,7 @@ local function register_dimension_ores()
|
||||
clust_scarcity = 3500,
|
||||
clust_num_ores = 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,
|
||||
})
|
||||
|
||||
@ -2119,7 +2118,7 @@ local function register_dimension_ores()
|
||||
-- FIXME: Broken lighting in v6 mapgen
|
||||
|
||||
local end_wherein
|
||||
if mg_name == "v6" then
|
||||
if mcl_mapgen.v6 then
|
||||
end_wherein = {"air", "mcl_core:stone"}
|
||||
else
|
||||
end_wherein = {"air"}
|
||||
@ -2129,11 +2128,11 @@ local function register_dimension_ores()
|
||||
ore_type = "stratum",
|
||||
ore = "mcl_end:end_stone",
|
||||
wherein = end_wherein,
|
||||
y_min = mcl_mapgen.end.min+64,
|
||||
y_max = mcl_mapgen.end.min+80,
|
||||
y_min = mcl_mapgen.end_.min+64,
|
||||
y_max = mcl_mapgen.end_.min+80,
|
||||
|
||||
noise_params = {
|
||||
offset = mcl_mapgen.end.min+70,
|
||||
offset = mcl_mapgen.end_.min+70,
|
||||
scale = -1,
|
||||
spread = {x=126, y=126, z=126},
|
||||
seed = mg_seed+9999,
|
||||
@ -2156,11 +2155,11 @@ local function register_dimension_ores()
|
||||
ore_type = "stratum",
|
||||
ore = "mcl_end:end_stone",
|
||||
wherein = end_wherein,
|
||||
y_min = mcl_mapgen.end.min+64,
|
||||
y_max = mcl_mapgen.end.min+80,
|
||||
y_min = mcl_mapgen.end_.min+64,
|
||||
y_max = mcl_mapgen.end_.min+80,
|
||||
|
||||
noise_params = {
|
||||
offset = mcl_mapgen.end.min+72,
|
||||
offset = mcl_mapgen.end_.min+72,
|
||||
scale = -3,
|
||||
spread = {x=84, y=84, z=84},
|
||||
seed = mg_seed+999,
|
||||
@ -2182,11 +2181,11 @@ local function register_dimension_ores()
|
||||
ore_type = "stratum",
|
||||
ore = "mcl_end:end_stone",
|
||||
wherein = end_wherein,
|
||||
y_min = mcl_mapgen.end.min+64,
|
||||
y_max = mcl_mapgen.end.min+80,
|
||||
y_min = mcl_mapgen.end_.min+64,
|
||||
y_max = mcl_mapgen.end_.min+80,
|
||||
|
||||
noise_params = {
|
||||
offset = mcl_mapgen.end.min+70,
|
||||
offset = mcl_mapgen.end_.min+70,
|
||||
scale = -2,
|
||||
spread = {x=84, y=84, z=84},
|
||||
seed = mg_seed+99,
|
||||
@ -3925,8 +3924,8 @@ local function register_dimension_decorations()
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
y_min = mcl_mapgen.end.min,
|
||||
y_max = mcl_mapgen.end.max,
|
||||
y_min = mcl_mapgen.end_.min,
|
||||
y_max = mcl_mapgen.end_.max,
|
||||
decoration = "mcl_end:chorus_flower",
|
||||
height = 1,
|
||||
biomes = { "End" },
|
||||
@ -3943,14 +3942,15 @@ end
|
||||
--
|
||||
-- Detect mapgen to select functions
|
||||
--
|
||||
if mg_name ~= "singlenode" then
|
||||
|
||||
if not mcl_mapgen.singlenode then
|
||||
if not superflat then
|
||||
if mg_name ~= "v6" then
|
||||
if not mcl_mapgen.v6 then
|
||||
register_biomes()
|
||||
register_biomelike_ores()
|
||||
end
|
||||
register_biome_ores()
|
||||
if mg_name ~= "v6" then
|
||||
if not mcl_mapgen.v6 then
|
||||
register_decorations()
|
||||
end
|
||||
else
|
||||
|
@ -2,10 +2,8 @@
|
||||
|
||||
mcl_dungeons = {}
|
||||
|
||||
local mg_name = minetest.get_mapgen_setting("mg_name")
|
||||
|
||||
-- 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
|
||||
end
|
||||
|
||||
@ -35,7 +33,7 @@ local math_ceil = math.ceil
|
||||
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
|
||||
-- Calculate the number of dungeon spawn attempts
|
||||
-- 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.
|
||||
if mg_name == "v6" then
|
||||
if mcl_mapgen.v6 then
|
||||
table_insert(loottable, {
|
||||
stacks_min = 1,
|
||||
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
|
||||
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:
|
||||
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:
|
||||
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
|
||||
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:
|
||||
@ -2041,7 +2041,7 @@ local function basic(c)
|
||||
-- * Replace water with end stone or air (depending on height).
|
||||
-- * Remove stone, sand, dirt in v6 so our End map generator works in v6.
|
||||
-- * 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
|
||||
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"})
|
||||
@ -2083,11 +2083,11 @@ local function basic(c)
|
||||
-- Final hackery: Set sun light level in the End.
|
||||
-- -26912 is at a mapchunk border.
|
||||
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})
|
||||
lvm_used = true
|
||||
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
|
||||
lvm_used = true
|
||||
end
|
||||
|
@ -18,8 +18,7 @@ local stronghold_rings = {
|
||||
local strongholds = {}
|
||||
local strongholds_inited = false
|
||||
|
||||
local mg_name = minetest.get_mapgen_setting("mg_name")
|
||||
local superflat = mg_name == "flat" and minetest.get_mapgen_setting("mcl_superflat_classic") == "true"
|
||||
local superflat = mcl_mapgen.superflat
|
||||
|
||||
-- Determine the stronghold positions and store them into the strongholds table.
|
||||
-- The stronghold positions are based on the world seed.
|
||||
@ -30,7 +29,7 @@ local init_strongholds = function()
|
||||
return
|
||||
end
|
||||
-- Don't generate strongholds in singlenode
|
||||
if mg_name == "singlenode" then
|
||||
if mcl_mapgen.singlenode then
|
||||
strongholds_inited = true
|
||||
return
|
||||
end
|
||||
@ -47,9 +46,9 @@ local init_strongholds = function()
|
||||
local dist = pr:next(ring.min, ring.max)
|
||||
local y
|
||||
if superflat then
|
||||
y = mcl_vars.mg_bedrock_overworld_max + 3
|
||||
y = mcl_mapgen.overworld.bedrock_max + 3
|
||||
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
|
||||
local pos = { x = math.cos(angle) * dist, y = y, z = math.sin(angle) * dist }
|
||||
pos = vector.round(pos)
|
||||
|
@ -16,8 +16,7 @@ end
|
||||
local probability_railcaves_in_mapchunk = P(0.33333)
|
||||
setting = tonumber(minetest.settings:get("tsm_railcorridors_probability_railcaves_in_mapchunk"))
|
||||
-- Extra check to prevent mod griefing in singlenode, mcimported worlds.
|
||||
local mg_name = minetest.get_mapgen_setting("mg_name")
|
||||
if mg_name == "singlenode" then
|
||||
if mcl_mapgen.singlenode then
|
||||
probability_railcaves_in_mapchunk = P(0)
|
||||
elseif setting then
|
||||
probability_railcaves_in_mapchunk = P(setting)
|
||||
@ -93,10 +92,10 @@ end
|
||||
|
||||
-- Max. and min. heights between rail corridors are generated
|
||||
local height_min
|
||||
if mcl_vars.mg_lava then
|
||||
if mcl_mapgen.lava then
|
||||
height_min = mcl_mapgen.overworld.lava_max + 2
|
||||
else
|
||||
height_min = mcl_vars.mg_bedrock_overworld_max + 2
|
||||
height_min = mcl_mapgen.overworld.bedrock_max + 2
|
||||
end
|
||||
local height_max = mcl_worlds.layer_to_y(60)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user