minetest_modding_book/_en/basics/folders.md

114 lines
3.4 KiB
Markdown
Raw Normal View History

2014-12-11 00:56:37 -08:00
---
2014-12-11 12:04:07 -08:00
title: Folder Structure
2014-12-11 00:56:37 -08:00
layout: default
2017-08-26 08:40:30 -07:00
root: ../../
2018-07-15 07:28:10 -07:00
idx: 1.1
description: Learn how to make a mod folder, including init.lua, depends.txt and more.
2014-12-11 00:56:37 -08:00
---
2015-02-22 02:28:37 -08:00
## Introduction
2014-12-11 00:56:37 -08:00
Understanding the basic structure of a mod's folder
is an essential skill when creating mods.
2014-12-11 00:56:37 -08:00
* [Mod Folders](#mod-folders)
* [Dependencies](#dependencies)
* [Mod Packs](#mod-packs)
* [Example](#example)
2014-12-11 00:56:37 -08:00
2015-02-22 02:28:37 -08:00
## Mod Folders
2014-12-11 00:56:37 -08:00
2015-11-08 07:57:40 -08:00
Each mod has its own folder where all its Lua code, textures, models, and sounds
are placed. These folders need to be placed in a mod location such as
minetest/mods.
![Find the mod's folder]({{ page.root }}/static/folder_modfolder.jpg)
2014-12-11 00:56:37 -08:00
A "mod name" is used to refer to a mod. Each mod should have a unique mod name.
2018-07-15 07:28:10 -07:00
Mod names can include letters, numbers, and underscores. A good mod name should
describe what the mod does, and the folder which contains the components of a mod
needs to be given the same name as the mod name.
2014-12-18 10:57:13 -08:00
2014-12-11 00:56:37 -08:00
### Mod Folder Structure
Mod name (eg: "mymod")
- init.lua - the main scripting code file, which runs when the game loads.
- (optional) depends.txt - a list of mods that need to be loaded before this mod.
- (optional) textures/ - images used by the mod, commonly in the format modname_itemname.png.
- (optional) sounds/ - sounds used by the mod.
- (optional) models/ - 3d models used by the mod.
...and any other Lua files to be included.
2014-12-11 00:56:37 -08:00
2015-11-08 07:57:40 -08:00
Only the init.lua file is required in a mod for it to run on game load; however,
2015-02-19 06:55:37 -08:00
the other items are needed by some mods to perform their functionality.
2014-12-11 00:56:37 -08:00
2015-02-22 02:28:37 -08:00
## Dependencies
2014-12-11 00:56:37 -08:00
2015-11-08 07:57:40 -08:00
The depends text file allows you to specify which mods this mod requires to run and what
2014-12-11 00:56:37 -08:00
needs to be loaded before this mod.
2014-12-31 08:51:24 -08:00
**depends.txt**
modone
modtwo
modthree?
2014-12-11 00:56:37 -08:00
2015-02-19 06:55:37 -08:00
As you can see, each modname is on its own line.
2014-12-12 08:52:20 -08:00
Mod names with a question mark following them are optional dependencies.
If an optional dependency is installed, it is loaded before the mod;
however, if the dependency is not installed, the mod still loads.
2015-11-08 07:57:40 -08:00
This is in contrast to normal dependencies which will cause the current
mod not to work if the dependency is not installed.
2014-12-11 00:56:37 -08:00
2015-02-22 02:28:37 -08:00
## Mod Packs
2014-12-11 00:56:37 -08:00
Mods can be grouped into mod packs which allow multiple mods to be packaged
and moved together. They are useful if you want to supply multiple mods to
a player but don't want to make them download each one individually.
2014-12-11 00:56:37 -08:00
### Mod Pack Folder Structure
modpackfolder/
- modone/
- modtwo/
- modthree/
- modfour/
- modpack.txt signals that this is a mod pack, content does not matter
2014-12-11 00:56:37 -08:00
## Example
2014-12-11 00:56:37 -08:00
Are you confused? Don't worry, here is an example which puts all of this together:
2014-12-11 00:56:37 -08:00
### Mod Folder
mymod/
- textures/
- - mymod_node.png
- init.lua
- depends.txt
2014-12-11 00:56:37 -08:00
### depends.txt
default
2014-12-11 00:56:37 -08:00
### init.lua
{% highlight lua %}
2014-12-11 11:49:41 -08:00
print("This file will be run at load time!")
2015-02-19 06:55:37 -08:00
minetest.register_node("mymod:node", {
description = "This is a node",
tiles = {
"mymod_node.png",
"mymod_node.png",
"mymod_node.png",
"mymod_node.png",
"mymod_node.png",
"mymod_node.png"
},
groups = {cracky = 1}
2014-12-11 11:49:41 -08:00
})
2014-12-11 00:56:37 -08:00
{% endhighlight %}
This mod has the name "mymod". It has two text files: init.lua and depends.txt.\\
The script prints a message and then registers a node which will be explained in the next chapter.\\
The depends text file adds a dependency on the default mod which is in minetest_game.\\
There is also a texture in textures/ for the node.