Technik Wiki
Tobi 406 (Diskussion | Beiträge)
(Etiketten Absatz hinzugefügt)
Tobi 406 (Diskussion | Beiträge)
K (Kleinen Fehler ausgebessert und Syntax 1. Punkt aktualisiert)
Zeile 5: Zeile 5:
 
}}
 
}}
   
Die '''Grundlage''' aller [[Technik/Befehle|Befehle-Techniken]] sind (wie auch in der Programmierung der Wirklichkeit) die Konventionen, bzw. Richtlinien, wie man Befehle schreibt. Diese '''Richtlinien''' müssen nicht befolgt werden, auch ohne diese funktionieren die Befehle. Allerdings wird in dem Wiki sich stehts daran gehalten, um ein einheitliches Format anzubieten, das auch sehr aussagekräftig ist. 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:"<Befehl>",CustomNameVisible:true,Tags:["EtiTechEl.1Alle"] } }} kann man solch einen schwebenden Befehl erzeugen.
+
Die '''Grundlage''' aller [[Technik/Befehle|Befehle-Techniken]] sind (wie auch in der Programmierung der Wirklichkeit) die Konventionen, bzw. Richtlinien, wie man Befehle schreibt. Diese '''Richtlinien''' müssen nicht befolgt werden, auch ohne diese funktionieren die Befehle. Allerdings wird in dem Wiki sich stehts daran gehalten, um ein einheitliches Format anzubieten, das auch sehr aussagekräftig ist. 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 ==
 
== Ausführer ==
Zeile 45: Zeile 45:
 
== Syntax ==
 
== Syntax ==
 
[[Datei:Grundmodule Technik-Element (Befehle) Bild 1.1.png|250px|right]]
 
[[Datei:Grundmodule Technik-Element (Befehle) Bild 1.1.png|250px|right]]
*Die meisten Befehle werden mit dem <code>/</code> (Schrägstrich, engl: Slash) geschrieben, da man so den Beginn eines Befehls erkennen kann, sie sind zudem im Chat immer nötig, bei {{de|Befehlsblöcken}} ist es egal, ob mit einem Schrägstrich oder ohne ein Befehl angefangen wird, in Funktionen darf niemals ein Schrägstrich vor dem Beginn eines Befehls stehen,
+
*Die meisten Befehle werden ohne den <code>/</code> (Schrägstrich, engl: Slash) geschrieben, da man die meisten Befehle (in {{de|Funktionen}}, in {{de|Kommandoblöcken}} und in dem {{b|1=/execute}}) ohne Schrägstrich schreiben muss oder ihn überhaupt nicht benutzen kann, lediglich im {{de|Chat}} ist er unbedigt benötigt
 
**{{b|ohnetitel=1|1=/execute as @a at @s run data merge block ~ ~-1 ~ {auto:true} }}
 
**{{b|ohnetitel=1|1=/execute as @a at @s run data merge block ~ ~-1 ~ {auto:true} }}
 
**=> Damit man den Beginn eines neuen Befehls immer sofort an dem Schrägstrich erkennen kann (besonders bei Nachfolge-Befehle oder NBT-Daten-Befehle sinnvoll)
 
**=> Damit man den Beginn eines neuen Befehls immer sofort an dem Schrägstrich erkennen kann (besonders bei Nachfolge-Befehle oder NBT-Daten-Befehle sinnvoll)

Version vom 15. September 2018, 14:14 Uhr

Gruppe: Unbekannter Gruppenname
[[]]

Grid Roter Sand blass mit Mechaniken

Grid Redstone mit Redstone
                Hier:
Grid Befehlsblock mit Befehlen
Verfügbar in:
Wiki Redstone-Welt Redstone-Welt
Disambig color
Grid Grasblock
Auch im Minecraft Wiki wird das Thema dieser Technik behandelt:
Redstone-Element

Die Grundlage aller Befehle-Techniken sind (wie auch in der Programmierung der Wirklichkeit) die Konventionen, bzw. Richtlinien, wie man Befehle schreibt. Diese Richtlinien müssen nicht befolgt werden, auch ohne diese funktionieren die Befehle. Allerdings wird in dem Wiki sich stehts daran gehalten, um ein einheitliches Format anzubieten, das auch sehr aussagekräftig ist. Um diese Richtlinien zu visualisieren, wurden die einzelnen Befehle als Namen für schwebende unsichtbare Rüstungsständer verwendet, mit dem Befehl /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

  • Der Ausführer kann ein Vorlage:De sein, er kann aber auch ein Vorlage:De sein oder eine Vorlage:De. Die ausgeführten Befehle werden dabei standardmäßig in dem Chat angezeigt, man kann dies aber auch verhindern, mit dem Befehl /gamerule commandBlockOutput und dem Befehl /gamerule sendCommandFeedback.


  • Grid Befehlsblock1 Befehlsblock
  • Grid Ketten-Befehlsblock1 Ketten-Befehlsblock
  • Grid Wiederhol-Befehlsblock1 Wiederhol-Befehlsblock
  • Die Befehlsblöcke führen Befehle von ihrer Position in der Welt aus und können dabei so oft in Kette geschaltet sein, wie es einem beliebt, die einstellbare Grenze von 65536 Befehlen kann durch den Befehl /gamerule maxCommandChainLength eingestellt werden. Das Vorlage:De wird dabei durch eine Kette innerhalb eines Vorlage:Des durchgeleitet. Befehle können eine maximale Zeichenanzahl von 32500 besitzen.


  • Grid Befehlsblocklore1 Befehlsblocklore
  • Grid Aktivierungsschiene1 Aktivierungsschiene
  • Die Befehlsblocklore kann Befehle alle vier Ticks auslösen (fünfmal in der Sekunde) und benötigt dazu eine Aktivierungsschiene. Zudem kann solch eine Lore keine Kette bilden.


  • Grid Konstruktionsblock1 Konstruktionsblock
  • Der Konstruktionsblock kann, wenn er durch ein Vorlage:De angesteuert wurde, ein Bauwerk speichern, laden oder die Ecken erkennen. Dabei kann er pro Tick einmal seine Eigenschaft nutzen.


  • Grid Schild (Schrift)1 Schild (Schrift)
  • Ein Schild das mit NBT-Daten so verändert wurde, das es Befehle ausführen kann. Es kann maximal vier Befehle auf einmal ausführen.


  • Grid Beschriebenes Buch1 Beschriebenes Buch
  • Ein beschriebenes Buch das mit NBT-Daten so verändert wurde, das man im Buch auf bestimmte Textstellen klicken kann um so Befehle auszuführen, das Buch wird dabei aber geschlossen.


  • Grid Konstruktionsleere1 Vorlage:De
  • Im Chat können sämtliche Befehle ausgeführt werden, jedoch ist die maximale Zeichenanzahl dort auf 256 begrenzt.


  • Grid Barriere1 Vorlage:De
  • Funktionen können eine beliebig große Anzahl an Befehlen gleichzeitig ausführen und sind nur an die variabel einstellbare Grenze vom Befehl /gamerule maxCommandChainLength gebunden. Zudem lassen sich Funktionen von der Datei tick.json, die in saves/<weltname>/datapacks/<datapackname>/data/<eigener-namensraum>/tags/functions/tick.json in einem Vorlage:De stehen muss, um eine Funktion jeden Tick (20 mal pro Sekunde)wiederholen zu lassen (siehe hierzu Vorlage:De).

Syntax

  • Die meisten Befehle werden ohne den / (Schrägstrich, engl: Slash) geschrieben, da man die meisten Befehle (in Vorlage:De, in Vorlage:De und in dem Befehl /execute) ohne Schrägstrich schreiben muss oder ihn überhaupt nicht benutzen kann, lediglich im Vorlage:De ist er unbedigt benötigt
    • /execute as @a at @s run data merge block ~ ~-1 ~ {auto:true}
    • => Damit man den Beginn eines neuen Befehls immer sofort an dem Schrägstrich erkennen kann (besonders bei Nachfolge-Befehle oder NBT-Daten-Befehle sinnvoll)
  • Bei Angaben von Objekten, Kreaturen, Blöcken oder Gegenständen wird immer das Präfix minecraft: für den Namensraum verwendet.
    • /summon minecraft:armor_stand
    • /execute if entity @e[type=minecraft:zombie] run say Zombie gesichtet
    • => Bei manchen Angaben wird das Präfix benötigt, deshalb ist es sinnvoll dies gleich bei allen zu nutzen (Nebeneffekt: Wiki-Bots können anhand der Präfixe Namensänderungen oder andere Änderungen leicht durchführen)
  • Befehle werden immer in der ausgeschriebenen Form eingetippt, damit nicht nur der Profi nachvollziehen kann, was gemeint ist.
    • /gamemode survival @p
    • => Namen-iDs sagen mehr als Zahlen-IDs (Nebeneffekt: Wiki-Bot kann zwischen den einzelnen Zuständen unterscheiden, bei Zahlen nicht)

Selektoren

  • Befehle die auf bestimmte Objekte abzielen und über mehrere Befehle immer nur diese prüfen sollen, werden mit @s ausgestattet.
    • /execute as @p[scores={PZTechEl.1=1},tag=EtiTechEl.1A] run tellraw @s[tag=EtiTechEl.1B] {"text":"Buchhalter"}
    • /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 Kubus-Angaben, wenn sie relative Koordinaten enthalten immer auch so angegeben, auch wenn es alternative Schreibweisen gibt.
    • /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!
    • /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!
    • /execute as @a[distance=..5] run say Ich bin 5 Blöcke in der Nähe der Befehlsquelle

Koordinaten

  • Befehle mit Koordinaten, werden so gestaltet, das negative Werte mit einem - (Minus) bestückt werden, positive Werte werden ohne Angabe des Vorzeichen getätigt.
    • /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 absolut nicht möglich ist, werden absolute Koordinaten verwendet.
    • /execute as @p at @s run fill ~ ~ ~ ~25 ~ ~25 minecraft:stone
    • /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.
  • 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 (Kubus) nur so möglich ist.

Kommentare

  • 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 ["Technik-Element.1 ",{"text":"Texte der Technik"} ]
    • => Damit man zu jeder Zeit 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
    • => Damit man weis, das es beabsichtigt ist, das der Befehlsblock keinen Befehl trägt und es einheitlich zu den Funktionskommentaren ist.

Befehle-Daten

  • NBT, JSON, JSON-NBT, Blockzustände und MC-Befehle werden immer nach dem striktesten Prinzip erstellt.
    • /fill ~5 ~5 ~5 ~-5 ~-5 ~-5 minecraft:fence_gate[facing=west,open=true] replace minecraft:air
    • => 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 true (wahr) und false (falsch), werden immer auch mit diesen Angaben ausgestattet, auf 1b oder 0b wird verzichtet.
    • /data merge @e[tag=EtiTechEl.1] {NoGravity:true}
    • /tag @a[tag=!EtiTechEl.1] add EtiTechEl.1 {OnGround:true}
    • => Damit mit den eher aussagekräftigen Worten sofort klar ist, 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 2147483647 (2^31-1) oder -2147483648.
    • /summon minecraft:falling_block ~ ~ ~ {Time:-2147483648,NoGravity:true}
    • => Dies hat den Vorteil, das man das volle Potenzial der Objekte nutzt und zugleich eine der wichtigsten Zahlenwerte vermittelt.

Teams

  • Teams werden mit TM am Anfang des Teamnamens ausgestattet.
    • /teams add TMTechEl.1
    • => Damit man Teams von Punktestand-Zielen unterscheiden kann.

Punktestände

  • Punktestand-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 PZTechEl:1 dummy
    • /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.
  • Wenn mehr als ein Punktestand-Ziel, Variable, Etiketten oder Objektnamen benötigt werden, wird bei allen ein großer Buchstabe beginnend bei A angehongen.
    • /scoreboard objectives add PZTechEl.1B dummy
    • /scoreboard objectives add PZTechEl.1AusgabeC dummy
    • /scoreboard players add VarTechEl.1A PZTechEl.1 5
    • => Damit man Punktestand-Ziele, Variablen, Etiketten oder Objektnamen besser untereinander unterscheiden kann.
  • 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:
    • /scoreboard objectives tag @p add EtiTechEl.3Vergleichswert
    • /scoreboard players add #VarTechEl.4Zeiger PZTechEl.3Vergl 7
    • => Damit man Punktestand-Ziele, Variablen, Etiketten oder Objektnamen besser dem jeweiligen Umstand zuordnen kann.
  • Variablen von Punktestand-Zielen werden immer mit # (Raute) und : ausgestattet. Nur wenn die Variable in der Scoreboard-Sidebar sichtbar sein soll, kann man auf die Raute verzichten.
    • /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.
  • Variablen werden immer mit Var abgekürzt, Objekte, Kreaturen, Rahmen etc. werden mit Obj abgekürzt. Punktestand-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 Punktestand-Ziele, Variablen, Objektnamen etc. werden abgekürzt und nach der CamelCase-Konvention eingerückt. Nicht begrenzte Wortbezeichnungen können ab der Varianten-Zahl ausgeschrieben werden.
    • /execute if entity @e[name="ObjTechEl.5B"]
    • /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.

Etiketten

  • Etiketten sind dazu gedacht bestimmte Entititäten zu bestimmen und zu erkennen
    • Etiketten werden mit Eti abgekürzt.
    • Etiketten werden mit dem Befehl /tag verwaltet
  • Dies würde alle Creeper und Zombies die mindestens 5 Blöcke in der Nähe der Befehlsquelle sind, töten
    • Befehl /tag @e[type=zombie,distance=..5] add EtiTechEl.6
    • Befehl /kill @e[tag=EtiTechEl.6]
    • => Somit kann man mehrere Entititäten mit verschiedenen Eigenschaften alle durch den einen Tag gleichzeitig auswählen

Funktionen

  • Bei Funktionen wird der Ordner immer TW: und die Textdateien Technik 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 / (Schrägstrich) und nicht mit \ (Rückstrich) eingebunden.
    • /function TW:Technik-Element.1/TechEl.1
    • /function TW:Technik-Element.1/Zähl.1/TechEl.1Endlos
    • => Damit man einen Hauptordner "TW" 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 kann, bei der nicht immer klar werden muss, was sie bewerkstelligen.

Konstruktionen

  • Konstruktionsblock-Dateien werden mit KS ausgestattet.
    • /setblock ~ ~ ~1 minecraft:structure_block 1 keep {mode:"SAVE",name:"KSTechEl.1Vergleicher"}
    • => Damit man immer den Überblick über Konstruktionsdateien behält, falls man sie umbenennen muss.