Difference between revisions of "Modding Intro"

From Minetest Developer Wiki
Jump to navigation Jump to search
(added link to https://minetest.gitlab.io/minetest/)
(update html lua_api link)
 
(23 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Languages}}
+
Minetest has a scripting '''API''', which is used to program games and mods, creating whole new experiences or extending existing ones.
  
Minetest has a scripting '''API''' ('''A'''pplication '''P'''rogramming '''I'''nterface), which is used to program '''mods''' (short for "modifications") for the game, extending its features and adding new items. This API is accessed using an easy-to-use programming language called [[Lua]].
+
The API is accessed using Lua, an easy-to-use programming language.
 +
Version 5.1 of Lua is used, but many people run LuaJIT for greater performance.
  
The only thing you will need is ''basic'' programming knowledge. If you don't have any programming experience, you can use [https://www.codecademy.com/tracks/javascript Codecademy] to learn. It will teach you the basics of programming (it is JavaScript, not Lua, but still helps). More specifically, the version of Lua is 5.1 ([https://www.lua.org/manual/5.1/ Reference manual], [https://www.lua.org/pil/ book]).
+
The only thing you will need is ''basic'' programming knowledge.
  
 
== Documentation ==
 
== Documentation ==
The '''only''' official Lua API documentation is [https://github.com/minetest/minetest/blob/master/doc/lua_api.txt lua_api.txt]. You can find this file in your Minetest installation, in the <code>doc</code> directory. Use this file to look up functions, core features of the Lua API, etc. This file is maintained by the core developers of Minetest and every change to it goes through a quality control process. This document explains everything you need to know about the Lua API in concise form, but may be daunting for newbies to read. There is also (as of april 2020) a automatically [https://minetest.gitlab.io/minetest/ generated version] that might be easier to read.
 
  
For complete beginners, there's also an unofficial guide/tutorial into Lua scripting: The [http://rubenwardy.com/minetest_modding_book/ Minetest Modding Online Tutorial Book]. It also includes a HTML version of lua_api.txt which is more readable.
+
=== Tutorials ===
 +
The [https://rubenwardy.com/minetest_modding_book/ Minetest Modding Book] is a friendly introduction to Minetest modding and game creation, introducing you to various aspects of the API.
  
A very basic overview is written in [[Modding Overview]].
+
It is recommended you start here, even if you are already apt at programming, to get a good understanding of how Minetest mods work and are structured.
  
'''WARNING''': A huge amount of pages on this wiki regarding Lua methods and objects are extremely outdated. Ignore them for now, use lua_api.txt instead. It has been [https://forum.minetest.net/viewtopic.php?f=47&t=22469 proposed] to remove those pages as redundant.
+
=== Lua API Reference ===
 +
The official Lua API documentation is <code>lua_api.md</code>. It's available as [https://github.com/minetest/minetest/blob/master/doc/lua_api.md markdown] or [https://api.minetest.net/ HTML]. You can find the plaintext version in your Minetest installation, in the <code>doc</code> directory.
  
== Path of user data ==
+
This is a concise description of the entire API, explaining functions, data structures, registration templates & more. The core developers of minetest maintain it, changes going through a quality control process.
See [[Installing_Mods]].
+
 
 +
Any functions not listed here are subject to change and not guaranteed to be compatible across versions, though usually they are.
 +
 
 +
=== The Minetest-Docs Project ===
 +
A work-in-progress project is underway to create new, more detailed, documentation. They can be read from its [https://github.com/minetest/minetest_docs/ GitHub repo], contributions are greatly appreciated.
 +
 
 +
 
 +
== Useful tools ==
 +
Here are some useful tools that most modders use when making Minetest mods:
 +
 
 +
* [https://code.visualstudio.com/ Visual Studio Code]/[https://vscodium.com/ VSCodium], powerful code editor with a [https://marketplace.visualstudio.com/items?itemName=GreenXenith.minetest-tools Minetest extension] available for code completion.
 +
* [https://github.com/lunarmodules/luacheck luacheck], static analysis tool for Lua. See [https://rubenwardy.com/minetest_modding_book/en/quality/luacheck.html this modding book chapter] for more information on how to use it with Minetest.
  
 
== Other useful links ==
 
== Other useful links ==
* Check out the [https://forum.minetest.net/viewforum.php?f=11 Mod Releases forum] to see mods that have been published by the community.
+
* Check out [https://content.minetest.net/ ContentDB] to see mods that have been published by the community.
* Get mod help from the [https://forum.minetest.net/viewtopic.php?f=9&t=4668 modding questions thread].
+
* Get mod help from the community:
 +
** [https://forum.minetest.net/viewforum.php?f=47 Forums]
 +
** [https://discord.gg/minetest Discord]
 +
** [https://matrix.to/#/#minetest:tchncs.de Matrix]
 +
** ...[https://www.minetest.net/get-involved/ more]
 
* Suggest a mod idea in the [https://forum.minetest.net/viewtopic.php?f=9&t=2434 mod request thread].
 
* Suggest a mod idea in the [https://forum.minetest.net/viewtopic.php?f=9&t=2434 mod request thread].
  
[[Category:Misc]]
 
 
[[Category:Modding API]]
 
[[Category:Modding API]]

Latest revision as of 16:44, 18 September 2023

Minetest has a scripting API, which is used to program games and mods, creating whole new experiences or extending existing ones.

The API is accessed using Lua, an easy-to-use programming language. Version 5.1 of Lua is used, but many people run LuaJIT for greater performance.

The only thing you will need is basic programming knowledge.

Documentation

Tutorials

The Minetest Modding Book is a friendly introduction to Minetest modding and game creation, introducing you to various aspects of the API.

It is recommended you start here, even if you are already apt at programming, to get a good understanding of how Minetest mods work and are structured.

Lua API Reference

The official Lua API documentation is lua_api.md. It's available as markdown or HTML. You can find the plaintext version in your Minetest installation, in the doc directory.

This is a concise description of the entire API, explaining functions, data structures, registration templates & more. The core developers of minetest maintain it, changes going through a quality control process.

Any functions not listed here are subject to change and not guaranteed to be compatible across versions, though usually they are.

The Minetest-Docs Project

A work-in-progress project is underway to create new, more detailed, documentation. They can be read from its GitHub repo, contributions are greatly appreciated.


Useful tools

Here are some useful tools that most modders use when making Minetest mods:

Other useful links