Das offizielle Minecraft Wiki twittert hier: Wiki-Twitter  –  Chatte im Wiki-Discord  – Noch keinen Server gefunden? Es gibt einen Wiki-Server

Vergleicher (Befehle)

Aus Technik Wiki
Wechseln zu: Navigation, Suche
Gruppe: Grid Redstone-Verstärker.png
Schaltnetze

Grid Roter Sand blass.png mit Mechaniken

Grid Redstone.png mit Redstone
                Hier:
Grid Befehlsblock.png mit Befehlen

Die vorgestellte Technik kann in der Redstone-Welt angesehen werden.
Redstone-Schaltkreise Symbol.png
Überarbeitete oder neue Varianten dieser Technik existieren bereits in der aktuellen Redstone-Welt.
Hier fehlt noch die Dokumentation dieser Varianten, diese müssen noch nachgetragen werden.

Der Vergleicher kann erkennen, je nach Ausführung, ob die Werte von den zu vergleichenden Variablen gleich groß =, ungleich !=, kleiner <, kleiner gleich <=, größer > oder größer gleich >= sind. Dabei können die Variablen positiv wie auch negativ sein.

Variante 1[Bearbeiten | Quelltext bearbeiten]

Vergleicher (Befehle) Bild 1.1.png

Mit diesem Vergleicher kann man zwei Variablen mit einander auf Gleichheit prüfen und sich ausgeben lassen. Die beiden Variablen können dabei nicht negativ eingestellt werden, da dies dieser Vergleicher dies nicht unterstützt. Zuerst legt man das Punktestand-Ziel anBefehl 1.1, welches man auch wieder löschen kann, wenn man den Hebel wieder in Ausgangsstellung legt, da dabei die Redstone-Fackel wieder an geht und so den Befehlsblock aktiviertBefehl 1.2. Nun legt man die Variablen an, die man vergleichen möchteBefehl 1.3Befehl 1.4Befehl 1.5Befehl 1.6. Da man nicht direkt vergleichen kann, muss man sich eines Tricks bedienen: Man vergleicht, in dem man einfach den Wert der einen Variable von dem anderen abzieht und dann testet, ob der übrig gebliebene Betrag null ist. Wenn es der Fall ist, müssen beide Werte gleich sein, sonst sind sie verschieden. Dazu wird eine dritte Vergleichsvariable angelegt, die den Wert der ersten Variable bekommtBefehl 1.7 und dann wird von dieser der Betrag von der zweiten Variable abgezogenBefehl 1.8. Nun testet der nächste Ketten-Befehlsblock, ob der Wert der Vergleichsvariable null istBefehl 1.9. Wenn das der Fall ist, wird nun eine Nachricht in den Chat geschrieben, die dies ausgibtBefehl 1.10. Wenn sie nicht null ist, wird stattdessen ein weiterer Ketten-Befehlsblock genau dies prüfenBefehl 1.11 und damit die zweite Nachricht aktivieren, welche die Unlgeichheit mitteiltBefehl 1.12.


Befehlsblöcke mit Befehlen:
scoreboard objectives add PZVergl:1Wert dummy


scoreboard players add #VarVergl:1ZahlA PZVergl:1Wert 1
tellraw @a[r=15] [{"text":"Vergleicher:1"},{"text":" Der erste Wert für den Vergleich wurde um eins erhöht: "},{"score":{"name":"#VarVergl:1ZahlA","objective":"PZVergl:1Wert"} } ]


scoreboard players add #VarVergl:1ZahlB PZVergl:1Wert 1
tellraw @a[r=15] [{"text":"Vergleicher:1"},{"text":" Der zweite Wert für den Vergleich wurde um eins erhöht: "},{"score":{"name":"#VarVergl:1ZahlB","objective":"PZVergl:1Wert"} } ]


scoreboard players operation #VarVergl:1ErgebnisZahl PZVergl:1Wert = #VarVergl:1ZahlA PZVergl:1Wert
scoreboard players operation #VarVergl:1ErgebnisZahl PZVergl:1Wert -= #VarVergl:1ZahlB PZVergl:1Wert
scoreboard players test #VarVergl:1ErgebnisZahl PZVergl:1Wert 0 0
tellraw @a[r=15] [{"text":"Vergleicher:1"},{"text":" Die beiden Werte "},{"score":{"name":"#VarVergl:1ZahlA","objective":"PZVergl:1Wert"} },{"text":" und "},{"score":{"name":"#VarVergl:1ZahlB","objective":"PZVergl:1Wert"} },{"text":" sind gleich "} ]
testforblock ~-2 ~ ~ minecraft:chain_command_block * {SuccessCount:0}
tellraw @a[r=15] [{"text":"Vergleicher:1"},{"text":" Die beiden Werte "},{"score":{"name":"#VarVergl:1ZahlA","objective":"PZVergl:1Wert"} },{"text":" und "},{"score":{"name":"#VarVergl:1ZahlB","objective":"PZVergl:1Wert"} },{"text":" sind ungleich "} ]


scoreboard objectives remove PZVergl:1Wert

Variante 2[Bearbeiten | Quelltext bearbeiten]

Vergleicher (Befehle) Bild 2.1.png

Mit diesem Vergleicher kann man zwei Variablen auf Gleichheit, größer als und kleiner als prüfen lassen. Negative Werte werden auch hier nicht unterstützt. Wie bei Variante 1 wird hier wieder ein Punktestand-Ziel benötigtBefehl 2.1, mit der man die zwei Variablen festlegen kannBefehl 2.3Befehl 2.4Befehl 2.5Befehl 2.6. Wenn die zwei Variablen mit den gewünschten Wert ausgestattet sind, kann man sie vergleichen. Dazu wird eine dritte Variable angelegt, die den Wert der ersten Variable übertragen bekommtBefehl 2.7. Anschließend wird der Wert der zweiten Variable von der dritten variable abgezogenBefehl 2.8. Wenn beide Variablen gleich große Werte besaßen wird die dritte Variable nun einen Wert von null aufweisenBefehl 2.9 und den dafür notwendigen Chat-Befehl auslösenBefehl 2.10. Ansonsten wird geprüft ob die dritte Variable kleiner gleich minus eins istBefehl 2.11, dann ist die erste Variable kleiner und es wird der entsprechende Chat-Befehl ausgegebenBefehl 2.12. Als letztes wird der umgekehrte Fall überprüftBefehl 2.13Befehl 2.14. Um alle Variablen zu löschen, muss nur das Punktestand-Ziel gelöscht werdenBefehl 2.2.


Befehlsblöcke mit Befehlen:
scoreboard objectives add PZVergl:2Wert dummy


scoreboard players add #VarVergl:2ZahlA PZVergl:2Wert 1
tellraw @a[r=15] [{"text":"Vergleicher:2"},{"text":" Der erste Wert für den Vergleich wurde um eins erhöht: "},{"score":{"name":"#VarVergl:2ZahlA","objective":"PZVergl:2Wert"} } ]


scoreboard players add #VarVergl:2ZahlB PZVergl:2Wert 1
tellraw @a[r=15] [{"text":"Vergleicher:2"},{"text":" Der zweite Wert für den Vergleich wurde um eins erhöht: "},{"score":{"name":"#VarVergl:2ZahlB","objective":"PZVergl:2Wert"} } ]


scoreboard players operation #VarVergl:2ErgebnisZahl PZVergl:2Wert = #VarVergl:2ZahlA PZVergl:2Wert
scoreboard players operation #VarVergl:2ErgebnisZahl PZVergl:2Wert -= #VarVergl:2ZahlB PZVergl:2Wert
scoreboard players test #VarVergl:2ErgebnisZahl PZVergl:2Wert 0 0
tellraw @a[r=15] [{"text":"Vergleicher:2"},{"text":" Die beiden Werte "},{"score":{"name":"#VarVergl:2ZahlA","objective":"PZVergl:2Wert"} },{"text":" und "},{"score":{"name":"#VarVergl:2ZahlB","objective":"PZVergl:2Wert"} },{"text":" sind gleich "} ]
scoreboard players test #VarVergl:2ErgebnisZahl PZVergl:2Wert * -1
tellraw @a[r=15] [{"text":"Vergleicher:2"},{"text":" Der erste Wert "},{"score":{"name":"#VarVergl:2ZahlA","objective":"PZVergl:2Wert"} },{"text":" ist kleiner als der zweite Wert "},{"score":{"name":"#VarVergl:2ZahlB","objective":"PZVergl:2Wert"} } ]
scoreboard players test #VarVergl:2ErgebnisZahl PZVergl:2Wert 1 *
tellraw @a[r=15] [{"text":"Vergleicher:2"},{"text":" Der erste Wert "},{"score":{"name":"#VarVergl:2ZahlA","objective":"PZVergl:2Wert"} },{"text":" ist größer als der zweite Wert "},{"score":{"name":"#VarVergl:2ZahlB","objective":"PZVergl:2Wert"} } ]


scoreboard objectives remove PZVergl:2Wert

Variante 3[Bearbeiten | Quelltext bearbeiten]

Vergleicher (Befehle) Bild 3.1.png

Dieser Vergleicher kann Objekt-Variablen auf auf Gleichheit, größer als und kleiner als prüfen. Dabei können die zu vergleichenden Variablen auch negativ eingestellt werden. Zuerst benötigt man zwei Punktestand-ZieleBefehl 3.1Befehl 3.2, welche später den Objekt-Variablen die Möglichkeit geben, ihre Wert zu speichern und zu vergleichen. Dann werden die zwei Objekte erschaffenBefehl 3.3Befehl 3.4. Es werden zwei kleine unsichtbare schwerelose Rüstungsständer erzeugt, die einmal eine Truhe und zum anderen mal einen Spender in ihrem Kopfslot tragen. Diese beiden Objekte haben zu Anfang keinen Wert, aber wenn man von ihnen Werte abzieht oder hinzufügt, wird ihnen im Schritt der Operation der Wert null zuvor gegeben. Sodass man nun bei der ersten AdditionBefehl 3.5 den Wert eins erhält. Man kann den Hebel so oft umlegen wie man möchte, der wert wird dann immer um eins erhöht. Anschließend wird der Wert auch ausgegebenBefehl 3.6. Der Befehlsblock für das subtrahierenBefehl 3.7 liegt gegenüber und zeigt auch auf den Ketten-Befehlsblock, auf den schon der Additions-Befehlsblock zeigt. Diese drei Befehlsblöcke addieren oder subtrahieren den Wert der ersten Objektvariable. Das gleiche wird dann auch bei der zweiten Objekt-Variable gemachtBefehl 3.8Befehl 3.9Befehl 3.10. Nun kommen wir zum eigentlichen Vergleich der beiden Objekt-Variablen. Zuerst wird ein Vergleichswert benötigt. Wir legen hier den Vergleichswert mit Hilfe der ersten Objekt-Variable anBefehl 3.11. Dieser Vergleichswert wird auf minus eins gesetzt, das ist notwendig, damit man später nicht nur positive, sondern auch negative Zahlen vergleichen kann, denn diese liegen nur im negativen Bereich. Nun wird von der ersten Objektvariable (Truhe) der gesetzte Wert von vorhin (addieren oder subtrahieren) auf ihren Vergleichswert übertragen, aber mal minus einsBefehl 3.12, so dass nun ein negativer Betrag gespeichert ist, wenn der gesetzte Wert positiv war (und umgekehrt, wenn der Wert negativ war). Nun wird der Vergleichswert von der ersten Variable (Truhe) mit dem gesetzten Wert der zweiten Variable (Spender) addiertBefehl 3.13. Wenn der Vergleichswert der ersten Objekt-Variable nun bei null liegt, sind beide gesetzten Werte gleich großBefehl 3.14, wenn der Vergleichswert größer null (Positiv) istBefehl 3.15, dann ist die zweite Variable größer als die erste und wenn der Vergleichswert kleiner null (Negativ) istBefehl 3.16, dann ist die zweite Variable kleiner als die erste. Möchte man alle Variablen und Punktestand-Ziele löschen, so legt man einfach den Hebel für diese wieder in Ausgangsstellung um, dann wird eine Redstone-Fackel aktiv, die die Befehlsblöcke für das Löschen aktiv schaltetBefehl 3.17Befehl 3.18Befehl 3.19.


Befehlsblöcke mit Befehlen:
scoreboard objectives add PZVergl:3Wert dummy
scoreboard objectives add PZVergl:3Vergl dummy
summon minecraft:armor_stand ~ ~2 ~ {NoGravity:true,CustomName:"ObjVergl:3SpeicherA",Small:true,Invisible:true,Marker:true,Tags:["EtiVergl:3Alle"],ArmorItems:[{},{},{},{id:"minecraft:chest",Count:1b} ] }
summon minecraft:armor_stand ~ ~2 ~ {NoGravity:true,CustomName:"ObjVergl:3SpeicherB",Small:true,Invisible:true,Marker:true,Tags:["EtiVergl:3Alle"],ArmorItems:[{},{},{},{id:"minecraft:dropper",Count:1b} ] }


scoreboard players add @e[type=minecraft:armor_stand,name=ObjVergl:3SpeicherA] PZVergl:3Wert 1
tellraw @a[r=15] [{"text":"Vergleicher:3"},{"text":" Der Wert für die erste Objektvariable (Truhe) wurde auf folgenden Wert gesetzt: "},{"score":{"name":"@e[type=minecraft:armor_stand,name=ObjVergl:3SpeicherA]","objective":"PZVergl:3Wert"} } ]
scoreboard players remove @e[type=minecraft:armor_stand,name=ObjVergl:3SpeicherA] PZVergl:3Wert 1


scoreboard players add @e[type=minecraft:armor_stand,name=ObjVergl:3SpeicherB] PZVergl:3Wert 1
tellraw @a[r=15] [{"text":"Vergleicher:3"},{"text":" Der Wert für die zweite Objektvariable (Spender) wurde auf folgenden Wert gesetzt: "},{"score":{"name":"@e[type=minecraft:armor_stand,name=ObjVergl:3SpeicherB]","objective":"PZVergl:3Wert"} } ]
scoreboard players remove @e[type=minecraft:armor_stand,name=ObjVergl:3SpeicherB] PZVergl:3Wert 1


scoreboard players set @e[type=minecraft:armor_stand,name=ObjVergl:3SpeicherA] PZVergl:3Vergl -1
scoreboard players operation @e[type=minecraft:armor_stand,name=ObjVergl:3SpeicherA] PZVergl:3Vergl *= @e[type=minecraft:armor_stand,name=ObjVergl:3SpeicherA] PZVergl:3Wert
scoreboard players operation @e[type=minecraft:armor_stand,name=ObjVergl:3SpeicherA] PZVergl:3Vergl += @e[type=minecraft:armor_stand,name=ObjVergl:3SpeicherB] PZVergl:3Wert
execute @e[type=minecraft:armor_stand,name=ObjVergl:3SpeicherA,score_PZVergl:3Vergl_min=0,score_PZVergl:3Vergl=0] ~ ~ ~ /tellraw @a[r=15] [{"text":"Vergleicher:3"},{"text":" Die beiden Werte "},{"score":{"name":"@e[type=minecraft:armor_stand,name=ObjVergl:3SpeicherA]","objective":"PZVergl:3Wert"} },{"text":" und "},{"score":{"name":"@e[type=minecraft:armor_stand,name=ObjVergl:3SpeicherB]","objective":"PZVergl:3Wert"} },{"text":" sind gleich "} ]
execute @e[type=minecraft:armor_stand,name=ObjVergl:3SpeicherA,score_PZVergl:3Vergl_min=1] ~ ~ ~ /tellraw @a[r=15] [{"text":"Vergleicher:3"},{"text":" Der erste Wert "},{"score":{"name":"@e[type=minecraft:armor_stand,name=ObjVergl:3SpeicherA]","objective":"PZVergl:3Wert"} },{"text":" ist kleiner als der zweite Wert "},{"score":{"name":"@e[type=minecraft:armor_stand,name=ObjVergl:3SpeicherB]","objective":"PZVergl:3Wert"} } ]
execute @e[type=minecraft:armor_stand,name=ObjVergl:3SpeicherA,score_PZVergl:3Vergl=-1] ~ ~ ~ /tellraw @a[r=15] [{"text":"Vergleicher:3"},{"text":" Der erste Wert "},{"score":{"name":"@e[type=minecraft:armor_stand,name=ObjVergl:3SpeicherA]","objective":"PZVergl:3Wert"} },{"text":" ist größer als der zweite Wert "},{"score":{"name":"@e[type=minecraft:armor_stand,name=ObjVergl:3SpeicherB]","objective":"PZVergl:3Wert"} } ]


scoreboard objectives remove PZVergl:3Wert
scoreboard objectives remove PZVergl:3Vergl
kill @e[type=minecraft:armor_stand,tag=EtiVergl:3Alle]


Disambig color.svg
 
Grid Grasblock.png
Auch im Minecraft Wiki wird das Thema dieser Technik behandelt:
Redstone-Komparator