Development Tools
This page contains a list of tools that are useful for developing games and mods for Luanti, or working with parts of the engine.
In addition to this list, you can also see the Development Tools tag on ContentDB for mods useful for development and the modtools repository for officially maintained modding tools.
Engine development
- Development Test: A testing game for testing various engine features
- /luanti/util: Various maintenance utilities
General Lua Tools
- luacheck: Lua linter and static code analyzer (see also the chapter in rubenwardy’s modding book)
- busted: Lua unit testing framework (see also the chapter in rubenwardy’s modding book)
- Lua pattern viewer: A site like Regexr but for visualizing and working with Lua patterns.
- Warr1024’s Lua Code Tools: Lua formatter & locals generator
Debugging/profiling
- debug: Luanti mod library that offers more debugging capabilities.
- LuaJIT Profiler: Luanti mod that allows you to profile mods using LuaJIT’s built-in profiler and flame graph.
- Warr1024’s Minetest Server Docker Image: Comes with useful debugging and performance profiling tools
Syntax highlighting/autocompletion
Note: the extensions below are community projects, not maintained by the Luanti team.
- “Luanti API” extension:
- Features:
- Typed Luanti API: classes (ObjectRef, InvRef, ItemStack, Settings, …),
core.*functions, and definition tables are described with exact types - Context-aware autocompletion: after
player:only player methods are suggested, afterinv:only inventory methods, inside a node definition only its fields and callbacks - API documentation shown in a popup as you type and on hover
- Diagnostics: warns about typos, wrong arguments and wrong types before you run the game
- Built on top of EmmyLua Language Server (installed automatically), which also provides:
- Autocompletion for your own functions, methods and tables, across all mods in the workspace
- Type annotations for your own code (
---@param,---@return,---@class, …) using LuaCATS annotations
- Screencast with examples: see the extension page (links below)
- Not included: mod and game folder templates,
.luacheckrcgenerator, formspec syntax highlighting
- Typed Luanti API: classes (ObjectRef, InvRef, ItemStack, Settings, …),
- Get it at:
- VS Code Marketplace (VS Code)
- Open VSX Registry (VSCodium, Cursor, Windsurf, Theia and other VS Code forks)
- Other editors: installation instructions
- Features:
- “Luanti Tools” extension:
- Features:
- Lightweight snippet-based autocompletion for
core.*functions and object methods, with a few simplifications:- method suggestions after
:are not tied to the object type, so methods of all classes are listed - fields and callbacks of definition tables are not suggested
- method suggestions after
- Short description for each suggestion with a link to the relevant section of
lua_api.md - Formspec syntax highlighting and texture modifier suggestions
- Commands to create mod and game folder templates
.luacheckrcgenerator
- Lightweight snippet-based autocompletion for
- Get it at:
- VS Code Marketplace (VS Code)
- Open VSX Registry (VSCodium, Cursor, Windsurf, Theia and other VS Code forks)
- Features:
Schematics
- Schematic Editor: Luanti mod that allows you to import, edit and export schematics straight within Luanti.
- MTS Editor: Standalone program to view and edit Luanti schematics, but it supports other file formats (e.g. Minecraft schematics) as well.
- Lua2Mts: Luanti mod to convert .lua schematics to .mts schematics.
- ASCII Art Schematics: Library to manage Luanti schematics as ASCII art
Biomes
- Luanti Biome Point Visualizer: Edit and visualize biome heat/humidity points in a Voronoi diagram (source code)
Perlin Noise
- Perlin Explorer: Luanti mod that allows you to experiment with all sorts of Perlin noise.
- Perlin noise tuner: Visualizes 2D Perlin noise that Luanti will generate with different noise params.(Emulation of Luanti Perlin noise can be wrong in extremes/edge-cases due to precision of JavaScript number type)
3D models
- Blender: Essential for making animated models in Luanti, see Using Blender.
- Blockbench: Useful for making static voxel models for Luanti, see Using Blockbench.
Images
- optipng: Lossless PNG compressor
- pngcrush: Lossless PNG compressor
- pngquant: Lossy PNG compressor
- guetzli: JPG compressor
Formspecs
- formspec_editor: Luanti game that allows you to write formspecs and preview them instantly within Luanti
- Luanti Formspec Editor: WYSIWYG online formspec editor
Translation
- Gettext utils: For maintaining content translations for the new .po/Gettext format
- mod_translation_updater: Python script to create and update legacy .tr mod translation files
ContentDB
- cdbrelease: Release automation tool for ContentDB packages
Misc.
- Definition Ripper: Extract node and item definitions, generating decorative and inert facades from them