Suggestions for Extra-Biomes... and a few others.

Post Reply
Isao
Member
Posts: 16
Joined: Fri Aug 08, 2025 17:25
Location: South of France

Suggestions for Extra-Biomes... and a few others.

by Isao » Post

Hi everyone,
First I apologize if I don't post this topic in the right section. I will not consider releasing anything I suggest here by myself, so there won't be a mod nor a texture pack, but just some ideas related mainly to Extra Biomes and maybe a few textures.
As I know next to nothing about coding (yet ?), merely guessing, this will probably take me a lot of time. I’m sure I’ll need some help so I hope some of you will be interested. And if by any chance someone is interested enough to use or release anything posted here, that would be great. 😉

Apparently there is no specific topic about Extra Biomes, or at least I couldn’t find it. That’s a pity, I like this mod very much and it fits very well into Minetest Game.
I love the way biomes blend into each other in a very soft-transitioned landscape. The trees are really fine and their respective woods match well.
The negative points come mostly from the lack of compatibility with the other decoration and biome mods. Therefore, the additionnal biomes tend to look very, very, empty. Or some fine fonctionnalities won’t work. And also, well, I have to say some plant textures look just a bit dull… No offense.
Let's see if we can improve that.
Neither English nor computing are my native languages. Thank you for your patience. ;)

Isao
Member
Posts: 16
Joined: Fri Aug 08, 2025 17:25
Location: South of France

Re: Suggestions for Extra-Biomes... and a few others.

by Isao » Post

My first problem was that sheep couldn’t regrow wool in arid biomes, since dry dirt couldn’t regrow grass. A silly situation considering sheep are supposed to accept poor conditions. ^^

Starving sheep 3.jpg
Starving sheep 3.jpg (560.56 KiB) Viewed 192 times

So I used the « Grow dry grass » mod by Silver Sandstone and adaptated it to arid and arid cool biomes :
https://content.luanti.org/packages/Sil ... wdrygrass/
Against all odds, well, it seems to work. 😊

Grow grass 4.jpg
Grow grass 4.jpg (648.1 KiB) Viewed 192 times

I didn’t want dry grass to spread as well. I like the random patches of bare dry dirt, it looks very natural in a savanah. So I just allowed spreading for arid and arid cool grass.
But I thought it would be nice to make it regrow only if and where I want by placing a grass node, as it is intended in the mod. It worked fine with the ‘’original’’ dry grass, but not with ebiomes arid grass…
It’s not really important, but could someone tell me why ?

Code: Select all

growdrygrass = {};


growdrygrass.SPREAD_FROM = {'default:dry_dirt_with_dry_grass'};


--- Returns true if dry grass should grow on the node at the specified position.
-- @param pos [vector]  The position of the node.
-- @return    [boolean] true if the node should grow dry grass.
function growdrygrass.should_grow(pos)
    local pos_above = vector.add(pos, vector.new(0, 1, 0));

    -- Don't spread in darkness:
    local light = minetest.get_node_light(pos_above) or 0;
    if light < 13 then
        return false;
    end;

    -- Grow from grass above:
    local node_above = minetest.get_node(pos_above);
    if minetest.get_item_group(node_above.name, 'dry_grass') > 0 then
        return true;
    end;

    -- Spread from nearby nodes:
    if minetest.find_node_near(pos, 1, growdrygrass.SPREAD_FROM) then
        return false;
    end;

    return false;
end;


--- The ABM action for growing dry grass.
-- @param pos  [vector] The position of the node.
-- @param node [Node]   The node currently at that position.
function growdrygrass.abm(pos, node)
    if growdrygrass.should_grow(pos) then
        minetest.swap_node(pos, {name = 'default:dry_dirt_with_dry_grass'});
    end;
end;


minetest.register_abm(
{
    label     = 'Dry grass spread';
    nodenames = {'default:dry_dirt'};
    neighbors = {'air', 'group:grass', 'default:dry_dirt_with_dry_grass'};
    interval  = 12;
    chance    = 50;
    catch_up  = false;
    action    = growdrygrass.abm;
});
Versus :

Code: Select all

growaridgrass = {};


growaridgrass.SPREAD_FROM = {'ebiomes:dry_dirt_with_grass_arid'};


--- Returns true if arid grass should grow on the node at the specified position.
-- @param pos [vector]  The position of the node.
-- @return    [boolean] true if the node should grow arid grass.
function growaridgrass.should_grow(pos)
    local pos_above = vector.add(pos, vector.new(0, 1, 0));

    -- Don't spread in darkness:
    local light = minetest.get_node_light(pos_above) or 0;
    if light < 12 then
        return false;
    end;

    -- Grow from grass above:
    local node_above = minetest.get_node(pos_above);
    if minetest.get_item_group(node_above.name, 'ebiomes_grass_arid') > 0 then
        return true;
    end;

    -- Spread from nearby nodes:
    if minetest.find_node_near(pos, 1, growaridgrass.SPREAD_FROM) then
        return true;
    end;

    return false;
end;


--- The ABM action for growing arid grass.
-- @param pos  [vector] The position of the node.
-- @param node [Node]   The node currently at that position.
function growaridgrass.abm(pos, node)
    if growaridgrass.should_grow(pos) then
        minetest.swap_node(pos, {name = 'ebiomes:dry_dirt_with_grass_arid'});
    end;
end;


minetest.register_abm(
{
    label     = 'Arid grass spread';
    nodenames = {'default:dry_dirt'};
    neighbors = {'air', 'group:grass', 'ebiomes:dry_dirt_with_grass_arid'};
    interval  = 12;
    chance    = 50;
    catch_up  = false;
    action    = growaridgrass.abm;
});
Neither English nor computing are my native languages. Thank you for your patience. ;)

Isao
Member
Posts: 16
Joined: Fri Aug 08, 2025 17:25
Location: South of France

Re: Suggestions for Extra-Biomes... and a few others.

by Isao » Post

The priority for me was to add more decorations in the different extra biomes, since flowers are often sparse and their amount varies a lot from one biome to the other.
The contrast is also too abrupt between bare additional biomes and a default grass stuffed with various flowers and other plants.

I mainly used Beautiful Flowers by 1Faco, which is my favourite :
https://content.luanti.org/packages/1fa ... tiflowers/
But I wanted to select only specific flowers for each biome, with a nice harmony of colours, to distinguish them more easily from each other.
I also wanted a lesser amount of flowers when apropriate. It seems more natural that arid or cold biomes have less flowers than rich and temperate biomes.
In fact, I didn’t use Beautiflowers code directly because I could’t figure out how to do that. So I implemented every flower one by one in the globals.lua file of E-biomes, copying the method used to add some of the default flowers, and trying to keep it consistant. Like this for instance :

Code: Select all

	--flowers

	minetest.register_decoration({
		name = "ebiomes:dandelion",
		deco_type = "simple",
		place_on = {"ebiomes:dirt_with_grass_cold", "ebiomes:dirt_with_grass_med"},
		sidelen = 16,
		noise_params = {
			offset = 0.016,
			scale = 0.001,
			spread = {x = 100, y = 100, z = 100},
			seed = 352,
			octaves = 3,
			persist = 0.05
		},
		biomes = {"deciduous_forest_cold", "deciduous_forest_warm", "mediterranean"},
		y_max = 31000,
		y_min = 1,
		decoration = "flowers:dandelion_yellow",
	})
	
	minetest.register_decoration({
		name = "ebiomes:tulip_black",
		deco_type = "simple",
		place_on = {"ebiomes:dirt_with_grass_steppe_warm", "ebiomes:dirt_with_grass_steppe", "ebiomes:dirt_with_grass_steppe_cold"},
		sidelen = 16,
		noise_params = {
			offset = 0.016,
			scale = 0.001,
			spread = {x = 100, y = 100, z = 100},
			seed = 355,
			octaves = 3,
			persist = 0.05
		},
		biomes = {"warm_steppe", "steppe", "cold_steppe"},
		y_max = 31000,
		y_min = 1,
		decoration = "flowers:tulip_black",
	})

Code: Select all

  -- Beautiflowers Steppe warm, steppe, steppe cold

    minetest.register_decoration({
		name = "ebiomes:noelia",
		deco_type = "simple",
		place_on = {"ebiomes:dirt_with_grass_steppe_warm"},
		sidelen = 16,
		noise_params = {
			offset = 0.016,
			scale = 0.001,
			spread = {x = 100, y = 100, z = 100},
			seed = 354,
			octaves = 3,
			persist = 0.05
		},
		biomes = {"warm_steppe"},
		y_max = 31000,
		y_min = 1,
		decoration = "beautiflowers:noelia",
	})

    minetest.register_decoration({
		name = "ebiomes:agnes",
		deco_type = "simple",
		place_on = {"ebiomes:dirt_with_grass_steppe_warm"},
		sidelen = 16,
		noise_params = {
			offset = 0.016,
			scale = 0.001,
			spread = {x = 100, y = 100, z = 100},
			seed = 354,
			octaves = 3,
			persist = 0.05
		},
		biomes = {"warm_steppe"},
		y_max = 31000,
		y_min = 1,
		decoration = "beautiflowers:agnes",
	})
That makes a very looong list. And I didn't know what those "noise parameters" meant, so I let the same for everyone.
There must be some more elegant way to do that, but, well, that worked. 😊

Arid vs Arid-cool.jpg
Arid vs Arid-cool.jpg (880.16 KiB) Viewed 164 times
Grass-warm vs grass-med.jpg
Grass-warm vs grass-med.jpg (984.7 KiB) Viewed 164 times
Steppe vs Steppe-warm vs default.jpg
Steppe vs Steppe-warm vs default.jpg (989.36 KiB) Viewed 164 times
Neither English nor computing are my native languages. Thank you for your patience. ;)

Isao
Member
Posts: 16
Joined: Fri Aug 08, 2025 17:25
Location: South of France

Re: Suggestions for Extra-Biomes... and a few others.

by Isao » Post

My problem now is the amount of flowers. Beautiflowers gives the possibility to set a value for that, but it is not used by E-biomes. Only the number of flowers implemented in each biome has an impact, as one can see here, with 8 versus 16 or 18 :

Grass-warm vs Arid.jpg
Grass-warm vs Arid.jpg (877.55 KiB) Viewed 164 times

Twelve different flowers seems a maximum to avoid indigestion, so I had, sadly, to reduce the mix of flowers for each (8 for arids, 10 for steppes and 12 for grass).
Why is that ? Which line of code, and in which mod or game, is supposed to set the number of flowers, or the distance between each ?
Moreover, I also tried Elysflowers (which is compatible with e-biomes) and Herbs (which is not).
https://content.luanti.org/packages/Clyde/herbs/
https://content.luanti.org/packages/erey23/elysflowers/
They add even more flowers (very nice ones, though), and I can’t guess what part of the code sets the amount. Even when I reduce the rate in Beautiflowers to a minimum, they are replaced by Herbs flowers, so that default grass is still stuffed with flowers :

Default grass with low rate beautiflowers-.jpg
Default grass with low rate beautiflowers-.jpg (587.53 KiB) Viewed 164 times

I suppose I could also use the same method to implement a selection of Herbs flowers in each additional biome, but I don’t want them to invade every territory ! 😉
Could someone tell me how that might be done ?
Neither English nor computing are my native languages. Thank you for your patience. ;)

User avatar
Blockhead
Moderator
Posts: 2847
Joined: Wed Jul 17, 2019 10:14
GitHub: Montandalar
IRC: Blockhead256
In-game: Blockhead Blockhead256
Location: Land Down Under
Contact:

Re: Suggestions for Extra-Biomes... and a few others.

by Blockhead » Post

Isao wrote:
Tue Dec 30, 2025 21:00
My first problem was that sheep couldn’t regrow wool in arid biomes, since dry dirt couldn’t regrow grass. A silly situation considering sheep are supposed to accept poor conditions. ^^
Sorry to have not looked at everything in depth here, but this reminds me of how dry dirt on dry grass spread was broken. Presumably the issue here was the new kinds of grass on top of the soil?
/˳˳_˳˳]_[˳˳_˳˳]_[˳˳_˳˳\ Advtrains enthusiast | My map: Noah's Railyard | My Content on ContentDB ✝️♂

Isao
Member
Posts: 16
Joined: Fri Aug 08, 2025 17:25
Location: South of France

Re: Suggestions for Extra-Biomes... and a few others.

by Isao » Post

Interesting. Thank you Blockhead. I thought bare dry dirt not regrowing dry grass was intended from the beginning.
Neither English nor computing are my native languages. Thank you for your patience. ;)

Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests