Technik Wiki
(Namensraum, Zielfilter und Befehlsdaten überarbeitet)
(In Downloadwelt enthalten: Redstone-Welt 1.17a)
 
(11 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Unterseite|
+
{{Unterseite|gruppe=Grundmodule|
 
{{Seitenkopf|re=1|dw=r}}
 
{{Seitenkopf|re=1|dw=r}}
{{Baustelle|70|Nethonos}}
 
|
 
 
}}
 
}}
  +
Die '''Grundlagen''' der [[Technik/Befehle|Befehle-Techniken]] bilden die {{mcw|Befehl}}e in Minecraft, welche sich in {{mcw|Befehlsblock|Befehlsblöcken}} und {{mcw|Funktion}}en befinden können. Wie auch in der realen Programmierung werden für die Techniken '''Richtlinien''' verwendet, um ein einheitliches Format abzubilden, wie man die Befehle aufschreiben sollte. Im Wiki wird sich möglichst immer an diese Richtlinien gehalten.
   
  +
Dieser Artikel erklärt die grundlegenden technischen Aspekte von Befehlen und beschreibt im Anschluss dazu wie man Befehle im Wiki aufschreiben sollte. Diese '''Normen''' sind hilfreich um beispielsweise mit einem Namensraum im Namen einer Technik dafür zu sorgen, dass es nie zu Namenskonflikten zwischen anderen Techniken kommt.
Die '''Grundlage''' aller [[Technik/Befehle|Befehlstechniken]] sind (wie auch in der realen Programmierung) die '''Richtlinien''', wie man Befehle schreibt. Diese Richtlinien müssen nicht befolgt werden, auch ohne diese funktionieren die Befehle. Allerdings wird in dem Wiki sich möglichst daran gehalten, um ein einheitliches Format anzubieten, das auch sehr aussagekräftig ist. Es dient dazu, dass sämtliche Techniken sich nicht in die Quere kommen, da jede Technik mit diesen Richtlinien immer stehts einen eigenen Namensraum besitzen um bei gleichnamigen Dingen stehts diese unterscheiden zu können.
 
 
Um diese Richtlinien zu visualisieren, wurden die einzelnen Befehle als Namen für schwebende unsichtbare Rüstungsständer verwendet, mit dem {{b|1=/summon minecraft:armor_stand ~ ~1 ~ {NoGravity:true,Invisible:true,Marker:true,CustomName:"{\"text\":\"<Befehl>\"}",CustomNameVisible:true,Tags:["EtiTechEl.1Alle"] } }} kann man solch einen schwebenden Befehl erzeugen.
 
   
 
== Ausführer und Ausführungsposition ==
 
== Ausführer und Ausführungsposition ==
[[Datei:Grundmodule Technik-Element (Befehle) Bild 1.10.png|250px|right]]
+
[[Datei:Grund-Element (Befehle) Bild 1.10.png|250px|right]]
*Der '''Ausführer''' ist in der Regel der {{de|Spieler}}. Aber ein Ausführer kann auch ein anderes {{de|Objekt}}, ein {{de|Befehlblock}} oder eine {{de|Funktion}} sein. Wenn der Befehl unmittelbar vom Ausführer ausgeführt wird, übernimmt der Befehl auch dessen Position. Dabei ist es nicht zwingend, dass stehts vom Ausführer die Position übernommen wird.
+
*Der '''Ausführer''' ist in der Regel der {{mcw|Spieler}}. Wenn der Befehl unmittelbar vom Spieler durch den Chat ausgeführt wird, übernimmt der Befehl auch dessen Position. Aber ein Ausführer kann auch ein anderes {{mcw|Objekt}}, ein {{mcw|Befehlblock}} oder eine {{mcw|Funktion}} sein. Bei diesen muss angegeben werden ob sie die Ausführer sind. Wird kein Ausführer festgelegt ist, es immer der Server selbst.
   
 
Ausgeführte Befehle werden standardmäßig im Chat oder in der Server-Konsole angezeigt, dies kann man einstellen:
 
Ausgeführte Befehle werden standardmäßig im Chat oder in der Server-Konsole angezeigt, dies kann man einstellen:
Zeile 18: Zeile 15:
 
* {{b|1=/gamerule logAdminCommands}}
 
* {{b|1=/gamerule logAdminCommands}}
   
;{{de|Chat}}
+
;{{mcw|Chat}}
*Im Chat können sämtliche Befehle direkt ausgeführt werden. Man öffnet die Chat-Leiste mit {{Taste|T}} und beginnt als erstes Zeichen mit einem <code>/</code> (Schrägstrich). Dann tippt man den vollständigen Befehl ein und tippt {{Taste|Enter}}. Mehrere Befehle können nicht gleichzeitig sondern nur nacheinander eingetippt werden. In der Chat-Leiste ist die maximale Zeichenanzahl jedoch auf 256 Zeichen begrenzt. Man kann sie aber für die meisten einfachen Befehle dafür verwenden. Solange man den Ausführer mit dem Selektor nicht ändert, wird ein Chat-Befehl immer den Spieler selbst als Auszuführenden nutzen.
+
*Im Chat können sämtliche Befehle direkt ausgeführt werden. Man öffnet die Chat-Leiste mit {{Taste|T}} (je nach Einstellung kann es auch eine andere Taste) und beginnt als erstes Zeichen mit einem <code>/</code> (Schrägstrich). Dann tippt man den vollständigen Befehl ein und tippt {{Taste|Enter}}. Mehrere Befehle können nicht gleichzeitig sondern nur nacheinander eingetippt werden. In der Chat-Leiste ist die maximale Zeichenanzahl jedoch auf <code>256</code> Zeichen begrenzt. Man kann sie aber für die meisten einfachen Befehle dafür verwenden. Solange man den Ausführer mit dem Selektor nicht ändert, wird ein Chat-Befehl immer den Spieler selbst als Auszuführenden nutzen.
   
;{{de|Schild}}
+
;{{mcw|Schild}}
*Ein normales Schild kann mit einem Befehl so verändert werden, dass es den Spieler bis zu vier Befehle auf einmal ausführen lassen kann. Als Ausführer wird der Spieler genommen aber als Ausführungsposition wird die Position des Schildes verwendet. Auch hier muss darauf geachtet werden, dass wie beim Chat die Befehle nicht länger als 256 Zeichen lang sein dürfen, da sie intern vom Spieler ausgeführt werden.
+
*Ein normales Schild kann mit einem Befehl so verändert werden, dass es den Spieler bis zu vier Befehle auf einmal ausführen lassen kann. Als Ausführer wird der Spieler genommen aber als Ausführungsposition wird die Position des Schildes verwendet. Auch hier muss darauf geachtet werden, dass wie beim Chat die Befehle nicht länger als <code>256</code> Zeichen lang sein dürfen, da sie intern vom Spieler ausgeführt werden.
   
;{{de|Beschriebenes Buch}}
+
;{{mcw|Beschriebenes Buch}}
*Ein beschriebenes Buch, mit der Möglichkeit Befehle ausführen zu können, kann dem Spieler mit einem Befehl gegeben werden. Wenn man das ausgewählt und mit einem Rechtsklick geöffnet hat, erscheinen in der Regel ein paar anklickbare Texte. Manche dieser anklickbaren Texte verfügen über eine Schnellinfo, wenn man mit der Maus über sie fährt. Klickt man die Schrift an, wird der Befehl ausgeführt und das Buch geschlossen. Auch hier ist zu beachten, dass die maximale Zeichenanzahl, wie beim Chat, bei 256 Zeichen liegt. Als Ausführer wird der Spieler genommen und auch dessen Position.
+
*Ein beschriebenes Buch mit eigenen anklickbaren Texten kann per Befehl erzeugt werden. Diese anklickbaren Texte können Befehle hinterlegt bekommen, sodass der Spieler der auf diese klickt die Befehle ausführen kann. Anklickbaren Texte kann man auch mit einer Schnellinfo ausstatten, sodass wenn man mit der Maus über sie fährt, ein Hinweis angezeigt wird. Klickt man die Schrift an, wird der Befehl ausgeführt und das Buch geschlossen. Auch hier ist zu beachten, dass die maximale Zeichenanzahl, wie beim Chat, bei <code>256</code> Zeichen liegt. Als Ausführer wird der Spieler genommen und auch dessen Position.
   
;{{de|Befehlsblock}}
+
;{{mcw|Befehlsblock}}
*Den Befehlsblock kann man sich geben, in dem man den {{b|1=/give @p minecraft:command_block}} im Chat eingibt. Diesen platziert man in der Welt und öffnet mit einem Rechtsklick dessen Inventar. Im Befehlsblock erscheint eine Leiste ähnlich der Chat-Leiste. dort tippt man die Befehle ein und drückt dann auf die Schaltfläche {{Taste|Fertig}}. Befehlsblöcke erlauben eine maximale Zeichenanzahl von 32500 Zeichen. Das reicht in den allermeisten Fällen auch aus. Mit Befehlsblöcken baut man die einfacheren Befehlstechniken. Durch Wiederhol-Befehlsblöcke können Befehlen jeden Tick ausgeführt werden. Mehrere Befehle sind auch möglich, in dem man Ketten-Befehlsblöcke an die Impuls- oder den Wiederhol-Befehlsblöcken anschließt. Jedoch kann man standardmäßig maximal 65536 Befehle durch so eine Konstruktion in einem Tick ausführen lassen. Als Ausführer wird der Befehlsblock verwendet, wie auch dessen Position.
+
*Den Befehlsblock kann man sich geben, in dem man den {{b|1=/give @p minecraft:command_block}} im Chat eintippt. Diesen platziert man in der Welt und öffnet mit einem Rechtsklick dessen Inventar. Im Befehlsblock erscheint eine Leiste ähnlich der Chat-Leiste. dort tippt man die Befehle ein und drückt dann auf die Schaltfläche {{Taste|Fertig}}. Befehlsblöcke erlauben eine maximale Zeichenanzahl von <code>32500</code> Zeichen. Das reicht in den allermeisten Fällen auch aus. Mit Befehlsblöcken baut man die einfacheren Befehlstechniken. Durch Wiederhol-Befehlsblöcke können Befehlen jeden Tick ausgeführt werden. Mehrere Befehle sind auch möglich, in dem man Ketten-Befehlsblöcke an die Impuls- oder den Wiederhol-Befehlsblöcken anschließt. Jedoch kann man standardmäßig maximal <code>65536</code> Befehle durch so eine Konstruktion in einem Tick ausführen lassen. Als Ausführer wird der Befehlsblock verwendet (im Chat standardmäßig mit <code>@</code>), wie auch dessen Position. Der Befehlsblock kann standardmäßig nur einmal pro {{mcw|Tick}} ausgeführt werden, allerdings kann das umgestellt werden in dem man die Eigenschaft <code>UpdateLastExecution</code> auf <code>false</code> setzt.
   
Die maximale Anzahl der Befehle in einem {{de|Tick}} lässt sich bis maximal <code>2147483647</code> (max int) einstellen:
+
Die maximale Anzahl der Befehle in einem {{mcw|Tick}} lässt sich bis maximal <code>2147483647</code> (max-integer) einstellen:
 
* {{b|1=/gamerule maxCommandChainLength}}
 
* {{b|1=/gamerule maxCommandChainLength}}
   
;{{de|Befehlsblocklore}}
+
;{{mcw|Befehlsblocklore}}
*Die Befehlsblocklore wird wie ein normaler Befehlsblock behandelt, der Unterschied zu diesem liegt darin, dass es ein beweglicher Block auf Schienen ist, welcher sich mit Hilfe dieser fortbewegen kann. Die Lore kann auch nur alle vier Ticks ausgelöst werden. Der Ausführer bleibt die Befehlsblocklore, jedoch ändert sich dessen Position mit, wenn die Lore sich bewegt. Aktiviert wird die Befehlsblocklore durch eine {{de|Aktivierungsschiene}}.
+
*Die Befehlsblocklore wird wie ein normaler Befehlsblock behandelt, der Unterschied zu dieser liegt darin, dass es ein beweglicher Block auf Schienen ist, welcher sich mit Hilfe dieser fortbewegen kann. Die Lore kann auch nur alle vier Ticks ausgelöst werden. Der Ausführer bleibt die Befehlsblocklore, jedoch ändert sich dessen Position mit, wenn die Lore sich bewegt. Aktiviert wird die Befehlsblocklore durch eine {{mcw|Aktivierungsschiene}}.
   
;{{de|Funktion}}
+
;{{mcw|Funktion}}
*Eine Funktion kann nur außerhalb von Minecraft erstellt werden und sie kann im Spiel nur durch den {{b|1=/function}} oder durch einen {{de|Fortschritt}} aufgerufen werden. Mithilfe von {{de|Aliasdaten}} lassen sich die Befehle innerhalb von Funktionen wie beim Wiederhol-Befehlsblock jeden Tick ausführen. Im Gegensatz zum Befehlsblock besitzt die Funktion keine Einschränkung der Zeichenanzahl und kann mehrere Befehle in sich beherbergen. Die maximale Anzahl der Befehle die in einem Tick ausgeführt werden kann, liegt dabei auch wie bei den Befehlsblöcken bei 65536 Befehlen. Als Ausführer wird die Server-Konsole verwendet und als Ausführungsposition der vom Startwert festgelegte {{de|Spawn}}. Da sich der Spawn verschieben lässt, kann somit auch die Ausführungsposition verschoben werden.
+
*Eine Funktion kann nur außerhalb von Minecraft erstellt werden und sie kann im Spiel nur durch den {{b|1=/function}} oder durch einen {{mcw|Fortschritt}} aufgerufen werden. Mithilfe von {{mcw|Aliasdaten}} lassen sich die Befehle innerhalb von Funktionen wie beim Wiederhol-Befehlsblock jeden Tick ausführen. Im Gegensatz zum Befehlsblock besitzt die Funktion keine Einschränkung der Zeichenanzahl und kann mehrere Befehle in sich beherbergen. Die maximale Anzahl der Befehle die in einem Tick ausgeführt werden kann, liegt dabei auch wie bei den Befehlsblöcken bei <code>65536</code> Befehlen. Als Ausführer wird die Server-Konsole verwendet und als Ausführungsposition der vom Startwert festgelegte {{mcw|Spawn}}. Da sich der Spawn verschieben lässt, kann somit auch die Ausführungsposition verschoben werden.
   
Die maximale Anzahl der Befehle in einem {{de|Tick}} lässt sich bis maximal <code>2147483647</code> (max int) einstellen:
+
Die maximale Anzahl der Befehle in einem {{mcw|Tick}} lässt sich bis maximal <code>2147483647</code> (max-integer) einstellen:
 
* {{b|1=/gamerule maxCommandChainLength}}
 
* {{b|1=/gamerule maxCommandChainLength}}
   
;{{de|Konstruktionsblock}}
+
;{{mcw|Konstruktionsblock}}
  +
*Man erhält den Konstruktionsblock mit dem {{b|1=/give @p minecraft:structure_block}}. Der Konstruktionsblock selbst kann keine Befehle ausführen, jedoch können mit Befehlen solche Blöcke gesetzt und aktiviert werden, sodass Konstruktionen und Bauwerke sofort erscheinen. Diese Konstruktionen können in der Welt gebaut werden und mit Hilfe des Konstruktionsblocks im Speichermodus gespeichert werden. Die gespeicherten Konstruktionen liegen dabei vom Welt-Ordner im Ordner <code>generated</code>. So lassen sich Konstruktionen auch auf andere Welten übertragen. Er kann nur einmal pro {{mcw|Tick}} ausgeführt werden.
*Der Konstruktionsblock kann keine Befehle ausführen, allerdings kann er Konstruktionen und Bauwerke außerhalb der Welt speichern. Sodass man sie mit Hilfe einer Befehlstechnik wieder aufrufen lassen kann. Das macht ihn in dieser Hinsicht sehr nützlich in dieser Kombination. Man erhält ihn durch den {{b|1=/give @p minecraft:structure_block}}. Um ihn zu aktivieren, muss ein {{de|Redstone-Signal}} an ihm anliegen. Mit Hilfe von Taktgebern können Konstruktionsblöcke so maximal jeden Tick eine gespeicherte Konstruktion laden lassen.
 
 
{{-}}
 
{{-}}
   
 
== Syntax ==
 
== Syntax ==
[[Datei:Grundmodule Technik-Element (Befehle) Bild 1.1.png|250px|right]]
+
[[Datei:Grund-Element (Befehle) Bild 1.1.png|250px|right]]
Befehle werden im {{de|Chat}} mit einem <code>/</code> (Schrägstrich, engl: Slash) geschrieben, um diese von dem normalen Text unterscheiden zu können, jedoch sind sie in {{de|Funktion}}en und nach dem run-Befehl vom {{b|1=/execute}} nicht erlaubt. In {{de|Befehlsblock|Befehlsblöcken}} dagegen sind beide Varianten erlaubt. Das macht die Sache etwas schwierig, allerdings wird im Wiki es so gehandhabt, dass einzelne Befehle im Text mit einem Schrägstrich angezeigt werden, aber in Befehlsblöcken oder Funktionen ohne diese verwendet werden. Das hat den Grund, dass einzelne Befehle vielmehr im Chat eingetippt werden, während Befehle in Befehlsblöcken eher in diesen eingetragen werden oder auch direkt in Funktionen kopiert werden, wo diese sowieso nicht erlaubt sind. Das macht das Lernen mit Befehlen dann wieder etwas einfacher, wenn man bei den Befehlstechniken keine Schrägstriche verwendet.
+
Befehle werden im {{mcw|Chat}} mit einem <code>/</code> (Schrägstrich, engl: Slash) geschrieben, um diese von dem normalen Text unterscheiden zu können, jedoch sind sie in {{mcw|Funktion}}en und nach dem run-Unterbefehl vom {{b|1=/execute}} nicht erlaubt. In {{mcw|Befehlsblock|Befehlsblöcken}} dagegen sind beide Varianten erlaubt. Im Wiki werden daher alle Chat-Befehle mit Schrägstrich angezeigt, während Befehle in Befehlsblöcken und Funktionen ohne Schrägstriche auskommen müssen. Das hat den Vorteil, dass Befehle aus Befehlsblöcken und Funktionen problemlos hin und her kopiert werden können, ohne Rücksicht auf die Schrägstriche.
   
 
;Mit Schrägstrich
 
;Mit Schrägstrich
Zeile 56: Zeile 53:
 
;Ohne Schrägstrich
 
;Ohne Schrägstrich
 
Befehle ohne Schrägstrich werden immer in Befehlsblöcken oder auch in Funktionen verwendet.
 
Befehle ohne Schrägstrich werden immer in Befehlsblöcken oder auch in Funktionen verwendet.
{{bb|1|1|ib|4=tellraw @a ["Technik-Element.1: ",{"text":"Dies ist ein tellraw-Befehl nach den Richtlinien"}]}}
+
{{bb|1|1|ib|4=tellraw @a ["Grund-Element.1: ",{"text":"Dies ist ein tellraw-Befehl nach den Richtlinien"}]}}
{{bb|1|2|kb|4=execute as @a[distance=..50,tag=!EtiTechEl.1Etikett] run tag @s add EtiTechEl.1Etikett}}
+
{{bb|1|2|kb|4=execute as @a[distance=..50,tag=!EtiGrundEl.1Etikett] run tag @s add EtiGrundEl.1Etikett}}
   
   
  +
{{Funktionsüberschrift|1|name=Beispiel}}
<font size="2"><u>Variante 1:</u> </font><font size="4"><b>Beispiel-Funktion</b></font><br/>
 
{{Funktion|name=technik_wiki:technik-element/v1beispiel1|1=
+
{{Funktion|name=grund-element:v1beispiel1|1=
# Punktestand-Ziele werden erstellt
+
# Punkte-Ziele werden erstellt
scoreboard objectives add PZTechEl.1Nr dummy {"text":"Technik-Element.1: Nummer"}
+
scoreboard objectives add PZGrundEl.1Nr dummy ["Grund-Element.1: ",{"text":"Nummer","bold":true}]
scoreboard objectives add PZTechEl.1Wert dummy {"text":"Technik-Element.1: Wert"}
+
scoreboard objectives add PZGrundEl.1Wert dummy ["Grund-Element.1: ",{"text":"Wert","bold":true}]
 
}}
 
}}
   
 
== Namensräume ==
 
== Namensräume ==
Bei Angaben von Objekten, Blöcken, Gegenständen oder anderen Dingen wird immer der vorhandene Namensraum <code>minecraft:</code> verwendet. Wenn man Befehle im Chat eintippt werden die Namensräume automatisch mit angegeben und bei manchen Befehlen werden nur diese nur mit Namensraum akzeptiert. Weswegen das Wiki bei sämtlichen Angelegenheiten immer den Namensraum mit angibt. Der Namensraum ist auch hilfreich um beispielsweise alle Objekte auf einer Seite schnell ausfindig zu machen. Dazu tippt man {{Taste|Strg}} und {{Taste|f}} gleichzeitig. Dann öffnet sich eine Suchleiste, in der man den Namensraum eintippen kann und schon findet man alle Objekte.
+
Bei Angaben von Objekten, Blöcken, Gegenständen oder anderen Dingen wird immer der vorhandene Namensraum <code>minecraft:</code> verwendet. Wenn man Befehle im Chat eintippt werden die Namensräume automatisch mit angezeigt und bei Befehlen die einen Test durchführen werden nur Angaben mit Namensraum akzeptiert. Dies ist unter anderem der Grund wieso das Wiki bei sämtlichen Angelegenheiten immer den Namensraum mit angibt. Der Namensraum ist auch hilfreich um beispielsweise mit {{Taste|Strg}} + {{Taste|f}} alle Objekte auf einer Seite schnell ausfindig zu machen. Dann öffnet sich eine Suchleiste, in der man den Namensraum eintippen kann und schon findet man alle Objekte.
   
 
;Minecraft-Namensraum <code>minecraft:</code>
 
;Minecraft-Namensraum <code>minecraft:</code>
 
*{{b|ohnetitel=1|1=/summon '''''minecraft:'''''armor_stand}}
 
*{{b|ohnetitel=1|1=/summon '''''minecraft:'''''armor_stand}}
*{{b|ohnetitel=1|1=/execute if entity @e[type='''''minecraft:'''''zombie] run say Zombie gesichtet}}
+
*{{b|ohnetitel=1|1=/execute if entity @e[type='''''minecraft:'''''zombie] run say Mindestens ein Zombie existiert!}}
 
*{{b|ohnetitel=1|1=/execute if entity @p[nbt={SelectedItem:{id:"'''''minecraft:'''''stone"} }]}}
   
 
Darüber hinaus werden auch speziell für das Wiki benutzerdefinierte Namensräume verwendet. Standardmäßig wird der Name des Artikels, also in diesem Fall <code>grund-element:</code> für Funktionen, JSON-Dateien, Konstruktionsdateien und Bossleisten verwendet. Aber auch bei Objekten, Blöcken und Gegenstände werden bestimmte Namensräume vergeben um jede Technik von einer anderen Technik sauber abzugrenzen. Artikel mit dem Zusatz "erweitert" setzen dem Namensraum noch <code>vp1</code> voraus, wobei das p für Plus steht.
   
  +
*<code>'''''grund-element:'''''v1fortschritte</code> für Fortschritte / Advancements
Darüber hinaus werden auch speziell für das Wiki benutzerdefinierte Namensräume verwendet. Standardmäßig wird <code>technik_wiki:</code> für Funktionen, JSON-Dateien und Konstruktionsdateien verwendet. Aber auch bei Objekten, Blöcken und Gegenstände werden bestimmte Namensräume vergeben um jede Technik von einer anderen Technik sauber abzugrenzen.
 
  +
*<code>'''''grund-element:'''''v1beutetabelle</code> für Beutetabellen / Loottables
  +
*<code>'''''grund-element:'''''v1rezepte</code> für Rezeptdaten
  +
*<code>'''''grund-element:'''''v1aliasdaten</code> für Aliasdaten / Tags
 
*<code>'''''grund-element:'''''v1konstruktion</code> für Konstruktionsdateien / Structurefiles
  +
*<code>'''''grund-element:'''''v1bossleiste</code> für Bossleisten / Bossbars
  +
*<code>'''''grund-element:'''''v1praedikate</code> für Prädikate / Predicates
  +
*<code>'''''grund-element:'''''v1gegenstands_modifizierer</code> für Gegenstandsmodifizierer
  +
*<code>'''''grund-element:'''''v1daten</code> für NBT-Speicher / Storages
   
  +
{{Datenpaket
  +
|name=Grundmodule
  +
|namespace=grund-element
  +
|functions=v1funktion1
  +
|tags/blocks=v1alias1
 
}}
   
  +
{{Funktionsüberschrift|1|name=Technik-Wiki-Namensraum}}
<font size="2"><u>Variante 1:</u> </font><font size="4"><b>Wiki-Namensraum <code>technik_wiki:</code></b></font><br/>
 
{{Funktion|name='''''technik_wiki:'''''technik-element/v1beispiel2|1=
+
{{Funktion|name=grund-element:v1funktion1|1=
 
# Die Funktion ruft sich selbst auf
 
# Die Funktion ruft sich selbst auf
function technik_wiki:technik-element/v1beispiel2
+
function grund-element:v1funktion1
   
 
# Es wird getestet, ob an der aktuellen Position, Blöcke von der Alias-Liste sich dort befinden
 
# Es wird getestet, ob an der aktuellen Position, Blöcke von der Alias-Liste sich dort befinden
execute if block ~ ~ ~ #technik_wiki:werkzeug-system/v1alias1
+
execute if block ~ ~ ~ #grund-element:v1alias1
 
}}
 
}}
{{JSON-Datei|name='''''technik_wiki:'''''werkzeug-system/v1alias1|type=alias|1=
+
{{JSON-Datei|name=grund-element:v1alias1|type=alias|1=
 
{
 
{
 
"values": [
 
"values": [
"minecraft:command_block"
+
"minecraft:command_block",
  +
"minecraft:chain_command_block",
  +
"minecraft:repeating_command_block"
 
]
 
]
 
}
 
}
 
}}
 
}}
   
Benutzerdefinierte Namensräume werden Objekten, Etiketten, Punkteständen usw. gegeben um sie restlos von jeder Technik unterscheiden zu können. Sie werden abgekürzt, da der Name eines Punktestand-Ziels nur maximal 16 Zeichen erlaubt. Sie setzen sich aus dem einer Abkürzung der Technik, in diesem Beispiel wäre es <code>TechEl</code> für Technik-Element. Dann folgt ein Punkt mit einer Zahl <code>.1</code>. Die Zahl entspricht der Variante dieser Technik. Bei einer Plus-Technik, wird noch ein kleines <code>p</code> an die Zahl angehongen. Danach folgt der eigentliche Name den man dem Objekt oder der anderen genannten Dinge geben würde, indem Fall <code>Beispiel</code>. Vor dem ganzen, wird dann noch die jeweilige Abkürzung angefügt. Bei Konstruktionsdateien wird eine abweichende Namensraumbenennung durchgeführt, da Dateien nur klein geschrieben werden können.
+
Benutzerdefinierte Namensräume werden Objekten, Etiketten, Punkte-Zielen usw. gegeben um sie restlos von jeder Technik unterscheiden zu können. Sie werden abgekürzt, da der Name eines Punkte-Ziels nur maximal 16 Zeichen erlaubt. Sie setzen sich aus einer Abkürzung der Technik zusammen, in diesem Beispiel wäre es <code>GrundEl</code> für Grund-Element. Dann folgt ein Punkt mit einer Zahl <code>.1</code>. Die Zahl entspricht der Variante dieser Technik. Bei einer erweiterten Technik, wird noch ein kleines <code>p</code> zwischen der Zahl und dem Punkt angehängt (<code>.p1</code> wobei p für Plus steht). Danach folgt der eigentliche Name den man dem Objekt oder den anderen genannten Dingen geben würde, in dem Fall <code>Beispiel</code>. Vor dem ganzen, wird dann noch die jeweilige Abkürzung angefügt.
   
  +
;Benutzerdefinierte Namensräume
;Objekten, Etiketten, Punktestände usw.
 
*<code>'''''Obj'''''TechEl.1Beispiel</code> für Objekte/Entities
+
*<code>'''''PZ'''''GrundEl.1Beisp</code> für Punkte-Ziele / Scores
*<code>'''''Eti'''''TechEl.1Beispiel</code> für Etiketten/Tags
+
*<code>'''''TM'''''GrundEl.1Beisp</code> für Mannschaften / Teams
*<code>'''''PZ'''''TechEl.1Beispiel</code> für Punktestand-Ziele/Scores
+
*<code>'''''Obj'''''GrundEl.1Beispiel</code> für Objekte / Entities
*<code>'''''#Var'''''TechEl.1Beispiel</code> für Variablen/Fake-Players
+
*<code>'''''Eti'''''GrundEl.1Beispiel</code> für Etiketten / Entity-Tags
*<code>'''''TM'''''TechEl.1Beispiel</code> für Teams
+
*<code>'''''Var'''''GrundEl.1Beispiel</code> für Variablen / Fake-Players
  +
*<code>'''''Konst'''''GrundEl.1Beispiel</code> für Konstanten / Fake-Players
  +
*<code>'''''Eig'''''GrundEl.1Beispiel</code> für Eigenschaften in NBT / NBT-Tags
   
  +
''tellraw''-Nachrichten erhalten ausgeschriebene Namensräume, welche im Chat oder über der Schnellzugriffsleiste angezeigt werden. Der Namensraum bildet sich ganz einfach aus dem Technik-Namen ohne, dass er abgekürzt wird. Er erhält danach einen Punkt und eine Zahl, wobei diese die Variantennummer darstellt. Zeilenumbrüche werden mit <code>\n</code> eingefügt und sollten immer in einem String (Zeichenkette mit Anführungszeichen) bevorzugt eingesetzt werden. Wohin gegen der JSON-Text nur die Texte und Farben beinhalten sollte.
*<code>'''''kd'''''_technik-element_1Beispiel</code> für Konstruktionsdateien/Structurefiles
 
   
  +
;JSON-Texte
Gegenstände und tellraw-Nachrichten erhalten zusätzliche Namensräume, welche im Chat oder über der Schnellzugriffsleiste angezeigt werden.
 
  +
*{{b|1=/tellraw @a[distance=..25] ["'''Grund-Element.1:\n'''",{"text":"Dies ist ein Beispieltext","bold":true}] }}
  +
*{{b|1=/scoreboard objectives add PZGrundEl.1Beisp dummy ["'''Grund-Element.1: '''",{"text":"Dies ist ein Beispielpunktestand","bold":true}] }}
  +
*{{b|1=/team add TMGrundEl.1Beisp dummy ["'''Grund-Element.1: '''",{"text":"Dies ist ein Beispielteam","bold":true}] }}
  +
*{{b|1=/bossbar add grund-element:v1beispiel ["'''Grund-Element.1: '''",{"text":"Dies ist eine Beispielbossleiste","bold":true}] }}
   
 
== Selektoren und Zielfilter ==
;Gegenstände und tellraw-Texte
 
 
[[Datei:Grund-Element (Befehle) Bild 1.2.png|250px|right]]
  +
Die Selektoren <code>@p</code>, <code>@a</code>, <code>@r</code>, <code>@e</code> und <code>@s</code> sollten möglichst effizient eingesetzt werden, sodass immer für den entsprechenden Fall der dafür am besten passendste Selektor gewählt wird, auch wenn es über Umwege möglich ist anderen Selektor zu verwenden. Die Kombination <code>as @s</code> im {{b|1=/execute}} sollte tunlichst vermieden werden, da ein Ausführer nicht erneut gesetzt werden muss.
   
  +
Die Zielfilter werden so verwendet, sodass immer der erste Filter möglichst viele Objekte ausschließt die nicht dazu gehören.
*{{b|1=/give @a[distance=..25] minecraft:diamond{display:{Name:"Technik-Element.1",Lore:["Ein Gegenstand mit Namensraum"] } } 64}}
 
  +
*<code>distance=..25</code> So wird bei einem Distanz-bezogenen Filter dieser auch als erste angegeben.
  +
*<code>dx=7,dy=9,dz=11</code> gleiches gilt für den Quader-Filter.
  +
*<code>sort=nearest,limit=1</code> Danach folgen der Sortierungs-Filter und der Limitierungs-Filter.
  +
*<code>type=minecraft:cow,tag=EtiGrundEl.1Kuh,team=TMGrundEl.1Kuh</code> Hiernach kommen Typ-, Etikett-, Team- und fast alle restlichen Filter.
  +
*<code>nbt={NoGravity:true,OnGround:true}</code> Als letztes folgt der NBT-Filter, welcher der Leistungsstärkste Filter ist und sparsam eingesetzt werden sollte.
   
 
*Befehle die auf bestimmte Objekte abzielen und über mehrere Unterbefehle immer nur diese prüfen sollen, werden mit <code>@s</code> ausgestattet.
== Text-Formatierung ==
 
 
**{{b|ohnetitel=1|1=/execute as @p[scores={PZGrundEl.1=1},tag=EtiGrundEl.1A] run tellraw '''''@s'''''[tag=EtiGrundEl.1B] {"text":"Buchhalter"} }}
Wie bei den Namensräumen wird auch bei der Textformatierung darauf geachtet dass sie vollständig angegeben werden, denn manche Befehle verlangen die vollständige Textformatierung wie <code>"{\"text\":\"Hallo Welt\"}"</code> und lassen solche wie diese <code>"\"Hallo Welt\""</code> nicht zu. Auch {{Taste|§}} (Paragraphenzeichen) werden vermieden, da sie innerhalb von Minecraft nicht erlaubt sind und nur außerhalb in Funktionen verwendet werden können. Da aber sämtliche Texte auch eine Formatierung erlauben, wird auf diese zugegriffen, da sie in allen Bereichen verwendet werden kann.
 
 
**{{b|ohnetitel=1|1=/execute as @p[tagEtiGrundEl.1B,scores={PZGrundEl.1=2}] run give '''''@s''''' minecraft:diamond}}
 
**=> Damit der Zusammenhang der Selektoren leichter fällt, zu verstehen.
   
  +
*Wenn die Zielauswahl den Quader-Filter verwendet und dieses Quader relativ zu einer Position liegt, kann man <code>x,y,z</code> nicht verwenden, deshalb sollte <code>positioned</code> verwendet werden:
Aus diesem Grund wird im Wiki immer die vollständige Formatierung verwendet.
 
 
**{{b|ohnetitel=1|1=/execute positioned ~-5 ~ ~-5 run give @p[dx=10,dy=10,dz=10] minecraft:diamond}}
  +
**=> Mit der Angabe von positioned kann man besser verstehen, wo sich das Zentrum des Quaders befindet, sodass nicht nur ein fortgeschrittener Spieler das verstünden.
   
 
*In der Zielauswahl so viele Kriterien verwenden wie es sinnvoll erscheint, dabei gilt, lieber zu viele Abbruchkriterien als zu wenige, damit möglichst nur genau die Objekte ausgewählt werden, die auch verwendet werden:
Befehle werden immer in der ausgeschriebenen Form eingetippt, damit nicht nur der Profi nachvollziehen kann, was gemeint ist.
 
 
**{{b|ohnetitel=1|1=/kill @e['''''distance=..'''''25,'''''type='''''minecraft:armor_stand,'''''name='''''"wahr",'''''tag='''''EtiGrundEl.1Etikett,'''''sort='''''nearest,'''''limit='''''1] }}
*{{b|ohnetitel=1|1=/gamemode '''''survival''''' @p}}
 
  +
**=> Damit keine anderen Objekte betroffen sind die damit nichts zu tun haben. Ansonsten würde man im schlimmsten Fall die Welt beschädigen.
*=> Namen-iDs sagen mehr als Zahlen-IDs (Nebeneffekt: Wiki-Bot kann zwischen den einzelnen Zuständen unterscheiden, bei Zahlen nicht)
 
{{-}}
 
   
 
*Wenn man das ''distance=''-Argument bei Selektoren verwendet, müssen immer zwei nacheinander folgende Punkte angegeben werden, ansonsten wird nur der exakte Abstand geprüft:
== Selektoren und Zielfilter ==
 
[[Datei:Grundmodule Technik-Element (Befehle) Bild 1.2.png|250px|right]]
 
*Befehle die auf bestimmte Objekte abzielen und über mehrere Befehle immer nur diese prüfen sollen, werden mit <code>@s</code> ausgestattet.
 
**{{b|ohnetitel=1|1=/execute as @p[scores={PZTechEl.1=1},tag=EtiTechEl.1A] run tellraw '''''@s'''''[tag=EtiTechEl.1B] {"text":"Buchhalter"} }}
 
**{{b|ohnetitel=1|1=/execute as @p[tagEtiTechEl.1B,scores={PZTechEl.1=2}] run give '''''@s''''' minecraft:diamond}}
 
**=> Damit der Zusammenhang der Zielauswahlen leichter fällt, zu verstehen.
 
 
*In der Zielauswahl werden Quader-Angaben, wenn sie relative Koordinaten enthalten immer auch so angegeben, auch wenn es alternative Schreibweisen gibt.
 
**{{b|ohnetitel=1|1=/execute if entity @e['''''x=~''''','''''y=~''''','''''z=~''''',dx=5,dy=5,dz=5] run give @p minecraft:diamond}}
 
**=> Mit der Angabe dieser Daten, gibt man die Möglichkeit, zu verstehen wie das überhaupt funktioniert, ohne diese optionale Angabe versteht das nur ein fortgeschrittener Spieler.
 
 
*In der Zielauswahl so viele Kriterien verwenden wie es sinnvoll erscheint, dabei gilt, lieber zu viele Abbruchkriterien als zu wenige!
 
**{{b|ohnetitel=1|1=/execute as @e['''''type='''''minecraft:armor_stand,'''''name='''''"ObjTechEl.1",'''''tag='''''EtiTechEl.1,'''''distance=..'''''25,'''''limit='''''1] run kill @s['''''tag='''''EtiTechEl.1B] }}
 
**=> Damit keine anderen Objekte betroffen sind und so aus versehen ausgewählt werden.
 
 
*Wenn man das '''distance='''-Argument bei Selektoren verwendet, müssen um das ganze in einem Radius zu überprüfen immer zwei Punkte vor der Zahl stehen!
 
 
**{{b|ohnetitel=1|1=/execute as @a[distance='''..'''5] run say Ich bin fünf Blöcke in der Nähe der Befehlsquelle}}
 
**{{b|ohnetitel=1|1=/execute as @a[distance='''..'''5] run say Ich bin fünf Blöcke in der Nähe der Befehlsquelle}}
   
Bei den Zielfiltern sollte möglichst effizient abgefragt werden wo was in welchen Abstand sein soll.
+
*Bei den Zielfiltern sollte möglichst effizient abgefragt werden, wo was in welchen Abstand sein soll.
*<code>/execute if entity @e[distance=..25,sort=nearest,limit=1]</code>
+
**{{b|ohnetitel=1|1=/execute if entity @e[distance=..25,sort=nearest,limit=1]}}
 
{{-}}
 
{{-}}
   
 
== Koordinaten ==
 
== Koordinaten ==
[[Datei:Grundmodule Technik-Element (Befehle) Bild 1.3.png|250px|right]]
+
[[Datei:Grund-Element (Befehle) Bild 1.3.png|250px|right]]
*Befehle mit Koordinaten, werden so gestaltet, das negative Werte mit einem <code>-</code> (Minus) bestückt werden, positive Werte werden ohne Angabe des Vorzeichen getätigt. Nullen werden bei relativen Angaben einfach weggelassen
+
*Befehle mit Koordinaten, werden so gestaltet, das negative Werte mit einem <code>-</code> (Minus) bestückt werden, positive Werte werden ohne Angabe des Vorzeichen getätigt. Nullen werden bei relativen Angaben einfach weggelassen. Das Gleiche gilt für Zirkumflexe <code>^</code>
 
**{{b|ohnetitel=1|1=/setblock ~'''''10''''' ~'''''-5''''' ~'''''42''''' minecraft:stone}}
 
**{{b|ohnetitel=1|1=/setblock ~'''''10''''' ~'''''-5''''' ~'''''42''''' minecraft:stone}}
 
**=> Hierbei setzt man voraus, das man weis das eine Zahl ohne Vorzeichen immer positiv ist.
 
**=> Hierbei setzt man voraus, das man weis das eine Zahl ohne Vorzeichen immer positiv ist.
   
*Es werden immer relative Koordinaten benutzt und nur dort wo es absolut nicht möglich ist, werden absolute Koordinaten verwendet.
+
*Es werden immer relative Koordinaten benutzt und nur dort wo es nicht anders möglich ist, werden absolute Koordinaten verwendet.
**{{b|ohnetitel=1|1=/execute as @p at @s run fill '''''~ ~ ~''''' ~25 ~ ~25 minecraft:stone}}
+
**{{b|ohnetitel=1|1=/execute as @p at @s run fill '''''~ ~ ~''''' ~25 ~ ~25 minecraft:stone replace}}
 
**{{b|ohnetitel=1|1=/clone 0 10 0 0 20 10 ~ ~3 ~}}
 
**{{b|ohnetitel=1|1=/clone 0 10 0 0 20 10 ~ ~3 ~}}
**=> Damit man die Techniken auch problemlos verschieben kann, ohne alle Befehlsblöcke mit Koordinaten korrigieren zu müssen.
+
**=> Damit man die Techniken auch problemlos umsetzen kann, ohne alle Befehlsblöcke mit Koordinaten korrigieren zu müssen.
   
 
*Befehle mit relativen Koordinaten-Angaben werden immer nur dann mit Zahlen bestückt, wenn diese größer oder kleiner null sind, eine einzelne <code>0</code> wird nicht hinter eine <code>~</code> (Tilde) geschrieben.
 
*Befehle mit relativen Koordinaten-Angaben werden immer nur dann mit Zahlen bestückt, wenn diese größer oder kleiner null sind, eine einzelne <code>0</code> wird nicht hinter eine <code>~</code> (Tilde) geschrieben.
Zeile 159: Zeile 175:
 
{{-}}
 
{{-}}
   
== Kommentare ==
+
== Etiketten ==
 
*Etiketten sind dazu gedacht bestimmte Objekte zu bestimmen und zu erkennen
[[Datei:Grundmodule Technik-Element (Befehle) Bild 1.4.png|250px|right]]
 
 
**Etiketten werden mit <code>Eti</code> abgekürzt.
*Bei dem {{b|/tellraw}} wird zu aller erst immer der Technik-Name erwähnt, damit immer klar ist, zu welcher Technik diese Nachrichten gehören.
 
 
**Etiketten werden mit dem {{b|1=/tag}} verwaltet, können aber auch mit dem {{b|1=/data}} manipuliert werden.
**{{b|ohnetitel=1|1=/tellraw @p ['''''"Technik-Element.1 "''''',{"text":"Texte der Technik"} ] }}
 
**=> Damit man zu jeder Zeit sofort erkennen kann, von welcher Technik welche Nachricht gesendet wurde.
 
   
 
*Dies würde alle Zombies die mindestens fünf Blöcke in der Nähe der Befehlsquelle sind, auswählen und töten:
*Kommentare werden mit einer Raute (<code>#</code>) angeführt und anschließend kommt der Kommentar.
 
 
**{{b|1=/tag @e[distance=..5,type=minecraft:zombie] add EtiGrundEl.6Beispiel}}
{{bb|1|3|i|4=# Dies ist ein Kommentar}}
 
 
**{{b|1=/kill @e[tag=EtiGrundEl.6Beispiel]}}
<font size="2"><u>Variante 1:</u> </font><font size="4"><b>Kommentar-Beispiel-Funktion</b></font><br/>
 
 
**=> Somit kann man mehrere Objekte mit verschiedenen Eigenschaften alle durch das eine Etikett gleichzeitig auswählen.
{{Funktion|name=technik_wiki:technik-element/v1beispiel3|1=
 
  +
# Ein Werfer mit der Ausrichtung nach oben wird an der aktuellen Position platziert, wenn sich dort Luft befindet
 
  +
*Alle Objekte die einer Technik angehören sollten ein Etikett tragen was sie alle ansprechen kann.
setblock ~ ~ ~ minecraft:dispenser[facing=up] keep
 
  +
**{{b|1=/summon minecraft:zombie ~ ~ ~ {Tags:["EtiGrundEl.1Alle"]} }}
}}
 
 
{{-}}
**=> Damit man weis, das es beabsichtigt ist, das der Befehlsblock keinen Befehl trägt und es einheitlich zu den Funktionskommentaren ist.
 
  +
  +
== Mannschaften ==
 
[[Datei:Grund-Element (Befehle) Bild 1.4.png|250px|right]]
 
*Teams werden mit <code>TM</code> am Anfang des Teamnamens ausgestattet. Präfixe besitzen einen Namensraum
 
**{{b|ohnetitel=1|1=/team add '''''TM'''''GrundEl.1Rot}}
 
**=> Damit man Teams von anderen Namensräume wie beispielsweise Punkte-Zielen unterscheiden kann.
  +
  +
*Falls ein Objekt in einem Team sein soll. das gerade erstellt wird, so sollte man das Team auch so fern möglich angeben:
  +
**{{b|ohnetitel=1|1=/summon minecraft:zombie ~ ~ ~ {Team:"TMGrundEl.1Team"} }}
 
{{-}}
  +
 
== Punktestände ==
 
[[Datei:Grund-Element (Befehle) Bild 1.8.png|250px|right]]
  +
  +
*Punkte-Ziele sollen immer über einen Beschreibungstext verfügen:
 
**{{b|ohnetitel=1|1=/scoreboard objectives add PZGrundEl.1Name dummy '''["Grund-Element.1: ",{"text":"Name","bold":true} ]''' }}
  +
 
*Punkte-Ziele müssen immer den Namen der Technik beinhalten, sowie die Varianten-Nummer, dies wird durch ein <code>.</code> getrennt, danach folgt die Varianten-Nummer. <code>p</code> steht für Plus-Variante und wird direkt an die Varianten-Nummer gehangen. Sie werden immer mit <code>PZ</code> bestückt.
 
**{{b|ohnetitel=1|1=/scorebord objectives add '''''PZGrundEl'''''.'''''1''''' dummy}}
 
**{{b|ohnetitel=1|1=/scorebord objectives add '''''PZGrundEl'''''.'''''p3''''' dummy}}
 
**=> Damit man die einzelnen Varianten relativ einfach voneinander unterscheiden kann. Dies ist für den Wiki-Bot und dem Autor im Technik-Wiki und Technik-Welt dienlicher, wie wenn die Punktestände nicht einheitlich sind.
  +
 
*Wenn mehr als ein Punkte-Ziel, Variable, Etikett oder Objektname benötigt wird, wird bei allen ein neuer Name für die Eigenschaft geholt.
 
**{{b|ohnetitel=1|1=/scoreboard objectives add PZGrundEl.1'''''Eigenschaft1''''' dummy}}
 
**{{b|ohnetitel=1|1=/scoreboard objectives add PZGrundEl.1'''''Eigenschaft2''''' dummy}}
 
**{{b|ohnetitel=1|1=/scoreboard players add VarGrundEl.1'''''Eigenschaft3''''' PZGrundEl.1 5}}
 
**=> Damit man Punkte-Ziele, Variablen, Etiketten oder Objektnamen besser untereinander unterscheiden kann.
  +
 
*Wenn Punkte-Ziele, Variablen, Etiketten oder Objekt-Namen zur Ausgabe oder Eingabe dienen, sprich wenn man sie auf andere Techniken weiter anwenden könnte, sollten sie aus besserem Verständnis ein entsprechendes Wort beinhalten:
 
**{{b|ohnetitel=1|1=/scoreboard objectives add EtiGrundEl.3'''''Vergl'''''}}
 
**{{b|ohnetitel=1|1=/scoreboard players add #VarGrundEl.4'''''Zeiger''''' PZGrundEl.3Vergl 7}}
 
**=> Damit man Punkte-Ziele, Variablen, Etiketten oder Objektnamen besser dem jeweiligen Umstand zuordnen kann.
  +
  +
*Variablen von Punkte-Zielen werden je nach Umstand mit oder ohne <code>#</code> (Raute) ausgestattet und der <code>.</code> wird immer verwendet. Die Raute wird wird genutzt um die Sichtbarkeit der Variable in der Sidebar zu unterbinden:
 
**{{b|ohnetitel=1|1=/scoreboard players add '''''#'''''VarGrundEl'''''.'''''1Eig PZGrundEl.1Beis 1}}
  +
**=> Damit man in manchen Fällen bestimmte Variablen nicht sichtbar für alle machen kann.
  +
 
*Variablen werden immer mit <code>Var</code> abgekürzt, Objekte, Kreaturen, Rahmen etc. werden mit <code>Obj</code> abgekürzt. Punkte-Ziele werden mit dem Zusatz <code>PZ</code> ausgestattet.
 
**=> Damit man immer auf einen Blick erkennt, um was es sich dabei gerade handelt, gerade bei sehr großen Techniken kann man schnell den Überblick verlieren.
  +
 
*Alle selbst definierbaren Zählwerte wie Punkte-Ziele, Variablen, Objektnamen etc. werden abgekürzt und nach der CamelCase-Richtlinie eingerückt. Nicht begrenzte Wortbezeichnungen können ab der Varianten-Zahl ausgeschrieben werden.
  +
**{{b|ohnetitel=1|1=/execute if entity @e[name="'''''ObjGrundEl.5Beispiel'''''"]}}
  +
**{{b|ohnetitel=1|1=/scoreboard players get #'''''VarGrundEl.7Ausgabe''''' '''''PZGrundEl'''''.1Beis}}
 
**=> Damit die Namen nicht zu lang ausfallen (durch Leerzeichen oder Unterstrich), da man maximal nur 16 Zeichen bei Punkte-Zielen verwenden kann.
 
{{-}}
 
{{-}}
   
 
== Befehlsdaten ==
 
== Befehlsdaten ==
[[Datei:Grundmodule Technik-Element (Befehle) Bild 1.5.png|250px|right]]
+
[[Datei:Grund-Element (Befehle) Bild 1.5.png|250px|right]]
*NBT, SNBT, JSON, Blockzustände und Befehle werden immer nach dem striktesten Prinzip erstellt. In NBT-Daten werden immer die Anfangsbuchstaben für einen primitiven Datentyp verwendet <code>'''b'''yte</code>, <code>'''s'''hort</code>, <code>'''l'''ong</code> und <code>'''f'''loat</code>. Für <code>int</code> und <code>double</code> gilt dies nicht, da die Abwesenheit eines Buchstaben nach dem Wert ganz klar auf einen der beiden Datentypen abgeleitet werden kann.
+
*NBT, SNBT, JSON, Blockzustände und Befehle werden immer nach dem striktesten Prinzip das Minecraft anbietet erstellt. In NBT-Daten werden immer die Anfangsbuchstaben für einen primitiven Datentyp verwendet <code>'''b'''yte</code>, <code>'''s'''hort</code>, <code>'''l'''ong</code>, <code>'''f'''loat</code> und <code>'''d'''ouble</code>. Für <code>int</code> gilt dies nicht, da die Abwesenheit eines Buchstaben immer integer beduetet.
**{{b|ohnetitel=1|1=/fill ~5 ~5 ~5 ~-5 ~-5 ~-5 minecraft:fence_gate['''''facing=west,open=true] replace minecraft:air}}
+
**{{b|ohnetitel=1|1=/summon minecraft:marker ~ ~ ~ {Tags:["EtiGrundEl.1Alle"],Rotation:['''0.0f''','''0.0f''']} }}
  +
**{{b|ohnetitel=1|1=/execute store result entity @e[type=minecraft:marker,tag=,sort=nearest,limit=1] data."EigGrundEl.1Beispiel" '''byte''' 1 run data get entity @p OnGround 1}}
 
**=> Damit Änderungen von den Entwicklern an diesen Datenstrukturen keine Welle der Überarbeitung auslösen. Es hat sich bisher gezeigt, das immer das striktere Format das beständigere ist.
 
**=> Damit Änderungen von den Entwicklern an diesen Datenstrukturen keine Welle der Überarbeitung auslösen. Es hat sich bisher gezeigt, das immer das striktere Format das beständigere ist.
   
*NBT-Daten die logische Ausdrücke verlangen, wie <code>true</code> (wahr) und <code>false</code> (falsch), werden immer auch mit diesen Angaben ausgestattet, auf <code>1b</code> oder <code>0b</code> wird verzichtet.
+
*Wenn NBT-Daten die sogenannten Wahrheitswerte erfordern, wie <code>true</code> (wahr) oder <code>false</code> (falsch), werden auch immer diese Angaben verwendet. Im Wiki wird auf die alternativen Angaben wie <code>1b</code> oder <code>0b</code> verzichtet, um ein einheitliches und verständliches Format abzubilden.
**{{b|ohnetitel=1|1=/data merge @e[tag=EtiTechEl.1] {NoGravity:'''''true'''''} }}
+
**{{b|ohnetitel=1|1=/data merge @e[tag=EtiGrundEl.1Etikett] {NoGravity:'''''true'''''} }}
**{{b|ohnetitel=1|1=/tag @a[tag=!EtiTechEl.1] add EtiTechEl.1 {OnGround:'''''true'''''} }}
+
**{{b|ohnetitel=1|1=/tag @a[tag=!EtiGrundEl.1AufBoden,nbt={OnGround:'''''true'''''}] add EtiGrundEl.1AufBoden}}
**=> Damit mit den eher aussagekräftigen Worten sofort klar ist, was gemeint ist.
+
**=> Mit den aussagekräftigen Worten statt Zahlen wird sofort klar, was gemeint ist.
   
*Wenn Objekte ein Zeitlimit besitzen, wie lange sie maximal in ihrer Form existieren können, wird immer der größte oder kleinste maximal mögliche Integer-Wert verwendet <code>2147483647</code> (2^31-1) oder <code>-2147483648</code>.
+
*Wenn Objekte ein Zeit-Limit besitzen, wie lange sie maximal in ihrer Form existieren können, wird immer der größte oder kleinste maximal mögliche Zahlen-Wert verwendet. Bei Integer (Ganzzahl) liegt er bei <code>2147483647</code> (2^31-1) und <code>-2147483648</code>.
 
**{{b|ohnetitel=1|1=/summon minecraft:falling_block ~ ~ ~ {Time:'''''-2147483648''''',NoGravity:true} }}
 
**{{b|ohnetitel=1|1=/summon minecraft:falling_block ~ ~ ~ {Time:'''''-2147483648''''',NoGravity:true} }}
  +
**{{b|ohnetitel=1|1=/summon minecraft:area_effect_cloud ~ ~1 ~ {Duration:-1,Age:'''''-2147483648''''',WaitTime:'''''-2147483648''''',Particle:"minecraft:block minecraft:air",Tags:["EtiGrundEl.1Alle"] } }}
 
**=> Dies hat den Vorteil, das man das volle Potenzial der Objekte nutzt und zugleich eine der wichtigsten Zahlenwerte vermittelt.
 
**=> Dies hat den Vorteil, das man das volle Potenzial der Objekte nutzt und zugleich eine der wichtigsten Zahlenwerte vermittelt.
   
Manche NBT-Eigenschaften sind optionale Eigenschaften, dass bedeutet sie werden nur dann in dem Objekt gespeichert, wenn <code>true</code> sind. Daher muss man diese mit <code>nbt=!{Invisible:true}</code> abfragen.
+
*Manche NBT-Eigenschaften sind optionale Eigenschaften, dass bedeutet sie werden nur dann in dem Objekt gespeichert, wenn <code>true</code> sind. Daher muss man diese mit <code>nbt=!{Invisible:true}</code> abfragen.
   
Man sollte den NBT-Filter <code>nbt=</code> so sparsam wie möglich verwenden, da es der aufwändigste Filter in der Zielauswahl ist. So sollte man, wenn man über mehrere Befehle, eine bestimmten NBT-Eigenschaft filtern will, diese mit einem Etikett einmal abfragen und dann nur noch das Etikett selbst abfragen.
+
*Man sollte den NBT-Filter <code>nbt=</code> so sparsam wie möglich verwenden, da es der aufwändigste Filter in der Zielauswahl ist. So sollte man, wenn man über mehrere Befehle, eine bestimmten NBT-Eigenschaft filtern will, diese mit einem Etikett einmal abfragen und dann nur noch das Etikett selbst abfragen.
   
  +
{{Funktionsüberschrift|1|name=NBT-Beispiel}}
 
 
{{Funktion|name=grund-element:v1beispiel4|1=
<font size="2"><u>Variante 1:</u> </font><font size="4"><b>NBT-Beispiel-Funktion</b></font><br/>
 
{{Funktion|name=technik_wiki:technik-element/v1beispiel4|1=
 
 
# Dem Spieler, der auf dem Boden ist, bekommt ein Etikett, sonst wird das Etikett wieder entfernt
 
# Dem Spieler, der auf dem Boden ist, bekommt ein Etikett, sonst wird das Etikett wieder entfernt
tag @a[tag=EtiTechEl.1StehtAufGrund,'''''nbt='''''{OnGround:false}] remove '''''EtiTechEl.1StehtAufGrund'''''
+
tag @a[tag=EtiGrundEl.1StehtAufGrund,'''''nbt='''''{OnGround:false}] remove '''''EtiGrundEl.1StehtAufGrund'''''
tag @a[tag=!EtiTechEl.1StehtAufGrund,'''''nbt='''''{OnGround:true}] add '''''EtiTechEl.1StehtAufGrund'''''
+
tag @a[tag=!EtiGrundEl.1StehtAufGrund,'''''nbt='''''{OnGround:true}] add '''''EtiGrundEl.1StehtAufGrund'''''
   
 
# Befehle die mit Hilfe des Etiketts die NBT-Eigenschaft abfragen ohne einen NBT-Filter zu verwenden
 
# Befehle die mit Hilfe des Etiketts die NBT-Eigenschaft abfragen ohne einen NBT-Filter zu verwenden
tellraw @a[tag='''''EtiTechEl.1StehtAufGrund''''',scores={PZTechEl.1Punkte=5..10}] ["Technik-Element.1: ",{"text":"Der Spieler hat einen Wert zwischen fünf und zehn"}]
+
tellraw @a[tag='''''EtiGrundEl.1StehtAufGrund''''',scores={PZGrundEl.1Punkte=5..10}] ["Grund-Element.1: ",{"text":"Der Spieler hat einen Wert zwischen fünf und zehn"}]
tellraw @a[distance=..15,tag='''''EtiTechEl.1StehtAufGrund'''''] ["Technik-Element.1: ",{"text":"Der Spieler befindet sich maximal 15 Blöcke von der Befehlsquelle entfernt"}]
+
tellraw @a[distance=..15,tag='''''EtiGrundEl.1StehtAufGrund'''''] ["Grund-Element.1: ",{"text":"Der Spieler befindet sich maximal 15 Blöcke von der Befehlsquelle entfernt"}]
tellraw @a[tag='''''EtiTechEl.1StehtAufGrund''''',gamemode=creative] ["Technik-Element.1: ",{"text":"Der Spieler befindet sich im Kreativmodus"}]
+
tellraw @a[tag='''''EtiGrundEl.1StehtAufGrund''''',gamemode=creative] ["Grund-Element.1: ",{"text":"Der Spieler befindet sich im Kreativmodus"}]
 
}}
 
}}
 
{{-}}
 
{{-}}
   
== Teams ==
+
== Text-Formatierung ==
  +
Um eine einheitliche Darstellung der Text-Formatierung zu gewährleisten, wird immer die vollständige und ausführliche Schreibweise verwendet. Das wird deshalb so gehandhabt, da bei Befehlsprüfungen, beispielsweise mit dem {{b|/execute if entity}} die Prüfung fehlschlägt, wenn man die abgekürzte Schreibweise verwendet hat.
[[Datei:Grundmodule Technik-Element (Befehle) Bild 1.6.png|250px|right]]
 
*Teams werden mit <code>TM</code> am Anfang des Teamnamens ausgestattet. Präfixe besitzen einen Namensraum
 
**{{b|ohnetitel=1|1=/team add '''''TM'''''TechEl.1}}
 
**=> Damit man Teams von Punktestand-Zielen unterscheiden kann.
 
{{-}}
 
   
 
Wie bei den Minecraft-Namensräumen wird auch bei der Textformatierung darauf geachtet dass sie vollständig angegeben werden, denn manche Befehle verlangen die vollständige Textformatierung wie <code>"{\"text\":\"Hallo Welt\"}"</code> und lassen solche wie diese <code>"\"Hallo Welt\""</code> nicht zu. Auch {{Taste|§}} (Paragraphenzeichen) werden vermieden, da sie innerhalb von Minecraft nicht erlaubt sind und nur außerhalb in Funktionen verwendet werden können. Da aber sämtliche Texte auch eine Formatierung erlauben, wird auf diese zugegriffen, da sie in allen Bereichen verwendet werden kann. Ebenfalls können <code>'</code> Hochkommas verwendet werden um weniger Escaping betreiben zu müssen.
== Punktestände ==
 
[[Datei:Grundmodule Technik-Element (Befehle) Bild 1.7.png|250px|right]]
 
*Punktestand-Ziele müssen immer den Namen der Technik beinhalten, sowie die Varianten-Nummer, dies wird durch ein <code>.</code> getrennt, danach folgt die Varianten-Nummer. <code>p</code> steht für Plus-Variante und wird direkt an die Varianten-Nummer gehangen. Sie werden immer mit <code>PZ</code> bestückt.
 
**{{b|ohnetitel=1|1=/scorebord objectives add '''''PZTechEl''''':'''''1''''' dummy}}
 
**{{b|ohnetitel=1|1=/scorebord objectives add '''''PZTechEl''''':'''''3p''''' dummy}}
 
**=> Damit man die einzelnen Varianten relativ einfach voneinander unterscheiden kann. Dies ist für Wiki-Bot und Autor im Technik-Wiki und Technik-Welt dienlicher, wie wenn die Punktestände nicht einheitlich sind.
 
   
  +
;Formatierungsdarstellung
*Wenn mehr als ein Punktestand-Ziel, Variable, Etiketten oder Objektnamen benötigt werden, wird bei allen ein großer Buchstabe beginnend bei <code>A</code> angehongen.
 
  +
{{bb|1|4|i|4=summon minecraft:armor_stand ~ ~ ~ {CustomName:"{\"text\":\"Hallo Welt\"}"} }}
**{{b|ohnetitel=1|1=/scoreboard objectives add PZTechEl.1'''''B''''' dummy}}
 
  +
{{bb|1|5|i|4=summon minecraft:mooshroom ~ ~ ~ {CustomName:'{"text":"Pilzkuh","bold":true}'} }}
**{{b|ohnetitel=1|1=/scoreboard objectives add PZTechEl.1Ausgabe'''''C''''' dummy}}
 
**{{b|ohnetitel=1|1=/scoreboard players add VarTechEl.1'''''A''''' PZTechEl.1 5}}
 
**=> Damit man Punktestand-Ziele, Variablen, Etiketten oder Objektnamen besser untereinander unterscheiden kann.
 
   
  +
;Markierungen
*Wenn Punktestand-Ziele, Variablen, Etiketten oder Objekt-Namen zur Ausgabe oder Eingabe dienen, sprich wenn man sie auf andere Techniken weiter anwenden könnte, sollten sie aus besserem Verständnis ein Wort beinhalten:
 
  +
Um bestimmte Orte zu markieren, kann man schwebende unsichtbare Rüstungsständer verwenden, die ihren Namen anzeigen lassen. Das geht mit dem {{b|1=/summon minecraft:armor_stand ~ ~ ~ {Marker:true,NoGravity:true,Invisible:true,CustomNameVisible:true,CustomName:'{"text":"<Anzeige-Name>"}',Tags:["EtiGrundEl.1Alle"] } }}.
**{{b|ohnetitel=1|1=/scoreboard objectives tag @p add EtiTechEl.3'''''Vergleichswert'''''}}
 
**{{b|ohnetitel=1|1=/scoreboard players add #VarTechEl.4'''''Zeiger''''' PZTechEl.3Vergl 7}}
 
**=> Damit man Punktestand-Ziele, Variablen, Etiketten oder Objektnamen besser dem jeweiligen Umstand zuordnen kann.
 
   
  +
== Funktionen ==
*Variablen von Punktestand-Zielen werden immer mit <code>#</code> (Raute) und <code>.</code> ausgestattet. Nur wenn die Variable in der Scoreboard-Sidebar sichtbar sein soll, kann man auf die Raute verzichten.
 
 
[[Datei:Grund-Element (Befehle) Bild 1.6.png|250px|right]]
**{{b|ohnetitel=1|1=/scoreboard players add '''''#'''''VarTechEl''''':'''''1 PZTechEl.1 1}}
 
**=> Damit man mit einem Blick Objekte von Pseudo-Objekten unterscheiden kann, denn Spieler können keinen Doppelpunkt im Namen tragen.
 
   
  +
Wenn eine Befehle-Technik mehr als zwanzig Befehle beherbergt, so sollte sie als Funktion angefertigt werden.
*Variablen werden immer mit <code>Var</code> abgekürzt, Objekte, Kreaturen, Rahmen etc. werden mit <code>Obj</code> abgekürzt. Punktestand-Ziele werden mit dem Zusatz <code>PZ</code> ausgestattet.
 
**=> Damit man immer auf einen Blick erkennt, um was es sich dabei gerade handelt, gerade bei sehr großen Techniken kann man schnell den Überblick verlieren.
 
   
  +
*Wenn man Funktionen für die Befehle-Technik verwendet, so gibt es mindestens eine '''Start'''-Funktion in der alles was benötigt wird aufgebaut wird, eine '''Zyklus'''-Funktion die die eigentliche Technik antreibt und eine '''Stopp'''-Funktion die alle Dinge, die durch die Start- und Zyklus-Funktion erstellt wurden wieder abbaut und somit alles wieder auf Anfang zurücksetzt. Das trägt zu einem sauberen Programmierstil bei und so können dann Techniken aus diesem Wiki problemlos in fremde Welten eingesetzt werden ohne "Rückstände" zu hinterlassen, wenn man sie ordnungsgemäß ein- und später wieder ausschaltet.
*Alle selbst definierbaren Zählwerte wie Punktestand-Ziele, Variablen, Objektnamen etc. werden abgekürzt und nach der CamelCase-Richtlinie eingerückt. Nicht begrenzte Wortbezeichnungen können ab der Varianten-Zahl ausgeschrieben werden.
 
**{{b|ohnetitel=1|1=/execute if entity @e[name="'''''ObjTechEl.5B'''''"]}}
 
**{{b|ohnetitel=1|1=/scoreboard players test #'''''VarTechEl.7Ausgabe''''' '''''PZTechEl'''''.1 0 0}}
 
**=> Damit die Namen nicht zu lang ausfallen (durch Leerzeichen oder Unterstrich), da man maximal nur 16 Zeichen bei Punktestand-Zielen verwenden kann.
 
{{-}}
 
   
 
*Bei Funktionen wird der Ordner immer <code>grund-element:</code> und die Textdateien <code>technikname</code> nach der Technik bezeichnet. Bei Vererbungen sollte man zur besseren Struktur weitere Unterordner anlegen und dort dann die Unterfunktionen einbauen. Die Unterfunktionen werden dabei, immer mit einem <code>/</code> (Schrägstrich) und nicht mit einem <code>\</code> (Rückstrich) eingebunden.
== Etiketten ==
 
 
**{{b|ohnetitel=1|1=/function '''''grund-element:'''''v1beispiel}}
*Etiketten sind dazu gedacht bestimmte Objekte zu bestimmen und zu erkennen
 
 
**{{b|ohnetitel=1|1=/function '''''grund-element:'''''v1beispiel2'''''/'''''unterordner'''''/'''''unterunterordner}}
**Etiketten werden mit <code>Eti</code> abgekürzt.
 
 
**=> Damit man einen Hauptordner "grund-element" hat, der die Technik-Wiki-Funktionen beinhaltet und in diesem dann wiederum für jede Technik ein Ordner existiert in dem noch weitere Funktionen eingetragen werden können.
**Etiketten werden mit dem {{b|1=/tag}} verwaltet
 
   
  +
*Damit Funktionsbefehle leichter zu verstehen sind, werden sie immer mit Kommentaren ausgestattet, dies geht mit einem <code>#</code> (Raute) vor dem Kommentar.
*Dies würde alle Zombies die mindestens fünf Blöcke in der Nähe der Befehlsquelle sind, auswählen und töten
 
 
**=> Die Kommentare sind wichtig, da Funktionen eine beliebig große Anzahl an Befehlen beherbergen können, bei der nicht immer klar sein muss, was sie bedeuten.
**{{b|1=/tag @e[type=zombie,distance=..5] add EtiTechEl.6}}
 
**{{b|1=/kill @e[tag=EtiTechEl.6]}}
 
**=> Somit kann man mehrere Objekte mit verschiedenen Eigenschaften alle durch das eine Etikett gleichzeitig auswählen
 
 
{{-}}
 
{{-}}
   
== Funktionen ==
+
== Kommentare ==
[[Datei:Grundmodule Technik-Element (Befehle) Bild 1.8.png|250px|right]]
+
[[Datei:Grund-Element (Befehle) Bild 1.9.png|250px|right]]
 
*Bei dem {{b|/tellraw}} wird zu aller erst immer der Technik-Name erwähnt, damit immer klar ist, zu welcher Technik diese Nachrichten gehören.
*Bei Funktionen wird der Ordner immer <code>TW:</code> und die Textdateien <code>Technik</code> nach der Technik bezeichnet. Bei Vererbungen sollte man zur besseren Struktur weitere Unterordner anlegen und dort dann die Unterfunktionen einbauen. Die Unterfunktionen werden dabei, immer mit einem <code>/</code> (Schrägstrich) und nicht mit einem <code>\</code> (Rückstrich) eingebunden.
 
**{{b|ohnetitel=1|1=/function '''''technik_wiki:'''''technik-element'''''/'''''v1beispiel}}
+
**{{b|ohnetitel=1|1=/tellraw @p ['''''"Grund-Element.1: "''''',{"text":"Texte der Technik"} ] }}
 
**=> Damit man zu jeder Zeit im Spiel sofort erkennen kann, von welcher Technik welche Nachricht gesendet wurde.
**{{b|ohnetitel=1|1=/function '''''technik_wiki:'''''technik-element'''''/'''''Zähl.1'''''/'''''TechEl.1Endlos}}
 
**=> Damit man einen Hauptordner "technik_wiki" hat, der die Technik-Wiki-Funktionen beinhaltet und in diesem dann wiederum für jede Technik ein Ordner existiert in dem noch weitere Funktionen eingetragen werden können.
 
   
*Damit Funktionsbefehle leichter zu verstehen sind, werden sie immer mit Kommentaren ausgestattet, dies geht mit einem <code>#</code> (Raute) vor dem Kommentar.
+
*Kommentare werden mit einer Raute (<code>#</code>) angeführt und anschließend kommt der Kommentar.
 
{{bb|1|3|i|4=# Dies ist ein Kommentar}}
**=> Die Kommentare sind wichtig, da Funktionen eine beliebig große Anzahl an Befehlen beherbergen kann, bei der nicht immer klar werden muss, was sie bewerkstelligen.
 
  +
{{Funktionsüberschrift|1|name=Kommentar-Beispiel}}
 
{{Funktion|name=grund-element:v1beispiel3|1=
 
# Ein Werfer mit der Ausrichtung nach oben wird an der aktuellen Position platziert, wenn sich dort Luft befindet
 
setblock ~ ~ ~ minecraft:dispenser[facing=up] keep
  +
}}
 
**=> Damit man weis, das es beabsichtigt ist, das der Befehlsblock keinen Befehl trägt und es einheitlich zu den Funktionskommentaren ist.
 
{{-}}
 
{{-}}
   
 
== Konstruktionen ==
 
== Konstruktionen ==
[[Datei:Grundmodule Technik-Element (Befehle) Bild 1.9.png|250px|right]]
+
[[Datei:Grund-Element (Befehle) Bild 1.7.png|250px|right]]
*Konstruktionsblock-Dateien werden mit <code>KS</code> ausgestattet.
+
*Konstruktionsblock-Dateien werden mit dem <code>grund-element</code>-Namensraum ausgestattet.
**{{b|ohnetitel=1|1=/setblock ~ ~ ~1 minecraft:structure_block{mode:"SAVE",name:"technik_wiki:'''''kd'''''_technik-element_1vergleicher"} keep}}
+
**{{b|ohnetitel=1|1=/setblock ~ ~ ~1 minecraft:structure_block{mode:"LOAD",name:"grund-element:v1beispiel"} keep}}
 
**=> Damit man immer den Überblick über Konstruktionsdateien behält, falls man sie umbenennen muss.
 
**=> Damit man immer den Überblick über Konstruktionsdateien behält, falls man sie umbenennen muss.
 
{{-}}
 
{{-}}
   
 
{{Unterseite|
 
{{Unterseite|
{{Technik-Familien|familie=element|Redstone-Element}}
+
{{Technik-Familien|familie=element|Befehl#Filter|Koordinaten}}
 
{{Navbox-Technik}}
 
{{Navbox-Technik}}
 
{{Navbox-Technik|Technik}}
 
{{Navbox-Technik|Technik}}

Aktuelle Version vom 23. Dezember 2021, 15:01 Uhr

Gruppe: Grid Werkbank
Grundmodule

Grid Roter Sand blass mit Mechaniken

Grid Redstone mit Redstone
                Hier:
Grid Befehlsblock mit Befehlen
Verfügbar in:
Wiki Redstone-Welt Redstone-Welt

Die Grundlagen der Befehle-Techniken bilden die Befehle in Minecraft, welche sich in Befehlsblöcken und Funktionen befinden können. Wie auch in der realen Programmierung werden für die Techniken Richtlinien verwendet, um ein einheitliches Format abzubilden, wie man die Befehle aufschreiben sollte. Im Wiki wird sich möglichst immer an diese Richtlinien gehalten.

Dieser Artikel erklärt die grundlegenden technischen Aspekte von Befehlen und beschreibt im Anschluss dazu wie man Befehle im Wiki aufschreiben sollte. Diese Normen sind hilfreich um beispielsweise mit einem Namensraum im Namen einer Technik dafür zu sorgen, dass es nie zu Namenskonflikten zwischen anderen Techniken kommt.

Ausführer und Ausführungsposition

Grund-Element (Befehle) Bild 1.10
  • Der Ausführer ist in der Regel der Spieler. Wenn der Befehl unmittelbar vom Spieler durch den Chat ausgeführt wird, übernimmt der Befehl auch dessen Position. Aber ein Ausführer kann auch ein anderes Objekt, ein Befehlblock oder eine Funktion sein. Bei diesen muss angegeben werden ob sie die Ausführer sind. Wird kein Ausführer festgelegt ist, es immer der Server selbst.

Ausgeführte Befehle werden standardmäßig im Chat oder in der Server-Konsole angezeigt, dies kann man einstellen:

Chat
  • Im Chat können sämtliche Befehle direkt ausgeführt werden. Man öffnet die Chat-Leiste mit T (je nach Einstellung kann es auch eine andere Taste) und beginnt als erstes Zeichen mit einem / (Schrägstrich). Dann tippt man den vollständigen Befehl ein und tippt ↵ Eingabe. Mehrere Befehle können nicht gleichzeitig sondern nur nacheinander eingetippt werden. In der Chat-Leiste ist die maximale Zeichenanzahl jedoch auf 256 Zeichen begrenzt. Man kann sie aber für die meisten einfachen Befehle dafür verwenden. Solange man den Ausführer mit dem Selektor nicht ändert, wird ein Chat-Befehl immer den Spieler selbst als Auszuführenden nutzen.
Schild
  • Ein normales Schild kann mit einem Befehl so verändert werden, dass es den Spieler bis zu vier Befehle auf einmal ausführen lassen kann. Als Ausführer wird der Spieler genommen aber als Ausführungsposition wird die Position des Schildes verwendet. Auch hier muss darauf geachtet werden, dass wie beim Chat die Befehle nicht länger als 256 Zeichen lang sein dürfen, da sie intern vom Spieler ausgeführt werden.
Beschriebenes Buch
  • Ein beschriebenes Buch mit eigenen anklickbaren Texten kann per Befehl erzeugt werden. Diese anklickbaren Texte können Befehle hinterlegt bekommen, sodass der Spieler der auf diese klickt die Befehle ausführen kann. Anklickbaren Texte kann man auch mit einer Schnellinfo ausstatten, sodass wenn man mit der Maus über sie fährt, ein Hinweis angezeigt wird. Klickt man die Schrift an, wird der Befehl ausgeführt und das Buch geschlossen. Auch hier ist zu beachten, dass die maximale Zeichenanzahl, wie beim Chat, bei 256 Zeichen liegt. Als Ausführer wird der Spieler genommen und auch dessen Position.
Befehlsblock
  • Den Befehlsblock kann man sich geben, in dem man den Befehl /give @p minecraft:command_block im Chat eintippt. Diesen platziert man in der Welt und öffnet mit einem Rechtsklick dessen Inventar. Im Befehlsblock erscheint eine Leiste ähnlich der Chat-Leiste. dort tippt man die Befehle ein und drückt dann auf die Schaltfläche Fertig. Befehlsblöcke erlauben eine maximale Zeichenanzahl von 32500 Zeichen. Das reicht in den allermeisten Fällen auch aus. Mit Befehlsblöcken baut man die einfacheren Befehlstechniken. Durch Wiederhol-Befehlsblöcke können Befehlen jeden Tick ausgeführt werden. Mehrere Befehle sind auch möglich, in dem man Ketten-Befehlsblöcke an die Impuls- oder den Wiederhol-Befehlsblöcken anschließt. Jedoch kann man standardmäßig maximal 65536 Befehle durch so eine Konstruktion in einem Tick ausführen lassen. Als Ausführer wird der Befehlsblock verwendet (im Chat standardmäßig mit @), wie auch dessen Position. Der Befehlsblock kann standardmäßig nur einmal pro Tick ausgeführt werden, allerdings kann das umgestellt werden in dem man die Eigenschaft UpdateLastExecution auf false setzt.

Die maximale Anzahl der Befehle in einem Tick lässt sich bis maximal 2147483647 (max-integer) einstellen:

Befehlsblocklore
  • Die Befehlsblocklore wird wie ein normaler Befehlsblock behandelt, der Unterschied zu dieser liegt darin, dass es ein beweglicher Block auf Schienen ist, welcher sich mit Hilfe dieser fortbewegen kann. Die Lore kann auch nur alle vier Ticks ausgelöst werden. Der Ausführer bleibt die Befehlsblocklore, jedoch ändert sich dessen Position mit, wenn die Lore sich bewegt. Aktiviert wird die Befehlsblocklore durch eine Aktivierungsschiene.
Funktion
  • Eine Funktion kann nur außerhalb von Minecraft erstellt werden und sie kann im Spiel nur durch den Befehl /function oder durch einen Fortschritt aufgerufen werden. Mithilfe von Aliasdaten lassen sich die Befehle innerhalb von Funktionen wie beim Wiederhol-Befehlsblock jeden Tick ausführen. Im Gegensatz zum Befehlsblock besitzt die Funktion keine Einschränkung der Zeichenanzahl und kann mehrere Befehle in sich beherbergen. Die maximale Anzahl der Befehle die in einem Tick ausgeführt werden kann, liegt dabei auch wie bei den Befehlsblöcken bei 65536 Befehlen. Als Ausführer wird die Server-Konsole verwendet und als Ausführungsposition der vom Startwert festgelegte Spawn. Da sich der Spawn verschieben lässt, kann somit auch die Ausführungsposition verschoben werden.

Die maximale Anzahl der Befehle in einem Tick lässt sich bis maximal 2147483647 (max-integer) einstellen:

Konstruktionsblock
  • Man erhält den Konstruktionsblock mit dem Befehl /give @p minecraft:structure_block. Der Konstruktionsblock selbst kann keine Befehle ausführen, jedoch können mit Befehlen solche Blöcke gesetzt und aktiviert werden, sodass Konstruktionen und Bauwerke sofort erscheinen. Diese Konstruktionen können in der Welt gebaut werden und mit Hilfe des Konstruktionsblocks im Speichermodus gespeichert werden. Die gespeicherten Konstruktionen liegen dabei vom Welt-Ordner im Ordner generated. So lassen sich Konstruktionen auch auf andere Welten übertragen. Er kann nur einmal pro Tick ausgeführt werden.

Syntax

Grund-Element (Befehle) Bild 1.1

Befehle werden im Chat mit einem / (Schrägstrich, engl: Slash) geschrieben, um diese von dem normalen Text unterscheiden zu können, jedoch sind sie in Funktionen und nach dem run-Unterbefehl vom Befehl /execute nicht erlaubt. In Befehlsblöcken dagegen sind beide Varianten erlaubt. Im Wiki werden daher alle Chat-Befehle mit Schrägstrich angezeigt, während Befehle in Befehlsblöcken und Funktionen ohne Schrägstriche auskommen müssen. Das hat den Vorteil, dass Befehle aus Befehlsblöcken und Funktionen problemlos hin und her kopiert werden können, ohne Rücksicht auf die Schrägstriche.

Mit Schrägstrich

Befehle mit Schrägstrichen werden nur in einem Wiki-Text verwendet, welchen man auch direkt in den Chat eingeben würde:

Ohne Schrägstrich

Befehle ohne Schrägstrich werden immer in Befehlsblöcken oder auch in Funktionen verwendet.

tellraw @a ["Grund-Element.1: ",{"text":"Dies ist ein tellraw-Befehl nach den Richtlinien"}]
execute as @a[distance=..50,tag=!EtiGrundEl.1Etikett] run tag @s add EtiGrundEl.1Etikett


Variante 1: Beispiel-Funktion

Editor Icon grund-element:v1beispiel1.mcfunction
# Punkte-Ziele werden erstellt
scoreboard objectives add PZGrundEl.1Nr dummy ["Grund-Element.1: ",{"text":"Nummer","bold":true}]
scoreboard objectives add PZGrundEl.1Wert dummy ["Grund-Element.1: ",{"text":"Wert","bold":true}]

Namensräume

Bei Angaben von Objekten, Blöcken, Gegenständen oder anderen Dingen wird immer der vorhandene Namensraum minecraft: verwendet. Wenn man Befehle im Chat eintippt werden die Namensräume automatisch mit angezeigt und bei Befehlen die einen Test durchführen werden nur Angaben mit Namensraum akzeptiert. Dies ist unter anderem der Grund wieso das Wiki bei sämtlichen Angelegenheiten immer den Namensraum mit angibt. Der Namensraum ist auch hilfreich um beispielsweise mit Strg + f alle Objekte auf einer Seite schnell ausfindig zu machen. Dann öffnet sich eine Suchleiste, in der man den Namensraum eintippen kann und schon findet man alle Objekte.

Minecraft-Namensraum minecraft:
  • /summon minecraft:armor_stand
  • /execute if entity @e[type=minecraft:zombie] run say Mindestens ein Zombie existiert!
  • /execute if entity @p[nbt={SelectedItem:{id:"minecraft:stone"} }]

Darüber hinaus werden auch speziell für das Wiki benutzerdefinierte Namensräume verwendet. Standardmäßig wird der Name des Artikels, also in diesem Fall grund-element: für Funktionen, JSON-Dateien, Konstruktionsdateien und Bossleisten verwendet. Aber auch bei Objekten, Blöcken und Gegenstände werden bestimmte Namensräume vergeben um jede Technik von einer anderen Technik sauber abzugrenzen. Artikel mit dem Zusatz "erweitert" setzen dem Namensraum noch vp1 voraus, wobei das p für Plus steht.

  • grund-element:v1fortschritte für Fortschritte / Advancements
  • grund-element:v1beutetabelle für Beutetabellen / Loottables
  • grund-element:v1rezepte für Rezeptdaten
  • grund-element:v1aliasdaten für Aliasdaten / Tags
  • grund-element:v1konstruktion für Konstruktionsdateien / Structurefiles
  • grund-element:v1bossleiste für Bossleisten / Bossbars
  • grund-element:v1praedikate für Prädikate / Predicates
  • grund-element:v1gegenstands_modifizierer für Gegenstandsmodifizierer
  • grund-element:v1daten für NBT-Speicher / Storages


  • Grundmodule


Variante 1: Technik-Wiki-Namensraum-Funktion

Editor Icon grund-element:v1funktion1.mcfunction
# Die Funktion ruft sich selbst auf
function grund-element:v1funktion1

# Es wird getestet, ob an der aktuellen Position, Blöcke von der Alias-Liste sich dort befinden
execute if block ~ ~ ~ #grund-element:v1alias1
JSON Icon grund-element:v1alias1.json
{
  "values": [
    "minecraft:command_block",
    "minecraft:chain_command_block",
    "minecraft:repeating_command_block"
  ]
}

Benutzerdefinierte Namensräume werden Objekten, Etiketten, Punkte-Zielen usw. gegeben um sie restlos von jeder Technik unterscheiden zu können. Sie werden abgekürzt, da der Name eines Punkte-Ziels nur maximal 16 Zeichen erlaubt. Sie setzen sich aus einer Abkürzung der Technik zusammen, in diesem Beispiel wäre es GrundEl für Grund-Element. Dann folgt ein Punkt mit einer Zahl .1. Die Zahl entspricht der Variante dieser Technik. Bei einer erweiterten Technik, wird noch ein kleines p zwischen der Zahl und dem Punkt angehängt (.p1 wobei p für Plus steht). Danach folgt der eigentliche Name den man dem Objekt oder den anderen genannten Dingen geben würde, in dem Fall Beispiel. Vor dem ganzen, wird dann noch die jeweilige Abkürzung angefügt.

Benutzerdefinierte Namensräume
  • PZGrundEl.1Beisp für Punkte-Ziele / Scores
  • TMGrundEl.1Beisp für Mannschaften / Teams
  • ObjGrundEl.1Beispiel für Objekte / Entities
  • EtiGrundEl.1Beispiel für Etiketten / Entity-Tags
  • VarGrundEl.1Beispiel für Variablen / Fake-Players
  • KonstGrundEl.1Beispiel für Konstanten / Fake-Players
  • EigGrundEl.1Beispiel für Eigenschaften in NBT / NBT-Tags

tellraw-Nachrichten erhalten ausgeschriebene Namensräume, welche im Chat oder über der Schnellzugriffsleiste angezeigt werden. Der Namensraum bildet sich ganz einfach aus dem Technik-Namen ohne, dass er abgekürzt wird. Er erhält danach einen Punkt und eine Zahl, wobei diese die Variantennummer darstellt. Zeilenumbrüche werden mit \n eingefügt und sollten immer in einem String (Zeichenkette mit Anführungszeichen) bevorzugt eingesetzt werden. Wohin gegen der JSON-Text nur die Texte und Farben beinhalten sollte.

JSON-Texte
  • Befehl /tellraw @a[distance=..25] ["Grund-Element.1:\n",{"text":"Dies ist ein Beispieltext","bold":true}]
  • Befehl /scoreboard objectives add PZGrundEl.1Beisp dummy ["Grund-Element.1: ",{"text":"Dies ist ein Beispielpunktestand","bold":true}]
  • Befehl /team add TMGrundEl.1Beisp dummy ["Grund-Element.1: ",{"text":"Dies ist ein Beispielteam","bold":true}]
  • Befehl /bossbar add grund-element:v1beispiel ["Grund-Element.1: ",{"text":"Dies ist eine Beispielbossleiste","bold":true}]

Selektoren und Zielfilter

Grund-Element (Befehle) Bild 1.2

Die Selektoren @p, @a, @r, @e und @s sollten möglichst effizient eingesetzt werden, sodass immer für den entsprechenden Fall der dafür am besten passendste Selektor gewählt wird, auch wenn es über Umwege möglich ist anderen Selektor zu verwenden. Die Kombination as @s im Befehl /execute sollte tunlichst vermieden werden, da ein Ausführer nicht erneut gesetzt werden muss.

Die Zielfilter werden so verwendet, sodass immer der erste Filter möglichst viele Objekte ausschließt die nicht dazu gehören.

  • distance=..25 So wird bei einem Distanz-bezogenen Filter dieser auch als erste angegeben.
  • dx=7,dy=9,dz=11 gleiches gilt für den Quader-Filter.
  • sort=nearest,limit=1 Danach folgen der Sortierungs-Filter und der Limitierungs-Filter.
  • type=minecraft:cow,tag=EtiGrundEl.1Kuh,team=TMGrundEl.1Kuh Hiernach kommen Typ-, Etikett-, Team- und fast alle restlichen Filter.
  • nbt={NoGravity:true,OnGround:true} Als letztes folgt der NBT-Filter, welcher der Leistungsstärkste Filter ist und sparsam eingesetzt werden sollte.
  • Befehle die auf bestimmte Objekte abzielen und über mehrere Unterbefehle immer nur diese prüfen sollen, werden mit @s ausgestattet.
    • /execute as @p[scores={PZGrundEl.1=1},tag=EtiGrundEl.1A] run tellraw @s[tag=EtiGrundEl.1B] {"text":"Buchhalter"}
    • /execute as @p[tagEtiGrundEl.1B,scores={PZGrundEl.1=2}] run give @s minecraft:diamond
    • => Damit der Zusammenhang der Selektoren leichter fällt, zu verstehen.
  • Wenn die Zielauswahl den Quader-Filter verwendet und dieses Quader relativ zu einer Position liegt, kann man x,y,z nicht verwenden, deshalb sollte positioned verwendet werden:
    • /execute positioned ~-5 ~ ~-5 run give @p[dx=10,dy=10,dz=10] minecraft:diamond
    • => Mit der Angabe von positioned kann man besser verstehen, wo sich das Zentrum des Quaders befindet, sodass nicht nur ein fortgeschrittener Spieler das verstünden.
  • In der Zielauswahl so viele Kriterien verwenden wie es sinnvoll erscheint, dabei gilt, lieber zu viele Abbruchkriterien als zu wenige, damit möglichst nur genau die Objekte ausgewählt werden, die auch verwendet werden:
    • /kill @e[distance=..25,type=minecraft:armor_stand,name="wahr",tag=EtiGrundEl.1Etikett,sort=nearest,limit=1]
    • => Damit keine anderen Objekte betroffen sind die damit nichts zu tun haben. Ansonsten würde man im schlimmsten Fall die Welt beschädigen.
  • Wenn man das distance=-Argument bei Selektoren verwendet, müssen immer zwei nacheinander folgende Punkte angegeben werden, ansonsten wird nur der exakte Abstand geprüft:
    • /execute as @a[distance=..5] run say Ich bin fünf Blöcke in der Nähe der Befehlsquelle
  • Bei den Zielfiltern sollte möglichst effizient abgefragt werden, wo was in welchen Abstand sein soll.
    • /execute if entity @e[distance=..25,sort=nearest,limit=1]

Koordinaten

Grund-Element (Befehle) Bild 1.3
  • Befehle mit Koordinaten, werden so gestaltet, das negative Werte mit einem - (Minus) bestückt werden, positive Werte werden ohne Angabe des Vorzeichen getätigt. Nullen werden bei relativen Angaben einfach weggelassen. Das Gleiche gilt für Zirkumflexe ^
    • /setblock ~10 ~-5 ~42 minecraft:stone
    • => Hierbei setzt man voraus, das man weis das eine Zahl ohne Vorzeichen immer positiv ist.
  • Es werden immer relative Koordinaten benutzt und nur dort wo es nicht anders möglich ist, werden absolute Koordinaten verwendet.
    • /execute as @p at @s run fill ~ ~ ~ ~25 ~ ~25 minecraft:stone replace
    • /clone 0 10 0 0 20 10 ~ ~3 ~
    • => Damit man die Techniken auch problemlos umsetzen kann, ohne alle Befehlsblöcke mit Koordinaten korrigieren zu müssen.
  • Befehle mit relativen Koordinaten-Angaben werden immer nur dann mit Zahlen bestückt, wenn diese größer oder kleiner null sind, eine einzelne 0 wird nicht hinter eine ~ (Tilde) geschrieben.
    • /teleport @e[distance=..5] ~1 ~0.2 ~-3
    • => Das ist sinnvoll, da das Spiel zum einen die null ignoriert und zum anderen, da es bei Zielauswahl-Angaben (Quader) nur so möglich ist.

Etiketten

  • Etiketten sind dazu gedacht bestimmte Objekte zu bestimmen und zu erkennen
    • Etiketten werden mit Eti abgekürzt.
    • Etiketten werden mit dem Befehl /tag verwaltet, können aber auch mit dem Befehl /data manipuliert werden.
  • Dies würde alle Zombies die mindestens fünf Blöcke in der Nähe der Befehlsquelle sind, auswählen und töten:
    • Befehl /tag @e[distance=..5,type=minecraft:zombie] add EtiGrundEl.6Beispiel
    • Befehl /kill @e[tag=EtiGrundEl.6Beispiel]
    • => Somit kann man mehrere Objekte mit verschiedenen Eigenschaften alle durch das eine Etikett gleichzeitig auswählen.
  • Alle Objekte die einer Technik angehören sollten ein Etikett tragen was sie alle ansprechen kann.
    • Befehl /summon minecraft:zombie ~ ~ ~ {Tags:["EtiGrundEl.1Alle"]}

Mannschaften

Grund-Element (Befehle) Bild 1.4
  • Teams werden mit TM am Anfang des Teamnamens ausgestattet. Präfixe besitzen einen Namensraum
    • /team add TMGrundEl.1Rot
    • => Damit man Teams von anderen Namensräume wie beispielsweise Punkte-Zielen unterscheiden kann.
  • Falls ein Objekt in einem Team sein soll. das gerade erstellt wird, so sollte man das Team auch so fern möglich angeben:
    • /summon minecraft:zombie ~ ~ ~ {Team:"TMGrundEl.1Team"}

Punktestände

Grund-Element (Befehle) Bild 1.8
  • Punkte-Ziele sollen immer über einen Beschreibungstext verfügen:
    • /scoreboard objectives add PZGrundEl.1Name dummy ["Grund-Element.1: ",{"text":"Name","bold":true} ]
  • Punkte-Ziele müssen immer den Namen der Technik beinhalten, sowie die Varianten-Nummer, dies wird durch ein . getrennt, danach folgt die Varianten-Nummer. p steht für Plus-Variante und wird direkt an die Varianten-Nummer gehangen. Sie werden immer mit PZ bestückt.
    • /scorebord objectives add PZGrundEl.1 dummy
    • /scorebord objectives add PZGrundEl.p3 dummy
    • => Damit man die einzelnen Varianten relativ einfach voneinander unterscheiden kann. Dies ist für den Wiki-Bot und dem Autor im Technik-Wiki und Technik-Welt dienlicher, wie wenn die Punktestände nicht einheitlich sind.
  • Wenn mehr als ein Punkte-Ziel, Variable, Etikett oder Objektname benötigt wird, wird bei allen ein neuer Name für die Eigenschaft geholt.
    • /scoreboard objectives add PZGrundEl.1Eigenschaft1 dummy
    • /scoreboard objectives add PZGrundEl.1Eigenschaft2 dummy
    • /scoreboard players add VarGrundEl.1Eigenschaft3 PZGrundEl.1 5
    • => Damit man Punkte-Ziele, Variablen, Etiketten oder Objektnamen besser untereinander unterscheiden kann.
  • Wenn Punkte-Ziele, Variablen, Etiketten oder Objekt-Namen zur Ausgabe oder Eingabe dienen, sprich wenn man sie auf andere Techniken weiter anwenden könnte, sollten sie aus besserem Verständnis ein entsprechendes Wort beinhalten:
    • /scoreboard objectives add EtiGrundEl.3Vergl
    • /scoreboard players add #VarGrundEl.4Zeiger PZGrundEl.3Vergl 7
    • => Damit man Punkte-Ziele, Variablen, Etiketten oder Objektnamen besser dem jeweiligen Umstand zuordnen kann.
  • Variablen von Punkte-Zielen werden je nach Umstand mit oder ohne # (Raute) ausgestattet und der . wird immer verwendet. Die Raute wird wird genutzt um die Sichtbarkeit der Variable in der Sidebar zu unterbinden:
    • /scoreboard players add #VarGrundEl.1Eig PZGrundEl.1Beis 1
    • => Damit man in manchen Fällen bestimmte Variablen nicht sichtbar für alle machen kann.
  • Variablen werden immer mit Var abgekürzt, Objekte, Kreaturen, Rahmen etc. werden mit Obj abgekürzt. Punkte-Ziele werden mit dem Zusatz PZ ausgestattet.
    • => Damit man immer auf einen Blick erkennt, um was es sich dabei gerade handelt, gerade bei sehr großen Techniken kann man schnell den Überblick verlieren.
  • Alle selbst definierbaren Zählwerte wie Punkte-Ziele, Variablen, Objektnamen etc. werden abgekürzt und nach der CamelCase-Richtlinie eingerückt. Nicht begrenzte Wortbezeichnungen können ab der Varianten-Zahl ausgeschrieben werden.
    • /execute if entity @e[name="ObjGrundEl.5Beispiel"]
    • /scoreboard players get #VarGrundEl.7Ausgabe PZGrundEl.1Beis
    • => Damit die Namen nicht zu lang ausfallen (durch Leerzeichen oder Unterstrich), da man maximal nur 16 Zeichen bei Punkte-Zielen verwenden kann.

Befehlsdaten

Grund-Element (Befehle) Bild 1.5
  • NBT, SNBT, JSON, Blockzustände und Befehle werden immer nach dem striktesten Prinzip das Minecraft anbietet erstellt. In NBT-Daten werden immer die Anfangsbuchstaben für einen primitiven Datentyp verwendet byte, short, long, float und double. Für int gilt dies nicht, da die Abwesenheit eines Buchstaben immer integer beduetet.
    • /summon minecraft:marker ~ ~ ~ {Tags:["EtiGrundEl.1Alle"],Rotation:[0.0f,0.0f]}
    • /execute store result entity @e[type=minecraft:marker,tag=,sort=nearest,limit=1] data."EigGrundEl.1Beispiel" byte 1 run data get entity @p OnGround 1
    • => Damit Änderungen von den Entwicklern an diesen Datenstrukturen keine Welle der Überarbeitung auslösen. Es hat sich bisher gezeigt, das immer das striktere Format das beständigere ist.
  • Wenn NBT-Daten die sogenannten Wahrheitswerte erfordern, wie true (wahr) oder false (falsch), werden auch immer diese Angaben verwendet. Im Wiki wird auf die alternativen Angaben wie 1b oder 0b verzichtet, um ein einheitliches und verständliches Format abzubilden.
    • /data merge @e[tag=EtiGrundEl.1Etikett] {NoGravity:true}
    • /tag @a[tag=!EtiGrundEl.1AufBoden,nbt={OnGround:true}] add EtiGrundEl.1AufBoden
    • => Mit den aussagekräftigen Worten statt Zahlen wird sofort klar, was gemeint ist.
  • Wenn Objekte ein Zeit-Limit besitzen, wie lange sie maximal in ihrer Form existieren können, wird immer der größte oder kleinste maximal mögliche Zahlen-Wert verwendet. Bei Integer (Ganzzahl) liegt er bei 2147483647 (2^31-1) und -2147483648.
    • /summon minecraft:falling_block ~ ~ ~ {Time:-2147483648,NoGravity:true}
    • /summon minecraft:area_effect_cloud ~ ~1 ~ {Duration:-1,Age:-2147483648,WaitTime:-2147483648,Particle:"minecraft:block minecraft:air",Tags:["EtiGrundEl.1Alle"] }
    • => Dies hat den Vorteil, das man das volle Potenzial der Objekte nutzt und zugleich eine der wichtigsten Zahlenwerte vermittelt.
  • Manche NBT-Eigenschaften sind optionale Eigenschaften, dass bedeutet sie werden nur dann in dem Objekt gespeichert, wenn true sind. Daher muss man diese mit nbt=!{Invisible:true} abfragen.
  • Man sollte den NBT-Filter nbt= so sparsam wie möglich verwenden, da es der aufwändigste Filter in der Zielauswahl ist. So sollte man, wenn man über mehrere Befehle, eine bestimmten NBT-Eigenschaft filtern will, diese mit einem Etikett einmal abfragen und dann nur noch das Etikett selbst abfragen.

Variante 1: NBT-Beispiel-Funktion

Editor Icon grund-element:v1beispiel4.mcfunction
# Dem Spieler, der auf dem Boden ist, bekommt ein Etikett, sonst wird das Etikett wieder entfernt
tag @a[tag=EtiGrundEl.1StehtAufGrund,nbt={OnGround:false}] remove EtiGrundEl.1StehtAufGrund
tag @a[tag=!EtiGrundEl.1StehtAufGrund,nbt={OnGround:true}] add EtiGrundEl.1StehtAufGrund

# Befehle die mit Hilfe des Etiketts die NBT-Eigenschaft abfragen ohne einen NBT-Filter zu verwenden
tellraw @a[tag=EtiGrundEl.1StehtAufGrund,scores={PZGrundEl.1Punkte=5..10}] ["Grund-Element.1: ",{"text":"Der Spieler hat einen Wert zwischen fünf und zehn"}]
tellraw @a[distance=..15,tag=EtiGrundEl.1StehtAufGrund] ["Grund-Element.1: ",{"text":"Der Spieler befindet sich maximal 15 Blöcke von der Befehlsquelle entfernt"}]
tellraw @a[tag=EtiGrundEl.1StehtAufGrund,gamemode=creative] ["Grund-Element.1: ",{"text":"Der Spieler befindet sich im Kreativmodus"}]

Text-Formatierung

Um eine einheitliche Darstellung der Text-Formatierung zu gewährleisten, wird immer die vollständige und ausführliche Schreibweise verwendet. Das wird deshalb so gehandhabt, da bei Befehlsprüfungen, beispielsweise mit dem Befehl /execute if entity die Prüfung fehlschlägt, wenn man die abgekürzte Schreibweise verwendet hat.

Wie bei den Minecraft-Namensräumen wird auch bei der Textformatierung darauf geachtet dass sie vollständig angegeben werden, denn manche Befehle verlangen die vollständige Textformatierung wie "{\"text\":\"Hallo Welt\"}" und lassen solche wie diese "\"Hallo Welt\"" nicht zu. Auch § (Paragraphenzeichen) werden vermieden, da sie innerhalb von Minecraft nicht erlaubt sind und nur außerhalb in Funktionen verwendet werden können. Da aber sämtliche Texte auch eine Formatierung erlauben, wird auf diese zugegriffen, da sie in allen Bereichen verwendet werden kann. Ebenfalls können ' Hochkommas verwendet werden um weniger Escaping betreiben zu müssen.

Formatierungsdarstellung
summon minecraft:armor_stand ~ ~ ~ {CustomName:"{\"text\":\"Hallo Welt\"}"}
summon minecraft:mooshroom ~ ~ ~ {CustomName:'{"text":"Pilzkuh","bold":true}'}
Markierungen

Um bestimmte Orte zu markieren, kann man schwebende unsichtbare Rüstungsständer verwenden, die ihren Namen anzeigen lassen. Das geht mit dem Befehl /summon minecraft:armor_stand ~ ~ ~ {Marker:true,NoGravity:true,Invisible:true,CustomNameVisible:true,CustomName:'{"text":"<Anzeige-Name>"}',Tags:["EtiGrundEl.1Alle"] }.

Funktionen

Grund-Element (Befehle) Bild 1.6

Wenn eine Befehle-Technik mehr als zwanzig Befehle beherbergt, so sollte sie als Funktion angefertigt werden.

  • Wenn man Funktionen für die Befehle-Technik verwendet, so gibt es mindestens eine Start-Funktion in der alles was benötigt wird aufgebaut wird, eine Zyklus-Funktion die die eigentliche Technik antreibt und eine Stopp-Funktion die alle Dinge, die durch die Start- und Zyklus-Funktion erstellt wurden wieder abbaut und somit alles wieder auf Anfang zurücksetzt. Das trägt zu einem sauberen Programmierstil bei und so können dann Techniken aus diesem Wiki problemlos in fremde Welten eingesetzt werden ohne "Rückstände" zu hinterlassen, wenn man sie ordnungsgemäß ein- und später wieder ausschaltet.
  • Bei Funktionen wird der Ordner immer grund-element: und die Textdateien technikname nach der Technik bezeichnet. Bei Vererbungen sollte man zur besseren Struktur weitere Unterordner anlegen und dort dann die Unterfunktionen einbauen. Die Unterfunktionen werden dabei, immer mit einem / (Schrägstrich) und nicht mit einem \ (Rückstrich) eingebunden.
    • /function grund-element:v1beispiel
    • /function grund-element:v1beispiel2/unterordner/unterunterordner
    • => Damit man einen Hauptordner "grund-element" hat, der die Technik-Wiki-Funktionen beinhaltet und in diesem dann wiederum für jede Technik ein Ordner existiert in dem noch weitere Funktionen eingetragen werden können.
  • Damit Funktionsbefehle leichter zu verstehen sind, werden sie immer mit Kommentaren ausgestattet, dies geht mit einem # (Raute) vor dem Kommentar.
    • => Die Kommentare sind wichtig, da Funktionen eine beliebig große Anzahl an Befehlen beherbergen können, bei der nicht immer klar sein muss, was sie bedeuten.

Kommentare

Grund-Element (Befehle) Bild 1.9
  • Bei dem Befehl /tellraw wird zu aller erst immer der Technik-Name erwähnt, damit immer klar ist, zu welcher Technik diese Nachrichten gehören.
    • /tellraw @p ["Grund-Element.1: ",{"text":"Texte der Technik"} ]
    • => Damit man zu jeder Zeit im Spiel sofort erkennen kann, von welcher Technik welche Nachricht gesendet wurde.
  • Kommentare werden mit einer Raute (#) angeführt und anschließend kommt der Kommentar.
# Dies ist ein Kommentar

Variante 1: Kommentar-Beispiel-Funktion

Editor Icon grund-element:v1beispiel3.mcfunction
# Ein Werfer mit der Ausrichtung nach oben wird an der aktuellen Position platziert, wenn sich dort Luft befindet
setblock ~ ~ ~ minecraft:dispenser[facing=up] keep
    • => Damit man weis, das es beabsichtigt ist, das der Befehlsblock keinen Befehl trägt und es einheitlich zu den Funktionskommentaren ist.

Konstruktionen

Grund-Element (Befehle) Bild 1.7
  • Konstruktionsblock-Dateien werden mit dem grund-element-Namensraum ausgestattet.
    • /setblock ~ ~ ~1 minecraft:structure_block{mode:"LOAD",name:"grund-element:v1beispiel"} keep
    • => Damit man immer den Überblick über Konstruktionsdateien behält, falls man sie umbenennen muss.


Disambig color
Grid Grasblock