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

Schaltnetze/Zähler (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.

Grid Redstone-Block.png mehr Redstone

Ein Zähler kann Werte um eine bestimmte Anzahl erhöhen. Er kann auch als Countdown (fürs Runterzählen) benutzt werden, dann muss einfach ein bestimmter Wert vorher eingetragen werden und der Zähler zählt runter bis der Schlusswert erreicht wurde.

Variante 1[Bearbeiten | Quelltext bearbeiten]

Schaltnetze Zähler (Befehle) Bild 1.1.png

Mit diesem Zähler kann man eine Variable um eins erhöhen. Der Wert wird immer größer. Wenn er den Wert 2147483647 erreicht, ist er beim größten Wert vom Integer angelangt. Dann wechselt er in den negativen Bereich und zählt weiter hoch. Dies liegt daran, das dadurch kein Wert erreicht werden kann, der nicht definiert ist. Wie in einer Programmiersprache muss man auch hier erst definieren und dann initialisieren. Das geht wie folgt, zuerst wird ein Punktestand-Ziel PZZähl:1Wert erstellt, welches den "Datentyp" definiert. Dieser wird mit dem Befehl 1.1 vom Typ "dummy" erstellt. In Minecraft sind nur ganzzahlige Datentypen möglich, daher wird keine weitere Angabe benötigt. Nun soll eine bestimmte Variable hochgezählt werden. In Minecraft braucht man die Variable nicht zu initialisieren, da das auch während des Hochzählens möglich ist. Nun wird in einem Wiederhol-Befehlsblock die Variable #VarZähl.1Zähler direkt um eins durch den Befehl 1.2 erhöht. Damit man diese Werte auch sehen kann, gibt nun ein nachgeschalteter Ketten-Befehlsblock im immer aktiven Zustand die Werte durch den Befehl 1.3 in den Chat aus. Legt man den Hebel beim Wiederhol-Befehlsblock um, so startet er das Hochzählen. Damit man wieder von vorne anfangen kann, legt man in diesem Beispiel einfach den Hebel beim Befehlsblock mit dem Punktestand-Ziel des Befehls Befehl 1.1 um und löscht dadurch dieses. Wenn man dann erneut das Punktestand-Ziel erstellt, zählt der Zähler erneut von eins beginnend.


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


scoreboard players add #VarZaehl.1Zaehler PZZaehl.1Wert 1
tellraw @a[distance=..15] [{"text":"Zähler:1"},{"text":" Der Zähler hat um eins hochgezählt: "},{"score":{"name":"#VarZaehl.1Zaehler","objective":"PZZaehl.1Wert"} } ]


scoreboard objectives remove PZZaehl.1Wert

Variante 2[Bearbeiten | Quelltext bearbeiten]

Schaltnetze Zähler (Befehle) Bild 2.1.png

In Variante 1 konnte man die Variable immer nur um eins erhöhen. Diesmal geht es darum die Variable um einen selbst eingestellten wert zu erhöhen. Dazu wird zuerst wieder ein Punktestand-Ziel benötigt, welches den Datentyp festlegt(Befehl 2.1) (ganzzahlig). Nun legen wir aber zwei statt nur eine Variable an. Zuerst wird die Variable #VarZähl:2ZählerB durch den Befehl 2.2 angelegt, welche nachher zum Erhöhen des eigentlichen Hochzählens genommen wird. Zusätzlich bekommt man die Meldung, welchen Wert sie nun hat(Befehl 2.3). Nun addiert man immer diese festgelegte Variable mit der Variable, die immer hochgezählt werden soll(Befehl 2.4). Dabei wird die Operation Variable1 += Variable2 ausgeführt, das nichts anderes bedeutet wie das der #VarZähl:2ZählerA die Summe aus #VarZähl:2ZählerA und #VarZähl:2ZählerB ist (Variable1 = Variable1 + Variable2). Anschließend gibt ein bedingter Ketten-Befehlsblock die Werte durch den Befehl 2.5 aus. Damit auch hier der Zähler zurückgesetzt werden kann, muss das Punktestand-Ziel gelöscht werden und erneut definiert werden, dies geschieht durch den Befehl 2.6.


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


scoreboard players add #VarZaehl.2ZaehlerB PZZaehl.2Wert 1
tellraw @a[distance=..15] [{"text":"Zähler:2"},{"text":" Der Hochzählwert wurde um eins erhöht: "},{"score":{"name":"#VarZaehl.2ZaehlerB","objective":"PZZaehl.2Wert"} } ]


scoreboard players operation #VarZaehl.2ZaehlerA PZZaehl.2Wert += #VarZaehl.2ZaehlerB PZZaehl.2Wert
tellraw @a[distance=..15] [{"text":"Zähler:2"},{"text":" Der Zähler hat um den Betrag "},{"score":{"name":"#VarZaehl.2ZaehlerB","objective":"PZZaehl.2Wert"} },{"text":" hochgezählt: "},{"score":{"name":"#VarZaehl.2ZaehlerA","objective":"PZZaehl.2Wert"} } ]


scoreboard objectives remove PZZaehl.2Wert

Variante 3[Bearbeiten | Quelltext bearbeiten]

Schaltnetze Zähler (Befehle) Bild 3.1.png

Nun möchte man aber das der Zähler vielleicht nur alle 20 Ticks einmal hochzählt, auch das ist kein Problem. Dazu wird wieder ein Punktestand-Ziel durchh den Befehl 3.1 angelegt. Nun folgt zuerst ein kleiner Zähler vorab, bevor der richtige Zähler die Ausgabe übernimmt. Dazu wird eine Variable angelegt(Befehl 3.2) die nun bis 20 hochgezählt wird(Befehl 3.3). Dazu wird getestet ob der Wert der Variable mindestens den Wert 20 besitzt. Solange das nicht der Fall ist, wird einfach weiter hochgezählt. Wenn der Wert 20 erreicht wird, wird die Variable durch einen bedingten Ketten-Befehlsblock wieder zurück gesetzt(Befehl 3.49. Gleichzeitig nimmt man nun dieses Befehlssignal, welches durch die nachfolgenden bedingten Befehlsblöcke durchgeht um den eigentlichen Zähler zu erhöhen und dies auszugeben(Befehl 3.5, Befehl 3.6). Um den Zähler zurückzusetzen wird auch hier einfach das Punktestand-Ziel gelöscht und durch den Befehl 3.7 neu erstellt.


Befehlsblöcke mit Befehlen:
scoreboard objectives add PZZaehl.3Wert dummy


scoreboard players add #VarZaehl.3ZaehlerB PZZaehl.3Wert 1
execute if score #VarZaehl.3ZaehlerB PZZaehl.3Wert matches 20..
scoreboard players reset #VarZaehl.3ZaehlerB PZZaehl.3Wert
scoreboard players add #VarZaehl.3ZaehlerA PZZaehl.3Wert 1
tellraw @a[distance=..15] [{"text":"Zähler:3"},{"text":" Der Zähler hat um eins hochgezählt: "},{"score":{"name":"#VarZaehl.3ZaehlerA","objective":"PZZaehl.3Wert"} } ]


scoreboard objectives remove PZZaehl.3Wert

Variante 4[Bearbeiten | Quelltext bearbeiten]

Schaltnetze Zähler (Befehle) Bild 4.1.png

Dieser Zähler zählt von einem festgelegten Wert runter auf null. Zuerst benötigt man ein Punktestand-Ziel, das durch den Befehl 4.1 erstellt wird, welches für den Zähler benötigt wird(Befehl 4.2), welcher den Startwert vorgibt und anschließend im Chat durch den Befehl 4.3 anzeigt. Die Variable die runtergezählt werden soll bekommt den Wert der Zählervariable(Befehl 4.4) damit der Startwert unverändert bleibt. Nun kann man den Wiederhol-Befehlsblock einschalten(Befehl 4.5) welcher zuerst prüft ob der Startwert größer als eins ist und dann zählt er durch den Befehl 4.6 runter und gibt den aktuellen Wert in den Chat aus(Befehl 4.7). Das Punktestand-Ziel kann durch das Umlegen des Hebels ins Ausgangsstellung durch den Befehl 4.8 gelöscht werden.


Befehlsblöcke mit Befehlen:
scoreboard objectives add PZZaehl.4Wert dummy


scoreboard players add #VarZaehl.4ZaehlerB PZZaehl.4Wert 1
tellraw @a[distance=..15] [{"text":"Zähler:4"},{"text":" Der Hochzählwert wurde um eins erhöht: "},{"score":{"name":"#VarZaehl.4ZaehlerB","objective":"PZZaehl.4Wert"} } ]
scoreboard players operation #VarZaehl.4ZaehlerA PZZaehl.4Wert = #VarZaehl.4ZaehlerB PZZaehl.4Wert


execute if score #VarZaehl.4ZaehlerA PZZaehl.4Wert matches 1..
scoreboard players remove #VarZaehl.4ZaehlerA PZZaehl.4Wert 1
tellraw @a[distance=..15] [{"text":"Zähler:4"},{"text":" Der Zähler hat von dem Startwert "},{"score":{"name":"#VarZaehl.4ZaehlerB","objective":"PZZaehl.4Wert"} },{"text":" runtergezählt: "},{"score":{"name":"#VarZaehl.4ZaehlerA","objective":"PZZaehl.4Wert"} } ]


scoreboard objectives remove PZZaehl.4Wert

Variante 5[Bearbeiten | Quelltext bearbeiten]

Schaltnetze Zähler (Befehle) Bild 5.1.png

Dieser Zähler rechnet nach Sekunden runter auf null. Man stellt die Sekunden ein und anschließend muss man den Runterzähler starten und im nu beginnt er die verbleibenden Sekunden runter zu zählen. Dazu muss zuerst ein Punktestand-Ziel durch den Befehl 5.1 erstellt werden, welches aussagt, was man überhaupt speichern möchte (Zahlenwerte). Nun wird ein Objekt als Zählvariable erstellt(Befehl 5.2), welches wie eine normale Variable funktioniert, nur eben das es hierbei sich um ein richtiges Objekt in der Minecraft-Welt handelt. Nun kann man an einem Befehlsblock mit dem Befehl 5.3 den Sekundenwert der Zählvariable erhöhen. Dies wird auch in den Chat durch den Befehl 5.4 ausgegeben. Nun kann man den Wiederhol-Befehlsblock mit dem Befehl 5.5 starten. Dieser prüft nun ob das Objekt, welches als Zählvariable funktioniert, mindestens einen Wert von einer eins hat oder über eins liegt. Wenn das zutrifft, wird ein bedingter Ketten-Befehlsblock aktiv(Befehl 5.6), der eine Tickzählvariable um eins erhöht. Hierbei entsprechen 20 Spielticks eine Sekunde, deshalb wird nun im nächsten Schritt abgefragt, ob die Tickzählvariable einen Wert von 20 erreicht hat, dies geschieht durch den Befehl 5.7. Nur wenn das eingetreten ist, werden die nächsten bedingten Ketten-Bewfehlsblöcke aktiv. Dabei wird die Tickzählvariable wieder auf null zurückgesetzt(Befehl 5.8), der Sekundenwert um eins verringert(Befehl 5.9) und der gesamte Vorgang in den Chat durch den Befehl 5.10 ausgegeben. Der Runterzählvorgang wird solange durchgeführt, bis der Zähler den Wert null erreicht. Möchte man dann wieder den Zähler ausschalten, so legt man einfach den Hebel mit der Redstone-Fackel um und das Punktestand-Ziel, sowie das Zählobjekt werden gelöscht(Befehl 5.11, Befehl 5.12). Zum besseren Verständnis gibt es nochmals eine einfache Übersicht über den Zählvorgang als Struktogramm(Befehl 5.13).


Befehlsblöcke mit Befehlen:
scoreboard objectives add PZZaehl.5Wert dummy
summon minecraft:armor_stand ~ ~2 ~ {NoGravity:true,CustomName:"{\"text\":\"ObjZaehl.5Speicher \"}",Small:true,Invisible:true,Marker:true,ArmorItems:[{},{},{},{id:"minecraft:chest",Count:1b} ] }


scoreboard players add @e[type=minecraft:armor_stand,name="ObjZaehl.5Speicher"] PZZaehl.5Wert 1
tellraw @a[distance=..15] [{"text":"Zähler:5"},{"text":" Die Sekunden zum runterzählen wurden um eins erhöht: "},{"score":{"name":"@e[type=minecraft:armor_stand,name=ObjZaehl.5Speicher]","objective":"PZZaehl.5Wert"} } ]


execut if score @e[type=minecraft:armor_stand,name="ObjZaehl.5Speicher"] PZZaehl.5Wert matches 1
scoreboard players add #VarZaehl.5TickZaehler PZZaehl.5Wert 1
execute if score #VarZaehl.5TickZaehler PZZaehl.5Wert matches 20..
scoreboard players set #VarZaehl.5TickZaehler PZZaehl.5Wert 0
scoreboard players remove @e[type=minecraft:armor_stand,name="ObjZaehl.5Speicher"] PZZaehl.5Wert 1
tellraw @a[distance=..15] [{"text":"Zähler.5"},{"text":" Der Sekundenzähler steht bei: "},{"score":{"name":"@e[type=minecraft:armor_stand,name=\"ObjZaehl.5Speicher\"]","objective":"PZZaehl.5Wert"} } ]


scoreboard objectives remove PZZaehl.5Wert
kill @e[type=minecraft:armor_stand,name=ObjZaehl.5Speicher]
Struktogramm: ↑ 5.13
Sekundenrunterzähler
Punktestand-Ziel PZZaehl.5Wert definiert
Sekundenvariable als Objekt @e[type=minecraft:armor_stand,name="ObjZaehl.5Speicher"] definiert
Manuell Wert für Sekundenvariable festlegen
Solange Sekundenvariable größer oder gleich eins:
Zählvariable #VarZaehl.5TickZaehler um eins erhöhen
Wenn Zählvariable gleich oder größer 20 ist:
Zählvariable wieder auf null setzen
Sekundenvariable um eins verringern
Ergebnis in den Chat ausgeben