2024-10-22 23:05:41 +02:00
|
|
|
|
Luanti Texture Pack Reference
|
2016-07-29 16:39:36 +02:00
|
|
|
|
===============================
|
|
|
|
|
|
|
|
|
|
Texture packs allow you to replace textures provided by a mod with your own
|
|
|
|
|
textures.
|
|
|
|
|
|
|
|
|
|
Texture pack directory structure
|
|
|
|
|
--------------------------------
|
|
|
|
|
|
|
|
|
|
textures
|
|
|
|
|
|-- Texture Pack
|
2018-04-17 15:54:50 +02:00
|
|
|
|
| |-- texture_pack.conf
|
2016-07-29 16:39:36 +02:00
|
|
|
|
| |-- screenshot.png
|
|
|
|
|
| |-- description.txt
|
|
|
|
|
| |-- override.txt
|
|
|
|
|
| |-- your_texture_1.png
|
|
|
|
|
| |-- your_texture_2.png
|
|
|
|
|
`-- Another Texture Pack
|
|
|
|
|
|
|
|
|
|
### Texture Pack
|
|
|
|
|
This is a directory containing the entire contents of a single texture pack.
|
|
|
|
|
It can be chosen more or less freely and will also become the name of the
|
|
|
|
|
texture pack. The name must not be “base”.
|
|
|
|
|
|
2018-04-17 15:54:50 +02:00
|
|
|
|
### `texture_pack.conf`
|
|
|
|
|
A key-value config file with the following keys:
|
|
|
|
|
|
2024-10-22 23:05:41 +02:00
|
|
|
|
* `name`: The texture pack name. Allows Luanti to determine the texture pack name even if
|
2024-02-24 20:13:07 +01:00
|
|
|
|
the folder is wrongly named.
|
|
|
|
|
* `title` - human-readable title
|
2018-04-17 15:54:50 +02:00
|
|
|
|
* `description` - short description, shown in the content tab
|
2024-02-24 20:13:07 +01:00
|
|
|
|
* `author`: The author's ContentDB username.
|
|
|
|
|
* `textdomain`: Textdomain used to translate title and description.
|
|
|
|
|
Defaults to the texture pack name.
|
|
|
|
|
See [Translating content meta](lua_api.md#translating-content-meta).
|
2018-04-17 15:54:50 +02:00
|
|
|
|
|
2016-07-29 16:39:36 +02:00
|
|
|
|
### `description.txt`
|
2018-04-17 15:54:50 +02:00
|
|
|
|
**Deprecated**, you should use texture_pack.conf instead.
|
|
|
|
|
|
2016-07-29 16:39:36 +02:00
|
|
|
|
A file containing a short description of the texture pack to be shown in the
|
2018-04-17 15:54:50 +02:00
|
|
|
|
content tab.
|
2016-07-29 16:39:36 +02:00
|
|
|
|
|
|
|
|
|
### `screenshot.png`
|
|
|
|
|
A preview image showing an in-game screenshot of this texture pack; it will be
|
|
|
|
|
shown in the texture packs tab. It should have an aspect ratio of 3:2 and a
|
|
|
|
|
minimum size of 300×200 pixels.
|
|
|
|
|
|
|
|
|
|
### `your_texture_1.png`, `your_texture_2.png`, etc.
|
|
|
|
|
Any other PNG files will be interpreted as textures. They must have the same
|
|
|
|
|
names as the textures they are supposed to override. For example, to override
|
|
|
|
|
the apple texture of Minetest Game, add a PNG file named `default_apple.png`.
|
|
|
|
|
|
2022-10-21 17:12:39 +02:00
|
|
|
|
The custom textures do not necessarily require the same size as their
|
2016-07-29 16:39:36 +02:00
|
|
|
|
originals, but this might be required for a few particular textures. When
|
|
|
|
|
unsure, just test your texture pack in-game.
|
|
|
|
|
|
|
|
|
|
Texture modifiers
|
|
|
|
|
-----------------
|
|
|
|
|
|
2022-06-18 15:09:33 +02:00
|
|
|
|
See lua_api.md for texture modifiers
|
2016-07-29 16:39:36 +02:00
|
|
|
|
|
2016-07-29 10:23:09 +02:00
|
|
|
|
Special textures
|
|
|
|
|
----------------
|
|
|
|
|
|
|
|
|
|
These texture names are hardcoded into the engine but can also be overwritten
|
|
|
|
|
by texture packs. All existing fallback textures can be found in the directory
|
|
|
|
|
`textures/base/pack`.
|
|
|
|
|
|
|
|
|
|
### Gameplay textures
|
|
|
|
|
|
|
|
|
|
* `bubble.png`: the bubble texture when the player is drowning
|
2020-01-04 15:44:31 +01:00
|
|
|
|
(default size: 12×12)
|
2020-05-11 21:40:45 +02:00
|
|
|
|
* `bubble_gone.png`: like `bubble.png`, but denotes lack of breath
|
|
|
|
|
(transparent by default, same size as bubble.png)
|
2016-07-29 10:23:09 +02:00
|
|
|
|
|
|
|
|
|
* `crack_anylength.png`: node overlay texture when digging
|
|
|
|
|
|
|
|
|
|
* `crosshair.png`
|
|
|
|
|
* the crosshair texture in the center of the screen. The settings
|
|
|
|
|
`crosshair_color` and `crosshair_alpha` are used to create a cross
|
2020-07-14 19:12:17 +02:00
|
|
|
|
when no texture is found.
|
|
|
|
|
|
|
|
|
|
* `object_crosshair.png`
|
|
|
|
|
* the crosshair seen when pointing at an object. The settings
|
|
|
|
|
`crosshair_color` and `crosshair_alpha` are used to create a cross
|
|
|
|
|
when no texture is found.
|
2016-07-29 10:23:09 +02:00
|
|
|
|
|
|
|
|
|
* `halo.png`: used for the node highlighting mesh
|
|
|
|
|
|
|
|
|
|
* `heart.png`: used to display the health points of the player
|
2020-01-04 15:44:31 +01:00
|
|
|
|
(default size: 12×12)
|
2020-05-11 21:40:45 +02:00
|
|
|
|
* `heart_gone.png`: like `heart.png`, but denotes lack of health points
|
|
|
|
|
(transparent by default, same size as heart.png)
|
2016-07-29 10:23:09 +02:00
|
|
|
|
|
|
|
|
|
* `minimap_mask_round.png`: round minimap mask, white gets replaced by the map
|
|
|
|
|
* `minimap_mask_square.png`: mask used for the square minimap
|
|
|
|
|
* `minimap_overlay_round.png`: overlay texture for the round minimap
|
|
|
|
|
* `minimap_overlay_square.png`: overlay texture for the square minimap
|
|
|
|
|
* `object_marker_red.png`: texture for players on the minimap
|
|
|
|
|
* `player_marker.png`: texture for the own player on the square minimap
|
2021-10-20 21:50:16 +02:00
|
|
|
|
* `no_texture_airlike.png`: fallback inventory image for airlike nodes
|
|
|
|
|
* `no_texture.png`: fallback image for unspecified textures
|
2016-07-29 10:23:09 +02:00
|
|
|
|
|
|
|
|
|
* `player.png`: front texture of the 2D upright sprite player
|
|
|
|
|
* `player_back.png`: back texture of the 2D upright sprite player
|
|
|
|
|
|
2017-03-13 08:07:14 +01:00
|
|
|
|
* `progress_bar.png`: foreground texture of the loading screen's progress bar
|
|
|
|
|
* `progress_bar_bg.png`: background texture of the loading screen's progress bar
|
|
|
|
|
|
2024-10-22 23:05:41 +02:00
|
|
|
|
* `moon.png`: texture of the moon. Default texture is generated by Luanti
|
2016-07-29 10:23:09 +02:00
|
|
|
|
* `moon_tonemap.png`: tonemap to be used when `moon.png` was found
|
2024-10-22 23:05:41 +02:00
|
|
|
|
* `sun.png`: texture of the sun. Default texture is generated by Luanti
|
2016-07-29 10:23:09 +02:00
|
|
|
|
* `sun_tonemap.png`: tonemap to be used when `sun.png` was found
|
|
|
|
|
* `sunrisebg.png`: shown sky texture when the sun rises
|
|
|
|
|
|
|
|
|
|
* `smoke_puff.png`: texture used when an object died by punching
|
|
|
|
|
|
|
|
|
|
* `unknown_item.png`: shown texture when an item definition was not found
|
|
|
|
|
* `unknown_node.png`: shown texture when a node definition was not found
|
|
|
|
|
* `unknown_object.png`: shown texture when an entity definition was not found
|
|
|
|
|
|
|
|
|
|
* `wieldhand.png`: texture of the wieldhand
|
|
|
|
|
|
2020-01-04 15:44:31 +01:00
|
|
|
|
Note: The default textures of `player.png`, `player_back.png` and `wieldhand.png`
|
|
|
|
|
are placeholders intended to be overwritten by the game.
|
|
|
|
|
|
2016-07-29 10:23:09 +02:00
|
|
|
|
### Mainmenu textures
|
|
|
|
|
|
|
|
|
|
* `menu_bg.png`: used as mainmenu background when the clouds are disabled
|
|
|
|
|
* `menu_header.png`: header texture when no texture pack is selected
|
|
|
|
|
|
|
|
|
|
* `no_screenshot.png`
|
|
|
|
|
* texture when no screenshot was found for a texture pack or mod
|
|
|
|
|
|
|
|
|
|
* `server_flags_creative.png`: icon for creative servers
|
|
|
|
|
* `server_flags_damage.png`: icon for enabled damage on servers
|
|
|
|
|
* `server_flags_favorite.png`: icon for your favorite servers
|
|
|
|
|
* `server_flags_pvp.png`: icon for enabled PvP on servers
|
|
|
|
|
|
|
|
|
|
### Android textures
|
|
|
|
|
|
|
|
|
|
* `drop_btn.png`
|
|
|
|
|
* `fast_btn.png`
|
|
|
|
|
* `fly_btn.png`
|
|
|
|
|
* `jump_btn.png`
|
|
|
|
|
* `noclip_btn.png`
|
|
|
|
|
|
|
|
|
|
* `camera_btn.png`
|
|
|
|
|
* `chat_btn.png`
|
|
|
|
|
* `inventory_btn.png`
|
|
|
|
|
* `rangeview_btn.png`
|
|
|
|
|
|
|
|
|
|
* `debug_btn.png`
|
2024-08-12 15:34:50 +02:00
|
|
|
|
* `overflow_btn.png`
|
2023-06-22 17:50:36 +02:00
|
|
|
|
* `exit_btn.png`
|
2016-07-29 10:23:09 +02:00
|
|
|
|
|
2016-07-29 16:39:36 +02:00
|
|
|
|
Texture Overrides
|
|
|
|
|
-----------------
|
|
|
|
|
|
2020-04-14 20:41:29 +02:00
|
|
|
|
You can override the textures of nodes and items from a
|
|
|
|
|
texture pack using texture overrides. To do this, create one or
|
|
|
|
|
more files in a texture pack called override.txt
|
2016-07-29 16:39:36 +02:00
|
|
|
|
|
|
|
|
|
Each line in an override.txt file is a rule. It consists of
|
|
|
|
|
|
2020-04-14 20:41:29 +02:00
|
|
|
|
itemname target texture
|
2016-07-29 16:39:36 +02:00
|
|
|
|
|
|
|
|
|
For example,
|
|
|
|
|
|
|
|
|
|
default:dirt_with_grass sides default_stone.png
|
|
|
|
|
|
2020-04-14 20:41:29 +02:00
|
|
|
|
or
|
|
|
|
|
|
|
|
|
|
default:sword_steel inventory my_steel_sword.png
|
|
|
|
|
|
|
|
|
|
You can list multiple targets on one line as a comma-separated list:
|
|
|
|
|
|
|
|
|
|
default:tree top,bottom my_special_tree.png
|
|
|
|
|
|
|
|
|
|
You can use texture modifiers, as usual:
|
2016-07-29 16:39:36 +02:00
|
|
|
|
|
|
|
|
|
default:dirt_with_grass sides default_stone.png^[brighten
|
|
|
|
|
|
2020-04-14 20:41:29 +02:00
|
|
|
|
Finally, if a line is empty or starts with '#' it will be considered
|
|
|
|
|
a comment and not read as a rule. You can use this to better organize
|
|
|
|
|
your override.txt files.
|
|
|
|
|
|
|
|
|
|
Here are targets you can choose from:
|
2016-07-29 16:39:36 +02:00
|
|
|
|
|
2020-04-14 20:41:29 +02:00
|
|
|
|
| target | behavior |
|
2016-07-29 16:39:36 +02:00
|
|
|
|
|---------------|---------------------------------------------------|
|
2020-04-14 20:41:29 +02:00
|
|
|
|
| left | x- face |
|
|
|
|
|
| right | x+ face |
|
|
|
|
|
| front | z- face |
|
|
|
|
|
| back | z+ face |
|
|
|
|
|
| top | y+ face |
|
|
|
|
|
| bottom | y- face |
|
|
|
|
|
| sides | x-, x+, z-, z+ faces |
|
2016-07-29 16:39:36 +02:00
|
|
|
|
| all | All faces. You can also use '*' instead of 'all'. |
|
2020-08-04 20:12:47 +02:00
|
|
|
|
| special1 | The first entry in the special_tiles list |
|
|
|
|
|
| special2 | The second entry in the special_tiles list |
|
|
|
|
|
| special3 | The third entry in the special_tiles list |
|
|
|
|
|
| special4 | The fourth entry in the special_tiles list |
|
|
|
|
|
| special5 | The fifth entry in the special_tiles list |
|
|
|
|
|
| special6 | The sixth entry in the special_tiles list |
|
2020-04-14 20:41:29 +02:00
|
|
|
|
| inventory | The inventory texture |
|
|
|
|
|
| wield | The texture used when held by the player |
|
2022-10-21 17:12:39 +02:00
|
|
|
|
| align_world=N | Overrides the "world align" behavior of tiles ¹ |
|
2020-04-14 20:41:29 +02:00
|
|
|
|
|
|
|
|
|
Nodes support all targets, but other items only support 'inventory'
|
2020-08-04 20:12:47 +02:00
|
|
|
|
and 'wield'.
|
|
|
|
|
|
2024-02-24 20:13:07 +01:00
|
|
|
|
¹ : `N` is an integer [0,255]. Sets align_style = "world" and scale = N on the tile,
|
|
|
|
|
refer to lua_api.md for details.
|
2022-08-13 08:52:16 +02:00
|
|
|
|
|
2020-08-04 20:12:47 +02:00
|
|
|
|
### Using the special targets
|
|
|
|
|
|
|
|
|
|
The special* targets only apply to specific drawtypes:
|
|
|
|
|
|
|
|
|
|
* `flowingliquid`: special1 sets the top texture, special2 sets the side texture
|
|
|
|
|
* `allfaces_optional`: special1 is used by simple mode, see below
|
|
|
|
|
* `glasslike_framed`: When containing a liquid, special1 sets the liquid texture
|
|
|
|
|
* `glasslike_framed_optional`: Same as `glasslike_framed`
|
|
|
|
|
* `plantlike_rooted`: special1 sets the plant's texture
|
2018-08-14 01:30:13 +02:00
|
|
|
|
|
|
|
|
|
Designing leaves textures for the leaves rendering options
|
|
|
|
|
----------------------------------------------------------
|
|
|
|
|
|
2024-10-22 23:05:41 +02:00
|
|
|
|
Luanti has three modes for rendering leaves nodes if the node has the
|
2018-08-14 01:30:13 +02:00
|
|
|
|
`allfaces_optional` drawtype.
|
|
|
|
|
|
|
|
|
|
### Fancy
|
|
|
|
|
|
|
|
|
|
Uses the texture specified in the `tiles` nodedef field.
|
|
|
|
|
The texture should have some transparent pixels and be in the RGBA format so
|
|
|
|
|
that the transparent pixels can have color information.
|
|
|
|
|
Faces of every leaves node are rendered even if they are inside a solid volume
|
|
|
|
|
of leaves; this gives a dense appearance.
|
|
|
|
|
|
|
|
|
|
### Opaque
|
|
|
|
|
|
|
|
|
|
Uses the texture specified in `tiles` but makes it opaque by converting each
|
|
|
|
|
transparent pixel into an opaque pixel that uses the color information of that
|
|
|
|
|
transparent pixel.
|
|
|
|
|
Due to this the `tiles` texture format must be RGBA not 'indexed alpha' to allow
|
|
|
|
|
each transparent pixel to have color information.
|
|
|
|
|
|
|
|
|
|
The colors of the transparent pixels should be set for a good appearance in
|
|
|
|
|
`opaque` mode. This can be done by painting the pixels the desired colors then
|
|
|
|
|
erasing them. Then when saving the texture, use the 'save color information from
|
|
|
|
|
transparent pixels' option (or equivalent).
|
|
|
|
|
|
|
|
|
|
### Simple
|
|
|
|
|
|
|
|
|
|
Uses the texture specified in the `special_tiles` nodedef field if it exists, if
|
|
|
|
|
not, the `tiles` texture.
|
|
|
|
|
The `special_tiles` texture should have fewer transparent pixels than the
|
|
|
|
|
`tiles` texture and be in the 'indexed alpha' format.
|
|
|
|
|
|
|
|
|
|
This mode is between the other two in terms of appearance and rendering load.
|
|
|
|
|
The nodes are rendered using the `glasslike` drawtype, only showing the surface
|
|
|
|
|
faces for any solid volume of leaves, not the internal faces.
|
|
|
|
|
Due to this the `tiles` texture might appear lacking in density, so optionally a
|
|
|
|
|
`special_tiles` texture can be used to provide a texture with fewer transparent
|
|
|
|
|
pixels for a denser appearance.
|