Skip to content

Commit

Permalink
Add allowed_mapgens option in game.conf. (#9263)
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
wt committed Apr 6, 2020
1 parent faedde0 commit f91124a
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 0 deletions.
13 changes: 13 additions & 0 deletions builtin/mainmenu/dlg_create_world.lua
Expand Up @@ -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
Expand Down
8 changes: 8 additions & 0 deletions doc/lua_api.txt
Expand Up @@ -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`:
Expand Down

0 comments on commit f91124a

Please sign in to comment.