X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=mods%2Fdefault%2Fmapgen.lua;h=05d7b2b9cf8ede652c8d6ae1b44ab1928fe384a1;hb=7a3cff552943b0ecdf57e43b7d8d9040bea6c0ac;hp=4865341839625ef22893ebe1b9d438f2c32f0ac2;hpb=0914e595c7ab01a66188fca52561df26f852d7c4;p=oweals%2Fminetest_game.git diff --git a/mods/default/mapgen.lua b/mods/default/mapgen.lua index 48653418..05d7b2b9 100644 --- a/mods/default/mapgen.lua +++ b/mods/default/mapgen.lua @@ -2,7 +2,6 @@ -- Aliases for map generator outputs -- - minetest.register_alias("mapgen_stone", "default:stone") minetest.register_alias("mapgen_dirt", "default:dirt") minetest.register_alias("mapgen_dirt_with_grass", "default:dirt_with_grass") @@ -19,15 +18,19 @@ minetest.register_alias("mapgen_snow", "default:snow") minetest.register_alias("mapgen_ice", "default:ice") minetest.register_alias("mapgen_sandstone", "default:sandstone") +-- Flora + minetest.register_alias("mapgen_tree", "default:tree") minetest.register_alias("mapgen_leaves", "default:leaves") minetest.register_alias("mapgen_apple", "default:apple") minetest.register_alias("mapgen_jungletree", "default:jungletree") minetest.register_alias("mapgen_jungleleaves", "default:jungleleaves") minetest.register_alias("mapgen_junglegrass", "default:junglegrass") -minetest.register_alias("mapgen_pinetree", "default:pinetree") +minetest.register_alias("mapgen_pine_tree", "default:pine_tree") minetest.register_alias("mapgen_pine_needles", "default:pine_needles") +-- Dungeons + minetest.register_alias("mapgen_cobble", "default:cobble") minetest.register_alias("mapgen_stair_cobble", "stairs:stair_cobble") minetest.register_alias("mapgen_mossycobble", "default:mossycobble") @@ -39,86 +42,98 @@ minetest.register_alias("mapgen_stair_sandstonebrick", "stairs:stair_sandstonebr -- Register ores -- - +-- All mapgens except singlenode -- Blob ore first to avoid other ores inside blobs function default.register_ores() + + -- Clay + minetest.register_ore({ - ore_type = "blob", - ore = "default:clay", - wherein = {"default:sand"}, - clust_scarcity = 24 * 24 * 24, - clust_size = 7, - y_min = -15, - y_max = 0, - noise_threshhold = 0, - noise_params = { - offset = 0.35, + ore_type = "blob", + ore = "default:clay", + wherein = {"default:sand"}, + clust_scarcity = 16 * 16 * 16, + clust_size = 5, + y_min = -15, + y_max = 0, + noise_threshold = 0.0, + noise_params = { + offset = 0.5, scale = 0.2, spread = {x = 5, y = 5, z = 5}, seed = -316, octaves = 1, - persist = 0.5 + persist = 0.0 }, }) + -- Sand + minetest.register_ore({ - ore_type = "blob", - ore = "default:sand", - wherein = {"default:stone"}, - clust_scarcity = 24 * 24 * 24, - clust_size = 7, - y_min = -63, - y_max = 4, - noise_threshhold = 0, - noise_params = { - offset = 0.35, + ore_type = "blob", + ore = "default:sand", + wherein = {"default:stone", "default:sandstone", + "default:desert_stone"}, + clust_scarcity = 16 * 16 * 16, + clust_size = 5, + y_min = -31, + y_max = 4, + noise_threshold = 0.0, + noise_params = { + offset = 0.5, scale = 0.2, spread = {x = 5, y = 5, z = 5}, seed = 2316, octaves = 1, - persist = 0.5 + persist = 0.0 }, }) + -- Dirt + minetest.register_ore({ - ore_type = "blob", - ore = "default:dirt", - wherein = {"default:stone"}, - clust_scarcity = 24 * 24 * 24, - clust_size = 7, - y_min = -63, - y_max = 31000, - noise_threshhold = 0, - noise_params = { - offset = 0.35, + ore_type = "blob", + ore = "default:dirt", + wherein = {"default:stone", "default:sandstone"}, + clust_scarcity = 16 * 16 * 16, + clust_size = 5, + y_min = -31, + y_max = 31000, + noise_threshold = 0.0, + noise_params = { + offset = 0.5, scale = 0.2, spread = {x = 5, y = 5, z = 5}, seed = 17676, octaves = 1, - persist = 0.5 + persist = 0.0 }, }) + -- Gravel + minetest.register_ore({ - ore_type = "blob", - ore = "default:gravel", - wherein = {"default:stone"}, - clust_scarcity = 24 * 24 * 24, - clust_size = 7, - y_min = -31000, - y_max = 31000, - noise_threshhold = 0, - noise_params = { - offset = 0.35, + ore_type = "blob", + ore = "default:gravel", + wherein = {"default:stone"}, + clust_scarcity = 16 * 16 * 16, + clust_size = 5, + y_min = -31000, + y_max = 31000, + noise_threshold = 0.0, + noise_params = { + offset = 0.5, scale = 0.2, spread = {x = 5, y = 5, z = 5}, seed = 766, octaves = 1, - persist = 0.5 + persist = 0.0 }, }) + -- Coal + minetest.register_ore({ ore_type = "scatter", ore = "default:stone_with_coal", @@ -141,6 +156,8 @@ function default.register_ores() y_max = 0, }) + -- Iron + minetest.register_ore({ ore_type = "scatter", ore = "default:stone_with_iron", @@ -185,6 +202,8 @@ function default.register_ores() y_max = -64, }) + --Mese + minetest.register_ore({ ore_type = "scatter", ore = "default:stone_with_mese", @@ -218,6 +237,8 @@ function default.register_ores() y_max = -1024, }) + -- Gold + minetest.register_ore({ ore_type = "scatter", ore = "default:stone_with_gold", @@ -240,6 +261,8 @@ function default.register_ores() y_max = -256, }) + -- Diamond + minetest.register_ore({ ore_type = "scatter", ore = "default:stone_with_diamond", @@ -262,6 +285,8 @@ function default.register_ores() y_max = -256, }) + -- Copper + minetest.register_ore({ ore_type = "scatter", ore = "default:stone_with_copper", @@ -290,12 +315,146 @@ end -- Register biomes -- +-- All mapgens except mgv6 and singlenode function default.register_biomes() minetest.clear_registered_biomes() + -- Permanent ice + + minetest.register_biome({ + name = "glacier", + node_dust = "default:snowblock", + node_top = "default:snowblock", + depth_top = 1, + node_filler = "default:snowblock", + depth_filler = 3, + node_stone = "default:ice", + node_water_top = "default:ice", + depth_water_top = 10, + --node_water = "", + node_river_water = "default:ice", + y_min = -8, + y_max = 31000, + heat_point = 0, + humidity_point = 50, + }) + + minetest.register_biome({ + name = "glacier_ocean", + node_dust = "default:snowblock", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 3, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + y_min = -112, + y_max = -9, + heat_point = 0, + humidity_point = 50, + }) + + -- Cold + + minetest.register_biome({ + name = "tundra", + --node_dust = "", + node_top = "default:dirt_with_snow", + depth_top = 1, + node_filler = "default:dirt", + depth_filler = 1, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + y_min = 2, + y_max = 31000, + heat_point = 15, + humidity_point = 35, + }) + + minetest.register_biome({ + name = "tundra_beach", + --node_dust = "", + node_top = "default:gravel", + depth_top = 1, + node_filler = "default:gravel", + depth_filler = 2, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + y_min = -3, + y_max = 1, + heat_point = 15, + humidity_point = 35, + }) + minetest.register_biome({ - name = "default:grassland", + name = "tundra_ocean", + --node_dust = "", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 3, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + y_min = -112, + y_max = -4, + heat_point = 15, + humidity_point = 35, + }) + + + minetest.register_biome({ + name = "taiga", + node_dust = "default:snow", + node_top = "default:dirt_with_snow", + depth_top = 1, + node_filler = "default:dirt", + depth_filler = 3, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + y_min = 2, + y_max = 31000, + heat_point = 15, + humidity_point = 65, + }) + + minetest.register_biome({ + name = "taiga_ocean", + --node_dust = "", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 3, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + y_min = -112, + y_max = 1, + heat_point = 15, + humidity_point = 65, + }) + + -- Temperate + + minetest.register_biome({ + name = "stone_grassland", --node_dust = "", node_top = "default:dirt_with_grass", depth_top = 1, @@ -305,25 +464,378 @@ function default.register_biomes() --node_water_top = "", --depth_water_top = , --node_water = "", + --node_river_water = "", + y_min = 6, + y_max = 31000, + heat_point = 40, + humidity_point = 35, + }) + + minetest.register_biome({ + name = "stone_grassland_dunes", + --node_dust = "", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 2, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + y_min = 5, + y_max = 5, + heat_point = 40, + humidity_point = 35, + }) + + minetest.register_biome({ + name = "stone_grassland_ocean", + --node_dust = "", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 3, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + y_min = -112, + y_max = 4, + heat_point = 40, + humidity_point = 35, + }) + + + minetest.register_biome({ + name = "coniferous_forest", + --node_dust = "", + node_top = "default:dirt_with_grass", + depth_top = 1, + node_filler = "default:dirt", + depth_filler = 3, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + y_min = 6, + y_max = 31000, + heat_point = 40, + humidity_point = 65, + }) + + minetest.register_biome({ + name = "coniferous_forest_dunes", + --node_dust = "", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 3, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", y_min = 5, + y_max = 5, + heat_point = 40, + humidity_point = 65, + }) + + minetest.register_biome({ + name = "coniferous_forest_ocean", + --node_dust = "", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 3, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + y_min = -112, + y_max = 4, + heat_point = 40, + humidity_point = 65, + }) + + + minetest.register_biome({ + name = "sandstone_grassland", + --node_dust = "", + node_top = "default:dirt_with_grass", + depth_top = 1, + node_filler = "default:dirt", + depth_filler = 1, + node_stone = "default:sandstone", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + y_min = 6, y_max = 31000, - heat_point = 50, - humidity_point = 50, + heat_point = 60, + humidity_point = 35, }) minetest.register_biome({ - name = "default:grassland_ocean", + name = "sandstone_grassland_dunes", --node_dust = "", node_top = "default:sand", depth_top = 1, node_filler = "default:sand", depth_filler = 2, + node_stone = "default:sandstone", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + y_min = 5, + y_max = 5, + heat_point = 60, + humidity_point = 35, + }) + + minetest.register_biome({ + name = "sandstone_grassland_ocean", + --node_dust = "", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 3, + node_stone = "default:sandstone", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + y_min = -112, + y_max = 4, + heat_point = 60, + humidity_point = 35, + }) + + + minetest.register_biome({ + name = "deciduous_forest", + --node_dust = "", + node_top = "default:dirt_with_grass", + depth_top = 1, + node_filler = "default:dirt", + depth_filler = 3, --node_stone = "", --node_water_top = "", --depth_water_top = , --node_water = "", - y_min = -31000, + --node_river_water = "", + y_min = 1, + y_max = 31000, + heat_point = 60, + humidity_point = 65, + }) + + minetest.register_biome({ + name = "deciduous_forest_swamp", + --node_dust = "", + node_top = "default:dirt", + depth_top = 1, + node_filler = "default:dirt", + depth_filler = 3, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + y_min = -3, + y_max = 0, + heat_point = 60, + humidity_point = 65, + }) + + minetest.register_biome({ + name = "deciduous_forest_ocean", + --node_dust = "", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 3, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + y_min = -112, + y_max = -4, + heat_point = 60, + humidity_point = 65, + }) + + -- Hot + + minetest.register_biome({ + name = "desert", + --node_dust = "", + node_top = "default:desert_sand", + depth_top = 1, + node_filler = "default:desert_sand", + depth_filler = 1, + node_stone = "default:desert_stone", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + y_min = 5, + y_max = 31000, + heat_point = 85, + humidity_point = 20, + }) + + minetest.register_biome({ + name = "desert_ocean", + --node_dust = "", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 3, + node_stone = "default:desert_stone", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + y_min = -112, y_max = 4, + heat_point = 85, + humidity_point = 20, + }) + + + minetest.register_biome({ + name = "savanna", + --node_dust = "", + node_top = "default:dirt_with_dry_grass", + depth_top = 1, + node_filler = "default:dirt", + depth_filler = 1, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + y_min = 1, + y_max = 31000, + heat_point = 85, + humidity_point = 50, + }) + + minetest.register_biome({ + name = "savanna_swamp", + --node_dust = "", + node_top = "default:dirt", + depth_top = 1, + node_filler = "default:dirt", + depth_filler = 3, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + y_min = -3, + y_max = 0, + heat_point = 85, + humidity_point = 50, + }) + + minetest.register_biome({ + name = "savanna_ocean", + --node_dust = "", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 3, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + y_min = -112, + y_max = -4, + heat_point = 85, + humidity_point = 50, + }) + + + minetest.register_biome({ + name = "rainforest", + --node_dust = "", + node_top = "default:dirt_with_grass", + depth_top = 1, + node_filler = "default:dirt", + depth_filler = 3, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + y_min = 1, + y_max = 31000, + heat_point = 85, + humidity_point = 80, + }) + + minetest.register_biome({ + name = "rainforest_swamp", + --node_dust = "", + node_top = "default:dirt", + depth_top = 1, + node_filler = "default:dirt", + depth_filler = 3, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + y_min = -3, + y_max = 0, + heat_point = 85, + humidity_point = 80, + }) + + minetest.register_biome({ + name = "rainforest_ocean", + --node_dust = "", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 3, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + y_min = -112, + y_max = -4, + heat_point = 85, + humidity_point = 80, + }) + + -- Underground + + minetest.register_biome({ + name = "underground", + --node_dust = "", + --node_top = "", + --depth_top = , + --node_filler = "", + --depth_filler = , + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + y_min = -31000, + y_max = -113, heat_point = 50, humidity_point = 50, }) @@ -331,18 +843,20 @@ end -- --- Register mgv6 decorations +-- Register decorations -- +-- Mgv6 function default.register_mgv6_decorations() + minetest.clear_registered_decorations() -- Papyrus minetest.register_decoration({ deco_type = "simple", place_on = {"default:dirt_with_grass"}, - sidelen = 8, + sidelen = 16, noise_params = { offset = -0.3, scale = 0.7, @@ -355,7 +869,7 @@ function default.register_mgv6_decorations() y_max = 1, decoration = "default:papyrus", height = 2, - height_max = 4, + height_max = 4, spawn_by = "default:water_source", num_spawn_by = 1, }) @@ -381,7 +895,7 @@ function default.register_mgv6_decorations() height_max = 4, }) - -- Grasses + -- Long grasses for length = 1, 5 do minetest.register_decoration({ @@ -422,244 +936,423 @@ function default.register_mgv6_decorations() }) end +-- All mapgens except mgv6 and singlenode --- --- Register decorations --- - - -function default.register_decorations() - - -- Flowers - +local function register_grass_decoration(offset, scale, length) minetest.register_decoration({ deco_type = "simple", - place_on = {"default:dirt_with_grass"}, + place_on = {"default:dirt_with_grass", "default:sand"}, sidelen = 16, noise_params = { - offset = -0.02, - scale = 0.03, + offset = offset, + scale = scale, spread = {x = 200, y = 200, z = 200}, - seed = 436, + seed = 329, octaves = 3, persist = 0.6 }, - biomes = {"default:grassland"}, - y_min = -31000, + biomes = {"stone_grassland", "sandstone_grassland", + "deciduous_forest", "coniferous_forest", + "stone_grassland_dunes", "sandstone_grassland_dunes", + "coniferous_forest_dunes"}, + y_min = 1, y_max = 31000, - decoration = "flowers:rose", + decoration = "default:grass_"..length, }) - +end + +local function register_dry_grass_decoration(offset, scale, length) minetest.register_decoration({ deco_type = "simple", - place_on = {"default:dirt_with_grass"}, + place_on = {"default:dirt_with_dry_grass"}, sidelen = 16, noise_params = { - offset = -0.02, - scale = 0.03, + offset = offset, + scale = scale, spread = {x = 200, y = 200, z = 200}, - seed = 19822, + seed = 329, octaves = 3, persist = 0.6 }, - biomes = {"default:grassland"}, - y_min = 33, + biomes = {"savanna"}, + y_min = 1, y_max = 31000, - decoration = "flowers:tulip", + decoration = "default:dry_grass_"..length, }) - +end + +function default.register_decorations() + minetest.clear_registered_decorations() + + -- Apple tree and log + minetest.register_decoration({ - deco_type = "simple", + deco_type = "schematic", place_on = {"default:dirt_with_grass"}, sidelen = 16, noise_params = { - offset = -0.02, - scale = 0.03, - spread = {x = 200, y = 200, z = 200}, - seed = 1220999, + offset = 0.04, + scale = 0.02, + spread = {x = 250, y = 250, z = 250}, + seed = 2, octaves = 3, - persist = 0.6 + persist = 0.66 }, - biomes = {"default:grassland"}, - y_min = -31000, + biomes = {"deciduous_forest"}, + y_min = 1, y_max = 31000, - decoration = "flowers:dandelion_yellow", + schematic = minetest.get_modpath("default").."/schematics/apple_tree.mts", + flags = "place_center_x, place_center_z", }) - + minetest.register_decoration({ - deco_type = "simple", + deco_type = "schematic", place_on = {"default:dirt_with_grass"}, sidelen = 16, noise_params = { - offset = -0.02, - scale = 0.03, - spread = {x = 200, y = 200, z = 200}, - seed = 36662, + offset = 0.002, + scale = 0.001, + spread = {x = 250, y = 250, z = 250}, + seed = 2, octaves = 3, - persist = 0.6 + persist = 0.66 }, - biomes = {"default:grassland"}, - y_min = -31000, + biomes = {"deciduous_forest"}, + y_min = 1, y_max = 31000, - decoration = "flowers:geranium", + schematic = { + size = { x = 3, y = 3, z = 1}, + data = { + { name = "air", prob = 0 }, + { name = "air", prob = 0 }, + { name = "air", prob = 0 }, + { name = "default:tree", param2 = 12, prob = 191 }, + { name = "default:tree", param2 = 12 }, + { name = "default:tree", param2 = 12, prob = 127 }, + { name = "air", prob = 0 }, + { name = "flowers:mushroom_brown", prob = 63 }, + { name = "air", prob = 0 }, + }, + }, + flags = "place_center_x", + rotation = "random", }) - + + -- Jungle tree and log + minetest.register_decoration({ - deco_type = "simple", - place_on = {"default:dirt_with_grass"}, + deco_type = "schematic", + place_on = {"default:dirt_with_grass", "default:dirt"}, + sidelen = 80, + fill_ratio = 0.09, + biomes = {"rainforest", "rainforest_swamp"}, + y_min = 0, + y_max = 31000, + schematic = minetest.get_modpath("default").."/schematics/jungle_tree.mts", + flags = "place_center_x, place_center_z", + rotation = "random", + }) + + minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:dirt_with_grass", "default:dirt"}, + sidelen = 80, + fill_ratio = 0.01, + biomes = {"rainforest", "rainforest_swamp"}, + y_min = 1, + y_max = 31000, + schematic = { + size = { x = 3, y = 3, z = 1}, + data = { + { name = "air", prob = 0 }, + { name = "air", prob = 0 }, + { name = "air", prob = 0 }, + { name = "default:jungletree", param2 = 12, prob = 191 }, + { name = "default:jungletree", param2 = 12 }, + { name = "default:jungletree", param2 = 12, prob = 127 }, + { name = "air", prob = 0 }, + { name = "flowers:mushroom_brown", prob = 127 }, + { name = "air", prob = 0 }, + }, + }, + flags = "place_center_x", + rotation = "random", + }) + + -- Taiga and temperate coniferous forest pine tree and log + + minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:dirt_with_snow", "default:dirt_with_grass"}, sidelen = 16, noise_params = { - offset = -0.02, - scale = 0.03, - spread = {x = 200, y = 200, z = 200}, - seed = 1133, + offset = 0.04, + scale = 0.02, + spread = {x = 250, y = 250, z = 250}, + seed = 2, octaves = 3, - persist = 0.6 + persist = 0.66 }, - biomes = {"default:grassland"}, - y_min = -31000, + biomes = {"taiga", "coniferous_forest"}, + y_min = 2, y_max = 31000, - decoration = "flowers:viola", + schematic = minetest.get_modpath("default").."/schematics/pine_tree.mts", + flags = "place_center_x, place_center_z", }) - + minetest.register_decoration({ - deco_type = "simple", - place_on = {"default:dirt_with_grass"}, + deco_type = "schematic", + place_on = {"default:dirt_with_snow", "default:dirt_with_grass"}, + sidelen = 80, + fill_ratio = 0.003, + biomes = {"taiga", "coniferous_forest"}, + y_min = 1, + y_max = 31000, + schematic = { + size = { x = 3, y = 3, z = 1}, + data = { + { name = "air", prob = 0 }, + { name = "air", prob = 0 }, + { name = "air", prob = 0 }, + { name = "default:pine_tree", param2 = 12, prob = 191 }, + { name = "default:pine_tree", param2 = 12 }, + { name = "default:pine_tree", param2 = 12, prob = 127 }, + { name = "air", prob = 0 }, + { name = "flowers:mushroom_red", prob = 63 }, + { name = "air", prob = 0 }, + }, + }, + flags = "place_center_x", + rotation = "random", + }) + + -- Acacia tree and log + + minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:dirt_with_dry_grass"}, sidelen = 16, noise_params = { - offset = -0.02, - scale = 0.03, - spread = {x = 200, y = 200, z = 200}, - seed = 73133, + offset = 0, + scale = 0.002, + spread = {x = 250, y = 250, z = 250}, + seed = 2, octaves = 3, - persist = 0.6 + persist = 0.66 }, - biomes = {"default:grassland"}, - y_min = -31000, + biomes = {"savanna"}, + y_min = 1, y_max = 31000, - decoration = "flowers:dandelion_white", + schematic = minetest.get_modpath("default").."/schematics/acacia_tree.mts", + flags = "place_center_x, place_center_z", + rotation = "random", }) - -- Grasses + minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:dirt_with_dry_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.001, + spread = {x = 250, y = 250, z = 250}, + seed = 2, + octaves = 3, + persist = 0.66 + }, + biomes = {"savanna"}, + y_min = 1, + y_max = 31000, + schematic = { + size = { x = 3, y = 2, z = 1}, + data = { + { name = "air", prob = 0 }, + { name = "air", prob = 0 }, + { name = "air", prob = 0 }, + { name = "default:acacia_tree", param2 = 12, prob = 191 }, + { name = "default:acacia_tree", param2 = 12 }, + { name = "default:acacia_tree", param2 = 12, prob = 127 }, + }, + }, + flags = "place_center_x", + rotation = "random", + }) + + -- Aspen tree and log minetest.register_decoration({ - deco_type = "simple", + deco_type = "schematic", place_on = {"default:dirt_with_grass"}, sidelen = 16, noise_params = { - offset = 0.04, - scale = 0.04, - spread = {x = 200, y = 200, z = 200}, - seed = 66440, + offset = 0.0, + scale = -0.03, + spread = {x = 250, y = 250, z = 250}, + seed = 2, octaves = 3, - persist = 0.6 + persist = 0.66 }, - biomes = {"default:grassland"}, - y_min = -31000, + biomes = {"deciduous_forest"}, + y_min = 1, y_max = 31000, - decoration = "default:grass_1", + schematic = minetest.get_modpath("default").."/schematics/aspen_tree.mts", + flags = "place_center_x, place_center_z", + rotation = "random", }) - + minetest.register_decoration({ - deco_type = "simple", + deco_type = "schematic", place_on = {"default:dirt_with_grass"}, sidelen = 16, noise_params = { - offset = 0.02, - scale = 0.06, - spread = {x = 200, y = 200, z = 200}, - seed = 66440, + offset = 0.0, + scale = -0.0015, + spread = {x = 250, y = 250, z = 250}, + seed = 2, octaves = 3, - persist = 0.6 + persist = 0.66 }, - biomes = {"default:grassland"}, - y_min = -31000, + biomes = {"deciduous_forest"}, + y_min = 1, y_max = 31000, - decoration = "default:grass_2", + schematic = { + size = { x = 3, y = 3, z = 1}, + data = { + { name = "air", prob = 0 }, + { name = "air", prob = 0 }, + { name = "air", prob = 0 }, + { name = "default:aspen_tree", param2 = 12 }, + { name = "default:aspen_tree", param2 = 12 }, + { name = "default:aspen_tree", param2 = 12, prob = 127 }, + { name = "flowers:mushroom_red", prob = 63 }, + { name = "flowers:mushroom_brown", prob = 63 }, + { name = "air", prob = 0 }, + }, + }, + flags = "place_center_x", + rotation = "random", }) - + -- Large cactus + minetest.register_decoration({ - deco_type = "simple", - place_on = {"default:dirt_with_grass"}, + deco_type = "schematic", + place_on = {"default:desert_sand"}, sidelen = 16, noise_params = { - offset = 0, - scale = 0.08, + offset = -0.0003, + scale = 0.0009, spread = {x = 200, y = 200, z = 200}, - seed = 66440, + seed = 230, octaves = 3, persist = 0.6 }, - biomes = {"default:grassland"}, - y_min = -31000, + biomes = {"desert"}, + y_min = 5, y_max = 31000, - decoration = "default:grass_3", + schematic = minetest.get_modpath("default").."/schematics/large_cactus.mts", + flags = "place_center_x", + rotation = "random", }) - + + -- Cactus + minetest.register_decoration({ deco_type = "simple", - place_on = {"default:dirt_with_grass"}, + place_on = {"default:desert_sand"}, sidelen = 16, noise_params = { - offset = -0.02, - scale = 0.10, + offset = -0.0003, + scale = 0.0009, spread = {x = 200, y = 200, z = 200}, - seed = 66440, + seed = 230, octaves = 3, persist = 0.6 }, - biomes = {"default:grassland"}, - y_min = -31000, + biomes = {"desert"}, + y_min = 5, y_max = 31000, - decoration = "default:grass_4", + decoration = "default:cactus", + height = 2, + height_max = 5, }) - + + -- Papyrus + minetest.register_decoration({ - deco_type = "simple", - place_on = {"default:dirt_with_grass"}, + deco_type = "schematic", + place_on = {"default:dirt"}, sidelen = 16, noise_params = { - offset = -0.04, - scale = 0.12, + offset = -0.3, + scale = 0.7, spread = {x = 200, y = 200, z = 200}, - seed = 66440, + seed = 354, octaves = 3, - persist = 0.6 + persist = 0.7 }, - biomes = {"default:grassland"}, - y_min = -31000, - y_max = 31000, - decoration = "default:grass_5", + biomes = {"savanna_swamp"}, + y_min = 0, + y_max = 0, + schematic = minetest.get_modpath("default").."/schematics/papyrus.mts", }) -end + -- Grasses --- --- Detect mapgen to select functions --- + register_grass_decoration(-0.03, 0.09, 5) + register_grass_decoration(-0.015, 0.075, 4) + register_grass_decoration(0, 0.06, 3) + register_grass_decoration(0.015, 0.045, 2) + register_grass_decoration(0.03, 0.03, 1) + -- Dry grasses --- Mods using singlenode mapgen can call these functions to enable --- the use of minetest.generate_ores or minetest.generate_decorations + register_dry_grass_decoration(0.01, 0.05, 5) + register_dry_grass_decoration(0.03, 0.03, 4) + register_dry_grass_decoration(0.05, 0.01, 3) + register_dry_grass_decoration(0.07, -0.01, 2) + register_dry_grass_decoration(0.09, -0.03, 1) -local mg_params = minetest.get_mapgen_params() -if mg_params.mgname == "v6" then - default.register_ores() - default.register_mgv6_decorations() -elseif mg_params.mgname ~= "singlenode" then - default.register_ores() - default.register_biomes() - default.register_decorations() + -- Junglegrass + + minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass"}, + sidelen = 80, + fill_ratio = 0.1, + biomes = {"rainforest"}, + y_min = 1, + y_max = 31000, + decoration = "default:junglegrass", + }) + + -- Dry shrub + + minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:desert_sand", "default:dirt_with_snow"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.02, + spread = {x = 200, y = 200, z = 200}, + seed = 329, + octaves = 3, + persist = 0.6 + }, + biomes = {"desert", "tundra"}, + y_min = 2, + y_max = 31000, + decoration = "default:dry_shrub", + }) end -- --- Generate nyan cats in all mapgens +-- Generate nyan cats -- +-- All mapgens except singlenode --- facedir: 0/1/2/3 (head node facedir value) --- length: length of rainbow tail function default.make_nyancat(pos, facedir, length) local tailvec = {x = 0, y = 0, z = 0} if facedir == 0 then @@ -671,7 +1364,6 @@ function default.make_nyancat(pos, facedir, length) elseif facedir == 3 then tailvec.x = -1 else - --print("default.make_nyancat(): Invalid facedir: "+dump(facedir)) facedir = 0 tailvec.z = 1 end @@ -684,7 +1376,6 @@ function default.make_nyancat(pos, facedir, length) end end - function default.generate_nyancats(minp, maxp, seed) local height_min = -31000 local height_max = -32 @@ -708,4 +1399,21 @@ function default.generate_nyancats(minp, maxp, seed) end -minetest.register_on_generated(default.generate_nyancats) +-- +-- Detect mapgen to select functions +-- + +-- Mods using singlenode mapgen can call these functions to enable +-- the use of minetest.generate_ores or minetest.generate_decorations + +local mg_params = minetest.get_mapgen_params() +if mg_params.mgname == "v6" then + default.register_ores() + default.register_mgv6_decorations() + minetest.register_on_generated(default.generate_nyancats) +elseif mg_params.mgname ~= "singlenode" then + default.register_biomes() + default.register_ores() + default.register_decorations() + minetest.register_on_generated(default.generate_nyancats) +end