+-- Mgv6
+
+function default.register_mgv6_decorations()
+ minetest.clear_registered_decorations()
+
+ -- Papyrus
+
+ minetest.register_decoration({
+ deco_type = "simple",
+ place_on = {"default:dirt_with_grass"},
+ sidelen = 16,
+ noise_params = {
+ offset = -0.3,
+ scale = 0.7,
+ spread = {x = 100, y = 100, z = 100},
+ seed = 354,
+ octaves = 3,
+ persist = 0.7
+ },
+ y_min = 1,
+ y_max = 1,
+ decoration = "default:papyrus",
+ height = 2,
+ height_max = 4,
+ spawn_by = "default:water_source",
+ num_spawn_by = 1,
+ })
+
+ -- Cacti
+
+ minetest.register_decoration({
+ deco_type = "simple",
+ place_on = {"default:desert_sand"},
+ sidelen = 16,
+ noise_params = {
+ offset = -0.012,
+ scale = 0.024,
+ spread = {x = 100, y = 100, z = 100},
+ seed = 230,
+ octaves = 3,
+ persist = 0.6
+ },
+ y_min = 1,
+ y_max = 30,
+ decoration = "default:cactus",
+ height = 3,
+ height_max = 4,
+ })
+
+ -- Long grasses
+
+ for length = 1, 5 do
+ minetest.register_decoration({
+ deco_type = "simple",
+ place_on = {"default:dirt_with_grass"},
+ sidelen = 16,
+ noise_params = {
+ offset = 0,
+ scale = 0.007,
+ spread = {x = 100, y = 100, z = 100},
+ seed = 329,
+ octaves = 3,
+ persist = 0.6
+ },
+ y_min = 1,
+ y_max = 30,
+ decoration = "default:grass_"..length,
+ })
+ end
+
+ -- Dry shrubs
+
+ minetest.register_decoration({
+ deco_type = "simple",
+ place_on = {"default:desert_sand", "default:dirt_with_snow"},
+ sidelen = 16,
+ noise_params = {
+ offset = 0,
+ scale = 0.035,
+ spread = {x = 100, y = 100, z = 100},
+ seed = 329,
+ octaves = 3,
+ persist = 0.6
+ },
+ y_min = 1,
+ y_max = 30,
+ decoration = "default:dry_shrub",
+ })
+end
+
+-- All mapgens except mgv6 and singlenode
+
+local function register_grass_decoration(offset, scale, length)
+ minetest.register_decoration({
+ deco_type = "simple",
+ place_on = {"default:dirt_with_grass", "default:sand"},
+ sidelen = 16,
+ noise_params = {
+ offset = offset,
+ scale = scale,
+ spread = {x = 200, y = 200, z = 200},
+ seed = 329,
+ octaves = 3,
+ persist = 0.6
+ },
+ 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 = "default:grass_"..length,
+ })
+end
+
+local function register_dry_grass_decoration(offset, scale, length)
+ minetest.register_decoration({
+ deco_type = "simple",
+ place_on = {"default:dirt_with_dry_grass"},
+ sidelen = 16,
+ noise_params = {
+ offset = offset,
+ scale = scale,
+ spread = {x = 200, y = 200, z = 200},
+ seed = 329,
+ octaves = 3,
+ persist = 0.6
+ },
+ biomes = {"savanna"},
+ y_min = 1,
+ y_max = 31000,
+ decoration = "default:dry_grass_"..length,
+ })
+end
+
+function default.register_decorations()
+ minetest.clear_registered_decorations()
+
+ -- Apple tree and log
+
+ minetest.register_decoration({
+ deco_type = "schematic",
+ place_on = {"default:dirt_with_grass"},
+ sidelen = 16,
+ noise_params = {
+ offset = 0.036,
+ scale = 0.022,
+ spread = {x = 250, y = 250, z = 250},
+ seed = 2,
+ octaves = 3,
+ persist = 0.66
+ },
+ biomes = {"deciduous_forest"},
+ y_min = 1,
+ y_max = 31000,
+ schematic = minetest.get_modpath("default").."/schematics/apple_tree.mts",
+ flags = "place_center_x, place_center_z",
+ })
+
+ minetest.register_decoration({
+ deco_type = "schematic",
+ place_on = {"default:dirt_with_grass"},
+ sidelen = 16,
+ noise_params = {
+ offset = 0.0018,
+ scale = 0.0011,
+ spread = {x = 250, y = 250, z = 250},
+ seed = 2,
+ octaves = 3,
+ persist = 0.66
+ },
+ biomes = {"deciduous_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: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 = "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.036,
+ scale = 0.022,
+ spread = {x = 250, y = 250, z = 250},
+ seed = 2,
+ octaves = 3,
+ persist = 0.66
+ },
+ biomes = {"taiga", "coniferous_forest"},
+ y_min = 2,
+ y_max = 31000,
+ schematic = minetest.get_modpath("default").."/schematics/pine_tree.mts",
+ flags = "place_center_x, place_center_z",
+ })
+
+ minetest.register_decoration({
+ deco_type = "schematic",
+ place_on = {"default:dirt_with_snow", "default:dirt_with_grass"},
+ sidelen = 80,
+ noise_params = {
+ offset = 0.0018,
+ scale = 0.0011,
+ spread = {x = 250, y = 250, z = 250},
+ seed = 2,
+ octaves = 3,
+ persist = 0.66
+ },
+ 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,
+ scale = 0.002,
+ spread = {x = 250, y = 250, z = 250},
+ seed = 2,
+ octaves = 3,
+ persist = 0.66
+ },
+ biomes = {"savanna"},
+ y_min = 1,
+ y_max = 31000,
+ schematic = minetest.get_modpath("default").."/schematics/acacia_tree.mts",
+ flags = "place_center_x, place_center_z",
+ rotation = "random",
+ })
+
+ 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 = "schematic",
+ place_on = {"default:dirt_with_grass"},
+ sidelen = 16,
+ noise_params = {
+ offset = 0.0,
+ scale = -0.015,
+ spread = {x = 250, y = 250, z = 250},
+ seed = 2,
+ octaves = 3,
+ persist = 0.66
+ },
+ biomes = {"deciduous_forest"},
+ y_min = 1,
+ y_max = 31000,
+ schematic = minetest.get_modpath("default").."/schematics/aspen_tree.mts",
+ flags = "place_center_x, place_center_z",
+ rotation = "random",
+ })
+
+ minetest.register_decoration({
+ deco_type = "schematic",
+ place_on = {"default:dirt_with_grass"},
+ sidelen = 16,
+ noise_params = {
+ offset = 0.0,
+ scale = -0.0008,
+ spread = {x = 250, y = 250, z = 250},
+ seed = 2,
+ octaves = 3,
+ persist = 0.66
+ },
+ biomes = {"deciduous_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: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 = "schematic",
+ place_on = {"default:desert_sand"},
+ sidelen = 16,
+ noise_params = {
+ offset = -0.0003,
+ scale = 0.0009,
+ spread = {x = 200, y = 200, z = 200},
+ seed = 230,
+ octaves = 3,
+ persist = 0.6
+ },
+ biomes = {"desert"},
+ y_min = 5,
+ y_max = 31000,
+ 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:desert_sand"},
+ sidelen = 16,
+ noise_params = {
+ offset = -0.0003,
+ scale = 0.0009,
+ spread = {x = 200, y = 200, z = 200},
+ seed = 230,
+ octaves = 3,
+ persist = 0.6
+ },
+ biomes = {"desert"},
+ y_min = 5,
+ y_max = 31000,
+ decoration = "default:cactus",
+ height = 2,
+ height_max = 5,
+ })
+
+ -- Papyrus
+
+ minetest.register_decoration({
+ deco_type = "schematic",
+ place_on = {"default:dirt"},
+ sidelen = 16,
+ noise_params = {
+ offset = -0.3,
+ scale = 0.7,
+ spread = {x = 200, y = 200, z = 200},
+ seed = 354,
+ octaves = 3,
+ persist = 0.7
+ },
+ biomes = {"savanna_swamp"},
+ y_min = 0,
+ y_max = 0,
+ schematic = minetest.get_modpath("default").."/schematics/papyrus.mts",
+ })
+
+ -- Grasses
+
+ 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
+
+ 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)
+
+ -- 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
+--
+
+-- All mapgens except singlenode
+
+function default.make_nyancat(pos, facedir, length)
+ local tailvec = {x = 0, y = 0, z = 0}
+ if facedir == 0 then
+ tailvec.z = 1
+ elseif facedir == 1 then
+ tailvec.x = 1
+ elseif facedir == 2 then
+ tailvec.z = -1
+ elseif facedir == 3 then
+ tailvec.x = -1
+ else
+ facedir = 0
+ tailvec.z = 1
+ end
+ local p = {x = pos.x, y = pos.y, z = pos.z}
+ minetest.set_node(p, {name = "default:nyancat", param2 = facedir})
+ for i = 1, length do
+ p.x = p.x + tailvec.x
+ p.z = p.z + tailvec.z
+ minetest.set_node(p, {name = "default:nyancat_rainbow", param2 = facedir})
+ end
+end
+
+function default.generate_nyancats(minp, maxp, seed)
+ local height_min = -31000
+ local height_max = -32