Das offizielle Minecraft Wiki twittert hier: Wiki-Twitter  –  Chatte im Wiki-Discord  – Noch keinen Server gefunden? Es gibt einen Wiki-Server
Das Technik Wiki besitzt nun eine brasilianisch-portugiesische Übersetzung.

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 BefehlblockBefehl 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 erhöhtBefehl 1.2. Damit man diese Werte auch sehen kann, gibt nun ein nachgeschalteter Ketten-Befehlsblock im immer aktiven Zustand die Werte in dem Chat ausBefehl 1.3. 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-ZielBefehl 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.2Zaehler PZZaehl.1Wert 1
tellraw @a[distance=..15] [{"text":"Zähler:1"},{"text":" Der Zähler hat um eins hochgezählt: "},{"score":{"name":"#VarZaehl.2Zaehler","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 festlegtBefehl 2.1 (ganzzahlig). Nun legen wir aber zwei statt nur eine Variable an. Zuerst wird die Variable #VarZähl:2ZählerB angelegtBefehl 2.2, welche nachher zum Erhöhen des eigentlichen Hochzählens genommen wird. Zusätzlich bekommt man die Meldung, welchen Wert sie nun hatBefehl 2.3. Nun addiert man immer diese festgelegte Variable mit der Variable, die immer hochgezählt werden sollBefehl 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 ausBefehl 2.5. Damit auch hier der Zähler zurückgesetzt werden kann, muss das Punktestand-Ziel gelöscht werden und erneut definiert werdenBefehl 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 angelegtBefehl 3.1. Nun folgt zuerst ein kleiner Zähler vorab, bevor der richtige Zähler die Ausgabe übernimmt. Dazu wird eine Variable angelegtBefehl 3.2 die nun bis 20 hochgezählt wirdBefehl 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 gesetztBefehl 3.4. Gleichzeitig nimmt man nun dieses Befehlssignal, welches durch die nachfolgenden bedingten Befehlsblöcke durchgeht um den eigentlichen Zähler zu erhöhen und dies auszugebenBefehl 3.5Befehl 3.6. Um den Zähler zurückzusetzen wird auch hier einfach das Punktestand-Ziel gelöscht und neu erstelltBefehl 3.7.


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


scoreboard players add #VarZaehl.3ZaehlerB PZZaehl.3Wert 1
scoreboard players test #VarZaehl.3ZaehlerB PZZaehl.3Wert 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-ZielBefehl 4.1, welches für den Zähler benötigt wirdBefehl 4.2, welcher den Startwert vorgibt und anschließend im Chat anzeigtBefehl 4.3. Die Variable die runtergezählt werden soll bekommt den Wert der ZählervariableBefehl 4.4 damit der Startwert unverändert bleibt. Nun kann man den Wiederhol-Befehlsblock einschaltenBefehl 4.5 welcher zuerst prüft ob der Startwert größer als eins ist und dann zählt er runterBefehl 4.6 und gibt den aktuellen Wert in den Chat ausBefehl 4.7. Das Punktestand-Ziel kann durch das Umlegen des Hebels ins Ausgangsstellung gelöscht werdenBefehl 4.8.


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


scoreboard players test #VarZaehl.4ZaehlerA PZZaehl.4Wert 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 erstellt werdenBefehl 5.1, welches aussagt, was man überhaupt speichern möchte (Zahlenwerte). Nun wird ein Objekt als Zählvariable erstelltBefehl 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 BefehlsblockBefehl 5.3 den Sekundenwert der Zählvariable erhöhen. Dies wird auch in den Chat ausgegebenBefehl 5.4. Nun kann man den Wiederhol-Befehlsblock startenBefehl 5.5. 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 aktivBefehl 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 hatBefehl 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ückgesetztBefehl 5.8, der Sekundenwert um eins verringertBefehl 5.9 und der gesamte Vorgang in den Chat ausgegebenBefehl 5.10. 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öschtBefehl 5.11Befehl 5.12. Zum besseren Verständnis gibt es nochmals eine einfache Übersicht über den Zählvorgang als StruktogrammBefehl 5.13.


Befehlsblöcke mit Befehlen:
scoreboard objectives add PZZaehl.5Wert dummy
summon minecraft:armor_stand ~ ~2 ~ {NoGravity:true,CustomName:"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"} } ]


scoreboard players test @e[type=minecraft:armor_stand,name=ObjZaehl.5Speicher] PZZaehl.5Wert 1
scoreboard players add #VarZaehl.5TickZaehler PZZaehl.5Wert 1
scoreboard players test #VarZaehl.5TickZaehler PZZaehl.5Wert 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