ethereal/decor.lua
2024-08-19 11:33:40 +01:00

688 lines
20 KiB
Lua

-- register decoration helper
local function register_decoration(enabled, def)
if enabled ~= 1 then return end
def.sidelen = def.sidelen or 80 -- some handy defaults
def.deco_type = "simple"
def.y_min = def.y_min or 1
def.y_max = def.y_max or 100
minetest.register_decoration(def)
end
-- wild cotton added in 5.3.0
register_decoration(1, {
name = "farming:cotton_wild",
place_on = {"default:dry_dirt_with_dry_grass"},
sidelen = 16,
noise_params = {
offset = -0.1, scale = 0.1, spread = {x = 50, y = 50, z = 50},
seed = 4242, octaves = 3, persist = 0.7
},
biomes = {"savanna"},
decoration = "farming:cotton_wild"})
-- water pools in swamp areas
register_decoration(1, {
place_on = {"default:dirt_with_grass"},
sidelen = 4,
place_offset_y = -1,
fill_ratio = 0.01,
biomes = {"swamp"},
y_min = 1, y_max = 2,
flags = "force_placement",
decoration = "default:water_source",
spawn_by = "default:dirt_with_grass", num_spawn_by = 8})
register_decoration(1, {
place_on = {"default:dirt_with_grass"},
sidelen = 4,
place_offset_y = -1,
fill_ratio = 0.1,
biomes = {"swamp"},
y_min = 1, y_max = 2,
flags = "force_placement",
decoration = "default:water_source",
spawn_by = {"default:dirt_with_grass", "default:water_source"}, num_spawn_by = 8})
-- dry dirt patches
register_decoration(1, {
place_on = {"default:dry_dirt_with_dry_grass"},
sidelen = 4,
noise_params = {
offset = -1.5, scale = -1.5, spread = {x = 200, y = 200, z = 200},
seed = 329, octaves = 4, persist = 1.0
},
biomes = {"savanna"},
decoration = "default:dry_dirt",
place_offset_y = -1,
flags = "force_placement"
})
-- firethorn shrub
register_decoration(ethereal.glacier, {
place_on = "default:snowblock",
fill_ratio = 0.001,
biomes = {"glacier"},
y_min = 1, y_max = 30,
decoration = "ethereal:firethorn"})
-- scorched tree
register_decoration(ethereal.plains, {
place_on = "ethereal:dry_dirt",
fill_ratio = 0.006,
biomes = {"plains"},
decoration = "ethereal:scorched_tree", height_max = 6})
-- dry shrub
register_decoration(ethereal.plains, {
place_on = {"ethereal:dry_dirt"},
fill_ratio = 0.015,
biomes = {"plains"},
decoration = "default:dry_shrub"})
register_decoration(ethereal.grassy, {
place_on = {"default:sand"},
fill_ratio = 0.015,
biomes = {"deciduous_forest_ocean"},
decoration = "default:dry_shrub"})
register_decoration(ethereal.desert, {
place_on = {"default:desert_sand"},
fill_ratio = 0.015,
biomes = {"desert"},
decoration = "default:dry_shrub"})
register_decoration(ethereal.sandstone, {
place_on = {"default:sandstone"},
fill_ratio = 0.015,
biomes = {"sandstone_desert"},
decoration = "default:dry_shrub"})
register_decoration(ethereal.mesa, {
place_on = {"default:dirt_with_dry_grass"},
fill_ratio = 0.015,
biomes = {"mesa"},
decoration = "default:dry_shrub"})
-- dry grass
register_decoration(ethereal.savanna, {
place_on = {"default:dry_dirt_with_dry_grass", "default:dirt_with_dry_grass"},
fill_ratio = 0.25,
biomes = {"savanna"},
decoration = {"default:dry_grass_2", "default:dry_grass_3", "default:dry_grass_4",
"default:dry_grass_5"}})
register_decoration(ethereal.mesa, {
place_on = {"default:dirt_with_dry_grass"},
fill_ratio = 0.10,
biomes = {"mesa"},
decoration = {"default:dry_grass_2", "default:dry_grass_3", "default:dry_grass_4",
"default:dry_grass_5"}})
register_decoration(ethereal.caves, {
place_on = {"default:desert_stone"},
fill_ratio = 0.005,
biomes = {"caves"},
y_min = 5, y_max = 42,
decoration = {"default:dry_grass_2", "default:dry_grass_3", "default:dry_shrub"}})
-- flowers & strawberry
register_decoration((ethereal.grassy or ethereal.grassytwo), {
place_on = {"default:dirt_with_grass"},
fill_ratio = 0.025,
biomes = {"deciduous_forest", "grassytwo"},
decoration = {"flowers:dandelion_white", "flowers:dandelion_yellow",
"flowers:geranium", "flowers:rose", "flowers:tulip",
"flowers:viola", "ethereal:strawberry_7"}})
-- prairie flowers & strawberry
register_decoration(ethereal.prairie, {
place_on = {"ethereal:prairie_dirt"},
fill_ratio = 0.035,
biomes = {"prairie"},
decoration = {"flowers:dandelion_white", "flowers:dandelion_yellow",
"flowers:geranium", "flowers:rose", "flowers:tulip",
"flowers:viola", "ethereal:strawberry_7", "flowers:chrysanthemum_green",
"flowers:tulip_black"}})
-- crystal spike & grass
register_decoration(ethereal.frost, {
place_on = {"ethereal:crystal_dirt"},
fill_ratio = 0.02,
biomes = {"frost", "frost_floatland"},
y_min = 1, y_max = 1750,
decoration = {"ethereal:crystal_spike", "ethereal:crystalgrass"}})
-- red shrub
register_decoration(ethereal.fiery, {
place_on = {"ethereal:fiery_dirt"},
fill_ratio = 0.10,
biomes = {"fiery"},
decoration = "ethereal:dry_shrub"})
-- snowy grass
register_decoration((ethereal.grayness or ethereal.snowy), {
place_on = {"ethereal:gray_dirt", "ethereal:cold_dirt",
"default:dirt_with_coniferous_litter"},
fill_ratio = 0.05,
biomes = {"grayness", "coniferous_forest"},
decoration = "ethereal:snowygrass"})
-- cactus
register_decoration(ethereal.sandstone, {
place_on = {"default:sandstone"},
fill_ratio = 0.002,
biomes = {"sandstone_desert"},
decoration = "default:cactus", height_max = 3})
register_decoration(ethereal.desert, {
place_on = {"default:desert_sand"},
fill_ratio = 0.005,
biomes = {"desert"},
decoration = "default:cactus", height_max = 4})
-- spore grass
register_decoration(ethereal.mushroom, {
place_on = {"ethereal:mushroom_dirt"},
fill_ratio = 0.1,
biomes = {"mushroom"},
decoration = "ethereal:spore_grass"})
-- red & brown mushroom
register_decoration(1, {
place_on = {"default:dirt_with_rainforest_litter", "default:dirt_with_grass",
"ethereal:prairie_dirt", "ethereal:mushroom_dirt"},
sidelen = 16,
fill_ratio = 0.01,
biomes = {"junglee", "deciduous_forest", "grassytwo", "prairie", "swamp", "mushroom"},
decoration = {"flowers:mushroom_brown", "flowers:mushroom_red"}})
-- jungle grass
register_decoration(ethereal.junglee, {
place_on = {"ethereal:jungle_dirt", "default:dirt_with_rainforest_litter"},
fill_ratio = 0.1,
biomes = {"junglee"},
decoration = "default:junglegrass"})
register_decoration(ethereal.jumble, {
place_on = {"default:dirt_with_grass"},
fill_ratio = 0.15,
biomes = {"jumble"},
decoration = "default:junglegrass"})
register_decoration(ethereal.swamp, {
place_on = {"default:dirt_with_grass"},
fill_ratio = 0.25,
biomes = {"swamp"},
decoration = "default:junglegrass"})
-- grass
register_decoration(1, {
place_on = {"default:dirt_with_grass", "default:dirt_with_rainforest_litter",
"ethereal:prairie_dirt", "ethereal:grove_dirt", "ethereal:bamboo_dirt"},
fill_ratio = 0.35,
biomes = {"deciduous_forest", "grassytwo", "jumble", "junglee", "grove", "prairie",
"mediterranean", "bamboo", "sakura"},
decoration = {"default:grass_2", "default:grass_3", "default:grass_4",
"default:grass_5"}})
register_decoration(1, {
place_on = {"default:dirt_with_grass"},
fill_ratio = 0.35,
biomes = {"grassland", "swamp"},
decoration = {"default:grass_3", "default:grass_4"}})
-- lilac
register_decoration(ethereal.sakura, {
place_on = {"ethereal:bamboo_dirt"},
fill_ratio = 0.025,
biomes = {"sakura"},
decoration = "ethereal:lilac"})
-- marram grass
register_decoration(ethereal.sandclay, {
place_on = {"default:sand"},
fill_ratio = 0.25,
biomes = {"sandclay"},
decoration = {"default:marram_grass_1", "default:marram_grass_2",
"default:marram_grass_3"}})
-- ferns
register_decoration(ethereal.grove, {
place_on = {"ethereal:grove_dirt"},
fill_ratio = 0.2,
biomes = {"grove"},
decoration = "ethereal:fern"})
register_decoration(ethereal.swamp, {
place_on = {"default:dirt_with_grass"},
fill_ratio = 0.1,
biomes = {"swamp"},
decoration = "ethereal:fern"})
register_decoration(ethereal.frost, { -- chance of something edible so high up
place_on = {"ethereal:crystal_dirt"},
fill_ratio = 0.001,
y_min = 1025, y_max = 1750,
biomes = {"frost_floatland"},
decoration = "ethereal:fern"})
-- snow
register_decoration(ethereal.snowy, {
place_on = {"default:dirt_with_coniferous_litter"},
fill_ratio = 0.8,
y_min = 20, y_max = 40,
biomes = {"coniferous_forest"},
decoration = "default:snow"})
register_decoration(ethereal.alpine, {
place_on = {"default:dirt_with_snow"},
fill_ratio = 0.8,
y_min = 40, y_max = 140,
biomes = {"taiga"},
decoration = "default:snow"})
-- wild onion and setting
local abundant = minetest.settings:get_bool("ethereal.abundant_onions") ~= false
register_decoration(1, {
place_on = {"default:dirt_with_grass", "ethereal:prairie_dirt"},
fill_ratio = (abundant and 0.025 or 0.005),
biomes = {"deciduous_forest", "grassytwo", "jumble", "prairie"},
decoration = "ethereal:onion_4"})
-- papyrus
register_decoration((ethereal.grassy or ethereal.junglee or ethereal.swamp), {
place_on = {"default:dirt_with_grass", "default:dirt_with_rainforest_litter"},
fill_ratio = 0.1,
y_min = 1, y_max = 1,
biomes = {"deciduous_forest", "junglee", "swamp"},
decoration = "default:papyrus", height_max = 4,
spawn_by = "default:water_source", num_spawn_by = 1})
--= Farming Redo plants
if farming and farming.mod and farming.mod == "redo" then
print ("[MOD] Ethereal - Farming Redo detected")
-- potato
register_decoration(ethereal.junglee, {
place_on = {"default:dirt_with_rainforest_litter"},
fill_ratio = 0.002,
biomes = {"junglee"},
decoration = "farming:potato_3"})
-- carrot, cucumber, potato, tomato, corn, coffee, raspberry, rhubarb
register_decoration(ethereal.grassytwo, {
place_on = {"default:dirt_with_grass"},
fill_ratio = 0.002,
biomes = {"grassytwo"},
decoration = {"farming:carrot_7", "farming:cucumber_4", "farming:potato_3",
"farming:vanilla_7", "farming:tomato_7", "farming:corn_8", "farming:coffee_5",
"farming:blackberry_4", "farming:raspberry_4", "farming:rhubarb_3",
"farming:blueberry_4", "farming:cabbage_6", "farming:lettuce_5",
"farming:sunflower_8", "farming:asparagus_4"}})
register_decoration(ethereal.grassy, {
place_on = {"default:dirt_with_grass"},
fill_ratio = 0.002,
biomes = {"grassytwo"},
decoration = {"farming:carrot_7", "farming:cucumber_4", "farming:potato_3",
"farming:vanilla_7", "farming:tomato_7", "farming:corn_8", "farming:coffee_5",
"farming:blackberry_4", "farming:raspberry_4", "farming:rhubarb_3",
"farming:blueberry_4", "farming:cabbage_6", "farming:lettuce_5",
"farming:sunflower_8", "farming:eggplant_3"}})
register_decoration(ethereal.jumble, {
place_on = {"default:dirt_with_grass"},
fill_ratio = 0.002,
biomes = {"jumble"},
decoration = {"farming:carrot_7", "farming:cucumber_4", "farming:potato_3",
"farming:vanilla_7", "farming:tomato_7", "farming:corn_8", "farming:coffee_5",
"farming:blackberry_4", "farming:raspberry_4", "farming:rhubarb_3",
"farming:blueberry_4", "farming:cabbage_6", "farming:lettuce_5",
"farming:spinage_3"}})
register_decoration(ethereal.prairie, {
place_on = {"ethereal:prairie_dirt"},
fill_ratio = 0.025,
biomes = {"prairie"},
decoration = {"farming:carrot_7", "farming:cucumber_4", "farming:potato_3",
"farming:parsley_3", "farming:tomato_7", "farming:corn_8", "farming:coffee_5",
"farming:blackberry_4", "farming:raspberry_4", "farming:rhubarb_3",
"farming:blueberry_4", "farming:pea_5", "farming:beetroot_5",
"farming:sunflower_8"}})
register_decoration(ethereal.mediterranean, {
place_on = {"ethereal:grove_dirt"},
fill_ratio = 0.002,
biomes = {"mediterranean"},
decoration = "farming:parsley_3"})
-- melon and pumpkin
register_decoration(1, {
place_on = {"default:dirt_with_grass", "default:dirt_with_rainforest_litter"},
fill_ratio = 0.001,
y_min = 1, y_max = 1,
biomes = {"junglee", "deciduous_forest", "grassytwo", "jumble"},
decoration = {"farming:melon_8", "farming:pumpkin_8"},
spawn_by = "default:water_source", num_spawn_by = 1})
-- mint
register_decoration(1, {
place_on = {"default:dirt_with_grass", "default:dirt_with_coniferous_litter",
"ethereal:bamboo_dirt"},
fill_ratio = 0.005,
y_min = 1, y_max = 75,
decoration = "farming:mint_4",
spawn_by = {"group:water", "group:sand"}, num_spawn_by = 1})
-- green beans
register_decoration(ethereal.grassytwo, {
place_on = {"default:dirt_with_grass"},
fill_ratio = 0.001,
biomes = {"grassytwo"},
decoration = "farming:beanbush"})
-- grape bushel
register_decoration((ethereal.grassy or ethereal.grassytwo or ethereal.prairie), {
place_on = {"default:dirt_with_grass", "ethereal:prairie_dirt"},
fill_ratio = 0.001,
biomes = {"grassy", "grassytwo", "prairie"},
decoration = "farming:grapebush"})
-- chili, garlic, pepper, onion, hemp, soy, ginger
register_decoration(1, {
place_on = {"default:dirt_with_grass", "ethereal:prairie_dirt",
"default:dirt_with_rainforest_litter"},
sidelen = 16,
noise_params = {
offset = 0, scale = 0.002, spread = {x = 100, y = 100, z = 100},
seed = 760, octaves = 3, persist = 0.6
},
y_min = 5, y_max = 35,
decoration = {
"farming:chili_8", "farming:garlic_5", "farming:pepper_5", "farming:pepper_6",
"farming:onion_5", "farming:hemp_7", "farming:pepper_7", "farming:soy_5",
"farming:ginger"},
spawn_by = "group:tree", num_spawn_by = 1})
-- pineapple,soy
register_decoration(1, {
place_on = {"default:dirt_with_dry_grass"},
sidelen = 16,
noise_params = {
offset = 0, scale = 0.002, spread = {x = 100, y = 100, z = 100},
seed = 917, octaves = 3, persist = 0.6
},
y_min = 18, y_max = 30,
decoration = {"farming:pineapple_8", "farming:soy_5"}})
-- artichoke
register_decoration(1, {
place_on = {"ethereal:grove_dirt"},
sidelen = 16,
noise_params = {
offset = 0, scale = 0.002, spread = {x = 100, y = 100, z = 100},
seed = 448, octaves = 3, persist = 0.6
},
y_min = 15, y_max = 40,
decoration = {"farming:artichoke_5"},
spawn_by = "group:tree", num_spawn_by = 1})
end -- end farming
-- new flowers from baked clay mod
if minetest.get_modpath("bakedclay") then
register_decoration(1, {
place_on = {"ethereal:prairie_dirt", "default:dirt_with_grass", "ethereal:grove_dirt"},
sidelen = 16,
noise_params = {
offset = 0, scale = 0.004, spread = {x = 100, y = 100, z = 100},
seed = 7133, octaves = 3, persist = 0.6
},
y_min = 10, y_max = 90,
decoration = "bakedclay:delphinium"})
register_decoration(1, {
place_on = {"ethereal:prairie_dirt", "default:dirt_with_grass",
"ethereal:grove_dirt", "ethereal:bamboo_dirt"},
sidelen = 16,
noise_params = {
offset = 0, scale = 0.004, spread = {x = 100, y = 100, z = 100},
seed = 7134, octaves = 3, persist = 0.6
},
y_min = 15, y_max = 90,
decoration = "bakedclay:thistle"})
register_decoration(1, {
place_on = {"ethereal:jungle_dirt", "default:dirt_with_rainforest_litter"},
sidelen = 16,
noise_params = {
offset = 0, scale = 0.01, spread = {x = 100, y = 100, z = 100},
seed = 7135, octaves = 3, persist = 0.6
},
y_min = 1, y_max = 90,
decoration = "bakedclay:lazarus",
spawn_by = "default:jungletree", num_spawn_by = 1})
register_decoration(1, {
place_on = {"default:dirt_with_grass", "default:sand"},
sidelen = 16,
noise_params = {
offset = 0, scale = 0.009, spread = {x = 100, y = 100, z = 100},
seed = 7136, octaves = 3, persist = 0.6
},
y_min = 1, y_max = 15,
decoration = "bakedclay:mannagrass",
spawn_by = "group:water", num_spawn_by = 1})
end
-- blue agave from wine mod
if minetest.get_modpath("wine") then
register_decoration(ethereal.desert, {
place_on = {"default:desert_sand"},
sidelen = 16,
fill_ratio = 0.001,
biomes = {"desert"},
decoration = {"wine:blue_agave"}})
end
-- ferns
local function register_fern_decoration(seed, length)
register_decoration(ethereal.snowy, {
name = "default:fern_" .. length,
place_on = {"ethereal:cold_dirt", "default:dirt_with_coniferous_litter"},
sidelen = 16,
noise_params = {
offset = 0, scale = 0.2, spread = {x = 100, y = 100, z = 100},
seed = seed, octaves = 3, persist = 0.7
},
y_min = 6, y_max = 100,
decoration = "default:fern_" .. length})
end
register_fern_decoration(14936, 3)
register_fern_decoration(801, 2)
register_fern_decoration(5, 1)
-- Tundra moss
register_decoration(ethereal.tundra, {
place_on = {"default:permafrost_with_stones"},
sidelen = 4,
noise_params = {
offset = -0.8, scale = 2.0, spread = {x = 100, y = 100, z = 100},
seed = 53995, octaves = 3, persist = 1.0
},
biomes = {"tundra"},
y_min = 2, y_max = 50,
decoration = "default:permafrost_with_moss",
place_offset_y = -1,
flags = "force_placement"})
-- Tundra patchy snow
register_decoration(ethereal.tundra, {
place_on = {"default:permafrost_with_moss", "default:permafrost_with_stones",
"default:stone", "default:gravel"},
sidelen = 4,
noise_params = {
offset = 0, scale = 1.0, spread = {x = 100, y = 100, z = 100},
seed = 172555, octaves = 3, persist = 1.0
},
biomes = {"tundra", "tundra_beach"},
y_min = 1, y_max = 50,
decoration = "default:snow"})
-- butterflies mod
if minetest.get_modpath("butterflies") then
register_decoration(1, {
name = "butterflies:butterfly",
place_on = {"default:dirt_with_grass", "ethereal:prairie_dirt"},
place_offset_y = 2,
fill_ratio = 0.005,
biomes = {"deciduous_forest", "grassytwo", "prairie", "jumble"},
y_min = 1, y_max = 200,
decoration = {
"butterflies:butterfly_white",
"butterflies:butterfly_red",
"butterflies:butterfly_violet"
},
spawn_by = "group:flower", num_spawn_by = 1})
-- restart butterfly timers
minetest.register_lbm({
name = ":butterflies:butterfly_timer",
nodenames = {
"butterflies:butterfly_white", "butterflies:butterfly_red",
"butterflies:butterfly_violet"
},
run_at_every_load = true,
action = function(pos) minetest.get_node_timer(pos):start(5) end
})
end
-- fireflies mod
if minetest.get_modpath("fireflies") then
register_decoration(1, {
name = "fireflies:firefly_low",
place_on = {"default:dirt_with_grass", "default:dirt_with_coniferous_litter",
"default:dirt_with_rainforest_litter", "default:dirt",
"ethereal:cold_dirt", "prairie"},
place_offset_y = 2,
fill_ratio = 0.0005,
biomes = {"deciduous_forest", "grassytwo", "coniferous_forest", "junglee",
"swamp"},
y_min = -1, y_max = 200,
decoration = "fireflies:hidden_firefly"})
-- restart firefly timers
minetest.register_lbm({
name = ":fireflies:firefly_timer",
nodenames = {"fireflies:firefly", "fireflies:hidden_firefly"},
run_at_every_load = true,
action = function(pos) minetest.get_node_timer(pos):start(5) end
})
end
-- Coral Reef
register_decoration(1, {
name = "default:corals",
place_on = {"default:sand"},
place_offset_y = -1,
sidelen = 4,
noise_params = {
offset = -4, scale = 4, spread = {x = 50, y = 50, z = 50},
seed = 7013, octaves = 3, persist = 0.7,
},
biomes = {"desert_ocean", "savanna_ocean", "junglee_ocean"},
y_min = -8, y_max = -2,
flags = "force_placement",
decoration = {"default:coral_green", "default:coral_pink", "default:coral_cyan",
"default:coral_brown", "default:coral_orange", "default:coral_skeleton"}})
-- Kelp
register_decoration(1, {
name = "default:kelp",
place_on = {"default:sand"},
place_offset_y = -1,
sidelen = 16,
noise_params = {
offset = -0.04, scale = 0.1, spread = {x = 200, y = 200, z = 200},
seed = 87112, octaves = 3, persist = 0.7
},
biomes = {"frost_ocean", "deciduous_forest_ocean", "sandstone_ocean", "swamp_ocean"},
y_min = -10, y_max = -5,
flags = "force_placement",
decoration = "default:sand_with_kelp",
param2 = 48, param2_max = 96})
-- illumishrooms using underground decoration placement
local function add_illumishroom(low, high, nodename)
register_decoration(1, {
place_on = {"default:stone_with_coal"},
sidelen = 16,
fill_ratio = 0.5,
y_min = low, y_max = high,
flags = "force_placement, all_floors",
decoration = nodename})
end
add_illumishroom(-1000, -30, "ethereal:illumishroom")
add_illumishroom(-2000, -1000, "ethereal:illumishroom2")
add_illumishroom(-3000, -2000, "ethereal:illumishroom3")