Skip to content
Permalink
Browse files

Load a texturepack from the 'textures' subfolder of a game

  • Loading branch information...
red-001 authored and paramat committed Jun 23, 2017
1 parent 70a90bc commit 4c0d4e4105d2f2e63b9a43bb83fecf92288f63b3
Showing with 38 additions and 40 deletions.
  1. +31 −37 doc/lua_api.txt
  2. +7 −3 src/server.cpp
@@ -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
-------------
@@ -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);

2 comments on commit 4c0d4e4

@jastevenson303

This comment has been minimized.

Copy link
Contributor

replied Jan 20, 2018

Out of curiosity, does this mean I cannot have a mod named 'textures'?

@red-001

This comment has been minimized.

Copy link
Contributor Author

replied Jan 20, 2018

@jastevenson303 I don't see how naming a mod that could cause an issue.

Please sign in to comment.
You can’t perform that action at this time.