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.master
parent
faedde08f9
commit
f91124a0c0
|
@ -39,11 +39,24 @@ local function create_world_formspec(dialogdata)
|
||||||
local gamepath = game_by_gameidx.path
|
local gamepath = game_by_gameidx.path
|
||||||
local gameconfig = Settings(gamepath.."/game.conf")
|
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()
|
local disallowed_mapgens = (gameconfig:get("disallowed_mapgens") or ""):split()
|
||||||
for key, value in pairs(disallowed_mapgens) do
|
for key, value in pairs(disallowed_mapgens) do
|
||||||
disallowed_mapgens[key] = value:trim()
|
disallowed_mapgens[key] = value:trim()
|
||||||
end
|
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
|
if disallowed_mapgens then
|
||||||
for i = #mapgens, 1, -1 do
|
for i = #mapgens, 1, -1 do
|
||||||
if table.indexof(disallowed_mapgens, mapgens[i]) > 0 then
|
if table.indexof(disallowed_mapgens, mapgens[i]) > 0 then
|
||||||
|
|
|
@ -64,9 +64,17 @@ The game directory can contain the following files:
|
||||||
* `game.conf`, with the following keys:
|
* `game.conf`, with the following keys:
|
||||||
* `name`: Required, human readable name e.g. `name = Minetest`
|
* `name`: Required, human readable name e.g. `name = Minetest`
|
||||||
* `description`: Short description to be shown in the content tab
|
* `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>`
|
* `disallowed_mapgens = <comma-separated mapgens>`
|
||||||
e.g. `disallowed_mapgens = v5,v6,flat`
|
e.g. `disallowed_mapgens = v5,v6,flat`
|
||||||
These mapgens are removed from the list of mapgens for the game.
|
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`:
|
* `minetest.conf`:
|
||||||
Used to set default settings when running this game.
|
Used to set default settings when running this game.
|
||||||
* `settingtypes.txt`:
|
* `settingtypes.txt`:
|
||||||
|
|
Loading…
Reference in New Issue