Tuxilio replace much changed words

This commit is contained in:
debiankaios 2022-12-13 17:27:27 +01:00
parent 4a2e607b86
commit 77e881533e
6 changed files with 41 additions and 41 deletions

View File

@ -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

View File

@ -211,7 +211,7 @@ 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!

View File

@ -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

View File

@ -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.

View File

@ -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`.)

View File

@ -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.