Skip to content

Commit

Permalink
L-System trees: Remove hardcoded use of 'mapgen_dirt' alias (#9931)
Browse files Browse the repository at this point in the history
Games often and increasingly do not use this mapgen alias, as it
is only required for Mapgen V6. Such games were triggering the
recently added error message.

Even if this mapgen alias was defined, dirt nodes placed under a
wide trunk were inconsistent with biomes that do not use dirt
surface nodes.

Place trunk nodes below a wide trunk instead of 'mapgen_dirt'.
On sloping ground, the trunk then extends down to the surface,
instead of the surface rising up to meet the trunk. This looks
more natural and does not alter the terrain.
  • Loading branch information
paramat committed May 25, 2020
1 parent 5311a27 commit b546e89
Showing 1 changed file with 16 additions and 20 deletions.
36 changes: 16 additions & 20 deletions src/mapgen/treegen.cpp
Expand Up @@ -148,10 +148,6 @@ treegen::error spawn_ltree(ServerMap *map, v3s16 p0,
treegen::error make_ltree(MMVManip &vmanip, v3s16 p0,
const NodeDefManager *ndef, TreeDef tree_definition)
{
MapNode dirtnode(ndef->getId("mapgen_dirt"));
if (dirtnode == CONTENT_IGNORE)
errorstream << "Treegen (make_ltree): Mapgen alias 'mapgen_dirt' is invalid!" << std::endl;

s32 seed;
if (tree_definition.explicit_seed)
seed = tree_definition.seed + 14002;
Expand Down Expand Up @@ -229,43 +225,43 @@ treegen::error make_ltree(MMVManip &vmanip, v3s16 p0,
axiom = temp;
}

//make sure tree is not floating in the air
// Add trunk nodes below a wide trunk to avoid gaps when tree is on sloping ground
if (tree_definition.trunk_type == "double") {
tree_node_placement(
tree_trunk_placement(
vmanip,
v3f(position.X + 1, position.Y - 1, position.Z),
dirtnode
tree_definition
);
tree_node_placement(
tree_trunk_placement(
vmanip,
v3f(position.X, position.Y - 1, position.Z + 1),
dirtnode
tree_definition
);
tree_node_placement(
tree_trunk_placement(
vmanip,
v3f(position.X + 1, position.Y - 1, position.Z + 1),
dirtnode
tree_definition
);
} else if (tree_definition.trunk_type == "crossed") {
tree_node_placement(
tree_trunk_placement(
vmanip,
v3f(position.X + 1, position.Y - 1, position.Z),
dirtnode
tree_definition
);
tree_node_placement(
tree_trunk_placement(
vmanip,
v3f(position.X - 1, position.Y - 1, position.Z),
dirtnode
tree_definition
);
tree_node_placement(
tree_trunk_placement(
vmanip,
v3f(position.X, position.Y - 1, position.Z + 1),
dirtnode
tree_definition
);
tree_node_placement(
tree_trunk_placement(
vmanip,
v3f(position.X, position.Y - 1, position.Z - 1),
dirtnode
tree_definition
);
}

Expand Down Expand Up @@ -372,7 +368,7 @@ treegen::error make_ltree(MMVManip &vmanip, v3s16 p0,
!tree_definition.thin_branches)) {
tree_trunk_placement(
vmanip,
v3f(position.X +1 , position.Y, position.Z),
v3f(position.X + 1, position.Y, position.Z),
tree_definition
);
tree_trunk_placement(
Expand Down

0 comments on commit b546e89

Please sign in to comment.