Addierwerk (Befehle)

Ein **Addierwerk** kann die Werte zweier Variablen zusammen addieren und in eine Ergebnis-Variable speichern.

## Variante 1

* Grundmodule
* Befehl
* Befehlssignal
* Grund-Element (Befehle)
* Signal-Element (Befehle)
* Signalleitung (Befehle)
* Schaltkreise
* Schaltnetze
 * Zähler (Befehle)
* JSON-Text

* 1 Redstone-Fackel
* 2 Befehlsblock
* 7 Ketten-Befehlsblock
* 1 Wiederhol-Befehlsblock

Man kann mit dem Addierwerk zwei Variablen zusammenrechnen lassen und das Ergebnis in eine dritte Variable speichern.

Einschalten
Wenn man das Addierwerk einschaltet, wird das Punkte-Ziel erstellt und alle Variablen mit Werten gesetzt.

* Befehl 1.1 Das Wert-Ziel das durch den trigger-Befehl ausgelöst werden kann, dient zur Speicherung der Werte von Variablen.
* Befehl 1.2 Die Variable 1 und 2 werden durch den operation-Befehl gesetzt, welche automatisch den Wert 0 erhalten und die Ergebnis-Variable erhält aus dieser Zuweisung wiederum durch den result-Befehl den Wert 0.

Wiederholen
Beim Einschalten wird ebenfalls der Wiederhol-Befehlsblock aktiv.

* Befehl 1.3 Wenn der Spieler auf die erste Schaltfläche für die Variable geklickt hat, so erhält er den Wert 1 und das lässt die Variable 1 um den Wert 1 erhöhen.
* Befehl 1.4 Wie auch bei der Variable 1 wird durch das Klicken auf die zweite Variable, dieser der Wert um eins erhöht.
* Befehl 1.5 Hat man auf die Summe der beiden Variable geklickt, so erhält der Spieler den Wert 3. Hierbei wird der Wert von Variable 1 der Ergebnis-Variable zugewiesen.
* Befehl 1.6 Gleich im Anschluss wird auf die Ergebnis-Variable der Wert von der zweiten Variable darauf addiert.
* Befehl 1.7 Bevor die tellraw-Nachricht ausgegeben wird, muss geprüft werden ob die Ergebnis-Variable bereits einen Wert besitzt, ansonsten erscheint beim Einschalten des Addierwerks die Nachricht mehrmals. Nach dieser Prüfung wird getestet ob der Spieler nicht den Wert 0 hat, denn dann hat er auf eine der Variablen geklickt und so diese Nachricht ausgelöst. Die Nachricht selbst gibt die aktuellen Werte der Variablen und das Ergebnis aus. Jedoch muss auf das Ergebnis selbst geklickt werden damit es aktuell ist.
* Befehl 1.8 Alle Spieler die in einem Radius von 15 Metern um die Befehlsquelle stehen und nicht den Wert 0 besitzen, erhalten die Freischaltung für den trigger-Befehl.
* Befehl 1.9 Und ebenfalls wird ihnen der Wert auf 0 gesetzt.

Ausschalten
Wenn man das Addierwerk wieder ausschaltet, wird das Punkte-Ziel entfernt

* Befehl 1.10 Das Ziel für die Variablen-Werte wird gelöscht.

```
scoreboard objectives add PZAddW.1Wert trigger ["Addierwerk.1: ",{"text":"Wert der Variablen","bold":true}]

```

↑ 1.2:

```
execute store result score VarAddW.1Ergebnis PZAddW.1Wert run scoreboard players operation VarAddW.1Variable1 PZAddW.1Wert = VarAddW.1Variable2 PZAddW.1Wert

```

↑ 1.3:

```
execute if entity @p[distance=..15,scores={PZAddW.1Wert=1}] run scoreboard players add VarAddW.1Variable1 PZAddW.1Wert 1

```

↑ 1.4:

```
execute if entity @p[distance=..15,scores={PZAddW.1Wert=2}] run scoreboard players add VarAddW.1Variable2 PZAddW.1Wert 1

```

↑ 1.5:

```
execute if entity @p[distance=..15,scores={PZAddW.1Wert=3}] run scoreboard players operation VarAddW.1Ergebnis PZAddW.1Wert = VarAddW.1Variable1 PZAddW.1Wert

```

↑ 1.6:

```
execute if entity @p[distance=..15,scores={PZAddW.1Wert=3}] run scoreboard players operation VarAddW.1Ergebnis PZAddW.1Wert += VarAddW.1Variable2 PZAddW.1Wert

```

↑ 1.7:

```
execute if score VarAddW.1Variable1 PZAddW.1Wert matches 0.. as @a[distance=..15] unless entity @s[scores={PZAddW.1Wert=0}] run tellraw @a[distance=..15] ["Addierwerk.1:\n",{"text":"var1 (","bold":true},{"text":"=var1 + 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Variable1 + 1 (Summand)"} },"clickEvent":{"action":"run_command","value":"/trigger PZAddW.1Wert set 1"} },{"text":") == ","bold":true},{"score":{"name":"VarAddW.1Variable1","objective":"PZAddW.1Wert"},"color":"dark_purple","bold":true},"\n",{"text":"var2 (","bold":true},{"text":"=var2 + 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Variable2 + 1 (Summand)"} },"clickEvent":{"action":"run_command","value":"/trigger PZAddW.1Wert set 2"} },{"text":") == ","bold":true},{"score":{"name":"VarAddW.1Variable2","objective":"PZAddW.1Wert"},"color":"dark_purple","bold":true},"\n",{"text":"ergebnis (","bold":true},{"text":"=var1 + var2","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für das Ergebnis (Summe)"} },"clickEvent":{"action":"run_command","value":"/trigger PZAddW.1Wert set 3"} },{"text":") == ","bold":true},{"score":{"name":"VarAddW.1Ergebnis","objective":"PZAddW.1Wert"},"color":"dark_purple","bold":true} ]

```

↑ 1.8:

```
execute as @a[distance=..15] unless entity @s[scores={PZAddW.1Wert=0}] run scoreboard players enable @s PZAddW.1Wert

```

↑ 1.9:

```
execute as @a[distance=..15] unless entity @s[scores={PZAddW.1Wert=0}] run scoreboard players set @s PZAddW.1Wert 0

```

↑ 1.10:

```
scoreboard objectives remove PZAddW.1Wert

```

*Volladdierer* => Redstone;
*Halbsubtrahierer* => Redstone;
*Vollsubtrahierer* => Redstone;
*Bitschieber* => Redstone;
***Addierwerk* =>** Redstone, **Befehle**;
*Subtrahierwerk* => Redstone, Befehle;
*Multiplizierwerk* => Redstone, Befehle;
*Dividierwerk* => Redstone, Befehle;
*Moduluswerk* => Befehle;
*Zahlenrechner* => Redstone;
*Rechenwerk* => Redstone;
*Rechner* => Redstone;