aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorred-001 <red-001@outlook.ie>2017-06-23 01:51:57 +0100
committerparamat <mat.gregory@virginmedia.com>2018-01-16 08:45:17 +0000
commit4c0d4e4105d2f2e63b9a43bb83fecf92288f63b3 (patch)
tree36a586497c474ec35fd26fc58d48ba8397916b6f
parent70a90bc83a0b244a494627cfbc0305946bb1e593 (diff)
downloadminetest-4c0d4e4105d2f2e63b9a43bb83fecf92288f63b3.tar.gz
minetest-4c0d4e4105d2f2e63b9a43bb83fecf92288f63b3.tar.bz2
minetest-4c0d4e4105d2f2e63b9a43bb83fecf92288f63b3.zip
Load a texturepack from the 'textures' subfolder of a game
-rw-r--r--doc/lua_api.txt68
-rw-r--r--src/server.cpp10
2 files changed, 38 insertions, 40 deletions
diff --git a/doc/lua_api.txt b/doc/lua_api.txt
index f588211b6..da4655682 100644
--- a/doc/lua_api.txt
+++ b/doc/lua_api.txt
@@ -47,47 +47,41 @@ Paths
Games
-----
Games are looked up from:
-
-* `$path_share/games/gameid/`
-* `$path_user/games/gameid/`
-
-where `gameid` is unique to each game.
-
-The game directory contains the file `game.conf`, which contains:
-
- name = <Human-readable full name of the game>
-
-e.g.
-
- name = Minetest
-
-Optionally, game.conf can also contain:
-
- disallowed_mapgens = <comma-separated mapgens>
-
-e.g.
-
- disallowed_mapgens = v5,v6,flat
-
-These mapgens are removed from the list of mapgens for the game.
-
-The game directory can contain the file minetest.conf, which will be used
-to set default settings when running the particular game.
-It can also contain a settingtypes.txt in the same format as the one in builtin.
-This settingtypes.txt will be parsed by the menu and the settings will be displayed
-in the "Games" category in the settings tab.
+ * `$path_share/games/gameid/`
+ * `$path_user/games/gameid/`
+Where `gameid` is unique to each game.
+
+The game directory can contain the following files:
+ * `game.conf`
+ Which contains:
+ * name = <Human-readable full name of the game>
+ e.g.
+ name = Minetest
+ * Optionally, game.conf can also contain:
+ disallowed_mapgens = <comma-separated mapgens>
+ e.g.
+ disallowed_mapgens = v5,v6,flat
+ These mapgens are removed from the list of mapgens for the game.
+ * minetest.conf
+ Used to set default settings when running this game.
+ * settingtypes.txt
+ In the same format as the one in builtin.
+ This settingtypes.txt will be parsed by the menu and the settings will be
+ displayed in the "Games" category in the advanced settings tab.
+ * If the subgame contains a folder called `textures` the server will load it
+ as a texturepack, overriding mod textures.
+ Any server texturepack will override mod textures and the game texturepack.
### Menu images
-Games can provide custom main menu images. They are put inside a `menu` directory
-inside the game directory.
-
-The images are named `$identifier.png`, where `$identifier` is
-one of `overlay,background,footer,header`.
-If you want to specify multiple images for one identifier, add additional images named
-like `$identifier.$n.png`, with an ascending number $n starting with 1, and a random
-image will be chosen from the provided ones.
+Games can provide custom main menu images. They are put inside a `menu`
+directory inside the game directory.
+The images are named `$identifier.png`, where `$identifier` is one of
+`overlay`, `background`, `footer`, `header`.
+If you want to specify multiple images for one identifier, add additional
+images named like `$identifier.$n.png`, with an ascending number $n starting
+with 1, and a random image will be chosen from the provided ones.
Mod load path
-------------
diff --git a/src/server.cpp b/src/server.cpp
index 26b3bb4b1..d011089c3 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -253,7 +253,10 @@ Server::Server(
m_nodedef->updateAliases(m_itemdef);
// Apply texture overrides from texturepack/override.txt
- for (const auto &path : fs::GetRecursiveDirs(g_settings->get("texture_path")))
+ std::vector<std::string> paths;
+ fs::GetRecursiveDirs(paths, g_settings->get("texture_path"));
+ fs::GetRecursiveDirs(paths, m_gamespec.path + DIR_DELIM + "textures");
+ for (const std::string &path : paths)
m_nodedef->applyTextureOverrides(path + DIR_DELIM + "override.txt");
m_nodedef->setNodeRegistrationStatus(true);
@@ -2259,8 +2262,9 @@ void Server::fillMediaCache()
paths.push_back(mod.path + DIR_DELIM + "models");
paths.push_back(mod.path + DIR_DELIM + "locale");
}
- fs::GetRecursiveDirs(paths, porting::path_user + DIR_DELIM +
- "textures" + DIR_DELIM + "server");
+ fs::GetRecursiveDirs(paths, m_gamespec.path + DIR_DELIM + "textures");
+ fs::GetRecursiveDirs(paths, porting::path_user + DIR_DELIM + "textures" + DIR_DELIM + "server");
+
// Collect media file information from paths into cache
for (const std::string &mediapath : paths) {
std::vector<fs::DirListNode> dirlist = fs::GetDirListing(mediapath);