summaryrefslogtreecommitdiff
path: root/src/script
diff options
context:
space:
mode:
authorParamat <paramat@users.noreply.github.com>2019-05-18 21:13:14 +0100
committerGitHub <noreply@github.com>2019-05-18 21:13:14 +0100
commitb1b40fef16a17f4a6da7d4268af8f0921dbe829c (patch)
tree5052f3e27b6f0177fe44f18be2c2e36d1623dfe2 /src/script
parent6cb6aea969032e43395ddbad09233e7e20830909 (diff)
downloadminetest-b1b40fef16a17f4a6da7d4268af8f0921dbe829c.tar.gz
minetest-b1b40fef16a17f4a6da7d4268af8f0921dbe829c.tar.bz2
minetest-b1b40fef16a17f4a6da7d4268af8f0921dbe829c.zip
Allow multiple cave liquids in a biome definition (#8481)
This allows games to specify biome cave liquids and avoid the old hardcoded behaviour, but preserves the ability to have multiple cave liquids in one biome, such as lava and water. When multiple cave liquids are defined by the biome definition, make each entire cave use a randomly chosen liquid, instead of every small cave segment using a randomly chosen liquid. Plus an optimisation: Don't place nodes if cave liquid is defined as 'air'
Diffstat (limited to 'src/script')
-rw-r--r--src/script/lua_api/l_mapgen.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/script/lua_api/l_mapgen.cpp b/src/script/lua_api/l_mapgen.cpp
index 92ed4377e..cb1dc1fff 100644
--- a/src/script/lua_api/l_mapgen.cpp
+++ b/src/script/lua_api/l_mapgen.cpp
@@ -405,7 +405,16 @@ Biome *read_biome_def(lua_State *L, int index, const NodeDefManager *ndef)
nn.push_back(getstringfield_default(L, index, "node_river_water", ""));
nn.push_back(getstringfield_default(L, index, "node_riverbed", ""));
nn.push_back(getstringfield_default(L, index, "node_dust", ""));
- nn.push_back(getstringfield_default(L, index, "node_cave_liquid", ""));
+
+ size_t nnames = getstringlistfield(L, index, "node_cave_liquid", &nn);
+ // If no cave liquids defined, set list to "ignore" to trigger old hardcoded
+ // cave liquid behaviour.
+ if (nnames == 0) {
+ nn.push_back("ignore");
+ nnames = 1;
+ }
+ b->m_nnlistsizes.push_back(nnames);
+
nn.push_back(getstringfield_default(L, index, "node_dungeon", ""));
nn.push_back(getstringfield_default(L, index, "node_dungeon_alt", ""));
nn.push_back(getstringfield_default(L, index, "node_dungeon_stair", ""));