summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWren Turkal <wt@penguintechs.org>2020-04-06 07:06:16 -0700
committerGitHub <noreply@github.com>2020-04-06 16:06:16 +0200
commitf91124a0c0d8c448b3d3d0767b3c8b2352c92d6e (patch)
tree6dac4ff308edcedecb8efe88f9cfcb6fe968b35d
parentfaedde08f96b671078d9d3273da468db3454713c (diff)
downloadminetest-f91124a0c0d8c448b3d3d0767b3c8b2352c92d6e.tar.gz
minetest-f91124a0c0d8c448b3d3d0767b3c8b2352c92d6e.tar.bz2
minetest-f91124a0c0d8c448b3d3d0767b3c8b2352c92d6e.zip
Add allowed_mapgens option in game.conf. (#9263)
The game.conf has a disallowed_mapgens option. However, some games require a certain mapgen to be used, like the CTF plugin. This change adds an option to specify allowed mapgens so that the setting can be specified in a way that needn't be updated as map generators are added to Minetest.
-rw-r--r--builtin/mainmenu/dlg_create_world.lua13
-rw-r--r--doc/lua_api.txt8
2 files changed, 21 insertions, 0 deletions
diff --git a/builtin/mainmenu/dlg_create_world.lua b/builtin/mainmenu/dlg_create_world.lua
index 31d41d693..f28ae6960 100644
--- a/builtin/mainmenu/dlg_create_world.lua
+++ b/builtin/mainmenu/dlg_create_world.lua
@@ -39,11 +39,24 @@ local function create_world_formspec(dialogdata)
local gamepath = game_by_gameidx.path
local gameconfig = Settings(gamepath.."/game.conf")
+ local allowed_mapgens = (gameconfig:get("allowed_mapgens") or ""):split()
+ for key, value in pairs(allowed_mapgens) do
+ allowed_mapgens[key] = value:trim()
+ end
+
local disallowed_mapgens = (gameconfig:get("disallowed_mapgens") or ""):split()
for key, value in pairs(disallowed_mapgens) do
disallowed_mapgens[key] = value:trim()
end
+ if #allowed_mapgens > 0 then
+ for i = #mapgens, 1, -1 do
+ if table.indexof(allowed_mapgens, mapgens[i]) == -1 then
+ table.remove(mapgens, i)
+ end
+ end
+ end
+
if disallowed_mapgens then
for i = #mapgens, 1, -1 do
if table.indexof(disallowed_mapgens, mapgens[i]) > 0 then
diff --git a/doc/lua_api.txt b/doc/lua_api.txt
index d0b07a4b2..ce9fc61b2 100644
--- a/doc/lua_api.txt
+++ b/doc/lua_api.txt
@@ -64,9 +64,17 @@ The game directory can contain the following files:
* `game.conf`, with the following keys:
* `name`: Required, human readable name e.g. `name = Minetest`
* `description`: Short description to be shown in the content tab
+ * `allowed_mapgens = <comma-separated mapgens>`
+ e.g. `allowed_mapgens = v5,v6,flat`
+ Mapgens not in this list are removed from the list of mapgens for
+ the game.
+ If not specified, all mapgens are allowed.
* `disallowed_mapgens = <comma-separated mapgens>`
e.g. `disallowed_mapgens = v5,v6,flat`
These mapgens are removed from the list of mapgens for the game.
+ When both `allowed_mapgens` and `disallowed_mapgens` are
+ specified, `allowed_mapgens` is applied before
+ `disallowed_mapgens`.
* `minetest.conf`:
Used to set default settings when running this game.
* `settingtypes.txt`: