Include biomegen in generation where possible

This commit is contained in:
Sebastian Riedel 2023-08-18 14:09:50 +02:00
parent 813d669875
commit cba8b658fd
13 changed files with 16 additions and 15 deletions

View File

@ -100,7 +100,7 @@ function mcl_vars.get_chunk_number(pos) -- unsigned int
c.x + k_positive
end
if not superflat and not singlenode then
if not superflat and (not singlenode or minetest.get_modpath("biomegen")) then
-- Normal mode
--[[ Realm stacking (h is for height)
- Overworld (h>=256)

View File

@ -44,7 +44,7 @@ local textures = {"weather_pack_rain_raindrop_1.png", "weather_pack_rain_raindro
function mcl_weather.has_rain(pos)
if not mcl_worlds.has_weather(pos) then return false end
if mgname == "singlenode" or mgname == "v6" then return true end
if (mgname == "singlenode" and not minetest.get_modpath("biomegen")) or mgname == "v6" then return true end
local bd = minetest.registered_biomes[minetest.get_biome_name(minetest.get_biome_data(pos).biome)]
if bd and bd._mcl_biome_type == "hot" then return false end
return true

View File

@ -172,7 +172,7 @@ mcl_weather.skycolor = {
if dim == "overworld" then
local biomesky
local biomefog
if mg_name ~= "v6" and mg_name ~= "singlenode" then
if mg_name ~= "v6" and (mg_name ~= "singlenode" or minetest.get_modpath("biomegen")) then
local biome_index = minetest.get_biome_data(player:get_pos()).biome
local biome_name = minetest.get_biome_name(biome_index)
local biome = minetest.registered_biomes[biome_name]
@ -246,7 +246,7 @@ mcl_weather.skycolor = {
elseif dim == "end" then
local biomesky = "#000000"
local biomefog = "#A080A0"
if mg_name ~= "v6" and mg_name ~= "singlenode" then
if mg_name ~= "v6" and (mg_name ~= "singlenode" or minetest.get_modpath("biomegen")) then
local biome_index = minetest.get_biome_data(player:get_pos()).biome
local biome_name = minetest.get_biome_name(biome_index)
local biome = minetest.registered_biomes[biome_name]
@ -271,7 +271,7 @@ mcl_weather.skycolor = {
elseif dim == "nether" then
local biomesky = "#6EB1FF"
local biomefog = "#330808"
if mg_name ~= "v6" and mg_name ~= "singlenode" then
if mg_name ~= "v6" and (mg_name ~= "singlenode" or minetest.get_modpath("biomegen")) then
local biome_index = minetest.get_biome_data(player:get_pos()).biome
local biome_name = minetest.get_biome_name(biome_index)
local biome = minetest.registered_biomes[biome_name]

View File

@ -63,7 +63,7 @@ local psdef= {
function mcl_weather.has_snow(pos)
if not mcl_worlds.has_weather(pos) then return false end
if mgname == "singlenode" or mgname == "v6" then return false end
if (mgname == "singlenode" and not minetest.get_modpath("biomegen")) or mgname == "v6" then return false end
local bn = minetest.get_biome_name(minetest.get_biome_data(pos).biome)
local bd = minetest.registered_biomes[bn]
if bd and bd._mcl_biome_type == "snowy" then return true end

View File

@ -2,3 +2,4 @@ name = mcl_biomes
author = maikerumine
description = Adds the various biomes and biome-related things for non-v6 map generators.
depends = mcl_init, mcl_mapgen_core, mcl_core, mcl_worlds, mcl_farming, mcl_flowers, mcl_end, mcl_ocean, mcl_crimson, mcl_blackstone, mcl_mangrove
optional_depends = biomegen

View File

@ -5,7 +5,7 @@ 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_vars.mg_dungeons == false or (mg_name == "singlenode" and not minetest.get_modpath("biomegen")) then
return
end

View File

@ -373,7 +373,7 @@ local function world_structure(vm, data, data2, emin, emax, area, minp, maxp, bl
lvm_used = set_layers(data, area, c_void , nil, mcl_vars.mg_realm_barrier_overworld_end_max+1, mcl_vars.mg_overworld_min -1, minp, maxp, lvm_used, pr)
if mg_name ~= "singlenode" then
if (mg_name ~= "singlenode" or minetest.get_modpath("biomegen")) then
-- Bedrock
lvm_used = set_layers(data, area, c_bedrock, bedrock_check, mcl_vars.mg_bedrock_overworld_min, mcl_vars.mg_bedrock_overworld_max, minp, maxp, lvm_used, pr)
lvm_used = set_layers(data, area, c_bedrock, bedrock_check, mcl_vars.mg_bedrock_nether_bottom_min, mcl_vars.mg_bedrock_nether_bottom_max, minp, maxp, lvm_used, pr)
@ -470,7 +470,7 @@ mcl_mapgen_core.register_generator("end_fixes", end_basic, function(minp,maxp)
if maxp.y < mcl_vars.mg_end_min or minp.y > mcl_vars.mg_end_max then return end
end, 9999, true)
if mg_name ~= "v6" and mg_name ~= "singlenode" then
if mg_name ~= "v6" and (mg_name ~= "singlenode" or minetest.get_modpath("biomegen")) then
mcl_mapgen_core.register_generator("block_fixes_grass", block_fixes_grass, nil, 9999, true)
mcl_mapgen_core.register_generator("block_fixes_foliage", block_fixes_foliage, nil, 9999, true)
mcl_mapgen_core.register_generator("block_fixes_water", block_fixes_water, nil, 9999, true)

View File

@ -817,7 +817,7 @@ local function end_fixes(minp,maxp)
end
local function basic_node(minp, maxp, blockseed)
if mg_name ~= "singlenode" then
if (mg_name ~= "singlenode" or minetest.get_modpath("biomegen")) then
-- Generate special decorations
if mg_name == "v6" then
generate_underground_mushrooms(minp, maxp, blockseed)

View File

@ -24,7 +24,7 @@ local seed = tonumber(minetest.get_mapgen_setting("seed"))
local function init_strongholds()
local stronghold_positions = {}
-- Don't generate strongholds in singlenode
if mg_name == "singlenode" then
if (mg_name == "singlenode" and not minetest.get_modpath("biomegen")) then
return {}
end
local pr = PseudoRandom(seed)

View File

@ -395,7 +395,7 @@ function mcl_structures.register_structure_spawn(def)
local p = vector.offset(pos,0,1,0)
if minetest.get_node(p).name ~= "air" then return end
if minetest.get_meta(pos):get_string("spawnblock") == "" then return end
if mg_name ~= "v6" and mg_name ~= "singlenode" and def.biomes then
if mg_name ~= "v6" and (mg_name ~= "singlenode" or minetest.get_modpath("biomegen")) and def.biomes then
if table.indexof(def.biomes,minetest.get_biome_name(minetest.get_biome_data(p).biome)) == -1 then
return
end

View File

@ -78,7 +78,7 @@ end
-- Disable natural generation in singlenode.
local mg_name = minetest.get_mapgen_setting("mg_name")
if mg_name ~= "singlenode" then
if (mg_name ~= "singlenode" or minetest.get_modpath("biomegen")) then
mcl_mapgen_core.register_generator("villages", nil, function(minp, maxp, blockseed)
if maxp.y < 0 then return end

View File

@ -20,7 +20,7 @@ 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 (mg_name == "singlenode" and not minetest.get_modpath("biomegen")) then
probability_railcaves_in_mapchunk = P(0)
elseif setting then
probability_railcaves_in_mapchunk = P(setting)

View File

@ -75,7 +75,7 @@ local node_search_list =
-- Initial variables
local success = storage:get_int("mcl_spawn_success")==1
local searched = (storage:get_int("mcl_spawn_searched")==1) or mg_name == "v6" or mg_name == "singlenode" or minetest.settings:get("static_spawnpoint")
local searched = (storage:get_int("mcl_spawn_searched")==1) or mg_name == "v6" or (mg_name == "singlenode" and not minetest.get_modpath("biomegen")) or minetest.settings:get("static_spawnpoint")
local wsp = minetest.string_to_pos(storage:get_string("mcl_spawn_world_spawn_point")) or {} -- world spawn position
local check = storage:get_int("mcl_spawn_check") or 0
local cp = minetest.string_to_pos(storage:get_string("mcl_spawn_cp")) or {x=start_pos.x, y=start_pos.y, z=start_pos.z}