Compare commits
4 Commits
e477247485
...
b0481c2df5
Author | SHA1 | Date |
---|---|---|
kno10 | b0481c2df5 | |
kno10 | 6577f54736 | |
kno10 | 59f1c25296 | |
kno10 | ca5f2b51c6 |
|
@ -11,20 +11,6 @@ mcl_flowers.registered_simple_flowers = {}
|
|||
local smallflowerlongdesc = S("This is a small flower. Small flowers are mainly used for dye production and can also be potted.")
|
||||
local plant_usage_help = S("It can only be placed on a block on which it would also survive.")
|
||||
|
||||
local get_palette_color_from_pos = function(pos)
|
||||
local biome_data = minetest.get_biome_data(pos)
|
||||
local index = 0
|
||||
if biome_data then
|
||||
local biome = biome_data.biome
|
||||
local biome_name = minetest.get_biome_name(biome)
|
||||
local reg_biome = minetest.registered_biomes[biome_name]
|
||||
if reg_biome then
|
||||
index = reg_biome._mcl_grass_palette_index
|
||||
end
|
||||
end
|
||||
return index
|
||||
end
|
||||
|
||||
-- on_place function for flowers
|
||||
local on_place_flower = mcl_util.generate_on_place_plant_function(function(pos, node, itemstack)
|
||||
local below = {x=pos.x, y=pos.y-1, z=pos.z}
|
||||
|
@ -32,13 +18,7 @@ local on_place_flower = mcl_util.generate_on_place_plant_function(function(pos,
|
|||
if not soil_node then return false end
|
||||
|
||||
local has_palette = minetest.registered_nodes[itemstack:get_name()].palette ~= nil
|
||||
local colorize
|
||||
if has_palette then
|
||||
colorize = get_palette_color_from_pos(pos)
|
||||
end
|
||||
if not colorize then
|
||||
colorize = 0
|
||||
end
|
||||
local colorize = has_palette and mcl_util.get_palette_indexes_from_pos(pos).grass_palette_index or 0
|
||||
|
||||
--[[ Placement requirements:
|
||||
* Dirt or grass block
|
||||
|
@ -47,10 +27,7 @@ local on_place_flower = mcl_util.generate_on_place_plant_function(function(pos,
|
|||
]]
|
||||
local light_night = minetest.get_node_light(pos, 0.0)
|
||||
local light_day = minetest.get_node_light(pos, 0.5)
|
||||
local light_ok = false
|
||||
if (light_night and light_night >= 8) or (light_day and light_day >= minetest.LIGHT_MAX) then
|
||||
light_ok = true
|
||||
end
|
||||
local light_ok = (light_night and light_night >= 8) or (light_day and light_day >= minetest.LIGHT_MAX)
|
||||
if itemstack:get_name() == "mcl_flowers:wither_rose" and ( minetest.get_item_group(soil_node.name, "grass_block") > 0 or soil_node.name == "mcl_core:dirt" or soil_node.name == "mcl_core:coarse_dirt" or soil_node.name == "mcl_mud:mud" or soil_node.name == "mcl_moss:moss" or soil_node.name == "mcl_nether:netherrack" or minetest.get_item_group(soil_node.name, "soul_block") > 0 ) then
|
||||
return true,colorize
|
||||
end
|
||||
|
@ -359,10 +336,7 @@ local function add_large_plant(name, desc, longdesc, bottom_img, top_img, inv_im
|
|||
-- * Only with light level >= 8
|
||||
-- * Only if two enough space
|
||||
if (floor.name == "mcl_core:dirt" or minetest.get_item_group(floor.name, "grass_block") == 1 or (not is_flower and (floor.name == "mcl_core:coarse_dirt" or floor.name == "mcl_core:podzol" or floor.name == "mcl_core:podzol_snow"))) and bottom_buildable and top_buildable and light_ok then
|
||||
local param2
|
||||
if grass_color then
|
||||
param2 = get_palette_color_from_pos(bottom)
|
||||
end
|
||||
local param2 = grass_color and mcl_util.get_palette_indexes_from_pos(bottom).grass_palette_index
|
||||
-- Success! We can now place the flower
|
||||
minetest.sound_play(minetest.registered_nodes[itemstring].sounds.place, {pos = bottom, gain=1}, true)
|
||||
minetest.set_node(bottom, {name=itemstring, param2=param2})
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
Biomes mod. By Wuzzy and maikerumine.
|
File diff suppressed because it is too large
Load Diff
|
@ -148,16 +148,39 @@ end
|
|||
local pending_decorations = {}
|
||||
local gennotify_map = {}
|
||||
function mcl_mapgen_core.register_decoration(def, callback)
|
||||
def = table.copy(def) -- defensive deep copy, needed for water lily
|
||||
if def.gen_callback and not def.name then error("gen_callback requires a named decoration.") end
|
||||
if callback then error("Callbacks have been redesigned.") end
|
||||
-- customize foliage colors
|
||||
if (def._mcl_foliage_palette_index or 0) > 0 then
|
||||
if type(def.schematic) ~= "string" then error("Can currently only be used with file schematics.") end
|
||||
-- Load the schema and apply foliage palette
|
||||
local schem = minetest.read_schematic(def.schematic, {})
|
||||
schem.name = def.schematic -- preserve the file name
|
||||
local cache = {}
|
||||
for _, node in ipairs(schem.data) do
|
||||
local kind = cache[node.name]
|
||||
if kind == nil then
|
||||
local ndef = minetest.registered_nodes[node.name]
|
||||
kind = ndef and (ndef.groups.foliage_palette and "color")
|
||||
or (ndef.groups.foliage_palette_wallmounted and "colorwallmounted")
|
||||
or false
|
||||
cache[node.name] = kind
|
||||
end
|
||||
if kind == "color" then
|
||||
node.param2 = def._mcl_foliage_palette_index
|
||||
elseif kind == "colorwallmounted" then
|
||||
node.param2 = def._mcl_foliage_palette_index * 8 + (node.param2 % 8)
|
||||
end
|
||||
end
|
||||
def.schematic = schem
|
||||
end
|
||||
if pending_decorations == nil then
|
||||
minetest.log("warning", "Decoration registered after mapgen core initialization: "..tostring(def.name))
|
||||
minetest.register_decoration(def)
|
||||
if def.gen_callback then
|
||||
def.deco_id = minetest.get_decoration_id(def.name)
|
||||
if not def.deco_id then
|
||||
error("Failed to get the decoration id for "..tostring(key))
|
||||
error("Failed to get the decoration id for "..tostring(def.name))
|
||||
else
|
||||
minetest.set_gen_notify({decoration = true}, {def.deco_id})
|
||||
gennotify_map["decoration#" .. def.deco_id] = def
|
||||
|
@ -177,6 +200,10 @@ local function sort_decorations()
|
|||
local sc = string.split(def.schematic, "/")
|
||||
name = string.format("%s:%04d", sc[#sc], i)
|
||||
end
|
||||
if not name and type(def.schematic) == "table" and def.schematic.name then
|
||||
local sc = string.split(def.schematic.name, "/")
|
||||
name = string.format("%s:%04d", sc[#sc], i)
|
||||
end
|
||||
if not name and type(def.schematic) == "table" and def.schematic.data then
|
||||
name = ""
|
||||
for _, v in ipairs(def.schematic.data) do
|
||||
|
@ -193,15 +220,19 @@ local function sort_decorations()
|
|||
table.sort(keys)
|
||||
for _, key in ipairs(keys) do
|
||||
local def = map[key]
|
||||
if def.name and minetest.get_decoration_id(def.name) then
|
||||
minetest.log("warning", "Decoration ID not unique: "..def.name)
|
||||
end
|
||||
local deco_id = minetest.register_decoration(def)
|
||||
if not deco_id then
|
||||
error("Failed to register decoration"..tostring(key))
|
||||
error("Failed to register decoration "..tostring(def.name).." - name not unique?")
|
||||
end
|
||||
if def.gen_callback then
|
||||
if def.name then
|
||||
deco_id = minetest.get_decoration_id(def.name)
|
||||
if not deco_id then
|
||||
error("Failed to get the decoration id for "..tostring(key))
|
||||
else
|
||||
error("Failed to register decoration "..tostring(def.name).." - name not unique?")
|
||||
end
|
||||
if def.gen_callback then
|
||||
minetest.set_gen_notify({decoration = true}, {deco_id})
|
||||
gennotify_map["decoration#" .. deco_id] = def
|
||||
end
|
||||
|
|
|
@ -285,6 +285,7 @@ local function set_water_palette(minp,maxp,data2,area,nodes)
|
|||
local biomemap = minetest.get_mapgen_object("biomemap")
|
||||
if not biomemap then return end
|
||||
local aream = VoxelArea(vector.new(minp.x, 0, minp.z), vector.new(maxp.x, 0, maxp.z))
|
||||
-- FIXME: this relies on the voxelmanip already being written.
|
||||
local nodes = minetest.find_nodes_in_area(minp, maxp, nodes)
|
||||
local lvm_used = false
|
||||
for n=1, #nodes do
|
||||
|
@ -303,6 +304,7 @@ local function set_water_palette(minp,maxp,data2,area,nodes)
|
|||
return lvm_used
|
||||
end
|
||||
|
||||
--[[
|
||||
local function set_seagrass_param2(minp,maxp,data2,area,nodes)
|
||||
local nodes = minetest.find_nodes_in_area(minp, maxp, nodes)
|
||||
local lvm_used = false
|
||||
|
@ -313,6 +315,7 @@ local function set_seagrass_param2(minp,maxp,data2,area,nodes)
|
|||
end
|
||||
return lvm_used
|
||||
end
|
||||
]]
|
||||
|
||||
-- Below the bedrock, generate air/void
|
||||
local function world_structure(vm, data, data2, emin, emax, area, minp, maxp, blockseed)
|
||||
|
@ -367,17 +370,19 @@ local function world_structure(vm, data, data2, emin, emax, area, minp, maxp, bl
|
|||
return lvm_used, lvm_used, deco, ores
|
||||
end
|
||||
|
||||
--[[ replaced with decoration hack to replace grass nodes
|
||||
local function block_fixes_grass(vm, data, data2, emin, emax, area, minp, maxp, blockseed)
|
||||
-- Set param2 (=color) of nodes which use the grass colour palette.
|
||||
return minp.y <= mcl_vars.mg_overworld_max and maxp.y >= mcl_vars.mg_overworld_min and
|
||||
set_grass_palette(minp,maxp,data2,area,{"group:grass_palette"})
|
||||
end
|
||||
end]]
|
||||
|
||||
--[[ replaced with schematic specialization per biome
|
||||
local function block_fixes_foliage(vm, data, data2, emin, emax, area, minp, maxp, blockseed)
|
||||
-- Set param2 (=color) of nodes which use the foliage colour palette.
|
||||
return minp.y <= mcl_vars.mg_overworld_max and maxp.y >= mcl_vars.mg_overworld_min and
|
||||
set_foliage_palette(minp,maxp,data2,area,{"group:foliage_palette", "group:foliage_palette_wallmounted"})
|
||||
end
|
||||
end]]
|
||||
|
||||
local function block_fixes_water(vm, data, data2, emin, emax, area, minp, maxp, blockseed)
|
||||
-- Set param2 (=color) of nodes which use the water colour palette.
|
||||
|
@ -385,11 +390,13 @@ local function block_fixes_water(vm, data, data2, emin, emax, area, minp, maxp,
|
|||
set_water_palette(minp,maxp,data2,area,{"group:water_palette"})
|
||||
end
|
||||
|
||||
--[[ no longer necessary, we generate them with param2=3
|
||||
local function block_fixes_seagrass(vm, data, data2, emin, emax, area, minp, maxp, blockseed)
|
||||
-- Set param2 of seagrass to 3.
|
||||
return minp.y <= mcl_vars.mg_overworld_max and maxp.y >= mcl_vars.mg_overworld_min and
|
||||
set_seagrass_param2(minp, maxp, data2, area, {"group:seagrass"})
|
||||
end
|
||||
]]
|
||||
|
||||
-- End block fixes:
|
||||
local function end_basic(vm, data, data2, emin, emax, area, minp, maxp, blockseed)
|
||||
|
@ -412,10 +419,10 @@ mcl_mapgen_core.register_generator("world_structure", world_structure, nil, 1, t
|
|||
mcl_mapgen_core.register_generator("end_fixes", end_basic, nil, 9999, true)
|
||||
|
||||
if mg_name ~= "v6" and mg_name ~= "singlenode" 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)
|
||||
-- replaced with decoration hack: mcl_mapgen_core.register_generator("block_fixes_grass", block_fixes_grass, nil, 9999, true)
|
||||
-- replaced with schema specialization: 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)
|
||||
mcl_mapgen_core.register_generator("block_fixes_seagrass", block_fixes_seagrass, nil, 9999, true)
|
||||
-- replaced with using param2=3 during generation mcl_mapgen_core.register_generator("block_fixes_seagrass", block_fixes_seagrass, nil, 9999, true)
|
||||
end
|
||||
|
||||
if mg_name == "v6" then
|
||||
|
@ -423,6 +430,7 @@ if mg_name == "v6" then
|
|||
end
|
||||
|
||||
-- still needed?
|
||||
--[[
|
||||
minetest.register_lbm({
|
||||
label = "Fix grass palette indexes", -- This LBM fixes any incorrect grass palette indexes.
|
||||
name = "mcl_mapgen_core:fix_grass_palette_indexes",
|
||||
|
@ -435,8 +443,9 @@ minetest.register_lbm({
|
|||
minetest.swap_node(pos, node)
|
||||
end
|
||||
end
|
||||
})
|
||||
})]]
|
||||
|
||||
--[[ FIXME: not yet replaced
|
||||
minetest.register_lbm({
|
||||
label = "Fix foliage palette indexes", -- Set correct palette indexes of foliage in old mapblocks.
|
||||
name = "mcl_mapgen_core:fix_foliage_palette_indexes",
|
||||
|
@ -490,8 +499,10 @@ minetest.register_lbm({
|
|||
end
|
||||
end
|
||||
})
|
||||
]]--
|
||||
|
||||
--[[ No longer necessary? Ugly?
|
||||
-- Can we get rid of this ugly hack?
|
||||
--[[
|
||||
-- We go outside x and y for where trees are placed next to a biome that has already been generated.
|
||||
-- We go above maxp.y because trees can often get placed close to the top of a generated area and folliage may not
|
||||
-- be coloured correctly.
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Biomes mod. By Wuzzy, maikerumine, and kno10.
|
|
@ -0,0 +1,243 @@
|
|||
local mg_name = minetest.get_mapgen_setting("mg_name")
|
||||
local mg_seed = minetest.get_mapgen_setting("seed")
|
||||
|
||||
-- SHARED patterns across different variants of badlands/mesa for consistency
|
||||
-- Bonus gold spawn in Mesa
|
||||
if mg_name ~= "v6" then
|
||||
local stonelike = {"mcl_core:stone", "mcl_core:diorite", "mcl_core:andesite", "mcl_core:granite"}
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "mcl_core:stone_with_gold",
|
||||
wherein = stonelike,
|
||||
clust_scarcity = 3333,
|
||||
clust_num_ores = 5,
|
||||
clust_size = 3,
|
||||
y_min = mcl_worlds.layer_to_y(32),
|
||||
y_max = mcl_worlds.layer_to_y(79),
|
||||
biomes = {"Mesa", "Mesa_sandlevel", "Mesa_ocean",
|
||||
"MesaBryce", "MesaBryce_sandlevel", "MesaBryce_ocean",
|
||||
"MesaPlateauF", "MesaPlateauF_sandlevel", "MesaPlateauF_ocean",
|
||||
"MesaPlateauFM", "MesaPlateauFM_sandlevel", "MesaPlateauFM_ocean", },
|
||||
})
|
||||
end
|
||||
|
||||
-- For a transition from stone to hardened clay in mesa biomes that is not perfectly flat
|
||||
minetest.register_ore({
|
||||
ore_type = "stratum",
|
||||
ore = "mcl_core:stone",
|
||||
wherein = {"group:hardened_clay"},
|
||||
noise_params = {offset = -6, scale = 2, spread = vector.new(25, 25, 25), octaves = 1, persist = 0.60},
|
||||
stratum_thickness = 8,
|
||||
biomes = {
|
||||
"Mesa_sandlevel", "Mesa_ocean",
|
||||
"MesaBryce_sandlevel", "MesaBryce_ocean",
|
||||
"MesaPlateauF_sandlevel", "MesaPlateauF_ocean",
|
||||
"MesaPlateauFM_sandlevel", "MesaPlateauFM_ocean",
|
||||
},
|
||||
y_min = -4,
|
||||
y_max = 0,
|
||||
|
||||
})
|
||||
|
||||
-- Mesa strata (registered as sheet ores)
|
||||
|
||||
-- Helper function to create strata.
|
||||
local function stratum(y_min, height, color, seed, is_perfect)
|
||||
height = height or 1
|
||||
seed = seed or 39
|
||||
local y_max = y_min + height - 1
|
||||
-- "perfect" means no erosion
|
||||
local perfect_biomes = is_perfect and {"MesaBryce", "Mesa", "MesaPlateauF", "MesaPlateauFM"} or {"MesaBryce"}
|
||||
-- Full, perfect stratum
|
||||
minetest.register_ore({
|
||||
ore_type = "stratum",
|
||||
ore = "mcl_colorblocks:hardened_clay_" .. color,
|
||||
-- Only paint uncolored so the biome can choose
|
||||
-- a color in advance.
|
||||
wherein = {"mcl_colorblocks:hardened_clay"},
|
||||
y_min = y_min,
|
||||
y_max = y_max,
|
||||
biomes = perfect_biomes,
|
||||
})
|
||||
if not is_perfect then
|
||||
-- Slightly eroded stratum, only minor imperfections
|
||||
minetest.register_ore({
|
||||
ore_type = "stratum",
|
||||
ore = "mcl_colorblocks:hardened_clay_" .. color,
|
||||
wherein = {"mcl_colorblocks:hardened_clay"},
|
||||
y_min = y_min,
|
||||
y_max = y_max,
|
||||
biomes = {"Mesa", "MesaPlateauF"},
|
||||
noise_params = {
|
||||
offset = y_min + (y_max - y_min) / 2,
|
||||
scale = 0,
|
||||
spread = vector.new(50, 50, 50),
|
||||
seed = seed + 4,
|
||||
octaves = 1,
|
||||
persist = 1.0
|
||||
},
|
||||
np_stratum_thickness = {
|
||||
offset = 1.28,
|
||||
scale = 1,
|
||||
spread = vector.new(18, 18, 18),
|
||||
seed = seed + 4,
|
||||
octaves = 3,
|
||||
persist = 0.8,
|
||||
},
|
||||
})
|
||||
-- Very eroded stratum, most of the color is gone
|
||||
minetest.register_ore({
|
||||
ore_type = "stratum",
|
||||
ore = "mcl_colorblocks:hardened_clay_" .. color,
|
||||
wherein = {"mcl_colorblocks:hardened_clay"},
|
||||
y_min = y_min,
|
||||
y_max = y_max,
|
||||
biomes = {"MesaPlateauFM"},
|
||||
noise_params = {
|
||||
offset = y_min + (y_max - y_min) / 2,
|
||||
scale = 0,
|
||||
spread = vector.new(50, 50, 50),
|
||||
seed = seed + 4,
|
||||
octaves = 1,
|
||||
persist = 1.0
|
||||
},
|
||||
np_stratum_thickness = {
|
||||
offset = 0.1,
|
||||
scale = 1,
|
||||
spread = vector.new(28, 28, 28),
|
||||
seed = seed + 4,
|
||||
octaves = 2,
|
||||
persist = 0.6,
|
||||
},
|
||||
})
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
-- Hardcoded orange strata near sea level.
|
||||
-- For MesaBryce, since it has no sand at these heights
|
||||
stratum(4, 1, "orange", nil, true)
|
||||
stratum(7, 2, "orange", nil, true)
|
||||
|
||||
-- 3-level stratum above the sandlevel (all mesa biomes)
|
||||
stratum(11, 3, "orange", nil, true)
|
||||
|
||||
-- Create random strata for up to Y = 256.
|
||||
--[[
|
||||
|
||||
------ DANGER ZONE! ------
|
||||
|
||||
The following code is sensitive to changes; changing any number may break
|
||||
mapgen consistency when the mapgen generates new mapchunks in existing
|
||||
worlds because the random generator will yield different results and the strata
|
||||
suddenly don't match up anymore. ]]
|
||||
|
||||
-- These strata are calculated based on the world seed and are global.
|
||||
-- They are thus different per-world.
|
||||
local mesapr = PcgRandom(mg_seed)
|
||||
|
||||
-- Available Mesa colors:
|
||||
local mesa_stratum_colors = {"silver", "brown", "orange", "red", "yellow", "white"}
|
||||
|
||||
-- Start level
|
||||
local y = 17
|
||||
-- Generate stratas
|
||||
while y <= 256 do
|
||||
-- Each stratum has a color (duh!)
|
||||
local colorid = mesapr:next(1, #mesa_stratum_colors)
|
||||
|
||||
-- … and a random thickness
|
||||
local heightrandom = mesapr:next(1, 12)
|
||||
local h = heightrandom == 12 and 4 or heightrandom >= 10 and 3 or heightrandom >= 8 and 2 or 1
|
||||
-- Small built-in bias: Only thin strata up to this Y level
|
||||
if y < 45 then h = math.min(h, 2) end
|
||||
|
||||
-- Register stratum
|
||||
stratum(y, h, mesa_stratum_colors[colorid])
|
||||
|
||||
-- Skip a random amount of layers (which won't get painted)
|
||||
local skiprandom = mesapr:next(1, 12)
|
||||
local skip = skiprandom == 12 and 4 or skiprandom >= 10 and 3 or skiprandom >= 5 and 2 or skiprandom >= 2 and 1 or 0
|
||||
|
||||
-- Get height of next stratum or finish
|
||||
y = y + h + skip
|
||||
end
|
||||
--[[ END OF DANGER ZONE ]]
|
||||
|
||||
-- Dead bushes
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
priority = 1500,
|
||||
place_on = {"group:sand", "mcl_core:podzol", "mcl_core:dirt", "mcl_core:dirt_with_grass", "mcl_core:coarse_dirt", "group:hardened_clay"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.01,
|
||||
scale = 0.06,
|
||||
spread = vector.new(100, 100, 100),
|
||||
seed = 1972,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
y_min = 4,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
biomes = {"Mesa", "Mesa_sandlevel", "MesaPlateauF", "MesaPlateauF_sandlevel", "MesaPlateauF_grasstop", "MesaBryce"},
|
||||
decoration = "mcl_core:deadbush",
|
||||
height = 1,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
priority = 1500,
|
||||
place_on = {"group:sand", "mcl_core:dirt", "mcl_core:dirt_with_grass", "mcl_core:coarse_dirt"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.01,
|
||||
scale = 0.06,
|
||||
spread = vector.new(100, 100, 100),
|
||||
seed = 1972,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
y_min = 4,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
biomes = {"MesaPlateauFM_grasstop"},
|
||||
decoration = "mcl_core:deadbush",
|
||||
height = 1,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
priority = 1500,
|
||||
place_on = {"group:sand"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.01,
|
||||
scale = 0.06,
|
||||
spread = vector.new(100, 100, 100),
|
||||
seed = 1972,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
y_min = 4,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
biomes = {"MesaPlateauFM", "MesaPlateauFM_sandlevel"},
|
||||
decoration = "mcl_core:deadbush",
|
||||
height = 1,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
priority = 1500,
|
||||
place_on = {"group:hardened_clay"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.01,
|
||||
scale = 0.06,
|
||||
spread = vector.new(100, 100, 100),
|
||||
seed = 1972,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
y_min = 4,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
biomes = {"MesaPlateauFM", "MesaPlateauFM_sandlevel", "MesaPlateauFM_grasstop"},
|
||||
decoration = "mcl_core:deadbush",
|
||||
height = 1,
|
||||
})
|
|
@ -0,0 +1,42 @@
|
|||
-- Mesa aka Badlands
|
||||
-- Starts with a couple of sand-covered layers (the "sandlevel"),
|
||||
-- followed by terracotta with colorful (but imperfect) strata
|
||||
vl_biomes.register_biome({
|
||||
name = "Mesa",
|
||||
node_top = "mcl_colorblocks:hardened_clay",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_colorblocks:hardened_clay",
|
||||
node_riverbed = "mcl_core:redsand",
|
||||
depth_riverbed = 1,
|
||||
node_stone = "mcl_colorblocks:hardened_clay",
|
||||
y_min = 11,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 0,
|
||||
heat_point = 100,
|
||||
_mcl_biome_type = "hot",
|
||||
_mcl_water_temp = "warm",
|
||||
_mcl_grass_palette_index = 19,
|
||||
_mcl_foliage_palette_index = 4,
|
||||
_mcl_water_palette_index = 3,
|
||||
_mcl_skycolor = "#6EB1FF",
|
||||
-- Helper biome for the red sand at the bottom of Mesas.
|
||||
_sandlevel = {
|
||||
node_top = "mcl_core:redsand",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_colorblocks:hardened_clay_orange",
|
||||
depth_filler = 3,
|
||||
node_stone = "mcl_colorblocks:hardened_clay_orange",
|
||||
y_min = -4,
|
||||
y_max = 10,
|
||||
},
|
||||
_ocean = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 3,
|
||||
node_filler = "mcl_core:sand",
|
||||
depth_filler = 2,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_max = -5,
|
||||
vertical_blend = 1,
|
||||
},
|
||||
})
|
|
@ -0,0 +1,42 @@
|
|||
-- Mesa Bryce aka Eroded Badlands
|
||||
-- Variant of Mesa, but with perfect strata and a much smaller red sand desert
|
||||
vl_biomes.register_biome({
|
||||
name = "MesaBryce",
|
||||
node_top = "mcl_colorblocks:hardened_clay",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_colorblocks:hardened_clay",
|
||||
node_riverbed = "mcl_colorblocks:hardened_clay",
|
||||
depth_riverbed = 1,
|
||||
node_stone = "mcl_colorblocks:hardened_clay",
|
||||
y_min = 4,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = -5,
|
||||
heat_point = 100,
|
||||
_mcl_biome_type = "hot",
|
||||
_mcl_water_temp = "warm",
|
||||
_mcl_grass_palette_index = 20,
|
||||
_mcl_foliage_palette_index = 4,
|
||||
_mcl_water_palette_index = 3,
|
||||
_mcl_skycolor = "#6EB1FF",
|
||||
_sandlevel = {
|
||||
node_top = "mcl_core:redsand",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_colorblocks:hardened_clay_orange",
|
||||
depth_filler = 3,
|
||||
node_riverbed = "mcl_colorblocks:hardened_clay",
|
||||
depth_riverbed = 1,
|
||||
node_stone = "mcl_colorblocks:hardened_clay_orange",
|
||||
y_min = -4,
|
||||
y_max = 3,
|
||||
},
|
||||
_ocean = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 3,
|
||||
node_filler = "mcl_core:sand",
|
||||
depth_filler = 2,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_max = -5,
|
||||
vertical_blend = 1,
|
||||
},
|
||||
})
|
|
@ -0,0 +1,112 @@
|
|||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
|
||||
-- Mesa Plateau F aka Wooded Badlands
|
||||
-- Identical to Mesa below Y=30. At Y=30 and above there is a "dry" oak forest
|
||||
vl_biomes.register_biome({
|
||||
name = "MesaPlateauF",
|
||||
node_top = "mcl_colorblocks:hardened_clay",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_colorblocks:hardened_clay",
|
||||
node_riverbed = "mcl_core:redsand",
|
||||
depth_riverbed = 1,
|
||||
node_stone = "mcl_colorblocks:hardened_clay",
|
||||
y_min = 11,
|
||||
y_max = 29,
|
||||
humidity_point = 0,
|
||||
heat_point = 60,
|
||||
vertical_blend = 0, -- we want a sharp transition
|
||||
_mcl_biome_type = "hot",
|
||||
_mcl_water_temp = "warm",
|
||||
_mcl_grass_palette_index = 21,
|
||||
_mcl_foliage_palette_index = 4,
|
||||
_mcl_water_palette_index = 3,
|
||||
_mcl_skycolor = "#6EB1FF",
|
||||
-- The oak forest plateau of this biome.
|
||||
-- This is a plateau for grass blocks, dry shrubs, tall grass, coarse dirt and oaks.
|
||||
-- Strata don't generate here.
|
||||
_grasstop = {
|
||||
node_top = "mcl_core:dirt_with_grass",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 1,
|
||||
y_min = 30,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
},
|
||||
_sandlevel = {
|
||||
node_top = "mcl_core:redsand",
|
||||
depth_top = 2,
|
||||
node_filler = "mcl_colorblocks:hardened_clay_orange",
|
||||
depth_filler = 3,
|
||||
node_stone = "mcl_colorblocks:hardened_clay_orange",
|
||||
y_min = -5,
|
||||
y_max = 10,
|
||||
},
|
||||
_ocean = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 3,
|
||||
node_filler = "mcl_core:sand",
|
||||
depth_filler = 2,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_max = -6,
|
||||
vertical_blend = 1,
|
||||
},
|
||||
})
|
||||
|
||||
-- Random coarse dirt floor in Mesa Plateau F
|
||||
minetest.register_ore({
|
||||
ore_type = "sheet",
|
||||
ore = "mcl_core:coarse_dirt",
|
||||
wherein = {"mcl_core:dirt_with_grass", "mcl_core:dirt"},
|
||||
column_height_max = 1,
|
||||
column_midpoint_factor = 0.0,
|
||||
y_min = vl_biomes.overworld_min,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
noise_threshold = 0.0,
|
||||
noise_params = {offset = 0, scale = 15, spread = vector.new(250, 250, 250), seed = 24, octaves = 3, persist = 0.70},
|
||||
biomes = {"MesaPlateauF_grasstop"},
|
||||
})
|
||||
minetest.register_ore({
|
||||
ore_type = "blob",
|
||||
ore = "mcl_core:coarse_dirt",
|
||||
wherein = {"mcl_core:dirt_with_grass", "mcl_core:dirt"},
|
||||
clust_scarcity = 1500,
|
||||
clust_num_ores = 25,
|
||||
clust_size = 7,
|
||||
y_min = vl_biomes.overworld_min,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 1,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 12345,
|
||||
octaves = 3,
|
||||
persist = 0.6,
|
||||
lacunarity = 2,
|
||||
flags = "defaults",
|
||||
},
|
||||
biomes = {"MesaPlateauF_grasstop"},
|
||||
})
|
||||
|
||||
-- Small “classic” oak (many biomes)
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.015,
|
||||
scale = 0.002,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2,
|
||||
octaves = 3,
|
||||
persist = 0.7
|
||||
},
|
||||
biomes = {"MesaPlateauF_grasstop"},
|
||||
y_min = 30,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 4,
|
||||
})
|
||||
|
|
@ -0,0 +1,188 @@
|
|||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
-- Mesa Plateau FM aka Modified Wooded Badlands Plateau
|
||||
-- Dryer and more "chaotic"/"weathered down" variant of MesaPlateauF:
|
||||
-- oak forest is less dense, more coarse dirt, more erratic terrain, vertical blend, more red sand layers,
|
||||
-- red sand as ores, red sandstone at sandlevel
|
||||
vl_biomes.register_biome({
|
||||
name = "MesaPlateauFM",
|
||||
node_top = "mcl_colorblocks:hardened_clay",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_colorblocks:hardened_clay",
|
||||
node_riverbed = "mcl_core:redsand",
|
||||
depth_riverbed = 2,
|
||||
node_stone = "mcl_colorblocks:hardened_clay",
|
||||
y_min = 12,
|
||||
y_max = 29,
|
||||
humidity_point = -5,
|
||||
heat_point = 60,
|
||||
vertical_blend = 5,
|
||||
_mcl_biome_type = "hot",
|
||||
_mcl_water_temp = "warm",
|
||||
_mcl_grass_palette_index = 22,
|
||||
_mcl_foliage_palette_index = 4,
|
||||
_mcl_water_palette_index = 3,
|
||||
_mcl_skycolor = "#6EB1FF",
|
||||
-- Grass plateau
|
||||
_grasstop = {
|
||||
node_top = "mcl_core:dirt_with_grass",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:coarse_dirt",
|
||||
depth_filler = 2,
|
||||
node_riverbed = "mcl_core:redsand",
|
||||
depth_riverbed = 1,
|
||||
y_min = 30,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
},
|
||||
_sandlevel = {
|
||||
node_top = "mcl_core:redsand",
|
||||
depth_top = 3,
|
||||
node_filler = "mcl_colorblocks:hardened_clay_orange",
|
||||
depth_filler = 3,
|
||||
node_stone = "mcl_colorblocks:hardened_clay",
|
||||
-- red sand has wider reach than in other mesa biomes
|
||||
y_min = -7,
|
||||
y_max = 11,
|
||||
vertical_blend = 4,
|
||||
},
|
||||
_ocean = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 3,
|
||||
node_filler = "mcl_core:sand",
|
||||
depth_filler = 3,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 3,
|
||||
y_min = vl_biomes.OCEAN_MIN,
|
||||
y_max = -8,
|
||||
vertical_blend = 2,
|
||||
},
|
||||
})
|
||||
minetest.register_ore({
|
||||
ore_type = "sheet",
|
||||
ore = "mcl_core:coarse_dirt",
|
||||
wherein = {"mcl_core:dirt_with_grass", "mcl_core:dirt"},
|
||||
column_height_max = 1,
|
||||
column_midpoint_factor = 0.0,
|
||||
y_min = vl_biomes.overworld_min,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
noise_threshold = -2.5,
|
||||
noise_params = {offset = 1, scale = 15, spread = vector.new(250, 250, 250), seed = 24, octaves = 3, persist = 0.80},
|
||||
biomes = {"MesaPlateauFM_grasstop"},
|
||||
})
|
||||
minetest.register_ore({
|
||||
ore_type = "blob",
|
||||
ore = "mcl_core:coarse_dirt",
|
||||
wherein = {"mcl_core:dirt_with_grass", "mcl_core:dirt"},
|
||||
clust_scarcity = 1800,
|
||||
clust_num_ores = 65,
|
||||
clust_size = 15,
|
||||
y_min = vl_biomes.overworld_min,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 1,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 12345,
|
||||
octaves = 3,
|
||||
persist = 0.6,
|
||||
lacunarity = 2,
|
||||
flags = "defaults",
|
||||
},
|
||||
biomes = {"MesaPlateauFM_grasstop"},
|
||||
})
|
||||
-- Occasionally dig out portions of MesaPlateauFM
|
||||
minetest.register_ore({
|
||||
ore_type = "blob",
|
||||
ore = "air",
|
||||
wherein = {"group:hardened_clay", "group:sand", "mcl_core:coarse_dirt"},
|
||||
clust_scarcity = 4000,
|
||||
clust_size = 5,
|
||||
y_min = vl_biomes.overworld_min,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 1,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 12345,
|
||||
octaves = 3,
|
||||
persist = 0.6,
|
||||
lacunarity = 2,
|
||||
flags = "defaults",
|
||||
},
|
||||
biomes = {"MesaPlateauFM", "MesaPlateauFM_grasstop"},
|
||||
})
|
||||
minetest.register_ore({
|
||||
ore_type = "blob",
|
||||
ore = "mcl_core:redsandstone",
|
||||
wherein = {"mcl_colorblocks:hardened_clay_orange"},
|
||||
clust_scarcity = 300,
|
||||
clust_size = 8,
|
||||
y_min = vl_biomes.overworld_min,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 1,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 12345,
|
||||
octaves = 3,
|
||||
persist = 0.6,
|
||||
lacunarity = 2,
|
||||
flags = "defaults",
|
||||
},
|
||||
biomes = {"MesaPlateauFM_sandlevel"},
|
||||
})
|
||||
-- More red sand in MesaPlateauFM
|
||||
minetest.register_ore({
|
||||
ore_type = "sheet",
|
||||
ore = "mcl_core:redsand",
|
||||
wherein = {"group:hardened_clay"},
|
||||
clust_scarcity = 1,
|
||||
clust_num_ores = 12,
|
||||
clust_size = 10,
|
||||
y_min = vl_biomes.overworld_min,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
noise_threshold = 0.1,
|
||||
noise_params = {offset = 0, scale = 15, spread = vector.new(130, 130, 130), seed = 95, octaves = 3, persist = 0.70},
|
||||
biomes = {"MesaPlateauFM"},
|
||||
})
|
||||
minetest.register_ore({
|
||||
ore_type = "blob",
|
||||
ore = "mcl_core:redsand",
|
||||
wherein = {"group:hardened_clay"},
|
||||
clust_scarcity = 1500,
|
||||
clust_size = 4,
|
||||
y_min = vl_biomes.overworld_min,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 1,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 12345,
|
||||
octaves = 3,
|
||||
persist = 0.6,
|
||||
lacunarity = 2,
|
||||
flags = "defaults",
|
||||
},
|
||||
biomes = {"MesaPlateauFM", "MesaPlateauFM_grasstop", "MesaPlateauFM_sandlevel"},
|
||||
})
|
||||
-- Small “classic” oak (many biomes)
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.008,
|
||||
scale = 0.002,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2,
|
||||
octaves = 3,
|
||||
persist = 0.7
|
||||
},
|
||||
biomes = {"MesaPlateauFM_grasstop"},
|
||||
y_min = 30,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 4,
|
||||
})
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
-- Bamboo Jungle areas are like the Jungle areas, but warmer and more humid.
|
||||
vl_biomes.register_biome({
|
||||
name = "BambooJungle",
|
||||
node_top = "mcl_core:dirt_with_grass",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 3,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 90,
|
||||
heat_point = 95,
|
||||
_mcl_biome_type = "medium",
|
||||
_mcl_water_temp = "lukewarm",
|
||||
_mcl_grass_palette_index = 24,
|
||||
_mcl_foliage_palette_index = 12,
|
||||
_mcl_water_palette_index = 2,
|
||||
_mcl_skycolor = "#77A8FF",
|
||||
_shore = {
|
||||
node_top = "mcl_core:dirt",
|
||||
depth_top = 1,
|
||||
y_min = -2,
|
||||
y_max = 0,
|
||||
},
|
||||
_ocean = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:sand",
|
||||
depth_filler = 3,
|
||||
y_max = -3,
|
||||
vertical_blend = 1,
|
||||
},
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.025,
|
||||
biomes = {"BambooJungle"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 12,
|
||||
})
|
||||
|
||||
-- Melon
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"group:grass_block_no_snow"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = -0.01,
|
||||
scale = 0.006,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 333,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_farming:melon",
|
||||
biomes = {"BambooJungle"},
|
||||
})
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
|
||||
-- Bamboo Jungle Edge
|
||||
vl_biomes.register_biome({
|
||||
name = "BambooJungleEdge",
|
||||
node_top = "mcl_core:dirt_with_grass",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 2,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 92,
|
||||
heat_point = 90,
|
||||
_mcl_biome_type = "medium",
|
||||
_mcl_water_temp = "lukewarm",
|
||||
_mcl_grass_palette_index = 26,
|
||||
_mcl_foliage_palette_index = 13,
|
||||
_mcl_water_palette_index = 2,
|
||||
_mcl_skycolor = "#77A8FF",
|
||||
_ocean = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:sand",
|
||||
depth_filler = 2,
|
||||
},
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.0045,
|
||||
biomes = {"BambooJungleEdge"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 13,
|
||||
})
|
||||
-- Melon
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"group:grass_block_no_snow"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = -0.005,
|
||||
scale = 0.006,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 333,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_farming:melon",
|
||||
biomes = {"BambooJungleEdge"},
|
||||
})
|
|
@ -0,0 +1,88 @@
|
|||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
|
||||
-- Bamboo Jungle M
|
||||
-- Like Bamboo Jungle but with even more dense vegetation
|
||||
vl_biomes.register_biome({
|
||||
name = "BambooJungleM",
|
||||
node_top = "mcl_core:dirt_with_grass",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 3,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 95,
|
||||
heat_point = 95,
|
||||
_mcl_biome_type = "medium",
|
||||
_mcl_water_temp = "lukewarm",
|
||||
_mcl_grass_palette_index = 25,
|
||||
_mcl_foliage_palette_index = 12,
|
||||
_mcl_water_palette_index = 2,
|
||||
_mcl_skycolor = "#77A8FF",
|
||||
_shore = {
|
||||
node_top = "mcl_core:dirt",
|
||||
depth_top = 1,
|
||||
y_min = -2,
|
||||
y_max = 0,
|
||||
},
|
||||
_ocean = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:sand",
|
||||
depth_filler = 3,
|
||||
y_max = -3,
|
||||
vertical_blend = 1,
|
||||
},
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.09,
|
||||
biomes = {"BambooJungleM"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree_2.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 12,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
noise_params = {
|
||||
offset = 0.05,
|
||||
scale = 0.025,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2930,
|
||||
octaves = 4,
|
||||
persist = 0.6,
|
||||
},
|
||||
biomes = {"BambooJungleM"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_bush_oak_leaves.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
_mcl_foliage_palette_index = 12,
|
||||
})
|
||||
-- Melon
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"group:grass_block_no_snow"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.0,
|
||||
scale = 0.006,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 333,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_farming:melon",
|
||||
biomes = {"BambooJungleM"},
|
||||
})
|
|
@ -0,0 +1,85 @@
|
|||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
|
||||
-- Jungle Edge M (very rare).
|
||||
-- Almost identical to Jungle Edge. Has deeper dirt. Melons spawn here a lot.
|
||||
-- This biome occours directly between Jungle M and Jungle Edge but also has a small border to Jungle.
|
||||
-- This biome is very small in general.
|
||||
vl_biomes.register_biome({
|
||||
name = "BambooJungleEdgeM",
|
||||
node_top = "mcl_core:dirt_with_grass",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 4,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 95,
|
||||
heat_point = 95,
|
||||
_mcl_biome_type = "medium",
|
||||
_mcl_water_temp = "lukewarm",
|
||||
_mcl_grass_palette_index = 27,
|
||||
_mcl_foliage_palette_index = 13,
|
||||
_mcl_water_palette_index = 2,
|
||||
_mcl_skycolor = "#77A8FF",
|
||||
_ocean = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:sand",
|
||||
depth_filler = 4,
|
||||
},
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.0045,
|
||||
biomes = {"BambooJungleEdgeM"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 13,
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
noise_params = {
|
||||
offset = 0.0085,
|
||||
scale = 0.025,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2930,
|
||||
octaves = 4,
|
||||
persist = 0.6,
|
||||
},
|
||||
biomes = {"BambooJungleEdgeM"},
|
||||
y_min = 3,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_bush_oak_leaves.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
_mcl_foliage_palette_index = 13,
|
||||
})
|
||||
|
||||
-- Melon
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"group:grass_block_no_snow"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = -0.005,
|
||||
scale = 0.006,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 333,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_farming:melon",
|
||||
biomes = {"BambooJungleEdgeM"},
|
||||
})
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
-- Birch Forest
|
||||
vl_biomes.register_biome({
|
||||
name = "BirchForest",
|
||||
node_top = "mcl_core:dirt_with_grass",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 3,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 78,
|
||||
heat_point = 31,
|
||||
_mcl_biome_type = "medium",
|
||||
_mcl_water_temp = "ocean",
|
||||
_mcl_grass_palette_index = 15,
|
||||
_mcl_foliage_palette_index = 8,
|
||||
_mcl_water_palette_index = 0,
|
||||
_mcl_skycolor = "#7AA5FF",
|
||||
_ocean = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:sand",
|
||||
depth_filler = 3,
|
||||
},
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.03,
|
||||
scale = 0.0025,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 11,
|
||||
octaves = 3,
|
||||
persist = 0.66
|
||||
},
|
||||
biomes = {"BirchForest"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_birch.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
_mcl_foliage_palette_index = 8,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 16,
|
||||
--[[noise_params = {
|
||||
offset = 0.01,
|
||||
scale = 0.00001,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2,
|
||||
octaves = 3,
|
||||
persist = 0.33
|
||||
},]]--
|
||||
fill_ratio = 0.00002,
|
||||
biomes = {"BirchForest"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_birch_bee_nest.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
spawn_by = "group:flower",
|
||||
priority = 1550,
|
||||
_mcl_foliage_palette_index = 8,
|
||||
})
|
|
@ -0,0 +1,71 @@
|
|||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
-- Birch Forest M aka Old Growth Birch Forest
|
||||
vl_biomes.register_biome({
|
||||
name = "BirchForestM",
|
||||
node_top = "mcl_core:dirt_with_grass",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 3,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 77,
|
||||
heat_point = 27,
|
||||
_mcl_biome_type = "medium",
|
||||
_mcl_water_temp = "ocean",
|
||||
_mcl_grass_palette_index = 16,
|
||||
_mcl_foliage_palette_index = 8,
|
||||
_mcl_water_palette_index = 0,
|
||||
_mcl_skycolor = "#7AA5FF",
|
||||
_ocean = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:gravel",
|
||||
depth_filler = 3,
|
||||
},
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.03,
|
||||
scale = 0.0025,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 11,
|
||||
octaves = 3,
|
||||
persist = 0.66
|
||||
},
|
||||
biomes = {"BirchForestM"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_birch_tall.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
_mcl_foliage_palette_index = 8,
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 16,
|
||||
--[[noise_params = {
|
||||
offset = 0.01,
|
||||
scale = 0.00001,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2,
|
||||
octaves = 3,
|
||||
persist = 0.33
|
||||
},]]--
|
||||
fill_ratio = 0.00002,
|
||||
biomes = {"BirchForestM"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_birch_bee_nest.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
spawn_by = "group:flower",
|
||||
priority = 1550,
|
||||
_mcl_foliage_palette_index = 8,
|
||||
})
|
|
@ -0,0 +1,108 @@
|
|||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
local mod_mcl_mushrooms = minetest.get_modpath("mcl_mushrooms")
|
||||
|
||||
-- Roofed Forest aka Dark Forest
|
||||
vl_biomes.register_biome({
|
||||
name = "RoofedForest",
|
||||
node_top = "mcl_core:dirt_with_grass",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 2,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 94,
|
||||
heat_point = 27,
|
||||
_mcl_biome_type = "medium",
|
||||
_mcl_water_temp = "ocean",
|
||||
_mcl_grass_palette_index = 18,
|
||||
_mcl_foliage_palette_index = 7,
|
||||
_mcl_water_palette_index = 0,
|
||||
_mcl_skycolor = "#79A6FF",
|
||||
_ocean = {
|
||||
node_top = "mcl_core:gravel",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:gravel",
|
||||
depth_filler = 2,
|
||||
},
|
||||
})
|
||||
|
||||
-- Dark Oak
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.05,
|
||||
scale = 0.0015,
|
||||
spread = vector.new(125, 125, 125),
|
||||
seed = 223,
|
||||
octaves = 3,
|
||||
persist = 0.66
|
||||
},
|
||||
biomes = {"RoofedForest"},
|
||||
y_min = 4,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_dark_oak.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 7,
|
||||
})
|
||||
|
||||
local ratio_mushroom = 0.0001
|
||||
local ratio_mushroom_huge = ratio_mushroom * (11 / 12)
|
||||
local ratio_mushroom_giant = ratio_mushroom * (1 / 12)
|
||||
|
||||
-- Huge Brown Mushroom
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
fill_ratio = ratio_mushroom_huge,
|
||||
biomes = {"RoofedForest"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_mushrooms .. "/schematics/mcl_mushrooms_huge_brown.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "0",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
fill_ratio = ratio_mushroom_giant,
|
||||
biomes = {"RoofedForest"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_mushrooms .. "/schematics/mcl_mushrooms_giant_brown.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "0",
|
||||
})
|
||||
|
||||
-- Huge Red Mushroom
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
fill_ratio = ratio_mushroom_huge,
|
||||
biomes = {"RoofedForest"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_mushrooms .. "/schematics/mcl_mushrooms_huge_red.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "0",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
fill_ratio = ratio_mushroom_giant,
|
||||
biomes = {"RoofedForest"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_mushrooms .. "/schematics/mcl_mushrooms_giant_red.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "0",
|
||||
})
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
-- Bamboo
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt", },
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.0043,
|
||||
biomes = {"Jungle", "JungleM", "JungleEdge", "JungleEdgeM"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_bamboo:bamboo",
|
||||
height = 9,
|
||||
max_height = 11,
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt", "mcl_core:podzol"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.095,
|
||||
biomes = {"BambooJungle", "BambooJungleM", "BambooJungleEdge", "BambooJungleEdgeM"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_bamboo:bamboo",
|
||||
height = 9,
|
||||
max_height = 10,
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
})
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
-- Cacti
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"group:sand"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = -0.01,
|
||||
scale = 0.024,
|
||||
spread = vector.new(100, 100, 100),
|
||||
seed = 257,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
y_min = 4,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_core:cactus",
|
||||
biomes = {"Desert",
|
||||
"Mesa", "Mesa_sandlevel",
|
||||
"MesaPlateauF", "MesaPlateauF_sandlevel",
|
||||
"MesaPlateauFM", "MesaPlateauFM_sandlevel"},
|
||||
height = 1,
|
||||
height_max = 3,
|
||||
spawn_by = "air",
|
||||
check_offset = 1,
|
||||
num_spawn_by = 16
|
||||
})
|
||||
|
|
@ -0,0 +1,167 @@
|
|||
-- TODO: use priorities, and move this to the module where coral blocks are defined?
|
||||
local mod_mcl_structures = minetest.get_modpath("mcl_structures")
|
||||
local coral_min = vl_biomes.OCEAN_MIN
|
||||
local coral_max = -10
|
||||
local warm_oceans = table.copy(vl_biomes.by_water_temp.warm)
|
||||
for _, v in ipairs(vl_biomes.by_water_temp.lukewarm) do table.insert(warm_oceans, v) end
|
||||
--minetest.log("action", "Warm oceans: "..dump(warm_oceans,""))
|
||||
|
||||
-- Coral Reefs
|
||||
for _, c in ipairs({ "brain", "horn", "bubble", "tube", "fire" }) do
|
||||
local noise = {
|
||||
offset = -0.0085,
|
||||
scale = 0.002,
|
||||
spread = vector.new(25, 120, 25),
|
||||
seed = 235,
|
||||
octaves = 5,
|
||||
persist = 1.8,
|
||||
lacunarity = 3.5,
|
||||
flags = "absvalue"
|
||||
}
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:sand", "mcl_core:gravel", "mcl_mud:mud"},
|
||||
sidelen = 80,
|
||||
noise_params = noise,
|
||||
biomes = warm_oceans,
|
||||
y_min = coral_min,
|
||||
y_max = coral_max,
|
||||
schematic = mod_mcl_structures .. "/schematics/mcl_structures_coral_" .. c .. "_1.mts",
|
||||
rotation = "random",
|
||||
flags = "all_floors,force_placement",
|
||||
spawn_by = "mcl_core:water_source",
|
||||
check_offset = 1,
|
||||
num_spawn_by = 12,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:sand", "mcl_core:gravel", "mcl_mud:mud"},
|
||||
noise_params = noise,
|
||||
sidelen = 80,
|
||||
biomes = warm_oceans,
|
||||
y_min = coral_min,
|
||||
y_max = coral_max,
|
||||
schematic = mod_mcl_structures .. "/schematics/mcl_structures_coral_" .. c .. "_2.mts",
|
||||
rotation = "random",
|
||||
flags = "all_floors,force_placement",
|
||||
spawn_by = "mcl_core:water_source",
|
||||
check_offset = 1,
|
||||
num_spawn_by = 12,
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_ocean:" .. c .. "_coral_block"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 3,
|
||||
y_min = coral_min,
|
||||
y_max = coral_max,
|
||||
decoration = "mcl_ocean:" .. c .. "_coral",
|
||||
biomes = warm_oceans,
|
||||
flags = "force_placement, all_floors",
|
||||
height = 1,
|
||||
spawn_by = "mcl_core:water_source",
|
||||
check_offset = 1,
|
||||
num_spawn_by = 12,
|
||||
})
|
||||
end
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"group:sand", "mcl_core:gravel", "mcl_mud:mud"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = -0.0085,
|
||||
scale = 0.002,
|
||||
spread = vector.new(25, 120, 25),
|
||||
seed = 235,
|
||||
octaves = 5,
|
||||
persist = 1.8,
|
||||
lacunarity = 3.5,
|
||||
flags = "absvalue"
|
||||
},
|
||||
y_min = coral_min,
|
||||
y_max = coral_max,
|
||||
decoration = "mcl_ocean:dead_brain_coral_block",
|
||||
biomes = warm_oceans,
|
||||
flags = "force_placement",
|
||||
height = 1,
|
||||
height_max = 1,
|
||||
place_offset_y = -1,
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_ocean:dead_brain_coral_block"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 3,
|
||||
y_min = coral_min,
|
||||
y_max = coral_max,
|
||||
decoration = "mcl_ocean:sea_pickle_1_dead_brain_coral_block",
|
||||
biomes = warm_oceans,
|
||||
flags = "force_placement, all_floors",
|
||||
height = 1,
|
||||
height_max = 1,
|
||||
place_offset_y = -1,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_ocean:dead_brain_coral_block"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 3,
|
||||
y_min = coral_min,
|
||||
y_max = coral_max,
|
||||
decoration = "mcl_ocean:sea_pickle_2_dead_brain_coral_block",
|
||||
biomes = warm_oceans,
|
||||
flags = "force_placement, all_floors",
|
||||
height = 1,
|
||||
height_max = 1,
|
||||
place_offset_y = -1,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_ocean:dead_brain_coral_block"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 2,
|
||||
y_min = coral_min,
|
||||
y_max = coral_max,
|
||||
decoration = "mcl_ocean:sea_pickle_3_dead_brain_coral_block",
|
||||
biomes = warm_oceans,
|
||||
flags = "force_placement, all_floors",
|
||||
height = 1,
|
||||
height_max = 1,
|
||||
place_offset_y = -1,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_ocean:dead_brain_coral_block"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 2,
|
||||
y_min = coral_min,
|
||||
y_max = coral_max,
|
||||
decoration = "mcl_ocean:sea_pickle_4_dead_brain_coral_block",
|
||||
biomes = warm_oceans,
|
||||
flags = "force_placement, all_floors",
|
||||
height = 1,
|
||||
height_max = 1,
|
||||
place_offset_y = -1,
|
||||
})
|
||||
--rare CORAl easter egg
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:sand", "mcl_core:gravel"},
|
||||
fill_ratio = 0.0001,
|
||||
sidelen = 80,
|
||||
biomes = warm_oceans,
|
||||
y_min = coral_min,
|
||||
y_max = coral_max,
|
||||
schematic = mod_mcl_structures .. "/schematics/coral_cora.mts",
|
||||
rotation = "random",
|
||||
flags = "all_floors,force_placement",
|
||||
spawn_by = "mcl_core:water_source",
|
||||
check_offset = 1,
|
||||
num_spawn_by = 12,
|
||||
name = "CORAl",
|
||||
gen_callback = function(pos) minetest.log("action", "CORAl at ".. dump(pos, "")) end
|
||||
})
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
-- Template to register a grass or fern decoration
|
||||
local function register_fern_decoration(offset, scale, biomes)
|
||||
for b = 1, #biomes do
|
||||
local param2 = minetest.registered_biomes[biomes[b]]._mcl_grass_palette_index
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
priority = 1500,
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:podzol", "mcl_mud:mud"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = offset,
|
||||
scale = scale,
|
||||
spread = vector.new(200, 200, 200),
|
||||
seed = 333,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
biomes = {biomes[b]},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_flowers:fern",
|
||||
param2 = param2,
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
local fern_minimal = {"Jungle", "JungleM", "JungleEdge", "JungleEdgeM", "Taiga", "MegaTaiga", "MegaSpruceTaiga", "ColdTaiga", "MangroveSwamp"}
|
||||
local fern_low = {"Jungle", "JungleM", "JungleEdge", "JungleEdgeM", "Taiga", "MegaTaiga", "MegaSpruceTaiga"}
|
||||
local fern_Jungle = {"Jungle", "JungleM", "JungleEdge", "JungleEdgeM"}
|
||||
--local fern_JungleM = { "JungleM" },
|
||||
|
||||
-- FIXME: register once per biome only, with appropriate parameters?
|
||||
register_fern_decoration(-0.03, 0.09, fern_minimal)
|
||||
register_fern_decoration(-0.015, 0.075, fern_minimal)
|
||||
register_fern_decoration(0, 0.06, fern_minimal)
|
||||
register_fern_decoration(0.015, 0.045, fern_low)
|
||||
register_fern_decoration(0.03, 0.03, fern_low)
|
||||
register_fern_decoration(0.01, 0.05, fern_Jungle)
|
||||
register_fern_decoration(0.03, 0.03, fern_Jungle)
|
||||
register_fern_decoration(0.05, 0.01, fern_Jungle)
|
||||
register_fern_decoration(0.07, -0.01, fern_Jungle)
|
||||
register_fern_decoration(0.09, -0.03, fern_Jungle)
|
||||
register_fern_decoration(0.12, -0.03, {"JungleM"})
|
||||
|
||||
-- Large ferns
|
||||
local function register_double_fern(offset, scale, biomes)
|
||||
for b = 1, #biomes do
|
||||
local param2 = minetest.registered_biomes[biomes[b]]._mcl_grass_palette_index
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
priority = 1500,
|
||||
schematic = {
|
||||
size = vector.new(1, 3, 1),
|
||||
data = {
|
||||
{name = "air", prob = 0},
|
||||
{name = "mcl_flowers:double_fern", param1 = 255, param2 = param2},
|
||||
{name = "mcl_flowers:double_fern_top", param1 = 255, param2 = param2},
|
||||
},
|
||||
},
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:podzol"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = offset,
|
||||
scale = scale,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 333,
|
||||
octaves = 2,
|
||||
persist = 0.66,
|
||||
},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
biomes = biomes[b],
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
register_double_fern(0.01, 0.03, {"Jungle", "JungleM", "JungleEdge", "JungleEdgeM", "Taiga", "ColdTaiga", "MegaTaiga", "MegaSpruceTaiga", "BambooJungle", "BambooJungleM", "BambooJungleEdge", "BambooJungleEdgeM", })
|
||||
register_double_fern(0.15, 0.1, {"JungleM", "BambooJungleM", "BambooJungle"})
|
||||
|
|
@ -0,0 +1,146 @@
|
|||
-- Large flowers
|
||||
local function register_large_flower(name, biomes, seed, offset)
|
||||
local ndef = minetest.registered_nodes["mcl_flowers:"..name]
|
||||
local has_param2 = ndef and ndef.groups.grass_palette
|
||||
local tdef = minetest.registered_nodes["mcl_flowers:"..name]
|
||||
local thas_param2 = tdef and tdef.groups.grass_palette
|
||||
if has_param2 then
|
||||
for b = 1, #biomes do
|
||||
local param2 = minetest.registered_biomes[biomes[b]]._mcl_grass_palette_index
|
||||
local tparam2 = thas_param2 and param2 or nil
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
schematic = {
|
||||
size = vector.new(1, 2, 1),
|
||||
data = {
|
||||
{name = "mcl_flowers:" .. name, param2 = param2 },
|
||||
{name = "mcl_flowers:" .. name .. "_top", param2 = tparam2 },
|
||||
},
|
||||
},
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = offset,
|
||||
scale = 0.01,
|
||||
spread = vector.new(300, 300, 300),
|
||||
seed = seed,
|
||||
octaves = 5,
|
||||
persist = 0.62,
|
||||
},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
biomes = {biomes[b]},
|
||||
})
|
||||
end
|
||||
else
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
schematic = {
|
||||
size = vector.new(1, 2, 1),
|
||||
data = {
|
||||
{name = "mcl_flowers:" .. name },
|
||||
{name = "mcl_flowers:" .. name .. "_top" },
|
||||
},
|
||||
},
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = offset,
|
||||
scale = 0.01,
|
||||
spread = vector.new(300, 300, 300),
|
||||
seed = seed,
|
||||
octaves = 5,
|
||||
persist = 0.62,
|
||||
},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
biomes = biomes,
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
register_large_flower("rose_bush", {"Forest"}, 9350, -0.008)
|
||||
register_large_flower("rose_bush", {"FlowerForest"}, 9350, 0.003)
|
||||
register_large_flower("peony", {"Forest"}, 10450, -0.008)
|
||||
register_large_flower("peony", {"FlowerForest"}, 10450, 0.003)
|
||||
register_large_flower("lilac", {"Forest"}, 10600, -0.007)
|
||||
register_large_flower("lilac", {"FlowerForest"}, 10600, 0.003)
|
||||
register_large_flower("sunflower", {"SunflowerPlains"}, 2940, 0.01)
|
||||
|
||||
local function register_flower(name, biomes, seed, offset)
|
||||
local ndef = minetest.registered_nodes["mcl_flowers:"..name]
|
||||
local has_param2 = ndef and ndef.groups.grass_palette
|
||||
if has_param2 then
|
||||
for b = 1, #biomes do
|
||||
local param2 = minetest.registered_biomes[biomes[b]]._mcl_grass_palette_index
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = offset,
|
||||
scale = 0.006,
|
||||
spread = vector.new(100, 100, 100),
|
||||
seed = seed,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
biomes = {biomes[b]},
|
||||
decoration = "mcl_flowers:" .. name,
|
||||
param2 = param2
|
||||
})
|
||||
end
|
||||
else
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = offset,
|
||||
scale = 0.006,
|
||||
spread = vector.new(100, 100, 100),
|
||||
seed = seed,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
biomes = biomes,
|
||||
decoration = "mcl_flowers:" .. name,
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
local flower_biomes1 = {"Plains", "SunflowerPlains", "RoofedForest", "Forest", "BirchForest", "BirchForestM", "Taiga", "ColdTaiga", "Jungle", "JungleM", "JungleEdge", "JungleEdgeM", "Savanna", "SavannaM", "ExtremeHills", "ExtremeHillsM", "ExtremeHills+", "ExtremeHills+_snowtop"}
|
||||
|
||||
register_flower("dandelion", flower_biomes1, 8, 0.0008)
|
||||
register_flower("dandelion", {"FlowerForest"}, 8, 0.032)
|
||||
register_flower("poppy", flower_biomes1, 9439, 0.0008)
|
||||
register_flower("poppy", {"FlowerForest"}, 9439, 0.032)
|
||||
register_flower("clover", flower_biomes1, 3, 0.0408) -- not in Flower Forest
|
||||
register_flower("fourleaf_clover", flower_biomes1, 13, -0.0012) -- not in Flower Forest
|
||||
|
||||
local flower_biomes2 = {"Plains", "SunflowerPlains"}
|
||||
register_flower("tulip_red", flower_biomes2, 436, 0.0008)
|
||||
register_flower("tulip_red", {"FlowerForest"}, 436, 0.032)
|
||||
register_flower("tulip_orange", flower_biomes2, 536, 0.0008)
|
||||
register_flower("tulip_orange", {"FlowerForest"}, 536, 0.032)
|
||||
register_flower("tulip_pink", flower_biomes2, 636, 0.0008)
|
||||
register_flower("tulip_pink", {"FlowerForest"}, 636, 0.032)
|
||||
register_flower("tulip_white", flower_biomes2, 736, 0.0008)
|
||||
register_flower("tulip_white", {"FlowerForest"}, 736, 0.032)
|
||||
register_flower("azure_bluet", flower_biomes2, 800, 0.0008)
|
||||
register_flower("azure_bluet", {"FlowerForest"}, 800, 0.032)
|
||||
register_flower("oxeye_daisy", flower_biomes2, 3490, 0.0008)
|
||||
register_flower("oxeye_daisy", {"FlowerForest"}, 3490, 0.032)
|
||||
register_flower("cornflower", flower_biomes2, 486, 0.0008)
|
||||
register_flower("cornflower", {"FlowerForest"}, 486, 0.032)
|
||||
|
||||
register_flower("lily_of_the_valley", {"Forest", "BirchForest", "BirchForestM", "RoofedForest"}, 325, 0.0008)
|
||||
register_flower("lily_of_the_valley", {"FlowerForest"}, 325, 0.032)
|
||||
|
||||
register_flower("allium", {"FlowerForest"}, 836, 0.04008) -- Flower Forest only, until we have Meadows
|
||||
register_flower("blue_orchid", {"Swampland"}, 64500, 0.0008) -- Swamp only
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
-- Small mushrooms in caves
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"group:material_stone"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.009,
|
||||
noise_threshold = 2.0,
|
||||
flags = "all_floors",
|
||||
y_min = vl_biomes.overworld_min,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_mushrooms:mushroom_red",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"group:material_stone"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.009,
|
||||
noise_threshold = 2.0,
|
||||
y_min = vl_biomes.overworld_min,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_mushrooms:mushroom_brown",
|
||||
})
|
||||
|
||||
-- Mushrooms next to trees
|
||||
local mushrooms = {"mcl_mushrooms:mushroom_red", "mcl_mushrooms:mushroom_brown"}
|
||||
local mseeds = {7133, 8244}
|
||||
for m = 1, #mushrooms do
|
||||
-- Mushrooms next to trees
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt", "mcl_core:podzol", "mcl_core:mycelium", "mcl_core:stone", "mcl_core:andesite", "mcl_core:diorite", "mcl_core:granite"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 0.003,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = mseeds[m],
|
||||
octaves = 3,
|
||||
persist = 0.66,
|
||||
},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = mushrooms[m],
|
||||
spawn_by = {"mcl_core:tree", "mcl_core:sprucetree", "mcl_core:darktree", "mcl_core:birchtree"},
|
||||
num_spawn_by = 1,
|
||||
priority = 1150,
|
||||
})
|
||||
|
||||
-- More mushrooms in Swampland
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt", "mcl_core:podzol", "mcl_core:mycelium", "mcl_core:stone", "mcl_core:andesite", "mcl_core:diorite", "mcl_core:granite"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.05,
|
||||
scale = 0.003,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = mseeds[m],
|
||||
octaves = 3,
|
||||
persist = 0.6,
|
||||
},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = mushrooms[m],
|
||||
biomes = {"Swampland"},
|
||||
spawn_by = {"mcl_core:tree", "mcl_core:sprucetree", "mcl_core:darktree", "mcl_core:birchtree"},
|
||||
num_spawn_by = 1,
|
||||
priority = 1150,
|
||||
})
|
||||
end
|
|
@ -0,0 +1,20 @@
|
|||
-- Pumpkin
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
decoration = "mcl_farming:pumpkin",
|
||||
param2 = 0,
|
||||
param2_max = 3,
|
||||
place_on = {"group:grass_block_no_snow"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = -0.016,
|
||||
scale = 0.01332,
|
||||
spread = vector.new(125, 125, 125),
|
||||
seed = 666,
|
||||
octaves = 6,
|
||||
persist = 0.666
|
||||
},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
biomes = {"ExtremeHills", "ExtremeHillsM", "ExtremeHills+", "Taiga", "MegaTaiga", "MegaSpruceTaiga", "Plains", "SunflowerPlains", "Swampland", "MangroveSwamp"},
|
||||
})
|
|
@ -0,0 +1,50 @@
|
|||
-- Sugar canes
|
||||
for _, biome in ipairs(vl_biomes.overworld_biomes) do
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_core:dirt", "mcl_core:coarse_dirt", "group:grass_block_no_snow", "group:sand", "mcl_core:podzol", "mcl_core:reeds"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = -0.3,
|
||||
scale = 0.7,
|
||||
spread = vector.new(200, 200, 200),
|
||||
seed = 2,
|
||||
octaves = 3,
|
||||
persist = 0.7
|
||||
},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_core:reeds",
|
||||
height = 1,
|
||||
height_max = 3,
|
||||
spawn_by = {"mcl_core:water_source", "mclx_core:river_water_source", "group:frosted_ice"},
|
||||
num_spawn_by = 1,
|
||||
biomes = {biome},
|
||||
param2 = biome._mcl_foliage_palette_index
|
||||
})
|
||||
end
|
||||
|
||||
-- additional reeds in swamps
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_core:dirt", "mcl_core:coarse_dirt", "group:grass_block_no_snow", "group:sand", "mcl_core:podzol", "mcl_core:reeds"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.0,
|
||||
scale = 0.5,
|
||||
spread = vector.new(200, 200, 200),
|
||||
seed = 2,
|
||||
octaves = 3,
|
||||
persist = 0.7,
|
||||
},
|
||||
biomes = {"Swampland", "Swampland_shore"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_core:reeds",
|
||||
height = 1,
|
||||
height_max = 3,
|
||||
spawn_by = {"mcl_core:water_source", "group:frosted_ice"},
|
||||
num_spawn_by = 1,
|
||||
param2 = 5 -- Swampland foliage palette index
|
||||
})
|
||||
|
|
@ -0,0 +1,174 @@
|
|||
-- TODO: move to mcl_ocean with a late registration (when biomes are registered)?
|
||||
local function register_seagrass_decoration(offset, scale, biomes)
|
||||
local surfaces = {"mcl_core:dirt", "mcl_core:sand", "mcl_core:gravel", "mcl_core:redsand"}
|
||||
local nodes = {"mcl_ocean:seagrass_dirt", "mcl_ocean:seagrass_sand", "mcl_ocean:seagrass_gravel", "mcl_ocean:seagrass_redsand"}
|
||||
|
||||
for s = 1, #surfaces do
|
||||
mcl_mapgen_core.register_decoration({
|
||||
name = "Seagrass on "..surfaces[s],
|
||||
deco_type = "simple",
|
||||
priority = 1500,
|
||||
place_on = {surfaces[s]},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = offset,
|
||||
scale = scale,
|
||||
spread = vector.new(100, 100, 100),
|
||||
seed = 16,
|
||||
octaves = 3,
|
||||
persist = 0.6,
|
||||
},
|
||||
biomes = biomes,
|
||||
y_min = vl_biomes.DEEP_OCEAN_MIN,
|
||||
y_max = 0,
|
||||
decoration = nodes[s],
|
||||
--param2 = 3, -- always use meshoption 3
|
||||
param2 = 0,
|
||||
param2_max = 3,
|
||||
place_offset_y = -1,
|
||||
flags = "force_placement",
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
-- TODO: use temperature classes, rather than hardcoding biome lists here?
|
||||
-- Also would allow for more/less seagrass depending on temperature class
|
||||
register_seagrass_decoration(0, 0.5, {
|
||||
"ColdTaiga_ocean",
|
||||
"ExtremeHills_ocean",
|
||||
"ExtremeHillsM_ocean",
|
||||
"ExtremeHills+_ocean",
|
||||
"Taiga_ocean",
|
||||
"MegaTaiga_ocean",
|
||||
"MegaSpruceTaiga_ocean",
|
||||
"StoneBeach_ocean",
|
||||
"Plains_ocean",
|
||||
"SunflowerPlains_ocean",
|
||||
"Forest_ocean",
|
||||
"FlowerForest_ocean",
|
||||
"BirchForest_ocean",
|
||||
"BirchForestM_ocean",
|
||||
"RoofedForest_ocean",
|
||||
"Swampland_ocean",
|
||||
"Jungle_ocean",
|
||||
"JungleM_ocean",
|
||||
"JungleEdge_ocean",
|
||||
"JungleEdgeM_ocean",
|
||||
"MushroomIsland_ocean",
|
||||
"Desert_ocean",
|
||||
"Savanna_ocean",
|
||||
"SavannaM_ocean",
|
||||
"Mesa_ocean",
|
||||
"MesaBryce_ocean",
|
||||
"MesaPlateauF_ocean",
|
||||
"MesaPlateauFM_ocean",
|
||||
|
||||
"ColdTaiga_deep_ocean",
|
||||
"ExtremeHills_deep_ocean",
|
||||
"ExtremeHillsM_deep_ocean",
|
||||
"ExtremeHills+_deep_ocean",
|
||||
"Taiga_deep_ocean",
|
||||
"MegaTaiga_deep_ocean",
|
||||
"MegaSpruceTaiga_deep_ocean",
|
||||
"StoneBeach_deep_ocean",
|
||||
"Plains_deep_ocean",
|
||||
"SunflowerPlains_deep_ocean",
|
||||
"Forest_deep_ocean",
|
||||
"FlowerForest_deep_ocean",
|
||||
"BirchForest_deep_ocean",
|
||||
"BirchForestM_deep_ocean",
|
||||
"RoofedForest_deep_ocean",
|
||||
"Swampland_deep_ocean",
|
||||
"Jungle_deep_ocean",
|
||||
"JungleM_deep_ocean",
|
||||
"JungleEdge_deep_ocean",
|
||||
"JungleEdgeM_deep_ocean",
|
||||
"MushroomIsland_deep_ocean",
|
||||
"Desert_deep_ocean",
|
||||
"Savanna_deep_ocean",
|
||||
"SavannaM_deep_ocean",
|
||||
"Mesa_deep_ocean",
|
||||
"MesaBryce_deep_ocean",
|
||||
"MesaPlateauF_deep_ocean",
|
||||
"MesaPlateauFM_deep_ocean",
|
||||
|
||||
"Mesa_sandlevel",
|
||||
"MesaBryce_sandlevel",
|
||||
"MesaPlateauF_sandlevel",
|
||||
"MesaPlateauFM_sandlevel",
|
||||
"Swampland_shore",
|
||||
"Jungle_shore",
|
||||
"JungleM_shore",
|
||||
"Savanna_beach",
|
||||
"FlowerForest_beach",
|
||||
"ColdTaiga_beach_water",
|
||||
"ExtremeHills_beach",
|
||||
})
|
||||
|
||||
local function register_kelp_decoration(offset, scale, biomes)
|
||||
local surfaces = {"mcl_core:dirt", "mcl_core:sand", "mcl_core:gravel"}
|
||||
local nodes = {"mcl_ocean:kelp_dirt", "mcl_ocean:kelp_sand", "mcl_ocean:kelp_gravel"}
|
||||
for s = 1, #surfaces do
|
||||
mcl_mapgen_core.register_decoration({
|
||||
name = "Kelp on "..surfaces[s],
|
||||
deco_type = "simple",
|
||||
priority = 1500,
|
||||
place_on = {surfaces[s]},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = offset,
|
||||
scale = scale,
|
||||
spread = vector.new(100, 100, 100),
|
||||
seed = 32,
|
||||
octaves = 3,
|
||||
persist = 0.6,
|
||||
},
|
||||
biomes = biomes,
|
||||
y_min = vl_biomes.DEEP_OCEAN_MIN,
|
||||
y_max = -6,
|
||||
decoration = nodes[s],
|
||||
param2 = 16,
|
||||
param2_max = 96, -- height * 16
|
||||
place_offset_y = -1,
|
||||
flags = "force_placement",
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
register_kelp_decoration(-0.5, 1, {
|
||||
"ExtremeHillsM_ocean",
|
||||
"ExtremeHills+_ocean",
|
||||
"MegaTaiga_ocean",
|
||||
"MegaSpruceTaiga_ocean",
|
||||
"Plains_ocean",
|
||||
"SunflowerPlains_ocean",
|
||||
"Forest_ocean",
|
||||
"FlowerForest_ocean",
|
||||
"BirchForest_ocean",
|
||||
"BirchForestM_ocean",
|
||||
"RoofedForest_ocean",
|
||||
"Swampland_ocean",
|
||||
"Jungle_ocean",
|
||||
"JungleM_ocean",
|
||||
"JungleEdge_ocean",
|
||||
"JungleEdgeM_ocean",
|
||||
"MushroomIsland_ocean",
|
||||
|
||||
"ExtremeHillsM_deep_ocean",
|
||||
"ExtremeHills+_deep_ocean",
|
||||
"MegaTaiga_deep_ocean",
|
||||
"MegaSpruceTaiga_deep_ocean",
|
||||
"Plains_deep_ocean",
|
||||
"SunflowerPlains_deep_ocean",
|
||||
"Forest_deep_ocean",
|
||||
"FlowerForest_deep_ocean",
|
||||
"BirchForest_deep_ocean",
|
||||
"BirchForestM_deep_ocean",
|
||||
"RoofedForest_deep_ocean",
|
||||
"Swampland_deep_ocean",
|
||||
"Jungle_deep_ocean",
|
||||
"JungleM_deep_ocean",
|
||||
"JungleEdge_deep_ocean",
|
||||
"JungleEdgeM_deep_ocean",
|
||||
"MushroomIsland_deep_ocean",
|
||||
})
|
|
@ -0,0 +1,11 @@
|
|||
--Snow layer on snowy dirt
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_core:dirt_with_grass_snow"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 10,
|
||||
flags = "all_floors",
|
||||
y_min = vl_biomes.overworld_min,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_core:snow",
|
||||
})
|
|
@ -0,0 +1,20 @@
|
|||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_core:dirt_with_grass", "mcl_core:podzol"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 0.012,
|
||||
spread = vector.new(100, 100, 100),
|
||||
seed = 354,
|
||||
octaves = 1,
|
||||
persist = 0.5,
|
||||
lacunarity = 1.0,
|
||||
flags = "absvalue"
|
||||
},
|
||||
biomes = {"Taiga", "ColdTaiga", "MegaTaiga", "MegaSpruceTaiga", "Forest"},
|
||||
y_max = vl_biomes.overworld_max,
|
||||
y_min = 2,
|
||||
decoration = "mcl_sweet_berry:sweet_berry_bush_3"
|
||||
})
|
||||
|
|
@ -0,0 +1,110 @@
|
|||
-- Template to register a grass decoration
|
||||
local function register_grass_decoration(offset, scale, biomes)
|
||||
for b = 1, #biomes do
|
||||
local param2 = minetest.registered_biomes[biomes[b]]._mcl_grass_palette_index
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
priority = 1500,
|
||||
place_on = {"group:grass_block_no_snow", "mcl_mud:mud"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = offset,
|
||||
scale = scale,
|
||||
spread = vector.new(200, 200, 200),
|
||||
seed = 420,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
biomes = { biomes[b] },
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_flowers:tallgrass",
|
||||
param2 = param2,
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
local grass_forest = {"Plains", "Taiga", "Forest", "FlowerForest", "BirchForest", "BirchForestM", "RoofedForest", "Swampland", }
|
||||
local grass_mpf = {"MesaPlateauF_grasstop"}
|
||||
local grass_plains = {"Plains", "SunflowerPlains", "JungleEdge", "JungleEdgeM", "MangroveSwamp"}
|
||||
local grass_savanna = {"Savanna", "SavannaM"}
|
||||
local grass_sparse = {"ExtremeHills", "ExtremeHills+", "ExtremeHills+_snowtop", "ExtremeHillsM", "Jungle"}
|
||||
local grass_mpfm = {"MesaPlateauFM_grasstop"}
|
||||
|
||||
-- TODO: register only once for each biome, with better parameters?
|
||||
register_grass_decoration(-0.03, 0.09, grass_forest)
|
||||
register_grass_decoration(-0.015, 0.075, grass_forest)
|
||||
register_grass_decoration(0, 0.06, grass_forest)
|
||||
register_grass_decoration(0.015, 0.045, grass_forest)
|
||||
register_grass_decoration(0.03, 0.03, grass_forest)
|
||||
register_grass_decoration(-0.03, 0.09, grass_mpf)
|
||||
register_grass_decoration(-0.015, 0.075, grass_mpf)
|
||||
register_grass_decoration(0, 0.06, grass_mpf)
|
||||
register_grass_decoration(0.01, 0.045, grass_mpf)
|
||||
register_grass_decoration(0.01, 0.05, grass_forest)
|
||||
register_grass_decoration(0.03, 0.03, grass_plains)
|
||||
register_grass_decoration(0.05, 0.01, grass_plains)
|
||||
register_grass_decoration(0.07, -0.01, grass_plains)
|
||||
register_grass_decoration(0.09, -0.03, grass_plains)
|
||||
register_grass_decoration(0.18, -0.03, grass_savanna)
|
||||
register_grass_decoration(0.05, -0.03, grass_sparse)
|
||||
register_grass_decoration(0.05, 0.05, grass_mpfm)
|
||||
register_grass_decoration(-0.03, 1, {"BambooJungle", "BambooJungleM", "BambooJungleEdge"})
|
||||
|
||||
-- Doubletall grass registration helper
|
||||
local function register_doubletall_grass(offset, scale, biomes)
|
||||
for b = 1, #biomes do
|
||||
local param2 = minetest.registered_biomes[biomes[b]]._mcl_grass_palette_index
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
priority = 1500,
|
||||
schematic = {
|
||||
size = vector.new(1, 3, 1),
|
||||
data = {
|
||||
{name = "air", prob = 0},
|
||||
{name = "mcl_flowers:double_grass", param1 = 255, param2 = param2},
|
||||
{name = "mcl_flowers:double_grass_top", param1 = 255, param2 = param2},
|
||||
},
|
||||
},
|
||||
place_on = {"group:grass_block_no_snow"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = offset,
|
||||
scale = scale,
|
||||
spread = vector.new(200, 200, 200),
|
||||
seed = 420,
|
||||
octaves = 3,
|
||||
persist = 0.6,
|
||||
},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
biomes = biomes,
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
register_doubletall_grass(-0.0005, -0.3, {"BambooJungle", "BambooJungleM", "BambooJungleEdge"})
|
||||
register_doubletall_grass(-0.01, 0.03, {"Forest", "FlowerForest", "BirchForest", "BirchForestM", "RoofedForest", "Taiga"})
|
||||
register_doubletall_grass(-0.002, 0.03, {"Plains", "SunflowerPlains"})
|
||||
register_doubletall_grass(-0.0005, -0.03, {"Savanna", "SavannaM"})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
priority = 1500,
|
||||
place_on = {"group:grass_block_no_snow"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 0.012,
|
||||
spread = vector.new(100, 100, 100),
|
||||
seed = 354,
|
||||
octaves = 1,
|
||||
persist = 0.5,
|
||||
lacunarity = 1.0,
|
||||
flags = "absvalue"
|
||||
},
|
||||
biomes = {"BambooJungle", "BambooJungleEdge","BambooJungleM", "BambooJungleEdge"},
|
||||
y_max = vl_biomes.overworld_max,
|
||||
y_min = 1,
|
||||
decoration = "mcl_flowers:tallgrass"
|
||||
})
|
|
@ -0,0 +1,45 @@
|
|||
-- Desert
|
||||
vl_biomes.register_biome({
|
||||
name = "Desert",
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:sand",
|
||||
depth_filler = 2,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
node_stone = "mcl_core:sandstone",
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 26,
|
||||
heat_point = 94,
|
||||
_mcl_biome_type = "hot",
|
||||
_mcl_water_temp = "warm",
|
||||
_mcl_grass_palette_index = 17,
|
||||
_mcl_foliage_palette_index = 3,
|
||||
_mcl_water_palette_index = 3,
|
||||
_mcl_skycolor = "#6EB1FF",
|
||||
_ocean = {
|
||||
node_filler = "mcl_core:sand",
|
||||
depth_filler = 3,
|
||||
}
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
priority = 1500,
|
||||
place_on = {"group:sand", "group:hardened_clay"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.01,
|
||||
scale = 0.006,
|
||||
spread = vector.new(100, 100, 100),
|
||||
seed = 1972,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
y_min = 4,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
biomes = {"Desert"},
|
||||
decoration = "mcl_core:deadbush",
|
||||
height = 1,
|
||||
})
|
|
@ -0,0 +1,326 @@
|
|||
local mg_seed = minetest.get_mapgen_setting("seed")
|
||||
|
||||
vl_biomes.register_biome({
|
||||
name = "End",
|
||||
node_stone = "air",
|
||||
node_filler = "air",
|
||||
node_water = "air",
|
||||
node_river_water = "air",
|
||||
node_cave_liquid = "air",
|
||||
y_min = vl_biomes.end_min,
|
||||
y_max = vl_biomes.end_max + 80,
|
||||
heat_point = 1000, --ridiculously high values so End Island always takes precedent
|
||||
humidity_point = 1000,
|
||||
vertical_blend = 16,
|
||||
_mcl_biome_type = "medium",
|
||||
_mcl_grass_palette_index = 0,
|
||||
_mcl_foliage_palette_index = 0,
|
||||
_mcl_water_palette_index = 0,
|
||||
_mcl_waterfogcolor = vl_biomes.default_waterfogcolor,
|
||||
_mcl_skycolor = vl_biomes.end_skycolor,
|
||||
_mcl_fogcolor = vl_biomes.end_fogcolor
|
||||
})
|
||||
vl_biomes.register_biome({
|
||||
name = "EndBarrens",
|
||||
node_stone = "air",
|
||||
node_filler = "air",
|
||||
node_water = "air",
|
||||
node_river_water = "air",
|
||||
node_cave_liquid = "air",
|
||||
y_min = vl_biomes.end_min,
|
||||
y_max = vl_biomes.end_max + 80,
|
||||
heat_point = 1000,
|
||||
humidity_point = 1000,
|
||||
vertical_blend = 16,
|
||||
_mcl_biome_type = "medium",
|
||||
_mcl_grass_palette_index = 0,
|
||||
_mcl_foliage_palette_index = 0,
|
||||
_mcl_water_palette_index = 0,
|
||||
_mcl_waterfogcolor = vl_biomes.default_waterfogcolor,
|
||||
_mcl_skycolor = vl_biomes.end_skycolor,
|
||||
_mcl_fogcolor = vl_biomes.end_fogcolor
|
||||
})
|
||||
vl_biomes.register_biome({
|
||||
name = "EndMidlands",
|
||||
node_stone = "air",
|
||||
node_filler = "air",
|
||||
node_water = "air",
|
||||
node_river_water = "air",
|
||||
node_cave_liquid = "air",
|
||||
y_min = vl_biomes.end_min,
|
||||
y_max = vl_biomes.end_max + 80,
|
||||
heat_point = 1000,
|
||||
humidity_point = 1000,
|
||||
vertical_blend = 16,
|
||||
_mcl_biome_type = "medium",
|
||||
_mcl_grass_palette_index = 0,
|
||||
_mcl_foliage_palette_index = 0,
|
||||
_mcl_water_palette_index = 0,
|
||||
_mcl_waterfogcolor = vl_biomes.default_waterfogcolor,
|
||||
_mcl_skycolor = vl_biomes.end_skycolor,
|
||||
_mcl_fogcolor = vl_biomes.end_fogcolor
|
||||
})
|
||||
vl_biomes.register_biome({
|
||||
name = "EndHighlands",
|
||||
node_stone = "air",
|
||||
node_filler = "air",
|
||||
node_water = "air",
|
||||
node_river_water = "air",
|
||||
node_cave_liquid = "air",
|
||||
y_min = vl_biomes.end_min,
|
||||
y_max = vl_biomes.end_max + 80,
|
||||
heat_point = 1000,
|
||||
humidity_point = 1000,
|
||||
vertical_blend = 16,
|
||||
_mcl_biome_type = "medium",
|
||||
_mcl_grass_palette_index = 0,
|
||||
_mcl_foliage_palette_index = 0,
|
||||
_mcl_water_palette_index = 0,
|
||||
_mcl_waterfogcolor = vl_biomes.default_waterfogcolor,
|
||||
_mcl_skycolor = vl_biomes.end_skycolor,
|
||||
_mcl_fogcolor = vl_biomes.end_fogcolor
|
||||
})
|
||||
vl_biomes.register_biome({
|
||||
name = "EndSmallIslands",
|
||||
node_stone = "air",
|
||||
node_filler = "air",
|
||||
node_water = "air",
|
||||
node_river_water = "air",
|
||||
node_cave_liquid = "air",
|
||||
y_min = vl_biomes.end_min,
|
||||
y_max = vl_biomes.end_max + 80,
|
||||
heat_point = 1000,
|
||||
humidity_point = 1000,
|
||||
vertical_blend = 16,
|
||||
_mcl_biome_type = "medium",
|
||||
_mcl_grass_palette_index = 0,
|
||||
_mcl_foliage_palette_index = 0,
|
||||
_mcl_water_palette_index = 0,
|
||||
_mcl_waterfogcolor = vl_biomes.default_waterfogcolor,
|
||||
_mcl_skycolor = vl_biomes.end_skycolor,
|
||||
_mcl_fogcolor = vl_biomes.end_fogcolor
|
||||
})
|
||||
|
||||
vl_biomes.register_biome({
|
||||
name = "EndBorder",
|
||||
node_stone = "air",
|
||||
node_filler = "air",
|
||||
node_water = "air",
|
||||
node_river_water = "air",
|
||||
node_cave_liquid = "air",
|
||||
y_min = vl_biomes.end_min,
|
||||
y_max = vl_biomes.end_max + 80,
|
||||
heat_point = 500,
|
||||
humidity_point = 500,
|
||||
vertical_blend = 16,
|
||||
max_pos = vector.new(1250, vl_biomes.end_min + 512, 1250),
|
||||
min_pos = vector.new(-1250, vl_biomes.end_min, -1250),
|
||||
_mcl_biome_type = "medium",
|
||||
_mcl_grass_palette_index = 0,
|
||||
_mcl_foliage_palette_index = 0,
|
||||
_mcl_water_palette_index = 0,
|
||||
_mcl_waterfogcolor = vl_biomes.default_waterfogcolor,
|
||||
_mcl_skycolor = vl_biomes.end_skycolor,
|
||||
_mcl_fogcolor = vl_biomes.end_fogcolor
|
||||
})
|
||||
|
||||
vl_biomes.register_biome({
|
||||
name = "EndIsland",
|
||||
node_stone = "air",
|
||||
node_filler = "air",
|
||||
node_water = "air",
|
||||
node_river_water = "air",
|
||||
node_cave_liquid = "air",
|
||||
max_pos = vector.new(650, vl_biomes.end_min + 512, 650),
|
||||
min_pos = vector.new(-650, vl_biomes.end_min, -650),
|
||||
heat_point = 50,
|
||||
humidity_point = 50,
|
||||
vertical_blend = 16,
|
||||
_mcl_biome_type = "medium",
|
||||
_mcl_grass_palette_index = 0,
|
||||
_mcl_foliage_palette_index = 0,
|
||||
_mcl_water_palette_index = 0,
|
||||
_mcl_waterfogcolor = vl_biomes.default_waterfogcolor,
|
||||
_mcl_skycolor = vl_biomes.end_skycolor,
|
||||
_mcl_fogcolor = vl_biomes.end_fogcolor
|
||||
})
|
||||
|
||||
-- Generate fake End
|
||||
-- TODO: Remove the "ores" when there's a better End generator
|
||||
-- FIXME: Broken lighting in v6 mapgen
|
||||
local mg_name = minetest.get_mapgen_setting("mg_name")
|
||||
local end_wherein = mg_name == "v6" and {"air", "mcl_core:stone"} or {"air"}
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "stratum",
|
||||
ore = "mcl_end:end_stone",
|
||||
wherein = end_wherein,
|
||||
biomes = {"EndSmallIslands", "Endborder"},
|
||||
y_min = vl_biomes.end_min + 64,
|
||||
y_max = vl_biomes.end_min + 80,
|
||||
clust_num_ores = 3375,
|
||||
clust_size = 15,
|
||||
|
||||
noise_params = {
|
||||
offset = vl_biomes.end_min + 70,
|
||||
scale = -1,
|
||||
spread = vector.new(84, 84, 84),
|
||||
seed = 145,
|
||||
octaves = 3,
|
||||
persist = 0.6,
|
||||
lacunarity = 2,
|
||||
--flags = "defaults",
|
||||
},
|
||||
|
||||
np_stratum_thickness = {
|
||||
offset = 0,
|
||||
scale = 15,
|
||||
spread = vector.new(84, 84, 84),
|
||||
seed = 145,
|
||||
octaves = 3,
|
||||
persist = 0.6,
|
||||
lacunarity = 2,
|
||||
--flags = "defaults",
|
||||
},
|
||||
clust_scarcity = 1,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "stratum",
|
||||
ore = "mcl_end:end_stone",
|
||||
wherein = end_wherein,
|
||||
biomes = {"End", "EndMidlands", "EndHighlands", "EndBarrens"},
|
||||
y_min = vl_biomes.end_min + 64,
|
||||
y_max = vl_biomes.end_min + 80,
|
||||
|
||||
noise_params = {
|
||||
offset = vl_biomes.end_min + 70,
|
||||
scale = -1,
|
||||
spread = vector.new(126, 126, 126),
|
||||
seed = mg_seed + 9999,
|
||||
octaves = 3,
|
||||
persist = 0.5,
|
||||
},
|
||||
|
||||
np_stratum_thickness = {
|
||||
offset = -2,
|
||||
scale = 10,
|
||||
spread = vector.new(126, 126, 126),
|
||||
seed = mg_seed + 9999,
|
||||
octaves = 3,
|
||||
persist = 0.5,
|
||||
},
|
||||
clust_scarcity = 1,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "stratum",
|
||||
ore = "mcl_end:end_stone",
|
||||
wherein = end_wherein,
|
||||
biomes = {"End", "EndMidlands", "EndHighlands", "EndBarrens"},
|
||||
y_min = vl_biomes.end_min + 64,
|
||||
y_max = vl_biomes.end_min + 80,
|
||||
|
||||
noise_params = {
|
||||
offset = vl_biomes.end_min + 72,
|
||||
scale = -3,
|
||||
spread = vector.new(84, 84, 84),
|
||||
seed = mg_seed + 999,
|
||||
octaves = 4,
|
||||
persist = 0.8,
|
||||
},
|
||||
|
||||
np_stratum_thickness = {
|
||||
offset = -4,
|
||||
scale = 10,
|
||||
spread = vector.new(84, 84, 84),
|
||||
seed = mg_seed + 999,
|
||||
octaves = 4,
|
||||
persist = 0.8,
|
||||
},
|
||||
clust_scarcity = 1,
|
||||
})
|
||||
minetest.register_ore({
|
||||
ore_type = "stratum",
|
||||
ore = "mcl_end:end_stone",
|
||||
wherein = end_wherein,
|
||||
biomes = {"End", "EndMidlands", "EndHighlands", "EndBarrens"},
|
||||
y_min = vl_biomes.end_min + 64,
|
||||
y_max = vl_biomes.end_min + 80,
|
||||
|
||||
noise_params = {
|
||||
offset = vl_biomes.end_min + 70,
|
||||
scale = -2,
|
||||
spread = vector.new(84, 84, 84),
|
||||
seed = mg_seed + 99,
|
||||
octaves = 4,
|
||||
persist = 0.85,
|
||||
},
|
||||
|
||||
np_stratum_thickness = {
|
||||
offset = -3,
|
||||
scale = 5,
|
||||
spread = vector.new(63, 63, 63),
|
||||
seed = mg_seed + 50,
|
||||
octaves = 4,
|
||||
persist = 0.85,
|
||||
},
|
||||
clust_scarcity = 1,
|
||||
})
|
||||
|
||||
-- Chorus plant
|
||||
mcl_mapgen_core.register_decoration({
|
||||
name = "mcl_biomes:chorus",
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_end:end_stone"},
|
||||
flags = "all_floors",
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = -0.012,
|
||||
scale = 0.024,
|
||||
spread = vector.new(100, 100, 100),
|
||||
seed = 257,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
y_min = vl_biomes.end_min,
|
||||
y_max = vl_biomes.end_max,
|
||||
decoration = "mcl_end:chorus_plant",
|
||||
height = 1,
|
||||
height_max = 8,
|
||||
biomes = {"End", "EndMidlands", "EndHighlands", "EndBarrens", "EndSmallIslands"},
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
name = "mcl_biomes:chorus_plant",
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_end:chorus_plant"},
|
||||
flags = "all_floors",
|
||||
sidelen = 16,
|
||||
fill_ratio = 10,
|
||||
--[[noise_params = {
|
||||
offset = -0.012,
|
||||
scale = 0.024,
|
||||
spread = vector.new(100, 100, 100),
|
||||
seed = 257,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},--]]
|
||||
y_min = vl_biomes.end_min,
|
||||
y_max = vl_biomes.end_max,
|
||||
decoration = "mcl_end:chorus_flower",
|
||||
height = 1,
|
||||
biomes = {"End", "EndMidlands", "EndHighlands", "EndBarrens", "EndSmallIslands"},
|
||||
gen_callback = function(t, minp, maxp, blockseed)
|
||||
local pr = PcgRandom(blockseed + mg_seed + 99682)
|
||||
for _, pos in ipairs(t) do
|
||||
local x, y, z = pos.x, pos.y, pos.z
|
||||
if x < -10 or x > 10 or z < -10 or z > 10 then
|
||||
local realpos = vector.new(x, y + 1, z)
|
||||
local node = minetest.get_node(realpos)
|
||||
if node and node.name == "mcl_end:chorus_flower" then
|
||||
mcl_end.grow_chorus_plant(realpos, node, pr)
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
|
@ -0,0 +1,174 @@
|
|||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
-- Forest
|
||||
vl_biomes.register_biome({
|
||||
name = "Forest",
|
||||
node_top = "mcl_core:dirt_with_grass",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 3,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 61,
|
||||
heat_point = 45,
|
||||
_mcl_biome_type = "medium",
|
||||
_mcl_water_temp = "ocean",
|
||||
_mcl_grass_palette_index = 13,
|
||||
_mcl_foliage_palette_index = 7,
|
||||
_mcl_water_palette_index = 0,
|
||||
_mcl_skycolor = "#79A6FF",
|
||||
_beach = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 2,
|
||||
node_filler = "mcl_core:sandstone",
|
||||
depth_filler = 1,
|
||||
y_min = -1,
|
||||
y_max = 0,
|
||||
_mcl_foliage_palette_index = 1,
|
||||
},
|
||||
_ocean = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:sand",
|
||||
depth_filler = 3,
|
||||
y_max = -2,
|
||||
},
|
||||
})
|
||||
|
||||
for i = 1, 4 do
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
noise_params = {
|
||||
offset = 0.000545,
|
||||
scale = 0.0011,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 3 + 5 * i,
|
||||
octaves = 3,
|
||||
persist = 0.66
|
||||
},
|
||||
biomes = {"Forest"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_oak_large_"..i..".mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 7,
|
||||
})
|
||||
end
|
||||
|
||||
-- Small “classic” oak (many biomes)
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.025,
|
||||
scale = 0.0022,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2,
|
||||
octaves = 3,
|
||||
persist = 0.66
|
||||
},
|
||||
biomes = {"Forest"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 7,
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 16,
|
||||
--[[noise_params = {
|
||||
offset = 0.01,
|
||||
scale = 0.00001,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2,
|
||||
octaves = 3,
|
||||
persist = 0.33
|
||||
},]]
|
||||
fill_ratio = 0.00002,
|
||||
biomes = {"Forest"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic_bee_nest.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
spawn_by = "group:flower",
|
||||
priority = 1550,
|
||||
_mcl_foliage_palette_index = 7,
|
||||
})
|
||||
|
||||
-- Rare balloon oak
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.002083,
|
||||
scale = 0.0022,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 3,
|
||||
octaves = 3,
|
||||
persist = 0.6,
|
||||
},
|
||||
biomes = {"Forest"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_oak_balloon.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 7,
|
||||
})
|
||||
|
||||
-- Birch
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.000333,
|
||||
scale = -0.0015,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 11,
|
||||
octaves = 3,
|
||||
persist = 0.66
|
||||
},
|
||||
biomes = {"Forest"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_birch.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
_mcl_foliage_palette_index = 7,
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 16,
|
||||
--[[noise_params = {
|
||||
offset = 0.01,
|
||||
scale = 0.00001,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2,
|
||||
octaves = 3,
|
||||
persist = 0.33
|
||||
},]]--
|
||||
fill_ratio = 0.00002,
|
||||
biomes = {"Forest"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_birch_bee_nest.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
spawn_by = "group:flower",
|
||||
priority = 1550,
|
||||
_mcl_foliage_palette_index = 7,
|
||||
})
|
||||
|
|
@ -0,0 +1,103 @@
|
|||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
-- Flower Forest
|
||||
vl_biomes.register_biome({
|
||||
name = "FlowerForest",
|
||||
node_top = "mcl_core:dirt_with_grass",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 3,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_min = 3,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 44,
|
||||
heat_point = 32,
|
||||
_mcl_biome_type = "medium",
|
||||
_mcl_water_temp = "ocean",
|
||||
_mcl_grass_palette_index = 14,
|
||||
_mcl_foliage_palette_index = 7,
|
||||
_mcl_water_palette_index = 0,
|
||||
_mcl_skycolor = "#79A6FF",
|
||||
_beach = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 2,
|
||||
node_filler = "mcl_core:sandstone",
|
||||
depth_filler = 1,
|
||||
y_min = -2,
|
||||
y_max = 2,
|
||||
_mcl_foliage_palette_index = 1,
|
||||
},
|
||||
_ocean = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:sand",
|
||||
depth_filler = 3,
|
||||
y_max = -3,
|
||||
},
|
||||
})
|
||||
-- Small “classic” oak (many biomes)
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.01,
|
||||
scale = 0.0022,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2,
|
||||
octaves = 3,
|
||||
persist = 0.66
|
||||
},
|
||||
biomes = {"FlowerForest"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 7,
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 16,
|
||||
--[[noise_params = {
|
||||
offset = 0.01,
|
||||
scale = 0.00001,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2,
|
||||
octaves = 3,
|
||||
persist = 0.33
|
||||
},]]--
|
||||
fill_ratio = 0.0002,
|
||||
biomes = {"FlowerForest"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic_bee_nest.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
spawn_by = "group:flower",
|
||||
priority = 1550,
|
||||
_mcl_foliage_palette_index = 7,
|
||||
})
|
||||
|
||||
-- Birch
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.000333,
|
||||
scale = -0.0015,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 11,
|
||||
octaves = 3,
|
||||
persist = 0.66
|
||||
},
|
||||
biomes = {"FlowerForest"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_birch.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
_mcl_foliage_palette_index = 7,
|
||||
})
|
|
@ -0,0 +1,385 @@
|
|||
local modname = minetest.get_current_modname()
|
||||
local modpath = minetest.get_modpath(modname)
|
||||
-- Future biomes API, work in progress
|
||||
vl_biomes = {}
|
||||
|
||||
vl_biomes.overworld_fogcolor = "#C0D8FF"
|
||||
vl_biomes.beach_skycolor = "#78A7FF" -- This is the case for all beach biomes except for the snowy ones! Those beaches will have their own colour instead of this one.
|
||||
vl_biomes.ocean_skycolor = "#7BA4FF" -- This is the case for all ocean biomes except for non-deep frozen oceans! Those oceans will have their own colour instead of this one.
|
||||
|
||||
vl_biomes.nether_skycolor = "#6EB1FF" -- The Nether biomes seemingly don't use the sky colour, despite having this value according to the wiki. The fog colour is used for both sky and fog.
|
||||
|
||||
vl_biomes.end_skycolor = "#000000"
|
||||
vl_biomes.end_fogcolor = "#A080A0" -- The End biomes seemingly don't use the fog colour, despite having this value according to the wiki. The sky colour is used for both sky and fog.
|
||||
|
||||
-- Colors of underwater fog effect, defaults for temperatures
|
||||
-- Swamp and Mangrove Swamp differ
|
||||
local waterfogcolor = { warm = "#43D5EE", lukewarm = "#45ADF2", ocean = "#3F76E4", cold = "#3D57D6", frozen = "#3938C9" }
|
||||
|
||||
vl_biomes.overworld_min = mcl_vars.mg_overworld_min
|
||||
vl_biomes.overworld_max = mcl_vars.mg_overworld_max
|
||||
vl_biomes.nether_min = mcl_vars.mg_nether_min
|
||||
vl_biomes.lava_nether_max = mcl_vars.mg_lava_nether_max
|
||||
vl_biomes.nether_deco_max = mcl_vars.mg_nether_deco_max
|
||||
vl_biomes.nether_max = mcl_vars.mg_nether_max
|
||||
vl_biomes.end_min = mcl_vars.mg_end_min
|
||||
vl_biomes.end_max = mcl_vars.mg_end_max
|
||||
|
||||
vl_biomes.OCEAN_MIN = -15
|
||||
vl_biomes.DEEP_OCEAN_MAX = vl_biomes.OCEAN_MIN - 1
|
||||
vl_biomes.DEEP_OCEAN_MIN = -31
|
||||
|
||||
local mg_name = minetest.get_mapgen_setting("mg_name")
|
||||
local superflat = mg_name == "flat" and minetest.get_mapgen_setting("mcl_superflat_classic") == "true"
|
||||
|
||||
-- Biomes by water temperature, for decorations and structures
|
||||
vl_biomes.by_water_temp = {}
|
||||
vl_biomes.overworld_biomes = {}
|
||||
-- TODO: also add a list of nether and end biomes
|
||||
|
||||
-- Fix the grass color via decoration mechanism,
|
||||
-- by replacing node_top with node_top and param2 set
|
||||
-- TODO: this can be removed when param2 support to biomes is added
|
||||
-- <https://github.com/minetest/minetest/issues/15319>
|
||||
vl_biomes.fix_grass_color = function(def)
|
||||
if (def._mcl_grass_palette_index or 0) == 0 then return end -- not necessary
|
||||
-- for now, only support node_top.
|
||||
local name = def.node_top
|
||||
local ndef = minetest.registered_nodes[name]
|
||||
if ndef and (ndef.groups.grass_palette or 0) ~= 0 and ndef.paramtype2 == "color" then -- no mixed types
|
||||
local param2 = def._mcl_grass_palette_index
|
||||
mcl_mapgen_core.register_decoration({
|
||||
name = "Set "..name.." param2 in "..def.name,
|
||||
priority = 10, -- run early to not modify other decorations
|
||||
deco_type = "simple",
|
||||
place_on = {name},
|
||||
biomes = { def.name },
|
||||
y_min = def.y_min or vl_biomes.overworld_min,
|
||||
y_max = def.y_max or vl_biomes.overworld_max,
|
||||
fill_ratio = 10, -- everything
|
||||
decoration = name,
|
||||
param2 = param2,
|
||||
flags = "force_placement",
|
||||
place_offset_y = -1, -- replace the node itself
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
-- Register a biome
|
||||
-- This API has a few extensions over minetest.register_biome:
|
||||
--
|
||||
-- - _mcl_skycolor affects sky color
|
||||
-- - _mcl_waterfogcolor affects sky color depending on weather
|
||||
-- - _mcl_biome_type = "snowy", "cold", "medium" or "hot" affects weather
|
||||
-- - _mcl_foliage_palette_index affects tree colors
|
||||
-- - _mcl_grass_palette_index affects grass color
|
||||
-- - _mcl_water_palette_index affects water color
|
||||
-- - some default values
|
||||
-- - subbiomes that inherit from defaults or their parents
|
||||
--
|
||||
-- TODO: add a "_mcl_world" parameter to set defaults for y_min, y_max, and ensure bounds?
|
||||
vl_biomes.register_biome = function(def)
|
||||
local is_overworld = (def.y_min or def.min_pos.y) >= vl_biomes.overworld_min - 5 and (def.y_max or def.max_pos.y) <= vl_biomes.overworld_max + 5
|
||||
if is_overworld then
|
||||
-- some defaults:
|
||||
if def._mcl_fogcolor == nil then def._mcl_fogcolor = vl_biomes.overworld_fogcolor end
|
||||
if def._beach and def._beach._mcl_skycolor == nil then def._beach._mcl_skycolor = vl_biomes.beach_skycolor end
|
||||
if def._ocean then
|
||||
local odef = def._ocean
|
||||
if odef._mcl_skycolor == nil then odef._mcl_skycolor = vl_biomes.ocean_skycolor end
|
||||
if odef._mcl_water_temp == nil and def._mcl_water_temp then odef._mcl_water_temp = def._mcl_water_temp end
|
||||
if odef._mcl_water_temp == nil or odef._mcl_water_temp == "default" then odef._mcl_water_temp = "ocean" end
|
||||
if odef._mcl_waterfogcolor == nil then odef._mcl_waterfogcolor = waterfogcolor[odef._mcl_water_temp] end
|
||||
if odef.y_min == nil and not odef.min_pos then odef.y_min = vl_biomes.OCEAN_MIN end
|
||||
if odef.y_max == nil and not odef.max_pos then odef.y_max = 0 end
|
||||
if odef._mcl_foliage_palette_index == nil then odef._mcl_foliage_palette_index = 0 end -- no param2 updates
|
||||
end
|
||||
-- add deep ocean automatically
|
||||
if def._deep_ocean == nil then
|
||||
-- TODO: y_min, y_max only if not min_pos, max_pos
|
||||
def._deep_ocean = {
|
||||
y_min = vl_biomes.DEEP_OCEAN_MIN,
|
||||
y_max = vl_biomes.DEEP_OCEAN_MAX,
|
||||
node_top = def._ocean.node_top or def.node_top,
|
||||
depth_top = 2,
|
||||
node_filler = def._ocean.node_filler or def.node_filler,
|
||||
depth_filler = 3,
|
||||
node_riverbed = def._ocean.node_riverbed or def.node_riverbed,
|
||||
depth_riverbed = 2,
|
||||
vertical_blend = 5,
|
||||
_mcl_foliage_palette_index = 0, -- to avoid running the foliage fix
|
||||
_mcl_skycolor = vl_biomes.ocean_skycolor,
|
||||
}
|
||||
end
|
||||
-- Underground biomes are used to identify the underground and to prevent nodes from the surface
|
||||
-- (sand, dirt) from leaking into the underground.
|
||||
if def._underground == nil then
|
||||
-- TODO: y_min, y_max only if not min_pos, max_pos
|
||||
def._underground = {
|
||||
node_top = def._ocean.node_top or def.node_top,
|
||||
depth_top = 2,
|
||||
node_filler = def._ocean.node_filler or def.node_filler,
|
||||
depth_filler = 3,
|
||||
node_riverbed = def._ocean.node_riverbed or def.node_riverbed,
|
||||
depth_riverbed = 2,
|
||||
y_min = vl_biomes.overworld_min,
|
||||
y_max = vl_biomes.DEEP_OCEAN_MIN - 1,
|
||||
}
|
||||
end
|
||||
end
|
||||
-- subbiomes
|
||||
local subbiomes = {}
|
||||
for k, sdef in pairs(def) do
|
||||
-- currently, all _tables are subbiomes
|
||||
-- TODO: more precise check, or use _subbiomes = {}?
|
||||
if k:sub(1,1) == "_" and type(sdef) == "table" then
|
||||
-- subbiome name
|
||||
if not sdef.name then sdef.name = def.name .. k end
|
||||
-- merge from parent
|
||||
for k2, v2 in pairs(def) do
|
||||
if type(v2) ~= "table" and sdef[k2] == nil then
|
||||
sdef[k2] = v2
|
||||
end
|
||||
end
|
||||
table.insert(subbiomes, sdef)
|
||||
def[k] = nil -- remove
|
||||
end
|
||||
-- build a biome map based on water temperature
|
||||
if k == "_ocean" and sdef._mcl_water_temp then
|
||||
local temp = sdef._mcl_water_temp
|
||||
if vl_biomes.by_water_temp[temp] == nil then vl_biomes.by_water_temp[temp] = {} end
|
||||
table.insert(vl_biomes.by_water_temp[temp], sdef.name)
|
||||
end
|
||||
end
|
||||
minetest.register_biome(def)
|
||||
if is_overworld and def.y_max > 0 then table.insert(vl_biomes.overworld_biomes, def.name) end
|
||||
vl_biomes.fix_grass_color(def)
|
||||
-- minetest.log("action", "registering biome "..tostring(def.name))
|
||||
for _, sdef in ipairs(subbiomes) do
|
||||
-- minetest.log("action", "registering subbiome "..tostring(sdef.name))
|
||||
minetest.register_biome(sdef)
|
||||
if is_overworld and sdef.y_max > 0 then -- omit _ocean
|
||||
table.insert(vl_biomes.overworld_biomes, sdef.name)
|
||||
end
|
||||
vl_biomes.fix_grass_color(sdef) -- usually a no-op
|
||||
end
|
||||
end
|
||||
|
||||
-- helper for spruce decorations
|
||||
function vl_biomes.register_spruce_decoration(seed, offset, sprucename, biomes, y_min)
|
||||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block", "mcl_core:dirt", "mcl_core:podzol"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = offset,
|
||||
scale = 0.0006,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = seed,
|
||||
octaves = 3,
|
||||
persist = 0.66
|
||||
},
|
||||
biomes = biomes,
|
||||
y_min = y_min or 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/" .. sprucename,
|
||||
flags = "place_center_x, place_center_z",
|
||||
-- not supported by spruceleaves: _mcl_foliage_palette_index = foliage_color,
|
||||
})
|
||||
end
|
||||
|
||||
--
|
||||
-- Detect mapgen to select functions
|
||||
--
|
||||
if mg_name == "singlenode" then
|
||||
-- nothing in singlenode
|
||||
elseif superflat then
|
||||
-- Implementation of Minecraft's Superflat mapgen, classic style:
|
||||
-- * Perfectly flat land, 1 grass biome, no decorations, no caves
|
||||
-- * 4 layers, from top to bottom: grass block, dirt, dirt, bedrock
|
||||
minetest.clear_registered_biomes()
|
||||
minetest.clear_registered_decorations()
|
||||
minetest.clear_registered_schematics()
|
||||
-- Classic Superflat: bedrock (not part of biome), 2 dirt, 1 grass block
|
||||
minetest.register_biome({
|
||||
name = "flat",
|
||||
node_top = "mcl_core:dirt_with_grass",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 3,
|
||||
node_stone = "mcl_core:dirt",
|
||||
y_min = mcl_vars.mg_overworld_min - 512,
|
||||
y_max = mcl_vars.mg_overworld_max,
|
||||
humidity_point = 50,
|
||||
heat_point = 50,
|
||||
_mcl_biome_type = "medium",
|
||||
_mcl_grass_palette_index = 0,
|
||||
_mcl_foliage_palette_index = 1,
|
||||
_mcl_water_palette_index = 0,
|
||||
_mcl_watertemp = "ocean",
|
||||
_mcl_waterfogcolor = waterfogcolor["ocean"],
|
||||
_mcl_skycolor = "#78A7FF",
|
||||
_mcl_fogcolor = vl_biomes.overworld_fogcolor
|
||||
})
|
||||
elseif mg_name ~= "v6" then
|
||||
-- OVERWORLD biomes
|
||||
--[[ These biomes try to resemble MC. This means especially the floor cover and the type of
|
||||
plants and structures (shapes might differ). The terrain itself will be of course different and
|
||||
depends on the mapgen.
|
||||
Important: MC also takes the terrain into account while MT biomes so far don't care about the
|
||||
terrain at all (except height).
|
||||
MC has many “M” and “Hills” variants, most of which only differ in terrain compared to their original
|
||||
counterpart.
|
||||
In MT, any biome can occour in any terrain, so these variants are implied and are therefore
|
||||
not explicitly implmented in MCL2. “M” variants are only included if they have another unique feature,
|
||||
such as a different land cover.
|
||||
In MCL2, the MC Overworld biomes are split in multiple more parts (stacked by height):
|
||||
* The main part, this represents the land. It begins at around sea level and usually goes all the way up
|
||||
* _ocean: For the area covered by ocean water. The y_max may vary for various beach effects.
|
||||
Has sand or dirt as floor.
|
||||
* _deep_ocean: Like _ocean, but deeper and has gravel as floor
|
||||
* _underground:
|
||||
* Other modifiers: Some complex biomes require more layers to improve the landscape.
|
||||
|
||||
The following naming conventions apply:
|
||||
* The land biome name is equal to the MC biome name, as of Minecraft 1.11 (in camel case)
|
||||
* Height modifiers and sub-biomes are appended with underscores and in lowercase. Example: “_ocean”
|
||||
* Non-MC biomes are written in lowercase
|
||||
* MC dimension biomes are named after their MC dimension
|
||||
|
||||
Intentionally missing biomes:
|
||||
* River (generated by valleys and v7)
|
||||
* Frozen River (generated by valleys and v7)
|
||||
* Hills biomes (shape only)
|
||||
* Plateau (shape only)
|
||||
* Plateau M (shape only)
|
||||
* Cold Taiga M (mountain only)
|
||||
* Taiga M (mountain only)
|
||||
* Roofed Forest M (mountain only)
|
||||
* Swampland M (mountain only)
|
||||
* Extreme Hills Edge (unused in MC)
|
||||
|
||||
TODO:
|
||||
* Better beaches
|
||||
* Improve Extreme Hills M
|
||||
* Desert M (desert lakes - removed?)
|
||||
]]
|
||||
|
||||
dofile(modpath.."/plains.lua")
|
||||
dofile(modpath.."/plains_sunflower.lua")
|
||||
dofile(modpath.."/savanna.lua")
|
||||
dofile(modpath.."/savanna_windswept.lua")
|
||||
dofile(modpath.."/desert.lua")
|
||||
-- missing: Meadow, similar to Plains?
|
||||
|
||||
dofile(modpath.."/forest.lua")
|
||||
dofile(modpath.."/forest_flower.lua")
|
||||
dofile(modpath.."/birchforest.lua")
|
||||
dofile(modpath.."/birchforest_old.lua")
|
||||
dofile(modpath.."/taiga.lua")
|
||||
dofile(modpath.."/taiga_old_pine.lua")
|
||||
dofile(modpath.."/taiga_old_spruce.lua")
|
||||
dofile(modpath.."/dark_forest.lua")
|
||||
-- missing: Cherry Grove
|
||||
|
||||
-- missing: Frozen Peaks -- just a matter of shape?
|
||||
-- missing: Grove, but how does it differ from snowy taiga?
|
||||
-- missing: Jagged Peaks -- just a matter of shape?
|
||||
dofile(modpath.."/snowy_taiga.lua")
|
||||
dofile(modpath.."/snowy_plains.lua")
|
||||
dofile(modpath.."/snowy_plains_spikes.lua")
|
||||
-- missing: Snowy Slopes -- just a matter of shape?
|
||||
|
||||
dofile(modpath.."/badlands.lua")
|
||||
dofile(modpath.."/badlands_eroded.lua")
|
||||
dofile(modpath.."/badlands_wooded.lua")
|
||||
dofile(modpath.."/badlands_wooded_mod.lua")
|
||||
dofile(modpath.."/badlands-strata.lua") -- not a biome, but shared code that needs to be last
|
||||
|
||||
dofile(modpath.."/jungle.lua")
|
||||
dofile(modpath.."/jungle_edge.lua")
|
||||
dofile(modpath.."/jungle_modified.lua")
|
||||
dofile(modpath.."/jungle_modified_edge.lua")
|
||||
|
||||
dofile(modpath.."/bamboojungle.lua")
|
||||
dofile(modpath.."/bamboojungle_edge.lua")
|
||||
dofile(modpath.."/bamboojungle_modified.lua")
|
||||
dofile(modpath.."/bamboojungle_modified_edge.lua")
|
||||
|
||||
dofile(modpath.."/swampland.lua")
|
||||
dofile(modpath.."/mangroveswamp.lua")
|
||||
dofile(modpath.."/mushroomisland.lua")
|
||||
|
||||
dofile(modpath.."/stonebeach.lua")
|
||||
dofile(modpath.."/windswepthills.lua")
|
||||
dofile(modpath.."/windswepthills_forest.lua")
|
||||
dofile(modpath.."/windswepthills_gravelly.lua")
|
||||
-- missing: Stony Peaks -- just a matter of shape?
|
||||
|
||||
-- missing: Deep Dark
|
||||
-- missing: Dripstone Caves
|
||||
-- missing: Lush Caves
|
||||
|
||||
-- Additional decorations
|
||||
dofile(modpath.."/deco/bamboo.lua")
|
||||
dofile(modpath.."/deco/cacti.lua")
|
||||
dofile(modpath.."/deco/corals.lua")
|
||||
dofile(modpath.."/deco/fern.lua")
|
||||
dofile(modpath.."/deco/flowers.lua")
|
||||
dofile(modpath.."/deco/mushrooms.lua")
|
||||
dofile(modpath.."/deco/pumpkin.lua")
|
||||
dofile(modpath.."/deco/reeds.lua")
|
||||
dofile(modpath.."/deco/seagrass_kelp.lua")
|
||||
dofile(modpath.."/deco/snowy_dirt.lua")
|
||||
dofile(modpath.."/deco/sweet_berry.lua")
|
||||
dofile(modpath.."/deco/tallgrass.lua")
|
||||
end
|
||||
-- FIXME: add back some v6 support?
|
||||
|
||||
-- Non-overworld in everything except singlenode
|
||||
if mg_name ~= "singlenode" then
|
||||
--[[ THE NETHER ]]
|
||||
-- the following decoration is a hack to cover exposed bedrock in netherrack - be careful
|
||||
-- not to put any ceiling decorations in a way that would apply to this
|
||||
-- (they would get generated regardless of biome)
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_core:bedrock"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 10,
|
||||
y_min = vl_biomes.lava_nether_max,
|
||||
y_max = vl_biomes.nether_max + 15,
|
||||
height = 6,
|
||||
max_height = 10,
|
||||
decoration = "mcl_nether:netherrack",
|
||||
flags = "all_ceilings",
|
||||
param2 = 0,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_core:bedrock"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 10,
|
||||
y_min = vl_biomes.nether_min - 10,
|
||||
y_max = vl_biomes.lava_nether_max,
|
||||
height = 7,
|
||||
max_height = 14,
|
||||
decoration = "mcl_nether:netherrack",
|
||||
flags = "all_floors,force_placement",
|
||||
param2 = 0,
|
||||
})
|
||||
|
||||
-- Nether biomes
|
||||
dofile(modpath.."/nether/netherwastes.lua")
|
||||
dofile(modpath.."/nether/soulsandvalley.lua")
|
||||
dofile(modpath.."/nether/crimsonforest.lua")
|
||||
dofile(modpath.."/nether/warpedforest.lua")
|
||||
dofile(modpath.."/nether/basaltdelta.lua")
|
||||
-- Sahred ores across nether biomes
|
||||
dofile(modpath.."/nether/ores.lua")
|
||||
|
||||
--[[ THE END ]]
|
||||
dofile(modpath.."/end/end.lua")
|
||||
end
|
||||
|
|
@ -0,0 +1,181 @@
|
|||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
|
||||
-- Jungle
|
||||
vl_biomes.register_biome({
|
||||
name = "Jungle",
|
||||
node_top = "mcl_core:dirt_with_grass",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 3,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 88,
|
||||
heat_point = 81,
|
||||
_mcl_biome_type = "medium",
|
||||
_mcl_water_temp = "lukewarm",
|
||||
_mcl_grass_palette_index = 24,
|
||||
_mcl_foliage_palette_index = 12,
|
||||
_mcl_water_palette_index = 2,
|
||||
_mcl_skycolor = "#77A8FF",
|
||||
_shore = {
|
||||
node_top = "mcl_core:dirt",
|
||||
depth_top = 1,
|
||||
y_min = -2,
|
||||
y_max = 0,
|
||||
},
|
||||
_ocean = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:sand",
|
||||
depth_filler = 3,
|
||||
y_max = -3,
|
||||
vertical_blend = 1,
|
||||
},
|
||||
})
|
||||
|
||||
-- Small “classic” oak (many biomes)
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.004,
|
||||
biomes = {"Jungle"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 12,
|
||||
})
|
||||
|
||||
-- Huge jungle tree (4 variants)
|
||||
for i = 1, 4 do
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.0008,
|
||||
biomes = {"Jungle"},
|
||||
y_min = 4,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree_huge_"..i..".mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 12,
|
||||
})
|
||||
end
|
||||
|
||||
-- Common jungle tree
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.025,
|
||||
biomes = {"Jungle"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 12,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.015,
|
||||
biomes = {"Jungle"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree_2.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 12,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.005,
|
||||
biomes = {"Jungle"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree_3.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 12,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.005,
|
||||
biomes = {"Jungle"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree_4.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 12,
|
||||
})
|
||||
-- Jungle bush
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
noise_params = {
|
||||
offset = 0.0196,
|
||||
scale = 0.015,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2930,
|
||||
octaves = 4,
|
||||
persist = 0.6,
|
||||
},
|
||||
biomes = {"Jungle"},
|
||||
y_min = 3,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_bush_oak_leaves.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
_mcl_foliage_palette_index = 12,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
noise_params = {
|
||||
offset = 0.0196,
|
||||
scale = 0.005,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2930,
|
||||
octaves = 4,
|
||||
persist = 0.6,
|
||||
},
|
||||
biomes = {"Jungle" },
|
||||
y_min = 3,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_bush_oak_leaves_2.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
_mcl_foliage_palette_index = 12,
|
||||
})
|
||||
|
||||
-- Melon
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"group:grass_block_no_snow"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = -0.01,
|
||||
scale = 0.006,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 333,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_farming:melon",
|
||||
biomes = {"Jungle"},
|
||||
})
|
||||
|
|
@ -0,0 +1,96 @@
|
|||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
|
||||
-- Jungle Edge aka Sparse Jungle
|
||||
vl_biomes.register_biome({
|
||||
name = "JungleEdge",
|
||||
node_top = "mcl_core:dirt_with_grass",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 2,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 88,
|
||||
heat_point = 76,
|
||||
_mcl_biome_type = "medium",
|
||||
_mcl_water_temp = "lukewarm",
|
||||
_mcl_grass_palette_index = 26,
|
||||
_mcl_foliage_palette_index = 13,
|
||||
_mcl_water_palette_index = 2,
|
||||
_mcl_skycolor = "#77A8FF",
|
||||
_ocean = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:sand",
|
||||
depth_filler = 2,
|
||||
},
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.0004,
|
||||
biomes = {"JungleEdge"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 13,
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.0045,
|
||||
biomes = {"JungleEdge"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 13,
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
noise_params = {
|
||||
offset = 0.0085,
|
||||
scale = 0.025,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2930,
|
||||
octaves = 4,
|
||||
persist = 0.6,
|
||||
},
|
||||
biomes = {"JungleEdge"},
|
||||
y_min = 3,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_bush_oak_leaves.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
_mcl_foliage_palette_index = 13,
|
||||
})
|
||||
|
||||
-- Melon
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"group:grass_block_no_snow"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = -0.005,
|
||||
scale = 0.006,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 333,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_farming:melon",
|
||||
biomes = {"JungleEdge"},
|
||||
})
|
||||
|
|
@ -0,0 +1,119 @@
|
|||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
|
||||
-- Jungle M aka modified Jungle
|
||||
-- Like Jungle but with even more dense vegetation
|
||||
vl_biomes.register_biome({
|
||||
name = "JungleM",
|
||||
node_top = "mcl_core:dirt_with_grass",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 3,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 92,
|
||||
heat_point = 81,
|
||||
_mcl_biome_type = "medium",
|
||||
_mcl_water_temp = "lukewarm",
|
||||
_mcl_grass_palette_index = 25,
|
||||
_mcl_foliage_palette_index = 12,
|
||||
_mcl_water_palette_index = 2,
|
||||
_mcl_skycolor = "#77A8FF",
|
||||
_shore = {
|
||||
node_top = "mcl_core:dirt",
|
||||
depth_top = 1,
|
||||
y_min = -2,
|
||||
y_max = 0,
|
||||
},
|
||||
_ocean = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:sand",
|
||||
depth_filler = 3,
|
||||
y_max = -3,
|
||||
vertical_blend = 1,
|
||||
},
|
||||
})
|
||||
-- Small “classic” oak (many biomes)
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.004,
|
||||
biomes = {"JungleM"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 12,
|
||||
})
|
||||
|
||||
-- Huge jungle tree (4 variants)
|
||||
for i = 1, 4 do
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.003,
|
||||
biomes = {"JungleM"},
|
||||
y_min = 4,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree_huge_"..i..".mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 12,
|
||||
})
|
||||
end
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.09,
|
||||
biomes = {"JungleM"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree_2.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 12,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
noise_params = {
|
||||
offset = 0.05,
|
||||
scale = 0.025,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2930,
|
||||
octaves = 4,
|
||||
persist = 0.6,
|
||||
},
|
||||
biomes = {"JungleM"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_bush_oak_leaves.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
_mcl_foliage_palette_index = 12,
|
||||
})
|
||||
-- Melon
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"group:grass_block_no_snow"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.0,
|
||||
scale = 0.006,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 333,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_farming:melon",
|
||||
biomes = {"JungleM"},
|
||||
})
|
|
@ -0,0 +1,116 @@
|
|||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
|
||||
-- Jungle Edge M (very rare).
|
||||
-- Almost identical to Jungle Edge. Has deeper dirt. Melons spawn here a lot.
|
||||
-- This biome occours directly between Jungle M and Jungle Edge but also has a small border to Jungle.
|
||||
-- This biome is very small in general.
|
||||
vl_biomes.register_biome({
|
||||
name = "JungleEdgeM",
|
||||
node_top = "mcl_core:dirt_with_grass",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 4,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 90,
|
||||
heat_point = 79,
|
||||
_mcl_biome_type = "medium",
|
||||
_mcl_water_temp = "lukewarm",
|
||||
_mcl_grass_palette_index = 27,
|
||||
_mcl_foliage_palette_index = 13,
|
||||
_mcl_water_palette_index = 2,
|
||||
_mcl_skycolor = "#77A8FF",
|
||||
_ocean = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:sand",
|
||||
depth_filler = 4,
|
||||
},
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.0004,
|
||||
biomes = {"JungleEdgeM"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 13,
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.0045,
|
||||
biomes = {"JungleEdgeM"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_tree.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 13,
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
noise_params = {
|
||||
offset = 0.0085,
|
||||
scale = 0.025,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2930,
|
||||
octaves = 4,
|
||||
persist = 0.6,
|
||||
},
|
||||
biomes = {"JungleEdgeM"},
|
||||
y_min = 3,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_jungle_bush_oak_leaves.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
_mcl_foliage_palette_index = 13,
|
||||
})
|
||||
|
||||
-- Lots of melons in Jungle Edge M
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"group:grass_block_no_snow"},
|
||||
sidelen = 80,
|
||||
noise_params = {
|
||||
offset = 0.013,
|
||||
scale = 0.006,
|
||||
spread = vector.new(125, 125, 125),
|
||||
seed = 333,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_farming:melon",
|
||||
biomes = {"JungleEdgeM"},
|
||||
})
|
||||
|
||||
-- Melon
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"group:grass_block_no_snow"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = -0.005,
|
||||
scale = 0.006,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 333,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_farming:melon",
|
||||
biomes = {"JungleEdgeM"},
|
||||
})
|
|
@ -0,0 +1,213 @@
|
|||
-- TODO: move to mcl_mangrove module?
|
||||
local mod_mcl_mangrove = minetest.get_modpath("mcl_mangrove")
|
||||
local mg_seed = minetest.get_mapgen_setting("seed")
|
||||
|
||||
-- Mangrove swamp
|
||||
vl_biomes.register_biome({
|
||||
name = "MangroveSwamp",
|
||||
node_top = "mcl_mud:mud",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_mud:mud",
|
||||
depth_filler = 3,
|
||||
node_riverbed = "mcl_core:dirt",
|
||||
depth_riverbed = 2,
|
||||
y_min = -5, -- was 1, with _shore below
|
||||
y_max = 27, -- Note: Limited in height!
|
||||
humidity_point = 95,
|
||||
heat_point = 94,
|
||||
_mcl_biome_type = "hot",
|
||||
_mcl_water_temp = "warm",
|
||||
_mcl_grass_palette_index = 27,
|
||||
_mcl_foliage_palette_index = 6,
|
||||
_mcl_water_palette_index = 7,
|
||||
_mcl_waterfogcolor = "#3A7A6A",
|
||||
_mcl_skycolor = "#78A7FF",
|
||||
-- removed, as it did not differ _shore = { y_min = -5, y_max = 0, },
|
||||
_ocean = {
|
||||
node_top = "mcl_core:dirt",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 3,
|
||||
node_riverbed = "mcl_core:gravel",
|
||||
depth_riverbed = 2,
|
||||
y_max = -6,
|
||||
vertical_blend = 1,
|
||||
},
|
||||
})
|
||||
|
||||
--- Grow mangrove roots after generation
|
||||
local function mangrove_root_gennotify(t, minp, maxp, blockseed)
|
||||
for _, pos in ipairs(t) do
|
||||
local nn = minetest.find_nodes_in_area(vector.offset(pos, -8, -1, -8), vector.offset(pos, 8, 0, 8), {"mcl_mangrove:mangrove_roots"})
|
||||
if nn and #nn > 0 then
|
||||
local pr = PcgRandom(blockseed + mg_seed + 38327)
|
||||
for _, v in pairs(nn) do
|
||||
local l = pr:next(2, 16)
|
||||
local n = minetest.get_node(vector.offset(v, 0, -1, 0)).name
|
||||
if minetest.get_item_group(n, "water") > 0 then
|
||||
local wl = "mcl_mangrove:water_logged_roots"
|
||||
if n:find("river") then wl = "mcl_mangrove:river_water_logged_roots" end
|
||||
minetest.bulk_swap_node(minetest.find_nodes_in_area(v, vector.offset(v, 0, -l, 0), {"group:water"}), {name = wl})
|
||||
elseif n == "mcl_mud:mud" then
|
||||
minetest.bulk_swap_node(minetest.find_nodes_in_area(v, vector.offset(v, 0, -l, 0), {"mcl_mud:mud"}), {name = "mcl_mangrove:mangrove_mud_roots"})
|
||||
elseif n == "air" then
|
||||
minetest.bulk_swap_node(minetest.find_nodes_in_area(v, vector.offset(v, 0, -l, 0), {"air"}), {name = "mcl_mangrove:mangrove_roots"})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
name = "mcl_biomes:mangrove_tree_1",
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_mud:mud"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.0065,
|
||||
biomes = {"MangroveSwamp", "MangroveSwamp_shore"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_mangrove .. "/schematics/mcl_mangrove_tree_1.mts",
|
||||
flags = "place_center_x, place_center_z, force_placement",
|
||||
rotation = "random",
|
||||
gen_callback = mangrove_root_gennotify,
|
||||
_mcl_foliage_palette_index = 6,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
name = "mcl_biomes:mangrove_tree_2",
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_mud:mud"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.0045,
|
||||
biomes = {"MangroveSwamp", "MangroveSwamp_shore"},
|
||||
y_min = -1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_mangrove .. "/schematics/mcl_mangrove_tree_2.mts",
|
||||
flags = "place_center_x, place_center_z, force_placement",
|
||||
rotation = "random",
|
||||
gen_callback = mangrove_root_gennotify,
|
||||
_mcl_foliage_palette_index = 6,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
name = "mcl_biomes:mangrove_tree_3",
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_mud:mud"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.023,
|
||||
biomes = {"MangroveSwamp", "MangroveSwamp_shore"},
|
||||
y_min = -1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_mangrove .. "/schematics/mcl_mangrove_tree_3.mts",
|
||||
flags = "place_center_x, place_center_z, force_placement",
|
||||
rotation = "random",
|
||||
gen_callback = mangrove_root_gennotify,
|
||||
_mcl_foliage_palette_index = 6,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
name = "mcl_biomes:mangrove_tree_4",
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_mud:mud"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.023,
|
||||
biomes = {"MangroveSwamp", "MangroveSwamp_shore"},
|
||||
y_min = -1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_mangrove .. "/schematics/mcl_mangrove_tree_4.mts",
|
||||
flags = "place_center_x, place_center_z, force_placement",
|
||||
rotation = "random",
|
||||
gen_callback = mangrove_root_gennotify,
|
||||
_mcl_foliage_palette_index = 6,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
name = "mcl_biomes:mangrove_tree_5",
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_mud:mud"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.023,
|
||||
biomes = {"MangroveSwamp", "MangroveSwamp_shore"},
|
||||
y_min = -1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_mangrove .. "/schematics/mcl_mangrove_tree_5.mts",
|
||||
flags = "place_center_x, place_center_z, force_placement",
|
||||
rotation = "random",
|
||||
gen_callback = mangrove_root_gennotify,
|
||||
_mcl_foliage_palette_index = 6,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
name = "mcl_biomes:mangrove_bee_nest",
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_mud:mud"},
|
||||
sidelen = 80,
|
||||
--[[noise_params = {
|
||||
offset = 0.01,
|
||||
scale = 0.00001,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2,
|
||||
octaves = 3,
|
||||
persist = 0.33
|
||||
},]]--
|
||||
fill_ratio = 0.0005,
|
||||
biomes = {"MangroveSwamp"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_mangrove .. "/schematics/mcl_mangrove_bee_nest.mts",
|
||||
flags = "place_center_x, place_center_z, force_placement",
|
||||
rotation = "random",
|
||||
spawn_by = "group:flower",
|
||||
priority = 1550,
|
||||
gen_callback = mangrove_root_gennotify,
|
||||
_mcl_foliage_palette_index = 6,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_mud:mud"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.045,
|
||||
biomes = {"MangroveSwamp", "MangroveSwamp_shore"},
|
||||
y_min = 0,
|
||||
y_max = 0,
|
||||
decoration = "mcl_mangrove:water_logged_roots",
|
||||
flags = "place_center_x, place_center_z, force_placement",
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_mangrove:mangrove_roots"},
|
||||
spawn_by = {"group:water"},
|
||||
num_spawn_by = 2,
|
||||
sidelen = 80,
|
||||
fill_ratio = 10,
|
||||
biomes = {"MangroveSwamp", "MangroveSwamp_shore"},
|
||||
y_min = 0,
|
||||
y_max = 0,
|
||||
decoration = "mcl_mangrove:water_logged_roots",
|
||||
flags = "place_center_x, place_center_z, force_placement, all_ceilings",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_mud:mud"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.045,
|
||||
biomes = {"MangroveSwamp", "MangroveSwamp_shore"},
|
||||
place_offset_y = -1,
|
||||
decoration = "mcl_mangrove:mangrove_mud_roots",
|
||||
flags = "place_center_x, place_center_z, force_placement",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_mud:mud"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.008,
|
||||
biomes = {"MangroveSwamp", "MangroveSwamp_shore"},
|
||||
decoration = "mcl_core:deadbush",
|
||||
flags = "place_center_x, place_center_z",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_core:water_source"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.035,
|
||||
biomes = {"MangroveSwamp", "MangroveSwamp_shore"},
|
||||
decoration = "mcl_flowers:waterlily",
|
||||
flags = "place_center_x, place_center_z, liquid_surface",
|
||||
})
|
|
@ -1,4 +1,4 @@
|
|||
name = mcl_biomes
|
||||
author = maikerumine
|
||||
name = vl_biomes
|
||||
author = maikerumine,wuzzy,kno10
|
||||
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
|
|
@ -0,0 +1,107 @@
|
|||
local mod_mcl_mushrooms = minetest.get_modpath("mcl_mushrooms")
|
||||
-- Mushroom Island / Mushroom Island Shore (rare) aka Mushroom Fields
|
||||
-- Not neccessarily an island at all, only named after Minecraft's biome
|
||||
vl_biomes.register_biome({
|
||||
name = "MushroomIsland",
|
||||
node_top = "mcl_core:mycelium",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 3,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_min = 1, -- was 4, with Shore below
|
||||
y_max = 20, -- Note: Limited in height!
|
||||
vertical_blend = 1,
|
||||
humidity_point = 106,
|
||||
heat_point = 50,
|
||||
_mcl_biome_type = "medium",
|
||||
_mcl_water_temp = "ocean",
|
||||
_mcl_grass_palette_index = 29,
|
||||
_mcl_foliage_palette_index = 17,
|
||||
_mcl_water_palette_index = 0,
|
||||
_mcl_skycolor = "#77A8FF",
|
||||
-- _shore = { name = "MushroomIslandShore", y_min = 1, y_max = 3, },
|
||||
_ocean = {
|
||||
node_top = "mcl_core:gravel",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:gravel",
|
||||
depth_filler = 3,
|
||||
},
|
||||
})
|
||||
|
||||
local ratio_mushroom_mycelium = 0.002
|
||||
local ratio_mushroom_mycelium_huge = ratio_mushroom_mycelium * (11 / 12)
|
||||
local ratio_mushroom_mycelium_giant = ratio_mushroom_mycelium * (1 / 12)
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_core:mycelium"},
|
||||
sidelen = 80,
|
||||
fill_ratio = ratio_mushroom_mycelium_huge,
|
||||
biomes = {"MushroomIsland"}, --"MushroomIslandShore"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_mushrooms .. "/schematics/mcl_mushrooms_huge_brown.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "0",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_core:mycelium"},
|
||||
sidelen = 80,
|
||||
fill_ratio = ratio_mushroom_mycelium_giant,
|
||||
biomes = {"MushroomIsland"}, --"MushroomIslandShore"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_mushrooms .. "/schematics/mcl_mushrooms_giant_brown.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "0",
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_core:mycelium"},
|
||||
sidelen = 80,
|
||||
fill_ratio = ratio_mushroom_mycelium_huge,
|
||||
biomes = {"MushroomIsland"}, --"MushroomIslandShore"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_mushrooms .. "/schematics/mcl_mushrooms_huge_red.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "0",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_core:mycelium"},
|
||||
sidelen = 80,
|
||||
fill_ratio = ratio_mushroom_mycelium_giant,
|
||||
biomes = {"MushroomIsland"}, --"MushroomIslandShore"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_mushrooms .. "/schematics/mcl_mushrooms_giant_red.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "0",
|
||||
})
|
||||
|
||||
-- Mushrooms in mushroom biome
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_core:mycelium"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.009,
|
||||
biomes = {"MushroomIsland", "MushroomIslandShore"},
|
||||
noise_threshold = 2.0,
|
||||
y_min = vl_biomes.overworld_min,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_mushrooms:mushroom_red",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_core:mycelium"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.009,
|
||||
biomes = {"MushroomIsland", "MushroomIslandShore"},
|
||||
y_min = vl_biomes.overworld_min,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_mushrooms:mushroom_brown",
|
||||
})
|
|
@ -0,0 +1,135 @@
|
|||
-- Nether Basalt Delta biome
|
||||
vl_biomes.register_biome({
|
||||
name = "BasaltDelta",
|
||||
node_filler = "mcl_nether:netherrack",
|
||||
node_stone = "mcl_nether:netherrack",
|
||||
node_top = "mcl_blackstone:basalt",
|
||||
node_water = "air",
|
||||
node_river_water = "air",
|
||||
node_cave_liquid = "air",
|
||||
y_min = vl_biomes.nether_min,
|
||||
y_max = vl_biomes.nether_max + 80,
|
||||
heat_point = 27,
|
||||
humidity_point = 80,
|
||||
_mcl_biome_type = "hot",
|
||||
_mcl_grass_palette_index = 17,
|
||||
_mcl_foliage_palette_index = 3,
|
||||
_mcl_water_palette_index = 0,
|
||||
_mcl_waterfogcolor = vl_biomes.default_waterfogcolor,
|
||||
_mcl_skycolor = vl_biomes.nether_skycolor,
|
||||
_mcl_fogcolor = "#685F70"
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_nether:netherrack", "mcl_nether:glowstone", "mcl_blackstone:nether_gold", "mcl_nether:quartz_ore", "mcl_core:gravel", "mcl_nether:soul_sand", "mcl_blackstone:blackstone", "mcl_nether:magma"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 10,
|
||||
biomes = {"BasaltDelta"},
|
||||
y_min = vl_biomes.lava_nether_max,
|
||||
y_max = vl_biomes.nether_deco_max,
|
||||
decoration = "mcl_blackstone:basalt",
|
||||
flags = "all_floors",
|
||||
param2 = 0,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "blob",
|
||||
ore = "mcl_blackstone:blackstone",
|
||||
wherein = {"mcl_nether:netherrack", "mcl_nether:glowstone", "mcl_core:gravel"},
|
||||
clust_scarcity = 100,
|
||||
clust_num_ores = 400,
|
||||
clust_size = 20,
|
||||
biomes = {"BasaltDelta"},
|
||||
y_min = vl_biomes.lava_nether_max,
|
||||
y_max = vl_biomes.nether_deco_max,
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 1,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 12345,
|
||||
octaves = 3,
|
||||
persist = 0.6,
|
||||
lacunarity = 2,
|
||||
flags = "defaults",
|
||||
}
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
decoration = "mcl_blackstone:basalt",
|
||||
place_on = {"mcl_blackstone:basalt", "mcl_nether:netherrack", "mcl_blackstone:blackstone"},
|
||||
sidelen = 80,
|
||||
height_max = 55,
|
||||
noise_params = {
|
||||
offset = -0.0085,
|
||||
scale = 0.002,
|
||||
spread = vector.new(25, 120, 25),
|
||||
seed = 2325,
|
||||
octaves = 5,
|
||||
persist = 2,
|
||||
lacunarity = 3.5,
|
||||
flags = "absvalue"
|
||||
},
|
||||
biomes = {"BasaltDelta"},
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
y_max = vl_biomes.nether_deco_max - 50,
|
||||
flags = "all_floors, all ceilings",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
decoration = "mcl_blackstone:basalt",
|
||||
place_on = {"mcl_blackstone:basalt", "mcl_nether:netherrack", "mcl_blackstone:blackstone"},
|
||||
sidelen = 80,
|
||||
height_max = 15,
|
||||
noise_params = {
|
||||
offset = -0.0085,
|
||||
scale = 0.004,
|
||||
spread = vector.new(25, 120, 25),
|
||||
seed = 235,
|
||||
octaves = 5,
|
||||
persist = 2.5,
|
||||
lacunarity = 3.5,
|
||||
flags = "absvalue"
|
||||
},
|
||||
biomes = {"BasaltDelta"},
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
y_max = vl_biomes.nether_deco_max - 15,
|
||||
flags = "all_floors, all ceilings",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
decoration = "mcl_blackstone:basalt",
|
||||
place_on = {"mcl_blackstone:basalt", "mcl_nether:netherrack", "mcl_blackstone:blackstone"},
|
||||
sidelen = 80,
|
||||
height_max = 3,
|
||||
fill_ratio = 0.4,
|
||||
biomes = {"BasaltDelta"},
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
y_max = vl_biomes.nether_deco_max - 15,
|
||||
flags = "all_floors, all ceilings",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
decoration = "mcl_nether:magma",
|
||||
place_on = {"mcl_blackstone:basalt", "mcl_nether:netherrack", "mcl_blackstone:blackstone"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.082323,
|
||||
biomes = {"BasaltDelta"},
|
||||
place_offset_y = -1,
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
flags = "all_floors, all ceilings",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
decoration = "mcl_nether:nether_lava_source",
|
||||
place_on = {"mcl_blackstone:basalt", "mcl_nether:netherrack", "mcl_blackstone:blackstone"},
|
||||
spawn_by = {"mcl_blackstone:basalt", "mcl_blackstone:blackstone"},
|
||||
num_spawn_by = 14,
|
||||
sidelen = 80,
|
||||
fill_ratio = 4,
|
||||
biomes = {"BasaltDelta"},
|
||||
place_offset_y = -1,
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
y_max = vl_biomes.nether_max - 5,
|
||||
flags = "all_floors, force_placement",
|
||||
})
|
|
@ -0,0 +1,121 @@
|
|||
local mod_mcl_crimson = minetest.get_modpath("mcl_crimson")
|
||||
|
||||
vl_biomes.register_biome({
|
||||
name = "CrimsonForest",
|
||||
node_filler = "mcl_nether:netherrack",
|
||||
node_stone = "mcl_nether:netherrack",
|
||||
node_top = "mcl_crimson:crimson_nylium",
|
||||
node_water = "air",
|
||||
node_river_water = "air",
|
||||
node_cave_liquid = "air",
|
||||
y_min = vl_biomes.nether_min,
|
||||
y_max = vl_biomes.nether_max + 80,
|
||||
heat_point = 60,
|
||||
humidity_point = 47,
|
||||
_mcl_biome_type = "hot",
|
||||
_mcl_grass_palette_index = 17,
|
||||
_mcl_foliage_palette_index = 3,
|
||||
_mcl_water_palette_index = 0,
|
||||
_mcl_waterfogcolor = vl_biomes.default_waterfogcolor,
|
||||
_mcl_skycolor = vl_biomes.nether_skycolor,
|
||||
_mcl_fogcolor = "#330303"
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_nether:netherrack", "mcl_nether:glowstone", "mcl_blackstone:nether_gold", "mcl_nether:quartz_ore", "mcl_core:gravel", "mcl_nether:soul_sand", "mcl_nether:magma", "mcl_blackstone:blackstone"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 10,
|
||||
biomes = {"CrimsonForest"},
|
||||
y_min = vl_biomes.lava_nether_max,
|
||||
y_max = vl_biomes.nether_deco_max,
|
||||
decoration = "mcl_crimson:crimson_nylium",
|
||||
flags = "all_floors",
|
||||
param2 = 0,
|
||||
})
|
||||
--- Fix light for mushroom lights after generation
|
||||
local function fix_light_8_gennotify(t, minp, maxp, blockseed)
|
||||
for _, pos in ipairs(t) do
|
||||
minetest.fix_light(vector.offset(pos, -8, -8, -8), vector.offset(pos, 8, 8, 8))
|
||||
end
|
||||
end
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_crimson:crimson_nylium"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.02,
|
||||
biomes = {"CrimsonForest"},
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
y_max = vl_biomes.nether_max - 10,
|
||||
flags = "all_floors",
|
||||
decoration = "mcl_crimson:crimson_fungus",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
name = "mcl_biomes:crimson_tree1",
|
||||
place_on = {"mcl_crimson:crimson_nylium"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.008,
|
||||
biomes = {"CrimsonForest"},
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
y_max = vl_biomes.nether_max - 10,
|
||||
flags = "all_floors, place_center_x, place_center_z",
|
||||
schematic = mod_mcl_crimson .. "/schematics/crimson_fungus_1.mts",
|
||||
size = vector.new(5, 8, 5),
|
||||
rotation = "random",
|
||||
gen_callback = fix_light_8_gennotify,
|
||||
})
|
||||
minetest.register_alias("mcl_biomes:crimson_tree", "mcl_biomes:crimson_tree1") -- legacy inconsistency, fixed 08/2024
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
name = "mcl_biomes:crimson_tree2",
|
||||
place_on = {"mcl_crimson:crimson_nylium"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.006,
|
||||
biomes = {"CrimsonForest"},
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
y_max = vl_biomes.nether_max - 15,
|
||||
flags = "all_floors, place_center_x, place_center_z",
|
||||
schematic = mod_mcl_crimson .. "/schematics/crimson_fungus_2.mts",
|
||||
size = vector.new(5, 12, 5),
|
||||
rotation = "random",
|
||||
gen_callback = fix_light_8_gennotify,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
name = "mcl_biomes:crimson_tree3",
|
||||
place_on = {"mcl_crimson:crimson_nylium"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.004,
|
||||
biomes = {"CrimsonForest"},
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
y_max = vl_biomes.nether_max - 20,
|
||||
flags = "all_floors, place_center_x, place_center_z",
|
||||
schematic = mod_mcl_crimson .. "/schematics/crimson_fungus_3.mts",
|
||||
size = vector.new(7, 13, 7),
|
||||
rotation = "random",
|
||||
gen_callback = fix_light_8_gennotify,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_crimson:warped_nylium", "mcl_crimson:weeping_vines", "mcl_nether:netherrack"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.063,
|
||||
biomes = {"CrimsonForest"},
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
y_max = vl_biomes.nether_deco_max,
|
||||
flags = "all_ceilings",
|
||||
height = 2,
|
||||
height_max = 8,
|
||||
decoration = "mcl_crimson:weeping_vines",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_crimson:crimson_nylium"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.082,
|
||||
biomes = {"CrimsonForest"},
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
flags = "all_floors",
|
||||
max_height = 5,
|
||||
decoration = "mcl_crimson:crimson_roots",
|
||||
})
|
|
@ -0,0 +1,102 @@
|
|||
-- Nether Wastes
|
||||
minetest.register_biome({
|
||||
name = "Nether",
|
||||
node_filler = "mcl_nether:netherrack",
|
||||
node_stone = "mcl_nether:netherrack",
|
||||
node_top = "mcl_nether:netherrack",
|
||||
node_water = "air",
|
||||
node_river_water = "air",
|
||||
node_cave_liquid = "air",
|
||||
y_min = vl_biomes.nether_min,
|
||||
y_max = vl_biomes.nether_max + 80,
|
||||
heat_point = 100,
|
||||
humidity_point = 0,
|
||||
_mcl_biome_type = "hot",
|
||||
_mcl_grass_palette_index = 17,
|
||||
_mcl_foliage_palette_index = 3,
|
||||
_mcl_water_palette_index = 0,
|
||||
_mcl_waterfogcolor = vl_biomes.default_waterfogcolor,
|
||||
_mcl_skycolor = vl_biomes.nether_skycolor,
|
||||
_mcl_fogcolor = "#330808"
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_nether:netherrack", "mcl_nether:glowstone", "mcl_blackstone:nether_gold", "mcl_nether:quartz_ore", "mcl_core:gravel", "mcl_nether:soul_sand", "mcl_nether:glowstone", "mcl_nether:magma"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 10,
|
||||
biomes = {"Nether"},
|
||||
y_min = vl_biomes.lava_nether_max,
|
||||
y_max = vl_biomes.nether_deco_max,
|
||||
decoration = "mcl_nether:netherrack",
|
||||
flags = "all_floors",
|
||||
param2 = 0,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_nether:netherrack", "mcl_nether:magma"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.04,
|
||||
biomes = {"Nether"},
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
y_max = vl_biomes.nether_max - 1,
|
||||
flags = "all_floors",
|
||||
decoration = "mcl_fire:eternal_fire",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_nether:netherrack"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.013,
|
||||
biomes = {"Nether"},
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
y_max = vl_biomes.nether_max - 1,
|
||||
flags = "all_floors",
|
||||
decoration = "mcl_mushrooms:mushroom_brown",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_nether:netherrack"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.012,
|
||||
biomes = {"Nether"},
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
y_max = vl_biomes.nether_max - 1,
|
||||
flags = "all_floors",
|
||||
decoration = "mcl_mushrooms:mushroom_red",
|
||||
})
|
||||
|
||||
--nether gold
|
||||
local mg_name = minetest.get_mapgen_setting("mg_name")
|
||||
if mg_name ~= "v6" then
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "mcl_blackstone:blackstone_gilded",
|
||||
wherein = "mcl_blackstone:blackstone",
|
||||
clust_scarcity = 4775,
|
||||
clust_num_ores = 2,
|
||||
clust_size = 2,
|
||||
y_min = vl_biomes.nether_min,
|
||||
y_max = vl_biomes.nether_max,
|
||||
})
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "mcl_blackstone:nether_gold",
|
||||
wherein = "mcl_nether:netherrack",
|
||||
clust_scarcity = 830,
|
||||
clust_num_ores = 5,
|
||||
clust_size = 3,
|
||||
y_min = vl_biomes.nether_min,
|
||||
y_max = vl_biomes.nether_max,
|
||||
})
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "mcl_blackstone:nether_gold",
|
||||
wherein = "mcl_nether:netherrack",
|
||||
clust_scarcity = 1660,
|
||||
clust_num_ores = 4,
|
||||
clust_size = 2,
|
||||
y_min = vl_biomes.nether_min,
|
||||
y_max = vl_biomes.nether_max,
|
||||
})
|
||||
end
|
|
@ -0,0 +1,190 @@
|
|||
-- Soul sand
|
||||
minetest.register_ore({
|
||||
ore_type = "sheet",
|
||||
ore = "mcl_nether:soul_sand",
|
||||
-- Note: Stone is included only for v6 mapgen support. Netherrack is not generated naturally
|
||||
-- in v6, but instead set with the on_generated function in mcl_mapgen_core.
|
||||
wherein = {"mcl_nether:netherrack", "mcl_core:stone"},
|
||||
clust_scarcity = 13 * 13 * 13,
|
||||
clust_size = 5,
|
||||
y_min = vl_biomes.nether_min,
|
||||
y_max = mcl_worlds.layer_to_y(64, "nether"),
|
||||
noise_threshold = 0.0,
|
||||
noise_params = {
|
||||
offset = 0.5,
|
||||
scale = 0.1,
|
||||
spread = vector.new(5, 5, 5),
|
||||
seed = 2316,
|
||||
octaves = 1,
|
||||
persist = 0.0
|
||||
},
|
||||
})
|
||||
|
||||
-- Magma blocks
|
||||
minetest.register_ore({
|
||||
ore_type = "blob",
|
||||
ore = "mcl_nether:magma",
|
||||
wherein = {"mcl_nether:netherrack", "mcl_core:stone"},
|
||||
clust_scarcity = 8 * 8 * 8,
|
||||
clust_num_ores = 45,
|
||||
clust_size = 6,
|
||||
y_min = mcl_worlds.layer_to_y(23, "nether"),
|
||||
y_max = mcl_worlds.layer_to_y(37, "nether"),
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 1,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 12345,
|
||||
octaves = 3,
|
||||
persist = 0.6,
|
||||
lacunarity = 2,
|
||||
flags = "defaults",
|
||||
},
|
||||
})
|
||||
minetest.register_ore({
|
||||
ore_type = "blob",
|
||||
ore = "mcl_nether:magma",
|
||||
wherein = {"mcl_nether:netherrack"},
|
||||
clust_scarcity = 10 * 10 * 10,
|
||||
clust_num_ores = 65,
|
||||
clust_size = 8,
|
||||
y_min = mcl_worlds.layer_to_y(23, "nether"),
|
||||
y_max = mcl_worlds.layer_to_y(37, "nether"),
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 1,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 12345,
|
||||
octaves = 3,
|
||||
persist = 0.6,
|
||||
lacunarity = 2,
|
||||
flags = "defaults",
|
||||
},
|
||||
})
|
||||
|
||||
-- Glowstone
|
||||
minetest.register_ore({
|
||||
ore_type = "blob",
|
||||
ore = "mcl_nether:glowstone",
|
||||
wherein = {"mcl_nether:netherrack", "mcl_core:stone"},
|
||||
clust_scarcity = 26 * 26 * 26,
|
||||
clust_size = 5,
|
||||
y_min = vl_biomes.lava_nether_max + 10,
|
||||
y_max = vl_biomes.nether_max - 13,
|
||||
noise_threshold = 0.0,
|
||||
noise_params = {
|
||||
offset = 0.5,
|
||||
scale = 0.1,
|
||||
spread = vector.new(5, 5, 5),
|
||||
seed = 17676,
|
||||
octaves = 1,
|
||||
persist = 0.0
|
||||
},
|
||||
})
|
||||
|
||||
-- Gravel (Nether)
|
||||
minetest.register_ore({
|
||||
ore_type = "sheet",
|
||||
ore = "mcl_core:gravel",
|
||||
wherein = {"mcl_nether:netherrack", "mcl_core:stone"},
|
||||
column_height_min = 1,
|
||||
column_height_max = 1,
|
||||
column_midpoint_factor = 0,
|
||||
y_min = mcl_worlds.layer_to_y(63, "nether"),
|
||||
-- This should be 65, but for some reason with this setting, the sheet ore really stops at 65. o_O
|
||||
y_max = mcl_worlds.layer_to_y(65 + 2, "nether"),
|
||||
noise_threshold = 0.2,
|
||||
noise_params = {
|
||||
offset = 0.0,
|
||||
scale = 0.5,
|
||||
spread = vector.new(20, 20, 20),
|
||||
seed = 766,
|
||||
octaves = 3,
|
||||
persist = 0.6,
|
||||
},
|
||||
})
|
||||
|
||||
-- Nether quartz
|
||||
if minetest.settings:get_bool("mcl_generate_ores", true) then
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "mcl_nether:quartz_ore",
|
||||
wherein = {"mcl_nether:netherrack", "mcl_core:stone"},
|
||||
clust_scarcity = 850,
|
||||
clust_num_ores = 4, -- MC cluster amount: 4-10
|
||||
clust_size = 3,
|
||||
y_min = vl_biomes.nether_min,
|
||||
y_max = vl_biomes.nether_max,
|
||||
})
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "mcl_nether:quartz_ore",
|
||||
wherein = {"mcl_nether:netherrack", "mcl_core:stone"},
|
||||
clust_scarcity = 1650,
|
||||
clust_num_ores = 8, -- MC cluster amount: 4-10
|
||||
clust_size = 4,
|
||||
y_min = vl_biomes.nether_min,
|
||||
y_max = vl_biomes.nether_max,
|
||||
})
|
||||
end
|
||||
|
||||
-- Lava springs in the Nether
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "mcl_nether:nether_lava_source",
|
||||
wherein = {"mcl_nether:netherrack", "mcl_core:stone"},
|
||||
clust_scarcity = 13500, --rare
|
||||
clust_num_ores = 1,
|
||||
clust_size = 1,
|
||||
y_min = vl_biomes.lava_nether_max,
|
||||
y_max = vl_biomes.nether_max - 13,
|
||||
})
|
||||
|
||||
local lava_biomes = {"BasaltDelta", "Nether"}
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "mcl_nether:nether_lava_source",
|
||||
wherein = {"mcl_nether:netherrack", "mcl_core:stone"},
|
||||
clust_scarcity = 500,
|
||||
clust_num_ores = 1,
|
||||
clust_size = 1,
|
||||
biomes = lava_biomes,
|
||||
y_min = vl_biomes.nether_min,
|
||||
y_max = vl_biomes.lava_nether_max + 1,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "mcl_nether:nether_lava_source",
|
||||
wherein = {"mcl_nether:netherrack", "mcl_core:stone"},
|
||||
clust_scarcity = 1000,
|
||||
clust_num_ores = 1,
|
||||
clust_size = 1,
|
||||
biomes = lava_biomes,
|
||||
y_min = vl_biomes.lava_nether_max + 2,
|
||||
y_max = vl_biomes.lava_nether_max + 12,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "mcl_nether:nether_lava_source",
|
||||
wherein = {"mcl_nether:netherrack", "mcl_core:stone"},
|
||||
clust_scarcity = 2000,
|
||||
clust_num_ores = 1,
|
||||
clust_size = 1,
|
||||
biomes = lava_biomes,
|
||||
y_min = vl_biomes.lava_nether_max + 13,
|
||||
y_max = vl_biomes.lava_nether_max + 48,
|
||||
})
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "mcl_nether:nether_lava_source",
|
||||
wherein = {"mcl_nether:netherrack", "mcl_core:stone"},
|
||||
clust_scarcity = 3500,
|
||||
clust_num_ores = 1,
|
||||
clust_size = 1,
|
||||
biomes = lava_biomes,
|
||||
y_min = vl_biomes.lava_nether_max + 49,
|
||||
y_max = vl_biomes.nether_max - 13,
|
||||
})
|
||||
|
|
@ -0,0 +1,115 @@
|
|||
local mod_mcl_blackstone = minetest.get_modpath("mcl_blackstone")
|
||||
|
||||
vl_biomes.register_biome({
|
||||
name = "SoulsandValley",
|
||||
node_filler = "mcl_nether:netherrack",
|
||||
node_stone = "mcl_nether:netherrack",
|
||||
node_top = "mcl_blackstone:soul_soil",
|
||||
node_water = "air",
|
||||
node_river_water = "air",
|
||||
node_cave_liquid = "air",
|
||||
y_min = vl_biomes.nether_min,
|
||||
y_max = vl_biomes.nether_max + 80,
|
||||
heat_point = 77,
|
||||
humidity_point = 33,
|
||||
_mcl_biome_type = "hot",
|
||||
_mcl_grass_palette_index = 17,
|
||||
_mcl_foliage_palette_index = 3,
|
||||
_mcl_water_palette_index = 0,
|
||||
_mcl_waterfogcolor = vl_biomes.default_waterfogcolor,
|
||||
_mcl_skycolor = vl_biomes.nether_skycolor,
|
||||
_mcl_fogcolor = "#1B4745"
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_nether:netherrack", "mcl_nether:glowstone", "mcl_nether:magma"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 10,
|
||||
biomes = {"SoulsandValley"},
|
||||
y_min = vl_biomes.lava_nether_max,
|
||||
y_max = vl_biomes.nether_deco_max,
|
||||
decoration = "mcl_blackstone:soul_soil",
|
||||
flags = "all_floors, all_ceilings",
|
||||
param2 = 0,
|
||||
})
|
||||
minetest.register_ore({
|
||||
ore_type = "blob",
|
||||
ore = "mcl_nether:soul_sand",
|
||||
wherein = {"mcl_nether:netherrack", "mcl_blackstone:soul_soil"},
|
||||
clust_scarcity = 100,
|
||||
clust_num_ores = 225,
|
||||
clust_size = 15,
|
||||
biomes = {"SoulsandValley"},
|
||||
y_min = vl_biomes.lava_nether_max,
|
||||
y_max = vl_biomes.nether_deco_max,
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 1,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 12345,
|
||||
octaves = 3,
|
||||
persist = 0.6,
|
||||
lacunarity = 2,
|
||||
flags = "defaults",
|
||||
}
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_blackstone:soul_soil", "mcl_nether:soul_sand"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.062,
|
||||
biomes = {"SoulsandValley"},
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
flags = "all_floors",
|
||||
max_height = 5,
|
||||
decoration = "mcl_blackstone:soul_fire",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_blackstone:soul_soil", "mcl_nether:soulsand"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.000212,
|
||||
biomes = {"SoulsandValley"},
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
flags = "all_floors, place_center_x, place_center_z",
|
||||
schematic = mod_mcl_blackstone .. "/schematics/mcl_blackstone_nether_fossil_1.mts",
|
||||
size = vector.new(5, 8, 5),
|
||||
rotation = "random",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_blackstone:soul_soil", "mcl_nether:soulsand"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.0002233,
|
||||
biomes = {"SoulsandValley"},
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
flags = "all_floors, place_center_x, place_center_z",
|
||||
schematic = mod_mcl_blackstone .. "/schematics/mcl_blackstone_nether_fossil_2.mts",
|
||||
size = vector.new(5, 8, 5),
|
||||
rotation = "random",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_blackstone:soul_soil", "mcl_nether:soulsand"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.000225,
|
||||
biomes = {"SoulsandValley"},
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
flags = "all_floors, place_center_x, place_center_z",
|
||||
schematic = mod_mcl_blackstone .. "/schematics/mcl_blackstone_nether_fossil_3.mts",
|
||||
size = vector.new(5, 8, 5),
|
||||
rotation = "random",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_blackstone:soul_soil", "mcl_nether:soulsand"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.00022323,
|
||||
biomes = {"SoulsandValley"},
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
flags = "all_floors, place_center_x, place_center_z",
|
||||
schematic = mod_mcl_blackstone .. "/schematics/mcl_blackstone_nether_fossil_4.mts",
|
||||
size = vector.new(5, 8, 5),
|
||||
rotation = "random",
|
||||
})
|
|
@ -0,0 +1,129 @@
|
|||
local mod_mcl_crimson = minetest.get_modpath("mcl_crimson")
|
||||
|
||||
vl_biomes.register_biome({
|
||||
name = "WarpedForest",
|
||||
node_filler = "mcl_nether:netherrack",
|
||||
node_stone = "mcl_nether:netherrack",
|
||||
node_top = "mcl_crimson:warped_nylium",
|
||||
node_water = "air",
|
||||
node_river_water = "air",
|
||||
node_cave_liquid = "air",
|
||||
y_min = vl_biomes.nether_min,
|
||||
y_max = vl_biomes.nether_max + 80,
|
||||
heat_point = 37,
|
||||
humidity_point = 70,
|
||||
_mcl_biome_type = "hot",
|
||||
_mcl_grass_palette_index = 17,
|
||||
_mcl_foliage_palette_index = 3,
|
||||
_mcl_water_palette_index = 0,
|
||||
_mcl_waterfogcolor = vl_biomes.default_waterfogcolor,
|
||||
_mcl_skycolor = vl_biomes.nether_skycolor,
|
||||
_mcl_fogcolor = "#1A051A"
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_nether:netherrack", "mcl_nether:glowstone", "mcl_blackstone:nether_gold", "mcl_nether:quartz_ore", "mcl_core:gravel", "mcl_nether:soul_sand", "mcl_nether:magma", "mcl_blackstone:blackstone"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 10,
|
||||
biomes = {"WarpedForest"},
|
||||
y_min = vl_biomes.lava_nether_max,
|
||||
y_max = vl_biomes.nether_deco_max,
|
||||
decoration = "mcl_crimson:warped_nylium",
|
||||
flags = "all_floors",
|
||||
param2 = 0,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_crimson:warped_nylium"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.02,
|
||||
biomes = {"WarpedForest"},
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
y_max = vl_biomes.nether_max - 10,
|
||||
flags = "all_floors",
|
||||
decoration = "mcl_crimson:warped_fungus",
|
||||
})
|
||||
--- Fix light for mushroom lights after generation
|
||||
local function fix_light_8_gennotify(t, minp, maxp, blockseed)
|
||||
for _, pos in ipairs(t) do
|
||||
minetest.fix_light(vector.offset(pos, -8, -8, -8), vector.offset(pos, 8, 8, 8))
|
||||
end
|
||||
end
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
name = "mcl_biomes:warped_tree1",
|
||||
place_on = {"mcl_crimson:warped_nylium"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.007,
|
||||
biomes = {"WarpedForest"},
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
y_max = vl_biomes.nether_max - 15,
|
||||
flags = "all_floors, place_center_x, place_center_z",
|
||||
schematic = mod_mcl_crimson .. "/schematics/warped_fungus_1.mts",
|
||||
size = vector.new(5, 11, 5),
|
||||
rotation = "random",
|
||||
gen_callback = fix_light_8_gennotify,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
name = "mcl_biomes:warped_tree2",
|
||||
place_on = {"mcl_crimson:warped_nylium"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.005,
|
||||
biomes = {"WarpedForest"},
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
y_max = vl_biomes.nether_max - 10,
|
||||
flags = "all_floors, place_center_x, place_center_z",
|
||||
schematic = mod_mcl_crimson .. "/schematics/warped_fungus_2.mts",
|
||||
size = vector.new(5, 6, 5),
|
||||
rotation = "random",
|
||||
gen_callback = fix_light_8_gennotify,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
name = "mcl_biomes:warped_tree3",
|
||||
place_on = {"mcl_crimson:warped_nylium"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.003,
|
||||
biomes = {"WarpedForest"},
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
y_max = vl_biomes.nether_max - 14,
|
||||
flags = "all_floors, place_center_x, place_center_z",
|
||||
schematic = mod_mcl_crimson .. "/schematics/warped_fungus_3.mts",
|
||||
size = vector.new(5, 12, 5),
|
||||
rotation = "random",
|
||||
gen_callback = fix_light_8_gennotify,
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_crimson:warped_nylium", "mcl_crimson:twisting_vines"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.032,
|
||||
biomes = {"WarpedForest"},
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
flags = "all_floors",
|
||||
height = 2,
|
||||
height_max = 8,
|
||||
decoration = "mcl_crimson:twisting_vines",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_crimson:warped_nylium"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.0812,
|
||||
biomes = {"WarpedForest"},
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
flags = "all_floors",
|
||||
max_height = 5,
|
||||
decoration = "mcl_crimson:warped_roots",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_crimson:crimson_nylium"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.052,
|
||||
biomes = {"WarpedForest"},
|
||||
y_min = vl_biomes.lava_nether_max + 1,
|
||||
flags = "all_floors",
|
||||
decoration = "mcl_crimson:nether_sprouts",
|
||||
})
|
|
@ -0,0 +1,36 @@
|
|||
-- Plains
|
||||
vl_biomes.register_biome({
|
||||
name = "Plains",
|
||||
node_top = "mcl_core:dirt_with_grass",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 2,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_min = 3,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 39,
|
||||
heat_point = 58,
|
||||
_mcl_biome_type = "medium",
|
||||
_mcl_water_temp = "ocean",
|
||||
_mcl_grass_palette_index = 0,
|
||||
_mcl_foliage_palette_index = 1,
|
||||
_mcl_water_palette_index = 0,
|
||||
_mcl_skycolor = "#78A7FF",
|
||||
_beach = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 2,
|
||||
node_filler = "mcl_core:sandstone",
|
||||
depth_filler = 2,
|
||||
y_min = 0,
|
||||
y_max = 2,
|
||||
},
|
||||
_ocean = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:sand",
|
||||
depth_filler = 3,
|
||||
y_max = -1,
|
||||
},
|
||||
})
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
-- Sunflower Plains
|
||||
vl_biomes.register_biome({
|
||||
name = "SunflowerPlains",
|
||||
node_top = "mcl_core:dirt_with_grass",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 3,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_min = 4,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 28,
|
||||
heat_point = 45,
|
||||
_mcl_biome_type = "medium",
|
||||
_mcl_water_temp = "ocean",
|
||||
_mcl_grass_palette_index = 11,
|
||||
_mcl_foliage_palette_index = 1,
|
||||
_mcl_water_palette_index = 0,
|
||||
_mcl_skycolor = "#78A7FF",
|
||||
_ocean = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:sand",
|
||||
depth_filler = 3,
|
||||
node_riverbed = "mcl_core:dirt",
|
||||
depth_riverbed = 2,
|
||||
},
|
||||
})
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
-- Savanna
|
||||
vl_biomes.register_biome({
|
||||
name = "Savanna",
|
||||
node_top = "mcl_core:dirt_with_grass",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 2,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 36,
|
||||
heat_point = 79,
|
||||
_mcl_biome_type = "hot",
|
||||
_mcl_water_temp = "lukewarm",
|
||||
_mcl_grass_palette_index = 1,
|
||||
_mcl_foliage_palette_index = 3,
|
||||
_mcl_water_palette_index = 2,
|
||||
_mcl_skycolor = "#6EB1FF",
|
||||
_beach = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 3,
|
||||
node_filler = "mcl_core:sandstone",
|
||||
depth_filler = 2,
|
||||
y_min = -1,
|
||||
y_max = 0,
|
||||
_mcl_foliage_palette_index = 1,
|
||||
},
|
||||
_ocean = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:sand",
|
||||
depth_filler = 3,
|
||||
y_max = -2,
|
||||
},
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.0004,
|
||||
biomes = {"Savanna"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 3,
|
||||
})
|
||||
-- Acacia (many variants)
|
||||
for a = 1, 7 do
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt", "mcl_core:coarse_dirt"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.0002,
|
||||
biomes = {"Savanna"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_acacia_" .. a .. ".mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 3,
|
||||
})
|
||||
end
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
-- Savanna M aka Shattered Savanna aka Windswept Savanna
|
||||
-- Changes to Savanna: Coarse Dirt. No sand beach. No oaks.
|
||||
-- Otherwise identical to Savanna
|
||||
vl_biomes.register_biome({
|
||||
name = "SavannaM",
|
||||
node_top = "mcl_core:dirt_with_grass",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:coarse_dirt",
|
||||
depth_filler = 3,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 48,
|
||||
heat_point = 100,
|
||||
_mcl_biome_type = "hot",
|
||||
_mcl_water_temp = "lukewarm",
|
||||
_mcl_grass_palette_index = 23,
|
||||
_mcl_foliage_palette_index = 3,
|
||||
_mcl_water_palette_index = 2,
|
||||
_mcl_skycolor = "#6EB1FF",
|
||||
_ocean = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:sand",
|
||||
depth_filler = 3,
|
||||
},
|
||||
})
|
||||
-- Acacia (many variants)
|
||||
for a = 1, 7 do
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt", "mcl_core:coarse_dirt"},
|
||||
sidelen = 16,
|
||||
fill_ratio = 0.0002,
|
||||
biomes = {"SavannaM"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_acacia_" .. a .. ".mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 3,
|
||||
})
|
||||
end
|
||||
|
|
@ -0,0 +1,104 @@
|
|||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
|
||||
-- Ice Plains, aka ice flats, aka Snowy Plains
|
||||
vl_biomes.register_biome({
|
||||
name = "IcePlains",
|
||||
node_dust = "mcl_core:snow",
|
||||
node_top = "mcl_core:dirt_with_grass_snow",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 2,
|
||||
node_water_top = "mcl_core:ice",
|
||||
depth_water_top = 2,
|
||||
node_river_water = "mcl_core:ice",
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 24,
|
||||
heat_point = 8,
|
||||
_mcl_biome_type = "snowy",
|
||||
_mcl_water_temp = "frozen",
|
||||
_mcl_grass_palette_index = 10,
|
||||
_mcl_foliage_palette_index = 2,
|
||||
_mcl_water_palette_index = 5,
|
||||
_mcl_skycolor = "#7FA1FF",
|
||||
_ocean = {
|
||||
node_top = "mcl_core:gravel",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:gravel",
|
||||
depth_filler = 3,
|
||||
_mcl_skycolor = "#7FA1FF", -- not default, but icy
|
||||
},
|
||||
})
|
||||
|
||||
-- Small “classic” oak (many biomes)
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block", "mcl_core:dirt", },
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.0,
|
||||
scale = 0.0002,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2,
|
||||
octaves = 3,
|
||||
persist = 0.7
|
||||
},
|
||||
biomes = {"IcePlains"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 2,
|
||||
})
|
||||
|
||||
-- Rare spruce in Ice Plains
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = -0.00075,
|
||||
scale = -0.0015,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 11,
|
||||
octaves = 3,
|
||||
persist = 0.7
|
||||
},
|
||||
biomes = {"IcePlains"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_spruce_5.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
-- not supported by spruce leaves _mcl_foliage_palette_index = 2,
|
||||
})
|
||||
|
||||
-- Place tall grass on snow in Ice Plains
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
priority = 1500,
|
||||
place_on = {"group:grass_block"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = -0.08,
|
||||
scale = 0.09,
|
||||
spread = vector.new(15, 15, 15),
|
||||
seed = 420,
|
||||
octaves = 3,
|
||||
persist = 0.6,
|
||||
},
|
||||
biomes = {"IcePlains"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = {
|
||||
size = vector.new(1, 2, 1),
|
||||
data = {
|
||||
{name = "mcl_core:dirt_with_grass", force_place = true, param2 = 10 },
|
||||
{name = "mcl_flowers:tallgrass", param2 = 10},
|
||||
},
|
||||
},
|
||||
place_y_offset = -1,
|
||||
})
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
local mod_mcl_structures = minetest.get_modpath("mcl_structures")
|
||||
|
||||
-- Ice Plains Spikes (rare) aka Ice Spikes
|
||||
vl_biomes.register_biome({
|
||||
name = "IcePlainsSpikes",
|
||||
node_top = "mcl_core:snowblock",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 2,
|
||||
node_water_top = "mcl_core:ice",
|
||||
depth_water_top = 1,
|
||||
node_river_water = "mcl_core:ice",
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 24,
|
||||
heat_point = -5,
|
||||
_mcl_biome_type = "snowy",
|
||||
_mcl_water_temp = "frozen",
|
||||
_mcl_grass_palette_index = 2,
|
||||
_mcl_foliage_palette_index = 2,
|
||||
_mcl_water_palette_index = 5,
|
||||
_mcl_skycolor = "#7FA1FF",
|
||||
_ocean = {
|
||||
node_top = "mcl_core:gravel",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:gravel",
|
||||
depth_filler = 3,
|
||||
_mcl_skycolor = "#7FA1FF", -- not default, but icy
|
||||
},
|
||||
})
|
||||
|
||||
-- FIXME: on slopes, they tend to float on one side. Use even larger spikes and a negative y_offset?
|
||||
-- Large ice spike
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_core:snowblock", "mcl_core:snow", "group:grass_block_snow"},
|
||||
sidelen = 80,
|
||||
noise_params = {
|
||||
offset = 0.00040,
|
||||
scale = 0.001,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 1133,
|
||||
octaves = 4,
|
||||
persist = 0.67,
|
||||
},
|
||||
biomes = {"IcePlainsSpikes"},
|
||||
y_min = 4,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_structures .. "/schematics/mcl_structures_ice_spike_large.mts",
|
||||
rotation = "random",
|
||||
flags = "place_center_x, place_center_z",
|
||||
})
|
||||
|
||||
-- Small ice spike
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_core:snowblock", "mcl_core:snow", "group:grass_block_snow"},
|
||||
sidelen = 80,
|
||||
noise_params = {
|
||||
offset = 0.005,
|
||||
scale = 0.001,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 1133,
|
||||
octaves = 4,
|
||||
persist = 0.67,
|
||||
},
|
||||
biomes = {"IcePlainsSpikes"},
|
||||
y_min = 4,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_structures .. "/schematics/mcl_structures_ice_spike_small.mts",
|
||||
rotation = "random",
|
||||
flags = "place_center_x, place_center_z",
|
||||
})
|
|
@ -0,0 +1,104 @@
|
|||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
|
||||
-- Cold Taiga aka Snowy Taiga
|
||||
vl_biomes.register_biome({
|
||||
name = "ColdTaiga",
|
||||
node_dust = "mcl_core:snow",
|
||||
node_top = "mcl_core:dirt_with_grass_snow",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 2,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_min = 3,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 58,
|
||||
heat_point = 8,
|
||||
_mcl_biome_type = "snowy",
|
||||
_mcl_water_temp = "frozen",
|
||||
_mcl_grass_palette_index = 3,
|
||||
_mcl_foliage_palette_index = 2,
|
||||
_mcl_water_palette_index = 5,
|
||||
_mcl_skycolor = "#839EFF",
|
||||
-- A cold beach-like biome, implemented as low part of Cold Taiga
|
||||
_beach = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 2,
|
||||
node_water_top = "mcl_core:ice",
|
||||
depth_water_top = 1,
|
||||
node_filler = "mcl_core:sandstone",
|
||||
depth_filler = 2,
|
||||
y_min = 1,
|
||||
y_max = 2,
|
||||
_mcl_foliage_palette_index = 16,
|
||||
_mcl_skycolor = "#7FA1FF", -- not default, but icy
|
||||
},
|
||||
-- Water part of the beach. Added to prevent snow being on the ice.
|
||||
_beach_water = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 2,
|
||||
node_water_top = "mcl_core:ice",
|
||||
depth_water_top = 1,
|
||||
node_filler = "mcl_core:sandstone",
|
||||
depth_filler = 2,
|
||||
y_min = -4,
|
||||
y_max = 0,
|
||||
_mcl_foliage_palette_index = 16,
|
||||
_mcl_skycolor = "#7FA1FF", -- not default, but icy
|
||||
},
|
||||
_ocean = {
|
||||
node_top = "mcl_core:gravel",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:gravel",
|
||||
depth_filler = 3,
|
||||
y_max = -5,
|
||||
vertical_blend = 1,
|
||||
_mcl_skycolor = "#7FA1FF", -- not default, but icy
|
||||
},
|
||||
})
|
||||
-- Small lollipop spruce
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block", "mcl_core:podzol"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.004,
|
||||
scale = 0.0022,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2500,
|
||||
octaves = 3,
|
||||
persist = 0.66
|
||||
},
|
||||
biomes = {"ColdTaiga"},
|
||||
y_min = 2,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_spruce_lollipop.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
-- not supported by spruce leaves _mcl_foliage_palette_index = 2,
|
||||
})
|
||||
|
||||
-- Matchstick spruce: Very few leaves, tall trunk
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block", "mcl_core:podzol"},
|
||||
sidelen = 80,
|
||||
noise_params = {
|
||||
offset = -0.025,
|
||||
scale = 0.025,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2566,
|
||||
octaves = 5,
|
||||
persist = 0.60,
|
||||
},
|
||||
biomes = {"ColdTaiga"},
|
||||
y_min = 3,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_spruce_matchstick.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
-- not supported by spruce leaves _mcl_foliage_palette_index = 2,
|
||||
})
|
||||
|
||||
vl_biomes.register_spruce_decoration(11000, 0.00150, "mcl_core_spruce_5.mts", {"ColdTaiga"})
|
||||
vl_biomes.register_spruce_decoration(2500, 0.00325, "mcl_core_spruce_1.mts", {"ColdTaiga"})
|
||||
vl_biomes.register_spruce_decoration(7000, 0.00425, "mcl_core_spruce_3.mts", {"ColdTaiga"})
|
||||
vl_biomes.register_spruce_decoration(9000, 0.00325, "mcl_core_spruce_4.mts", {"ColdTaiga"})
|
|
@ -0,0 +1,26 @@
|
|||
-- Stone beach, aka Stony Shore
|
||||
-- Just stone.
|
||||
-- Not neccessarily a beach at all, only named so according to MC
|
||||
vl_biomes.register_biome({
|
||||
name = "StoneBeach",
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 1,
|
||||
y_min = -7,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 0,
|
||||
heat_point = 8,
|
||||
_mcl_biome_type = "cold",
|
||||
_mcl_water_temp = "cold",
|
||||
_mcl_grass_palette_index = 9,
|
||||
_mcl_foliage_palette_index = 11,
|
||||
_mcl_water_palette_index = 4,
|
||||
_mcl_skycolor = "#7DA2FF",
|
||||
_ocean = {
|
||||
node_top = "mcl_core:gravel",
|
||||
depth_top = 1,
|
||||
y_min = vl_biomes.OCEAN_MIN,
|
||||
y_max = -8,
|
||||
vertical_blend = 2,
|
||||
},
|
||||
})
|
||||
|
|
@ -0,0 +1,97 @@
|
|||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
|
||||
-- Swampland
|
||||
vl_biomes.register_biome({
|
||||
name = "Swampland",
|
||||
node_top = "mcl_core:dirt_with_grass",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 3,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_min = 1,
|
||||
y_max = 23, -- Note: Limited in height!
|
||||
humidity_point = 90,
|
||||
heat_point = 50,
|
||||
_mcl_biome_type = "medium",
|
||||
_mcl_water_temp = "ocean",
|
||||
_mcl_grass_palette_index = 28,
|
||||
_mcl_foliage_palette_index = 5,
|
||||
_mcl_water_palette_index = 1,
|
||||
_mcl_waterfogcolor = "#617B64",
|
||||
_mcl_skycolor = "#78A7FF",
|
||||
_shore = {
|
||||
node_top = "mcl_core:dirt",
|
||||
depth_top = 1,
|
||||
y_min = -5,
|
||||
y_max = 0,
|
||||
},
|
||||
_ocean = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:sand",
|
||||
depth_filler = 3,
|
||||
y_max = -6,
|
||||
vertical_blend = 1,
|
||||
},
|
||||
})
|
||||
-- Swamp oak
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block_no_snow", "mcl_core:dirt"},
|
||||
sidelen = 80,
|
||||
noise_params = {
|
||||
offset = 0.0055,
|
||||
scale = 0.0011,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 5005,
|
||||
octaves = 5,
|
||||
persist = 0.6,
|
||||
},
|
||||
biomes = {"Swampland", "Swampland_shore"},
|
||||
y_min = 0,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_oak_swamp.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 5,
|
||||
})
|
||||
|
||||
-- Lily pad
|
||||
local lily_schem = {
|
||||
{name = "mcl_core:water_source"},
|
||||
{name = "mcl_flowers:waterlily"},
|
||||
}
|
||||
|
||||
-- Spawn them in shallow water at ocean level in Swampland.
|
||||
-- Tweak lilydepth to change the maximum water depth
|
||||
local lilydepth = 2
|
||||
|
||||
for d = 1, lilydepth do
|
||||
local height = d + 2
|
||||
local y = 1 - d
|
||||
table.insert(lily_schem, 1, {name = "air", prob = 0})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
schematic = {
|
||||
size = vector.new(1, height, 1),
|
||||
data = table.copy(lily_schem),
|
||||
},
|
||||
place_on = "mcl_core:dirt",
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 0.3,
|
||||
spread = vector.new(100, 100, 100),
|
||||
seed = 503,
|
||||
octaves = 6,
|
||||
persist = 0.7,
|
||||
},
|
||||
y_min = y,
|
||||
y_max = y,
|
||||
biomes = {"Swampland_shore"},
|
||||
rotation = "random",
|
||||
})
|
||||
end
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
|
||||
-- Taiga
|
||||
vl_biomes.register_biome({
|
||||
name = "Taiga",
|
||||
node_top = "mcl_core:dirt_with_grass",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 3,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_min = 4,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 58,
|
||||
heat_point = 22,
|
||||
_mcl_biome_type = "cold",
|
||||
_mcl_water_temp = "cold",
|
||||
_mcl_grass_palette_index = 12,
|
||||
_mcl_foliage_palette_index = 10,
|
||||
_mcl_water_palette_index = 4,
|
||||
_mcl_skycolor = "#7DA3FF",
|
||||
_beach = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 2,
|
||||
node_filler = "mcl_core:sandstone",
|
||||
depth_filler = 1,
|
||||
y_min = 1,
|
||||
y_max = 3,
|
||||
_mcl_foliage_palette_index = 1,
|
||||
},
|
||||
_ocean = {
|
||||
node_top = "mcl_core:gravel",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:gravel",
|
||||
depth_filler = 3,
|
||||
},
|
||||
})
|
||||
|
||||
-- Small lollipop spruce
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block", "mcl_core:podzol"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.004,
|
||||
scale = 0.0022,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2500,
|
||||
octaves = 3,
|
||||
persist = 0.66
|
||||
},
|
||||
biomes = {"Taiga"},
|
||||
y_min = 2,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_spruce_lollipop.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
-- not supported by spruce leaves _mcl_foliage_palette_index = 10,
|
||||
})
|
||||
|
||||
-- Matchstick spruce: Very few leaves, tall trunk
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block", "mcl_core:podzol"},
|
||||
sidelen = 80,
|
||||
noise_params = {
|
||||
offset = -0.025,
|
||||
scale = 0.025,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2566,
|
||||
octaves = 5,
|
||||
persist = 0.60,
|
||||
},
|
||||
biomes = {"Taiga"},
|
||||
y_min = 3,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_spruce_matchstick.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
-- not supported by spruce leaves _mcl_foliage_palette_index = 10,
|
||||
})
|
||||
|
||||
-- Common spruce
|
||||
vl_biomes.register_spruce_decoration(11000, 0.00150, "mcl_core_spruce_5.mts", {"Taiga"})
|
||||
vl_biomes.register_spruce_decoration(2500, 0.00325, "mcl_core_spruce_1.mts", {"Taiga"})
|
||||
vl_biomes.register_spruce_decoration(7000, 0.00425, "mcl_core_spruce_3.mts", {"Taiga"})
|
||||
vl_biomes.register_spruce_decoration(9000, 0.00325, "mcl_core_spruce_4.mts", {"Taiga"})
|
||||
|
||||
-- Mushrooms in Taiga
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_core:podzol"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.003,
|
||||
biomes = {"Taiga"},
|
||||
y_min = vl_biomes.overworld_min,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_mushrooms:mushroom_red",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_core:podzol"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.003,
|
||||
biomes = {"Taiga"},
|
||||
y_min = vl_biomes.overworld_min,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_mushrooms:mushroom_brown",
|
||||
})
|
||||
|
|
@ -0,0 +1,137 @@
|
|||
local mod_mcl_structures = minetest.get_modpath("mcl_structures")
|
||||
|
||||
-- Mega Pine Taiga aka Old Growth Pine Taiga
|
||||
vl_biomes.register_biome({
|
||||
name = "MegaTaiga",
|
||||
node_top = "mcl_core:podzol",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 3,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 76,
|
||||
heat_point = 10,
|
||||
_mcl_biome_type = "cold",
|
||||
_mcl_water_temp = "cold",
|
||||
_mcl_grass_palette_index = 4,
|
||||
_mcl_foliage_palette_index = 9,
|
||||
_mcl_water_palette_index = 4,
|
||||
_mcl_skycolor = "#7CA3FF",
|
||||
_ocean = {
|
||||
node_top = "mcl_core:gravel",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:gravel",
|
||||
depth_filler = 3,
|
||||
},
|
||||
})
|
||||
|
||||
-- Random coarse dirt floor in Mega Taiga
|
||||
minetest.register_ore({
|
||||
ore_type = "sheet",
|
||||
ore = "mcl_core:coarse_dirt",
|
||||
wherein = {"mcl_core:podzol", "mcl_core:dirt"},
|
||||
clust_scarcity = 1,
|
||||
clust_num_ores = 12,
|
||||
clust_size = 10,
|
||||
y_min = vl_biomes.overworld_min,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
noise_threshold = 0.2,
|
||||
noise_params = {offset = 0, scale = 15, spread = vector.new(130, 130, 130), seed = 24, octaves = 3, persist = 0.70},
|
||||
biomes = {"MegaTaiga"},
|
||||
})
|
||||
-- Mossy cobblestone boulder (3x3)
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_core:podzol", "mcl_core:dirt", "mcl_core:coarse_dirt"},
|
||||
sidelen = 80,
|
||||
noise_params = {
|
||||
offset = 0.00015,
|
||||
scale = 0.001,
|
||||
spread = vector.new(300, 300, 300),
|
||||
seed = 775703,
|
||||
octaves = 4,
|
||||
persist = 0.63,
|
||||
},
|
||||
biomes = {"MegaTaiga"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_structures .. "/schematics/mcl_structures_boulder.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
})
|
||||
|
||||
-- Small mossy cobblestone boulder (2x2)
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_core:podzol", "mcl_core:dirt", "mcl_core:coarse_dirt"},
|
||||
sidelen = 80,
|
||||
noise_params = {
|
||||
offset = 0.001,
|
||||
scale = 0.001,
|
||||
spread = vector.new(300, 300, 300),
|
||||
seed = 775704,
|
||||
octaves = 4,
|
||||
persist = 0.63,
|
||||
},
|
||||
biomes = {"MegaTaiga"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_structures .. "/schematics/mcl_structures_boulder_small.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
})
|
||||
|
||||
-- Huge spruce
|
||||
vl_biomes.register_spruce_decoration(3000, 0.0008, "mcl_core_spruce_huge_up_1.mts", {"MegaTaiga"})
|
||||
vl_biomes.register_spruce_decoration(4000, 0.0008, "mcl_core_spruce_huge_up_2.mts", {"MegaTaiga"})
|
||||
vl_biomes.register_spruce_decoration(6000, 0.0008, "mcl_core_spruce_huge_up_3.mts", {"MegaTaiga"})
|
||||
|
||||
-- Common spruce
|
||||
vl_biomes.register_spruce_decoration(2500, 0.00325, "mcl_core_spruce_1.mts", {"MegaTaiga"})
|
||||
vl_biomes.register_spruce_decoration(7000, 0.00425, "mcl_core_spruce_3.mts", {"MegaTaiga"})
|
||||
vl_biomes.register_spruce_decoration(9000, 0.00325, "mcl_core_spruce_4.mts", {"MegaTaiga"})
|
||||
vl_biomes.register_spruce_decoration(9500, 0.00500, "mcl_core_spruce_tall.mts", {"MegaTaiga"})
|
||||
vl_biomes.register_spruce_decoration(5000, 0.00250, "mcl_core_spruce_2.mts", {"MegaTaiga"})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
priority = 1500,
|
||||
place_on = {"mcl_core:podzol", "mcl_core:dirt", "mcl_core:dirt_with_grass", "mcl_core:coarse_dirt", "group:hardened_clay"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.01,
|
||||
scale = 0.003,
|
||||
spread = vector.new(100, 100, 100),
|
||||
seed = 1972,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
y_min = 4,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
biomes = {"MegaTaiga"},
|
||||
decoration = "mcl_core:deadbush",
|
||||
height = 1,
|
||||
})
|
||||
-- Mushrooms in Taiga
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_core:podzol"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.003,
|
||||
biomes = {"MegaTaiga"},
|
||||
y_min = vl_biomes.overworld_min,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_mushrooms:mushroom_red",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_core:podzol"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.003,
|
||||
biomes = {"MegaTaiga"},
|
||||
y_min = vl_biomes.overworld_min,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_mushrooms:mushroom_brown",
|
||||
})
|
|
@ -0,0 +1,123 @@
|
|||
local mod_mcl_structures = minetest.get_modpath("mcl_structures")
|
||||
|
||||
-- Mega Spruce Taiga aka Old Growth Spruce Taiga
|
||||
vl_biomes.register_biome({
|
||||
name = "MegaSpruceTaiga",
|
||||
node_top = "mcl_core:podzol",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 3,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 2,
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 100,
|
||||
heat_point = 8,
|
||||
_mcl_biome_type = "cold",
|
||||
_mcl_water_temp = "cold",
|
||||
_mcl_grass_palette_index = 5,
|
||||
_mcl_foliage_palette_index = 10,
|
||||
_mcl_water_palette_index = 4,
|
||||
_mcl_skycolor = "#7DA3FF",
|
||||
_ocean = {
|
||||
node_top = "mcl_core:gravel",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:gravel",
|
||||
depth_filler = 3,
|
||||
},
|
||||
})
|
||||
-- Mossy cobblestone boulder (3x3)
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_core:podzol", "mcl_core:dirt", "mcl_core:coarse_dirt"},
|
||||
sidelen = 80,
|
||||
noise_params = {
|
||||
offset = 0.00015,
|
||||
scale = 0.001,
|
||||
spread = vector.new(300, 300, 300),
|
||||
seed = 775703,
|
||||
octaves = 4,
|
||||
persist = 0.63,
|
||||
},
|
||||
biomes = {"MegaSpruceTaiga"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_structures .. "/schematics/mcl_structures_boulder.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
})
|
||||
|
||||
-- Small mossy cobblestone boulder (2x2)
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"mcl_core:podzol", "mcl_core:dirt", "mcl_core:coarse_dirt"},
|
||||
sidelen = 80,
|
||||
noise_params = {
|
||||
offset = 0.001,
|
||||
scale = 0.001,
|
||||
spread = vector.new(300, 300, 300),
|
||||
seed = 775704,
|
||||
octaves = 4,
|
||||
persist = 0.63,
|
||||
},
|
||||
biomes = {"MegaSpruceTaiga"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_structures .. "/schematics/mcl_structures_boulder_small.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
})
|
||||
|
||||
-- Huge spruce
|
||||
vl_biomes.register_spruce_decoration(3000, 0.0030, "mcl_core_spruce_huge_1.mts", {"MegaSpruceTaiga"})
|
||||
vl_biomes.register_spruce_decoration(4000, 0.0036, "mcl_core_spruce_huge_2.mts", {"MegaSpruceTaiga"})
|
||||
vl_biomes.register_spruce_decoration(6000, 0.0036, "mcl_core_spruce_huge_3.mts", {"MegaSpruceTaiga"})
|
||||
vl_biomes.register_spruce_decoration(6600, 0.0036, "mcl_core_spruce_huge_4.mts", {"MegaSpruceTaiga"})
|
||||
|
||||
-- Common spruce
|
||||
vl_biomes.register_spruce_decoration(2500, 0.00325, "mcl_core_spruce_1.mts", {"MegaSpruceTaiga"})
|
||||
vl_biomes.register_spruce_decoration(7000, 0.00425, "mcl_core_spruce_3.mts", {"MegaSpruceTaiga"})
|
||||
vl_biomes.register_spruce_decoration(5000, 0.00250, "mcl_core_spruce_2.mts", {"MegaSpruceTaiga"})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
priority = 1500,
|
||||
place_on = {"mcl_core:podzol", "mcl_core:dirt", "mcl_core:dirt_with_grass", "mcl_core:coarse_dirt", "group:hardened_clay"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.01,
|
||||
scale = 0.003,
|
||||
spread = vector.new(100, 100, 100),
|
||||
seed = 1972,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
y_min = 4,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
biomes = {"MegaSpruceTaiga"},
|
||||
decoration = "mcl_core:deadbush",
|
||||
height = 1,
|
||||
})
|
||||
|
||||
-- Mushrooms in Taiga
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_core:podzol"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.003,
|
||||
biomes = {"MegaSpruceTaiga"},
|
||||
y_min = vl_biomes.overworld_min,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_mushrooms:mushroom_red",
|
||||
})
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "simple",
|
||||
place_on = {"mcl_core:podzol"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.003,
|
||||
biomes = {"MegaSpruceTaiga"},
|
||||
y_min = vl_biomes.overworld_min,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
decoration = "mcl_mushrooms:mushroom_brown",
|
||||
})
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
local mg_name = minetest.get_mapgen_setting("mg_name")
|
||||
|
||||
-- Note: this currently has to go after all the extremehills (windswept hills) biomes in order to be able to register.
|
||||
-- Alternatively, we could put a copy into each...
|
||||
local stonelike = {"mcl_core:stone", "mcl_core:diorite", "mcl_core:andesite", "mcl_core:granite"}
|
||||
|
||||
-- Emeralds
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "mcl_core:stone_with_emerald",
|
||||
wherein = stonelike,
|
||||
clust_scarcity = 16384,
|
||||
clust_num_ores = 1,
|
||||
clust_size = 1,
|
||||
y_min = mcl_worlds.layer_to_y(4),
|
||||
y_max = mcl_worlds.layer_to_y(32),
|
||||
biomes = {
|
||||
"ExtremeHills", "ExtremeHills_beach", "ExtremeHills_ocean", "ExtremeHills_deep_ocean", "ExtremeHills_underground",
|
||||
"ExtremeHills+", "ExtremeHills+_ocean", "ExtremeHills+_deep_ocean", "ExtremeHills+_underground",
|
||||
"ExtremeHillsM", "ExtremeHillsM_ocean", "ExtremeHillsM_deep_ocean", "ExtremeHillsM_underground",
|
||||
},
|
||||
})
|
||||
|
||||
-- Rarely replace stone with stone monster eggs.
|
||||
-- In v6 this can happen anywhere, in other mapgens only in Extreme Hills.
|
||||
local monster_egg_scarcity = (mg_name == "v6" and 28 or 26)^3
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "mcl_monster_eggs:monster_egg_stone",
|
||||
wherein = "mcl_core:stone",
|
||||
clust_scarcity = monster_egg_scarcity,
|
||||
clust_num_ores = 3,
|
||||
clust_size = 2,
|
||||
y_min = vl_biomes.overworld_min,
|
||||
y_max = mcl_worlds.layer_to_y(61),
|
||||
biomes = {
|
||||
"ExtremeHills", "ExtremeHills_beach", "ExtremeHills_ocean", "ExtremeHills_deep_ocean", "ExtremeHills_underground",
|
||||
"ExtremeHills+", "ExtremeHills+_ocean", "ExtremeHills+_deep_ocean", "ExtremeHills+_underground",
|
||||
"ExtremeHillsM", "ExtremeHillsM_ocean", "ExtremeHillsM_deep_ocean", "ExtremeHillsM_underground",
|
||||
},
|
||||
})
|
|
@ -0,0 +1,92 @@
|
|||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
|
||||
-- Extreme Hills aka Windswept Hills
|
||||
-- Sparsely populated grasslands with little tallgras and trees.
|
||||
vl_biomes.register_biome({
|
||||
name = "ExtremeHills",
|
||||
node_top = "mcl_core:dirt_with_grass",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 4,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 4,
|
||||
y_min = 4,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 10,
|
||||
heat_point = 45,
|
||||
_mcl_biome_type = "cold",
|
||||
_mcl_water_temp = "cold",
|
||||
_mcl_grass_palette_index = 6,
|
||||
_mcl_foliage_palette_index = 11,
|
||||
_mcl_water_palette_index = 4,
|
||||
_mcl_skycolor = "#7DA2FF",
|
||||
_beach = {
|
||||
node_top = "mcl_core:sand",
|
||||
depth_top = 2,
|
||||
node_filler = "mcl_core:sandstone",
|
||||
depth_filler = 3,
|
||||
y_min = -4,
|
||||
y_max = 3,
|
||||
_mcl_foliage_palette_index = 1,
|
||||
},
|
||||
_ocean = {
|
||||
node_top = "mcl_core:gravel",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:gravel",
|
||||
depth_filler = 4,
|
||||
y_max = -5,
|
||||
vertical_blend = 1,
|
||||
},
|
||||
})
|
||||
|
||||
-- Large oaks
|
||||
for i = 1, 4 do
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block", "mcl_core:dirt", },
|
||||
sidelen = 80,
|
||||
noise_params = {
|
||||
offset = -0.0007,
|
||||
scale = 0.001,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 3,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
biomes = {"ExtremeHills"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_oak_large_" .. i .. ".mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 11,
|
||||
})
|
||||
end
|
||||
-- Small “classic” oak (many biomes)
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block", "mcl_core:dirt", },
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.0,
|
||||
scale = 0.002,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2,
|
||||
octaves = 3,
|
||||
persist = 0.7
|
||||
},
|
||||
biomes = {"ExtremeHills"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 11,
|
||||
})
|
||||
|
||||
-- Spruce
|
||||
vl_biomes.register_spruce_decoration(11000, 0.000025, "mcl_core_spruce_5.mts", {"ExtremeHills"})
|
||||
vl_biomes.register_spruce_decoration(2500, 0.00005, "mcl_core_spruce_1.mts", {"ExtremeHills"})
|
||||
vl_biomes.register_spruce_decoration(7000, 0.00005, "mcl_core_spruce_3.mts", {"ExtremeHills"})
|
||||
vl_biomes.register_spruce_decoration(9000, 0.00005, "mcl_core_spruce_4.mts", {"ExtremeHills"})
|
||||
|
|
@ -0,0 +1,139 @@
|
|||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
|
||||
-- Extreme Hills+ aka Windswept Forest
|
||||
-- This biome is near-identical to Extreme Hills on the surface but has snow-covered mountains with spruce/oak
|
||||
-- forests above a certain height.
|
||||
vl_biomes.register_biome({
|
||||
name = "ExtremeHills+",
|
||||
node_top = "mcl_core:dirt_with_grass",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:dirt",
|
||||
depth_filler = 4,
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 4,
|
||||
y_min = 1,
|
||||
y_max = 41,
|
||||
humidity_point = 24,
|
||||
heat_point = 25,
|
||||
vertical_blend = 6,
|
||||
_mcl_biome_type = "cold",
|
||||
_mcl_water_temp = "cold",
|
||||
_mcl_grass_palette_index = 8,
|
||||
_mcl_foliage_palette_index = 11,
|
||||
_mcl_water_palette_index = 4,
|
||||
_mcl_skycolor = "#7DA2FF",
|
||||
_snowtop = {
|
||||
node_dust = "mcl_core:snow",
|
||||
node_top = "mcl_core:dirt_with_grass_snow",
|
||||
depth_top = 1,
|
||||
node_river_water = "mcl_core:ice",
|
||||
y_min = 42,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
},
|
||||
_ocean = {
|
||||
node_top = "mcl_core:gravel",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:gravel",
|
||||
depth_filler = 4,
|
||||
},
|
||||
})
|
||||
|
||||
-- Large oaks
|
||||
for i = 1, 4 do
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block", "mcl_core:dirt", },
|
||||
sidelen = 80,
|
||||
noise_params = {
|
||||
offset = -0.0007,
|
||||
scale = 0.001,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 3,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
biomes = {"ExtremeHills+", "ExtremeHills+_snowtop"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_oak_large_" .. i .. ".mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 11,
|
||||
})
|
||||
end
|
||||
|
||||
-- Small “classic” oak (many biomes)
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block", "mcl_core:dirt", },
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.0,
|
||||
scale = 0.002,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2,
|
||||
octaves = 3,
|
||||
persist = 0.7
|
||||
},
|
||||
biomes = {"ExtremeHills+", "ExtremeHills+_snowtop"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 11,
|
||||
})
|
||||
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block", "mcl_core:dirt"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.006,
|
||||
scale = 0.002,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2,
|
||||
octaves = 3,
|
||||
persist = 0.7
|
||||
},
|
||||
biomes = {"ExtremeHills+", "ExtremeHills+_snowtop"},
|
||||
y_min = 50,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 11,
|
||||
})
|
||||
|
||||
-- Spruce
|
||||
vl_biomes.register_spruce_decoration(11000, 0.001, "mcl_core_spruce_5.mts", {"ExtremeHills+", "ExtremeHills+_snowtop"}, 50)
|
||||
vl_biomes.register_spruce_decoration(2500, 0.002, "mcl_core_spruce_1.mts", {"ExtremeHills+", "ExtremeHills+_snowtop"}, 50)
|
||||
vl_biomes.register_spruce_decoration(7000, 0.003, "mcl_core_spruce_3.mts", {"ExtremeHills+", "ExtremeHills+_snowtop"}, 50)
|
||||
vl_biomes.register_spruce_decoration(9000, 0.002, "mcl_core_spruce_4.mts", {"ExtremeHills+", "ExtremeHills+_snowtop"}, 50)
|
||||
|
||||
-- Some tallgrass
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
priority = 1500,
|
||||
place_on = {"group:grass_block"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.0,
|
||||
scale = 0.09,
|
||||
spread = vector.new(15, 15, 15),
|
||||
seed = 420,
|
||||
octaves = 3,
|
||||
persist = 0.6,
|
||||
},
|
||||
biomes = {"ExtremeHills+_snowtop"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = {
|
||||
size = vector.new(1, 2, 1),
|
||||
data = {
|
||||
{name = "mcl_core:dirt_with_grass", force_place = true, param2 = 8 },
|
||||
{name = "mcl_flowers:tallgrass", param2 = 8},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
|
@ -0,0 +1,95 @@
|
|||
local mod_mcl_core = minetest.get_modpath("mcl_core")
|
||||
|
||||
-- Extreme Hills M aka Windswept Gravelly Hills
|
||||
-- Just gravel.
|
||||
vl_biomes.register_biome({
|
||||
name = "ExtremeHillsM",
|
||||
node_top = "mcl_core:gravel",
|
||||
depth_top = 1,
|
||||
node_filler = "mcl_core:gravel",
|
||||
depth_filler = 3,
|
||||
node_riverbed = "mcl_core:gravel",
|
||||
depth_riverbed = 3,
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
humidity_point = 0,
|
||||
heat_point = 25,
|
||||
_mcl_biome_type = "cold",
|
||||
_mcl_water_temp = "cold",
|
||||
_mcl_grass_palette_index = 7,
|
||||
_mcl_foliage_palette_index = 11,
|
||||
_mcl_water_palette_index = 4,
|
||||
_mcl_skycolor = "#7DA2FF",
|
||||
_ocean = {
|
||||
node_riverbed = "mcl_core:sand",
|
||||
depth_riverbed = 3,
|
||||
},
|
||||
})
|
||||
|
||||
-- Small dirt patches in Extreme Hills M
|
||||
minetest.register_ore({
|
||||
ore_type = "blob",
|
||||
-- TODO: Should be grass block. But generating this as ore means gras blocks will spawn undeground. :-(
|
||||
ore = "mcl_core:dirt",
|
||||
wherein = {"mcl_core:gravel"},
|
||||
clust_scarcity = 5000,
|
||||
clust_num_ores = 12,
|
||||
clust_size = 4,
|
||||
y_min = vl_biomes.overworld_min,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
noise_threshold = 0.2,
|
||||
noise_params = {offset = 0, scale = 5, spread = vector.new(250, 250, 250), seed = 64, octaves = 3, persist = 0.60},
|
||||
biomes = {"ExtremeHillsM"},
|
||||
})
|
||||
|
||||
-- Large oaks
|
||||
for i = 1, 4 do
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block", "mcl_core:dirt", },
|
||||
sidelen = 80,
|
||||
noise_params = {
|
||||
offset = -0.0007,
|
||||
scale = 0.001,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 3,
|
||||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
biomes = {"ExtremeHillsM"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_oak_large_" .. i .. ".mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 11,
|
||||
})
|
||||
end
|
||||
-- Small “classic” oak (many biomes)
|
||||
mcl_mapgen_core.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"group:grass_block", "mcl_core:dirt", },
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.0,
|
||||
scale = 0.002,
|
||||
spread = vector.new(250, 250, 250),
|
||||
seed = 2,
|
||||
octaves = 3,
|
||||
persist = 0.7
|
||||
},
|
||||
biomes = {"ExtremeHillsM"},
|
||||
y_min = 1,
|
||||
y_max = vl_biomes.overworld_max,
|
||||
schematic = mod_mcl_core .. "/schematics/mcl_core_oak_classic.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
_mcl_foliage_palette_index = 11,
|
||||
})
|
||||
|
||||
-- Spruce
|
||||
vl_biomes.register_spruce_decoration(11000, 0.000025, "mcl_core_spruce_5.mts", {"ExtremeHillsM"})
|
||||
vl_biomes.register_spruce_decoration(2500, 0.00005, "mcl_core_spruce_1.mts", {"ExtremeHillsM"})
|
||||
vl_biomes.register_spruce_decoration(7000, 0.00005, "mcl_core_spruce_3.mts", {"ExtremeHillsM"})
|
||||
vl_biomes.register_spruce_decoration(9000, 0.00005, "mcl_core_spruce_4.mts", {"ExtremeHillsM"})
|
||||
|
Loading…
Reference in New Issue