Tuxilio replace much changed words
This commit is contained in:
parent
4a2e607b86
commit
77e881533e
@ -75,7 +75,7 @@ Wenn man versteht, wie item_eat funktioniert, indem es einfach eine Funktion zur
|
|||||||
|
|
||||||
### on_place und on_secondary_use
|
### on_place und on_secondary_use
|
||||||
|
|
||||||
Der Unterschied zwischen `on_place` und `on_secondary_use` ist, dass `on_place` aufgerufen wird,
|
Der Unterschied zwischen `on_place` und `on_secondary_use` ist, dass `on_place` aufgerufen wird,
|
||||||
wenn der Spieler auf einen Node zeigt und `on_secondary_use`, wenn der
|
wenn der Spieler auf einen Node zeigt und `on_secondary_use`, wenn der
|
||||||
Spieler dies nicht tut.
|
Spieler dies nicht tut.
|
||||||
|
|
||||||
@ -163,7 +163,7 @@ minetest.register_node("mymod:mynode", {
|
|||||||
end,
|
end,
|
||||||
on_construct = function(pos, node)
|
on_construct = function(pos, node)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
meta:set_string("infotext", "Mein Block!")
|
meta:set_string("infotext", "Mein Node!")
|
||||||
end,
|
end,
|
||||||
after_place_node = function(pos, placer, itemstack, pointed_thing)
|
after_place_node = function(pos, placer, itemstack, pointed_thing)
|
||||||
-- Überprüfen des Platzierers
|
-- Überprüfen des Platzierers
|
||||||
|
@ -9,7 +9,7 @@ redirect_from: /de/chapters/nodes_items_crafting.html
|
|||||||
|
|
||||||
## Einführung <!-- omit in toc -->
|
## Einführung <!-- omit in toc -->
|
||||||
|
|
||||||
Neue Nodes, Craftitems und Rezepte zu erstellen
|
Neue Nodes, Craftitems und Rezepte zu erstellen
|
||||||
sind Grundlagen von vielen Mods
|
sind Grundlagen von vielen Mods
|
||||||
|
|
||||||
- [Was sind Nodes und Craftitems?](#was-sind-nodes-und-craftitems)
|
- [Was sind Nodes und Craftitems?](#was-sind-nodes-und-craftitems)
|
||||||
@ -73,7 +73,7 @@ itemname = minetest.registered_aliases[itemname] or itemname
|
|||||||
|
|
||||||
### Texturen
|
### Texturen
|
||||||
|
|
||||||
Texturen solten in den textures/ Pfad mit Namen im Format
|
Texturen solten in den textures/ Pfad mit Namen im Format
|
||||||
`modname_itemname.png`.\\
|
`modname_itemname.png`.\\
|
||||||
platziert werden. JPEG Texturen werden unterstüzt, aber sie unterstützen keine Transparenz und haben generell
|
platziert werden. JPEG Texturen werden unterstüzt, aber sie unterstützen keine Transparenz und haben generell
|
||||||
schlechte Qualität und eine niedrige Auflösung.
|
schlechte Qualität und eine niedrige Auflösung.
|
||||||
@ -205,13 +205,13 @@ minetest.register_craft({
|
|||||||
})
|
})
|
||||||
```
|
```
|
||||||
|
|
||||||
Der einzige wirklich Unterschied im Code ist, dass das Rezept nur ein Item
|
Der einzige wirklich Unterschied im Code ist, dass das Rezept nur ein Item
|
||||||
im Vergleich zu einer Tabelle (zwischen geschweiften Klammern) beinhaltet.
|
im Vergleich zu einer Tabelle (zwischen geschweiften Klammern) beinhaltet.
|
||||||
Sie haben optional auch einen "cooktime" Parameter, welcher
|
Sie haben optional auch einen "cooktime" Parameter, welcher
|
||||||
definiert wie lange die Items zu kochen brauchen.
|
definiert wie lange die Items zu kochen brauchen.
|
||||||
Wenn dies nicht gesetzt ist, ist der Standard 3.
|
Wenn dies nicht gesetzt ist, ist der Standard 3.
|
||||||
|
|
||||||
Das Rezept oben funktioniert, wenn der Kohleblock im Input-Slot ist,
|
Das Rezept oben funktioniert, wenn der Kohlenode im Input-Slot ist,
|
||||||
mit irgendeiner Form von Brennstoff darunter.
|
mit irgendeiner Form von Brennstoff darunter.
|
||||||
Es stellt nach 10 Sekunden ein Diamant-Fragment her!
|
Es stellt nach 10 Sekunden ein Diamant-Fragment her!
|
||||||
|
|
||||||
@ -285,7 +285,7 @@ Werkzeuge können auch eine maximal unterstützte Härte für jeden Typ haben, w
|
|||||||
schwächere Werkzeuge daran zu hindern, härtere Nodes zu graben.
|
schwächere Werkzeuge daran zu hindern, härtere Nodes zu graben.
|
||||||
Es ist sehr üblich, dass Werkzeuge alle Grabtypen in ihren Fähigkeiten enthalten.
|
Es ist sehr üblich, dass Werkzeuge alle Grabtypen in ihren Fähigkeiten enthalten.
|
||||||
Die weniger geeigneten haben dabei sehr ineffiziente Eigenschaften.
|
Die weniger geeigneten haben dabei sehr ineffiziente Eigenschaften.
|
||||||
Wenn der Gegenstand, den ein Spieler gerade trägt, keine explizite Werkzeugfähigkeit
|
Wenn der Gegenstand, den ein Spieler gerade trägt, keine explizite Werkzeugfähigkeit
|
||||||
hat, dann wird stattdessen die Fähigkeit der aktuellen Hand verwendet.
|
hat, dann wird stattdessen die Fähigkeit der aktuellen Hand verwendet.
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
|
@ -26,10 +26,10 @@ In diesem Kapitel erfahren Sie, wie Sie grundlegende Aktionen auf der Karte durc
|
|||||||
Die Minetest-Karte ist in Map-Blöcke(nicht zu verwechseln mit Blöcken in deutschen) aufgeteilt, wobei jeder Map-Block ein Würfel der
|
Die Minetest-Karte ist in Map-Blöcke(nicht zu verwechseln mit Blöcken in deutschen) aufgeteilt, wobei jeder Map-Block ein Würfel der
|
||||||
Kantenlänge 16 ist. Während die Spieler auf der Karte unterwegs sind, werden Map-Blöcke erstellt, geladen,
|
Kantenlänge 16 ist. Während die Spieler auf der Karte unterwegs sind, werden Map-Blöcke erstellt, geladen,
|
||||||
aktiv und entladen. Bereiche der Karte, die noch nicht geladen sind, sind voll von
|
aktiv und entladen. Bereiche der Karte, die noch nicht geladen sind, sind voll von
|
||||||
*ignore*-Blöcken, einem unpassierbaren, nicht auswählbaren Platzhalterblock. Leerer Raum ist
|
*ignore*-Nodes, einem unpassierbaren, nicht auswählbaren Platzhalternode. Leerer Raum ist
|
||||||
voll von *Luft*-Blöcken, einem unsichtbaren Block, durch den man hindurchgehen kann.
|
voll von *Luft*-Blöcken, einem unsichtbaren Node, durch den man hindurchgehen kann.
|
||||||
|
|
||||||
Ein aktiver Map-Block ist ein Block, der geladen ist und für den Aktualisierungen durchgeführt werden.
|
Ein aktiver Map-Block ist ein Node, der geladen ist und für den Aktualisierungen durchgeführt werden.
|
||||||
|
|
||||||
Geladene Map-Blöcke werden oft als *aktive Blöcke* bezeichnet. Aktive Blöcke können
|
Geladene Map-Blöcke werden oft als *aktive Blöcke* bezeichnet. Aktive Blöcke können
|
||||||
von Mods oder Spielern gelesen oder beschrieben werden und haben aktive Entities. Die Engine
|
von Mods oder Spielern gelesen oder beschrieben werden und haben aktive Entities. Die Engine
|
||||||
|
@ -27,7 +27,7 @@ definiert.
|
|||||||
## Was sind Objekte, Spieler, und Entities?
|
## Was sind Objekte, Spieler, und Entities?
|
||||||
|
|
||||||
Spieler und Entities sind beide Arten von Objekten. Ein Objekt ist etwas, das sich unabhängig
|
Spieler und Entities sind beide Arten von Objekten. Ein Objekt ist etwas, das sich unabhängig
|
||||||
vom Block-Raster bewegen kann und Eigenschaften wie Geschwindigkeit und Skalierung besitzt.
|
vom Node-Raster bewegen kann und Eigenschaften wie Geschwindigkeit und Skalierung besitzt.
|
||||||
Objekte sind keine Gegenstände, und sie haben ihr eigenes Registrierungssystem.
|
Objekte sind keine Gegenstände, und sie haben ihr eigenes Registrierungssystem.
|
||||||
|
|
||||||
Es gibt ein paar Unterschiede zwischen Spielern und Entities.
|
Es gibt ein paar Unterschiede zwischen Spielern und Entities.
|
||||||
@ -203,12 +203,12 @@ end
|
|||||||
```
|
```
|
||||||
|
|
||||||
Minetest kann `get_staticdata()` so oft wie gewünscht und zu jeder Zeit aufrufen.
|
Minetest kann `get_staticdata()` so oft wie gewünscht und zu jeder Zeit aufrufen.
|
||||||
Der Grund dafür ist, dass Minetest nicht darauf wartet, dass ein MapBlock inaktiv wird,
|
Der Grund dafür ist, dass Minetest nicht darauf wartet, dass ein Map-Block inaktiv wird,
|
||||||
um ihn zu speichern, da dies zu Datenverlusten führen würde. MapBlocks werden ungefähr alle 18
|
um ihn zu speichern, da dies zu Datenverlusten führen würde. Map-Blöcke werden ungefähr alle 18
|
||||||
Sekunden gespeichert, also sollten Sie ein ähnliches Intervall für den Aufruf von `get_staticdata()` feststellen.
|
Sekunden gespeichert, also sollten Sie ein ähnliches Intervall für den Aufruf von `get_staticdata()` feststellen.
|
||||||
|
|
||||||
`on_activate()` wird dagegen nur aufgerufen, wenn eine Entity
|
`on_activate()` wird dagegen nur aufgerufen, wenn eine Entity
|
||||||
aktiv wird, entweder wenn der MapBlock aktiv wird oder wenn die Entity spawnen wird.
|
aktiv wird, entweder wenn der Map-Block aktiv wird oder wenn die Entity spawnen wird.
|
||||||
Dies bedeutet, dass staticdata leer sein könnte.
|
Dies bedeutet, dass staticdata leer sein könnte.
|
||||||
|
|
||||||
Schließlich müssen Sie die Typentabelle mit der treffenden Bezeichnung `register_entity` registrieren.
|
Schließlich müssen Sie die Typentabelle mit der treffenden Bezeichnung `register_entity` registrieren.
|
||||||
|
@ -31,26 +31,26 @@ In diesem Kapitel erfahren Sie, wie Sie Daten speichern können.
|
|||||||
### Was sind Metadaten?
|
### Was sind Metadaten?
|
||||||
|
|
||||||
In Minetest sind Metadaten ein Key-Value-Speicher, der verwendet wird, um benutzerdefinierte Daten an etwas anzuhängen.
|
In Minetest sind Metadaten ein Key-Value-Speicher, der verwendet wird, um benutzerdefinierte Daten an etwas anzuhängen.
|
||||||
Sie können Metadaten verwenden, um Informationen zu einem Block, Spieler oder ItemStack zu speichern.
|
Sie können Metadaten verwenden, um Informationen zu einem Node, Spieler oder ItemStack zu speichern.
|
||||||
|
|
||||||
Jede Art von Metadaten verwendet genau dieselbe API.
|
Jede Art von Metadaten verwendet genau dieselbe API.
|
||||||
Metadaten speichern Werte als Strings, aber es gibt eine Reihe von Methoden um
|
Metadaten speichern Werte als Strings, aber es gibt eine Reihe von Methoden um
|
||||||
andere primitive Typen zu konvertieren und zu speichern.
|
andere primitive Typen zu konvertieren und zu speichern.
|
||||||
|
|
||||||
Einige Schlüssel in Metadaten können eine besondere Bedeutung haben.
|
Einige Schlüssel in Metadaten können eine besondere Bedeutung haben.
|
||||||
Zum Beispiel wird `infotext` in den Block-Metadaten verwendet, um den Tooltip zu speichern,
|
Zum Beispiel wird `infotext` in den Node-Metadaten verwendet, um den Tooltip zu speichern,
|
||||||
der angezeigt wird, wenn man mit dem Fadenkreuz über den Block fährt.
|
der angezeigt wird, wenn man mit dem Fadenkreuz über den Node fährt.
|
||||||
Um Konflikte mit anderen Mods zu vermeiden, sollten Sie die Standard-Namensraum
|
Um Konflikte mit anderen Mods zu vermeiden, sollten Sie die Standard-Namensraum
|
||||||
Konvention für Schlüssel verwenden: `Modname:Schlüsselname`.
|
Konvention für Schlüssel verwenden: `Modname:Schlüsselname`.
|
||||||
Die Ausnahme sind konventionelle Daten wie der Name des Besitzers, der als
|
Die Ausnahme sind konventionelle Daten wie der Name des Besitzers, der als
|
||||||
`owner` abgespeichert wird.
|
`owner` abgespeichert wird.
|
||||||
|
|
||||||
Metadaten sind Daten über Daten.
|
Metadaten sind Daten über Daten.
|
||||||
Die Daten selbst, wie der Typ eines Blockes oder die Anzahl eines Stapels, sind keine Metadaten.
|
Die Daten selbst, wie der Typ eines Nodes oder die Anzahl eines Stapels, sind keine Metadaten.
|
||||||
|
|
||||||
### Abrufen eines Metadatenobjekts
|
### Abrufen eines Metadatenobjekts
|
||||||
|
|
||||||
Wenn Sie die Position eines Blockes kennen, können Sie seine Metadaten abrufen:
|
Wenn Sie die Position eines Nodes kennen, können Sie seine Metadaten abrufen:
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
local meta = minetest.get_meta({ x = 1, y = 2, z = 3 })
|
local meta = minetest.get_meta({ x = 1, y = 2, z = 3 })
|
||||||
@ -94,15 +94,15 @@ print(meta:get_string("count")) --> "3"
|
|||||||
|
|
||||||
### Besondere Schlüssel
|
### Besondere Schlüssel
|
||||||
|
|
||||||
`infotext` wird in Block-Metadaten verwendet, um einen Tooltip anzuzeigen, wenn das Fadenkreuz über einem Block schwebt.
|
`infotext` wird in Node-Metadaten verwendet, um einen Tooltip anzuzeigen, wenn das Fadenkreuz über einem Node schwebt.
|
||||||
Dies ist nützlich, um die Eigentümerschaft oder den Status eines Blockes anzuzeigen.
|
Dies ist nützlich, um die Eigentümerschaft oder den Status eines Nodes anzuzeigen.
|
||||||
|
|
||||||
`description` wird in ItemStack-Metadaten verwendet, um die Beschreibung zu überschreiben,
|
`description` wird in ItemStack-Metadaten verwendet, um die Beschreibung zu überschreiben,
|
||||||
wenn der Mauszeiger über den Stack in einem Inventar bewegt wird.
|
wenn der Mauszeiger über den Stack in einem Inventar bewegt wird.
|
||||||
Sie können Farben verwenden, indem Sie sie mit `minetest.colorize()` kodieren.
|
Sie können Farben verwenden, indem Sie sie mit `minetest.colorize()` kodieren.
|
||||||
|
|
||||||
`owner` ist ein allgemeiner Schlüssel, der verwendet wird, um den Benutzernamen des Spielers zu speichern,
|
`owner` ist ein allgemeiner Schlüssel, der verwendet wird, um den Benutzernamen des Spielers zu speichern,
|
||||||
der Eigentümer des Elements oder Blocks ist.
|
der Eigentümer des Elements oder Node ist.
|
||||||
|
|
||||||
### Speichern von Tabellen
|
### Speichern von Tabellen
|
||||||
|
|
||||||
@ -123,7 +123,7 @@ daten = minetest.deserialize(minetest:get_string("foo"))
|
|||||||
|
|
||||||
### Private Metadaten
|
### Private Metadaten
|
||||||
|
|
||||||
Standardmäßig werden alle Block-Metadaten an den Client gesendet.
|
Standardmäßig werden alle Node-Metadaten an den Client gesendet.
|
||||||
Sie können Schlüssel als privat markieren, um dies zu verhindern.
|
Sie können Schlüssel als privat markieren, um dies zu verhindern.
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
@ -226,7 +226,7 @@ wie sie formatiert sind und wie groß sie sind.
|
|||||||
Als Richtlinie gilt, dass kleine Daten bis zu 10K, mittlere Daten bis zu 10MB und große
|
Als Richtlinie gilt, dass kleine Daten bis zu 10K, mittlere Daten bis zu 10MB und große
|
||||||
Daten jede Größe darüber sind.
|
Daten jede Größe darüber sind.
|
||||||
|
|
||||||
Block-Metadaten sind eine gute Wahl, wenn Sie blockbezogene Daten speichern müssen.
|
Node-Metadaten sind eine gute Wahl, wenn Sie nodebezogene Daten speichern müssen.
|
||||||
Die Speicherung mittlerer Daten ist recht effizient, wenn Sie sie privat machen.
|
Die Speicherung mittlerer Daten ist recht effizient, wenn Sie sie privat machen.
|
||||||
|
|
||||||
Item-Metadaten sollten nur zum Speichern kleiner Datenmengen verwendet werden, da es nicht möglich ist,
|
Item-Metadaten sollten nur zum Speichern kleiner Datenmengen verwendet werden, da es nicht möglich ist,
|
||||||
@ -243,5 +243,5 @@ Sie sind gut geeignet für große Datenmengen.
|
|||||||
|
|
||||||
## Sie sind dran
|
## Sie sind dran
|
||||||
|
|
||||||
* Erstellen Sie einen Block, der verschwindet, nachdem er fünfmal geschlagen wurde.
|
* Erstellen Sie einen Node, der verschwindet, nachdem er fünfmal geschlagen wurde.
|
||||||
(Verwenden Sie `on_punch` in der Definition des Blockes und `minetest.set_node`.)
|
(Verwenden Sie `on_punch` in der Definition des Nodes und `minetest.set_node`.)
|
||||||
|
@ -12,7 +12,7 @@ redirect_from:
|
|||||||
## Einleitung <!-- omit in toc -->
|
## Einleitung <!-- omit in toc -->
|
||||||
|
|
||||||
Die periodische Ausführung einer Funktion auf bestimmten Knoten ist eine häufige Aufgabe.
|
Die periodische Ausführung einer Funktion auf bestimmten Knoten ist eine häufige Aufgabe.
|
||||||
Minetest bietet dafür zwei Methoden: Aktive Mapblock Modifikatoren (ABMs) und Block-Timer(node timers).
|
Minetest bietet dafür zwei Methoden: Aktive Map-Block Modifikatoren (ABMs) und Node-Timer(node timers).
|
||||||
|
|
||||||
ABMs scannen alle geladenen Map-Blöcke auf der Suche nach Blöcken, die einem Kriterium entsprechen.
|
ABMs scannen alle geladenen Map-Blöcke auf der Suche nach Blöcken, die einem Kriterium entsprechen.
|
||||||
Sie eignen sich am besten für Blöcken, die in der Welt häufig vorkommen,
|
Sie eignen sich am besten für Blöcken, die in der Welt häufig vorkommen,
|
||||||
@ -20,29 +20,29 @@ wie zum Beispiel Gras.
|
|||||||
Sie haben einen hohen CPU-Overhead, aber einen geringen Speicher- und Storage-Overhead.
|
Sie haben einen hohen CPU-Overhead, aber einen geringen Speicher- und Storage-Overhead.
|
||||||
|
|
||||||
Für Blöcke, die ungewöhnlich sind oder bereits Metadaten verwenden, wie Öfen
|
Für Blöcke, die ungewöhnlich sind oder bereits Metadaten verwenden, wie Öfen
|
||||||
und Maschinen, sollten stattdessen Blocktimer verwendet werden.
|
und Maschinen, sollten stattdessen Nodetimer verwendet werden.
|
||||||
Blocktimer funktionieren, indem sie die ausstehenden Timer in jedem MapBlock verfolgen und dann ausführen
|
Nodetimer funktionieren, indem sie die ausstehenden Timer in jedem Map-Block verfolgen und dann ausführen
|
||||||
wenn sie ablaufen.
|
wenn sie ablaufen.
|
||||||
Dies bedeutet, dass die Zeitgeber nicht alle geladenen Blöcke durchsuchen müssen, um Übereinstimmungen zu finden,
|
Dies bedeutet, dass die Zeitgeber nicht alle geladenen Blöcke durchsuchen müssen, um Übereinstimmungen zu finden,
|
||||||
sondern stattdessen etwas mehr Speicherplatz für die Verfolgung
|
sondern stattdessen etwas mehr Speicherplatz für die Verfolgung
|
||||||
der ausstehenden Timer benötigen.
|
der ausstehenden Timer benötigen.
|
||||||
|
|
||||||
- [Blocktimer](#blocktimer)
|
- [Nodetimer](#nodetimer)
|
||||||
- [Aktive Mapblock Modifikatoren](#aktive-mapblock-modifikatoren)
|
- [Aktive Map-Block Modifikatoren](#aktive-mapblock-modifikatoren)
|
||||||
- [Sie sind dran](#sie-sind-dran)
|
- [Sie sind dran](#sie-sind-dran)
|
||||||
|
|
||||||
## Blocktimer
|
## Nodetimer
|
||||||
|
|
||||||
Blocktimer sind direkt an einen einzelnen Knoten gebunden.
|
Nodetimer sind direkt an einen einzelnen Knoten gebunden.
|
||||||
Sie können Blocktimer verwalten, indem Sie ein NodeTimerRef-Objekt erhalten.
|
Sie können Nodetimer verwalten, indem Sie ein NodeTimerRef-Objekt erhalten.
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
local timer = minetest.get_node_timer(pos)
|
local timer = minetest.get_node_timer(pos)
|
||||||
timer:start(10.5) -- in Sekunden
|
timer:start(10.5) -- in Sekunden
|
||||||
```
|
```
|
||||||
|
|
||||||
Wenn der Zeitgeber eines Blockes abgelaufen ist, wird die Methode `on_timer` in der Definitionstabelle des Blockes
|
Wenn der Zeitgeber eines Nodes abgelaufen ist, wird die Methode `on_timer` in der Definitionstabelle des Nodes
|
||||||
aufgerufen. Die Methode benötigt nur einen einzigen Parameter, die Position des Blockes:
|
aufgerufen. Die Methode benötigt nur einen einzigen Parameter, die Position des Nodes:
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
minetest.register_node("autotuer:offene_tuer", {
|
minetest.register_node("autotuer:offene_tuer", {
|
||||||
@ -58,7 +58,7 @@ Es ist auch möglich, `get_node_timer(pos)` innerhalb von `on_timer` zu verwende
|
|||||||
dass Sie false zurückgeben, um Konflikte zu vermeiden.
|
dass Sie false zurückgeben, um Konflikte zu vermeiden.
|
||||||
|
|
||||||
Sie haben vielleicht eine Einschränkung bei den Zeitgebern bemerkt: Aus Optimierungsgründen ist
|
Sie haben vielleicht eine Einschränkung bei den Zeitgebern bemerkt: Aus Optimierungsgründen ist
|
||||||
nur eine Art von Timern pro Blocktyp und nur ein Timer pro Block möglich.
|
nur eine Art von Timern pro Nodetyp und nur ein Timer pro Node möglich.
|
||||||
|
|
||||||
|
|
||||||
## Aktive Mapblock Modifikatoren
|
## Aktive Mapblock Modifikatoren
|
||||||
@ -69,7 +69,7 @@ in der Nähe von Wasser vorkommen kann.
|
|||||||
```lua
|
```lua
|
||||||
minetest.register_node("aliens:gras", {
|
minetest.register_node("aliens:gras", {
|
||||||
description = "Aliengras",
|
description = "Aliengras",
|
||||||
light_source = 3, -- Der Block strahlt Licht aus. Min 0, max 14
|
light_source = 3, -- Der Node strahlt Licht aus. Min 0, max 14
|
||||||
tiles = {"aliens_grass.png"},
|
tiles = {"aliens_grass.png"},
|
||||||
groups = {choppy=1},
|
groups = {choppy=1},
|
||||||
on_use = minetest.item_eat(20)
|
on_use = minetest.item_eat(20)
|
||||||
@ -79,7 +79,7 @@ minetest.register_abm({
|
|||||||
nodenames = {"default:dirt_with_grass"},
|
nodenames = {"default:dirt_with_grass"},
|
||||||
neighbors = {"default:water_source", "default:water_flowing"},
|
neighbors = {"default:water_source", "default:water_flowing"},
|
||||||
interval = 10.0, -- Wird alle 10 Sekunden ausgeführt
|
interval = 10.0, -- Wird alle 10 Sekunden ausgeführt
|
||||||
chance = 50, -- Jeder Block hat eine Chance von 1 zu 50 ausgewählt zu werden
|
chance = 50, -- Jeder Node hat eine Chance von 1 zu 50 ausgewählt zu werden
|
||||||
action = function(pos, node, active_object_count,
|
action = function(pos, node, active_object_count,
|
||||||
active_object_count_wider)
|
active_object_count_wider)
|
||||||
local pos = {x = pos.x, y = pos.y + 1, z = pos.z}
|
local pos = {x = pos.x, y = pos.y + 1, z = pos.z}
|
||||||
@ -88,9 +88,9 @@ minetest.register_abm({
|
|||||||
})
|
})
|
||||||
```
|
```
|
||||||
|
|
||||||
Dieser ABM läuft alle zehn Sekunden, und für jeden passenden Block besteht eine
|
Dieser ABM läuft alle zehn Sekunden, und für jeden passenden Node besteht eine
|
||||||
Chance von 1 zu 50, dass es ausgeführt wird.
|
Chance von 1 zu 50, dass es ausgeführt wird.
|
||||||
Wenn die ABM auf einem Block ausgeführt wird, wird ein fremder Grasblock über ihm platziert.
|
Wenn die ABM auf einem Node ausgeführt wird, wird ein fremder Grasnode über ihm platziert.
|
||||||
Bitte seien Sie gewarnt, dies löscht alle Blöcke, die sich zuvor an dieser Position befanden.
|
Bitte seien Sie gewarnt, dies löscht alle Blöcke, die sich zuvor an dieser Position befanden.
|
||||||
Um dies zu verhindern, sollten Sie eine Überprüfung mit minetest.get_node einbauen, um sicherzustellen, dass Platz für das Gras vorhanden ist.
|
Um dies zu verhindern, sollten Sie eine Überprüfung mit minetest.get_node einbauen, um sicherzustellen, dass Platz für das Gras vorhanden ist.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user