Luanti API Referenz für Lua

1. minetest.register_craft

Mit dieser Funktion kannst du neue Crafting-Rezepte hinzufügen.

minetest.register_craft({
    output = "modname:itemname Anzahl",
    recipe = {
        {"item1", "item2", "item3"},
        {"item4", "item5", "item6"},
        {"item7", "item8", "item9"},
    },
    replacements = {
        {"verwendetes_item", "zurückgebliebenes_item"}
    },
    type = "shaped"
})
                
            
Parameter Beschreibung
output Das Item, das durch das Crafting erstellt wird. Format: "modname:item Anzahl" (Standard: 1).
recipe Eine Tabelle mit bis zu 3x3 Feldern, die das Crafting-Rezept festlegt. "modname:item" gibt die Position der Zutaten an.
replacements (Optional) Gibt an, welche Items nach dem Crafting ersetzt werden. Beispiel: Ein Eimer Wasser verbraucht das Wasser, aber der Eimer bleibt.
type
  • shaped - Die Zutaten müssen sich an der richtigen Stelle befinden.
  • shapeless - Es spielt keine Rolle, wo die Zutaten liegen, es muss nur die richtige Menge vorhanden sein.
  • cooking - Rezepte, die mit der Ofen verwenden soll.
  • fuel - Definiert Gegenstände, die in Öfen verbrannt werden können.
  • tool_repair - Definiert Gegenstände, die mit Werkzeugen repariert werden können.

Beispiel 1.1: Einfaches Rezept für eine Fackel

  minetest.register_craft({
        output = "default:torch 4",
        recipe = {
            {"", "default:coal_lump", ""},
            {"", "default:stick", ""},
            {"", "", ""}
        }
    })
                
            

Beispiel 1.2: Schmelzrezept für einen Ziegelstein

  minetest.register_craft({
    type = "cooking",
    output = "default:brick",
    recipe = "default:clay_lump",
    cooktime = 10
})
                
            

2. minetest.register_node

Diese Funktion registriert einen neuen Block (Node) im Spiel.

minetest.register_node("modname:node_name", {
    description = "Blockbeschreibung",
    drawtype = "normal",
    -- tiles = {"texture.png"}, 
    tiles = {
        "block_top.png",            -- Oberseite (Y+)
        "block_bottom.png",         -- Unterseite (Y-)
        "block_front.png",          -- Vorderseite (Z-)
        "block_back.png",           -- Rückseite (Z+)
        "block_right.png",          -- Rechte Seite (X+)
        "block_left.png",           -- Linke Seite (X-)
    },
    is_ground_content = true,
    light_source = 10,
    groups = {cracky = 3, stone = 1},
    sounds = default.node_sound_stone_defaults(),
    walkable = true,
    paramtype = "light",
    drop = "modname:item",
    node_box = { type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5} },
     -- {x1, y1, z1, x2, y2, z2}
})
                
            
Parameter Beschreibung
description Der Name des Blocks, der im Spiel angezeigt wird.
tiles Die Textur(en) für die Blockseiten. Kann eine oder mehrere Texturen enthalten.
up (+Y), down (-Y), right (+X), left (-X), back (+Z), front (-Z). (+Y, -Y, +X, -X, +Z, -Z)
light_source (Optional) Die Lichtstärke des Blocks (0-14). Werte größer als 0 lassen den Block leuchten.
groups Gruppen des Blocks, die sein Verhalten bestimmen, z. B. „cracky = 3“ (leicht abbaubar mit Spitzhacke).
Gruppe Werkzeug Beschreibung
crumbly Schaufel Krümelige, lockere Materialien
cracky Spitzhacke Harte, spröde Materialien
snappy Schere/Schwert Schneidbare oder leicht brechbare Materialien
choppy Axt Holzartige Materialien
fleshy Schwert Lebende Materialien und Kreaturen
explody TNT/Explosionen Explosive oder durch Explosionen zerstörbare Materialien
oddly_breakable_by_hand Hand Materialien, die ohne Werkzeug zerstörbar sind
sounds (Optional) Die Geräusche, die der Block macht, z. B. „default.node_sound_stone_defaults()“.
walkable Gibt an, ob der Spieler auf dem Block laufen kann (true) oder hindurchgeht (false).
paramtype Bestimmt die Lichtdurchlässigkeit („light“ erlaubt Lichtdurchgang, „none“ blockiert Licht).
diggable (Optional)true, wenn der Block abgebaut werden kann..
drop (Optional) Das Item, das beim Abbauen des Blocks herausfällt.
node_box (Optional) Definiert die Form des Blocks, z.B. für Stühle oder Treppen.
is_ground_content
  • true - Kann durch Höhlen ersetzt werden.
  • false- Wird nicht durch Höhlen oder andere Strukturen ersetzt
drawtype Bestimmt das Aussehen und Verhalten des Blocks. Mögliche Werte:
  • normal: Standard-Block (wie Stein oder Holz)
  • nodebox: Benutzerdefinierte Form (für Treppen, Stufen etc.)
  • mesh: 3D-Modell (.obj oder .b3d Datei)
  • plantlike: Für Pflanzen (X-förmige Textur)
  • fencelike: Für Zäune
  • raillike: Für Schienen
  • torchlike: Für Fackeln und ähnliche Objekte
  • glasslike: Transparente Blöcke wie Glas
  • glasslike_framed: Gerahmtes Glas
  • allfaces: Zeigt alle Seiten (für Blätter)
  • allfaces_optional: Wie allfaces, aber optimiert
  • liquid: Für Flüssigkeiten

Beispiel 2.1: Ein leuchtender Block

minetest.register_node("mymod:glowing_block", {
    description = "Leuchtender Block",
    tiles = {"mymod_glowing_block.png"},
    light_source = 10,
    groups = {cracky = 3},
    sounds = default.node_sound_stone_defaults(),
})
                
            

Beispiel 2.2: Eine Treppenstufe

minetest.register_node("mymod:stair_step", {
    description = "Treppenstufe",
    drawtype = "nodebox",
    node_box = {
        type = "fixed",
        fixed = {
            {-0.5, -0.5, -0.5, 0.5, 0, 0.5},  -- Unterer Block korrigiert
            {-0.5, 0, 0, 0.5, 0.5, 0.5},      -- Oberer Block
			--{x1, y1, z1, x2, y2, z2}
        },
    },
    tiles = {"mymod_stair_step.png"},
    groups = {cracky = 3, falling_node = 1}, -- Fällt nach unten
})
                
            

3. minetest.register_craftitem

Diese Funktion registriert ein neues Inventar-Item.

minetest.register_craftitem("modname:item_name", {
    description = "Item-Beschreibung",
    inventory_image = "invent_texture.png",
    wield_image = "wield_texture.png",
    stack_max = 99,
    on_use = function(itemstack, user, pointed_thing)
        -- Item-Funktion hier
    end,
})
                
            
Parameter Beschreibung
description Name des Items, das im Inventar angezeigt wird.
inventory_image Das Icon des Items im Inventar, dargestellt als 2D-Textur.
stack_max Maximale Anzahl des Items im Stapel. Standardwert ist 99.
on_use (Optional) Funktion, die beim Benutzen des Items ausgeführt wird, z. B. Heilung oder spezielle Effekte.
wield_image (Optional) Bild des Items, wenn es in der Hand gehalten wird.

Beispiel 3.1: Magischer Staub

minetest.register_node("mymod:glowing_block", {
    description = "Leuchtender Block",
    tiles = {"mymod_glowing_block.png"},
    light_source = 10,
    groups = {cracky = 3},
    sounds = default.node_sound_stone_defaults(),
})
                
            

4. minetest.register_chatcommand

Registriert einen neuen Chatbefehl, der durch einen Spieler über den Chat (/befehl) ausgeführt werden kann.

minetest.register_chatcommand("befehl", {
    params = "<text>", -- Erwartete Parameter (nur zur Anzeige)
    description = "Gibt den eingegebenen Text zurück.",
    privs = {shout = true}, -- Erforderliche Privilegien
    func = function(name, param)
        if param == "" then
            return false, "Du musst etwas eingeben!"
        end
        return true, "Du hast gesagt: " .. param
    end
})
        
    
Parameter Beschreibung
params (Optional) Zeigt dem Spieler, welche Eingaben erwartet werden. Hat keinen funktionalen Einfluss.
description Kurze Beschreibung des Befehls. Wird in /help angezeigt.
privs (Optional) Tabelle von Privilegien, die erforderlich sind, um den Befehl auszuführen, z. B. {teleport = true}
func(name, param) Die Funktion, die beim Ausführen des Befehls aufgerufen wird. Gibt zurück: true/false, "Nachricht"

Verfügbare Privilegien (Beispiele)

Chat-Befehle - Minetest/Lua Unterrichtseinheit

Zur nächsten Seite - Unterrichtseinheit

Chat-Befehle - Minetest/Lua Muster (Regex)

Zu den Pattern

Chat-Befehle - Minetest/Lua: Boden bauen

Zu dem Chat-Command