Technik Wiki
Advertisement
Technik Wiki
Gruppe: Grid Redstone-Fackel.png
Schaltkreise

Grid Roter Sand blass.png mit Mechaniken

Grid Redstone.png mit Redstone

Grid Befehlsblock.png mit Befehlen
Noch in keiner
Download-Welt enthalten.

Grid Redstone-Block.png mehr Redstone
                Hier:
Grid Wiederhol-Befehlsblock.png mehr Befehle
Wiki Redstone-Welt.png
Alle neuen oder überarbeiteten Techniken auf dieser Seite sind noch nicht in der aktuellen Redstone-Welt vorhanden.
In einem der nächsten Updates werden sie dort hinzugefügt werden.

Ein erweiterter Zufallsgenerator ermöglicht nicht nur einen zufälligen Zahlenwert zu generieren, sondern auch das zufällige Auswählen von fest vorbestimmten Zahlenwerten. So sind diese Zahlen in Feldern gespeichert und eine Zufallszahl die im Wertebereich der Feldpositionen liegt, wählt dann eine dieser Zahlen aus. Das ermöglicht es einem nur ganz spezielle Zahlen zu generieren. Ebenso kann es sein, dass der Anwender die Wahrscheinlichkeit einstellen möchte, sodass bestimmte Zahlen häufiger vorkommen als andere. Dazu muss die Zahl die besonders häufig ausgewählt werden soll, kopiert werden. Dadurch kann sie mehr als einmal zufällig gezogen werden.

Inhaltsverzeichnis

Variante 1[]

Zufallsgenerator (Befehle, erweitert) Bild 1.1.png Zufallsgenerator (Befehle, erweitert) Bild 1.2.png

Mit diesem Zufallsgenerator werden Zufallszahlenwerte erzeugt und in eine Felderreihe gespeichert. Die dabei erzeugten Zufallszahlen liegen immer im Zehnerbereich der aktuellen Position, so ist das erste Feld im Bereich zehn bis neunzehn und das zweite Feld zwanzig bis neunundzwanzig usw. Man erhält einen Stock, den man in der Schnellleiste ausgewählt haben muss und dann erhält im Chat ein Optionen-Menü in dem man auf Schaltflächen klicken kann. Dort kann man auf die Schaltfläche für die Zufallsposition klicken damit der Zufallsgenerator eine der in den Feldern liegenden Zahlenwerte auswählt und anzeigt.

Einschalten
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:
Datenpaket


Variante 1: Start-Funktion
Die Start-Funktion erstellt das Punkte-Ziel und erzeugt die benötigten Variablen. Ebenfalls wird ein NBT-Speicher angelegt und die Spieler erhalten den Stock.

Editor Icon.png zufallsgenerator:vp1start.mcfunction
# Zwei Punkte-Ziele werden erstellt.
scoreboard objectives add PZZufG.p1Pos dummy ["Zufallsgenerator.erweitert.1: ",{"text":"Feldposition und Auslöser","bold":true}]
scoreboard objectives add PZZufG.p1Wert trigger ["Zufallsgenerator.erweitert.1: ",{"text":"Wert der Variablen","bold":true}]

# Die Konstante für dne Wert zehn wird gesetzt.
scoreboard players set KonstZufG.p1ZEHN PZZufG.p1Wert 10

# Ein NBT-Speicher wird angelegt.
data merge storage zufallsgenerator:vp1daten {EigZufG.p1Felder:[]}

# Spieler im Umkreis von 15 Blöcken erhalten einen Stock mit Verzauberungsschimmer.
give @a[distance=..15] minecraft:stick{EigZufG.p1Alle:true,EigZufG.p1Felder:true,Enchantments:[{id:-1}],display:{Name:'{"text":"Zufallsgenerator","color":"dark_purple","bold":true}',Lore:['"Wähle den Stock aus"','"um Zahlenwerte in eine"','"Felderreihe zu speichern"','"und um einen zufälligen"','"Zahlenwert davon zu erhalten."'] } }


Variante 1: Zyklus-Funktion
Die Zyklus-Funktion prüft ob der Spieler den Stock ausgewählt hat und ruft dann die Auslöser-Funktion auf.

Editor Icon.png zufallsgenerator:vp1zyklus.mcfunction
# Wenn Spieler den Stock ausgewählkt haben, erhalten sie ein Etikett.
tag @a[nbt={SelectedItem:{tag:{EigZufG.p1Felder:true} } }] add EtiZufG.p1Ausgewaehlt

# Wenn Spieler den Stock gerade erst ausgewählt haben, wird ihnen der Auslöser-Wert und die Position gesetzt.
scoreboard players set @a[tag=EtiZufG.p1Ausgewaehlt,tag=!EtiZufG.p1Auswahl] PZZufG.p1Wert -99
scoreboard players add @a[tag=EtiZufG.p1Ausgewaehlt,tag=!EtiZufG.p1Auswahl] PZZufG.p1Pos 0

# Wenn Spieler den Stock ausgewählt haben und irgend einen Auslöser angeklickt haben, wird die Auslöser-Funktion gestartet.
execute as @a[tag=EtiZufG.p1Ausgewaehlt] unless entity @s[scores={PZZufG.p1Wert=0}] run function zufallsgenerator:vp1ausloeser

# Es wird ein Etikett gegeben oder genommen, je nach dem ob man gerade Stock ausgewählt hat, oder nicht.
tag @a[tag=EtiZufG.p1Ausgewaehlt,tag=!EtiZufG.p1Auswahl] add EtiZufG.p1Auswahl
tag @a[tag=!EtiZufG.p1Ausgewaehlt,tag=EtiZufG.p1Auswahl] remove EtiZufG.p1Auswahl

# Das Etikett wird wieder entfernt.
tag @a[tag=EtiZufG.p1Ausgewaehlt] remove EtiZufG.p1Ausgewaehlt


Variante 1: Auslöser-Funktion
Die Auslöser-Funktion bieten den Spielern über den Chat mehrere Schaltflächen an, die man betätigen kann um die Felderreihe mit Zufallswerten zu füllen und um davon eine zufällige Position auszuwählen.

Editor Icon.png zufallsgenerator:vp1ausloeser.mcfunction
#Wenn man die Felderreihe verlängert oder eine Zufallsposition haben möchte, wird eine Partikelwolke erzeugt, aus der man den Zufallswert generiert.
execute at @s[scores={PZZufG.p1Wert=1..2}] run summon minecraft:area_effect_cloud ~ ~ ~ {Duration:1,Tags:["EtiZufG.p1Alle"]}
execute at @s[scores={PZZufG.p1Wert=1..2}] store result score VarZufG.p1Zufallswert PZZufG.p1Wert run data get entity @e[type=minecraft:area_effect_cloud,tag=EtiZufG.p1Alle,sort=nearest,limit=1] UUID[0] 1

# Wenn man auf die Länge geklickt hat, wird die Felderreihe verlängert oder gekürzt.
execute if entity @s[scores={PZZufG.p1Wert=1}] run data modify storage zufallsgenerator:vp1daten "EigZufG.p1Felder" append value 0
execute if entity @s[scores={PZZufG.p1Wert=-1}] run data remove storage zufallsgenerator:vp1daten "EigZufG.p1Felder"[-1]

# Die Anzahl der Felder wird ausgelesen und in eine Variable gespeichert.
execute store result score VarZufG.p1Laenge PZZufG.p1Wert run data get storage zufallsgenerator:vp1daten "EigZufG.p1Felder"

# Damit der Zufallswert in der Felderreiche möglichst in Zehnerschritten läuft, wird der Zufallswert in den Wertebereich null bis neun eingegliedert und anschließend das Vielfache von Zehn aufsummiert, abhängig der bereits eingetragenen Felder.
execute if entity @s[scores={PZZufG.p1Wert=1}] run scoreboard players operation VarZufG.p1Zufallswert PZZufG.p1Wert %= KonstZufG.p1ZEHN PZZufG.p1Wert
execute if entity @s[scores={PZZufG.p1Wert=1}] run scoreboard players operation VarZufG.p1Min PZZufG.p1Wert = KonstZufG.p1ZEHN PZZufG.p1Wert
execute if entity @s[scores={PZZufG.p1Wert=1}] run scoreboard players operation VarZufG.p1Min PZZufG.p1Wert *= VarZufG.p1Laenge PZZufG.p1Wert
execute if entity @s[scores={PZZufG.p1Wert=1}] store result storage zufallsgenerator:vp1daten "EigZufG.p1Felder"[-1] int 1 run scoreboard players operation VarZufG.p1Zufallswert PZZufG.p1Wert += VarZufG.p1Min PZZufG.p1Wert

# Für die Zufallsposition wird der Zufallswert modulo der Länge der Felderreihe gerechnet und anschließend in den Punktestand des Spielers gespeichert.
execute if score VarZufG.p1Laenge PZZufG.p1Wert matches 1.. store result score @s[scores={PZZufG.p1Wert=2}] PZZufG.p1Pos run scoreboard players operation VarZufG.p1Zufallswert PZZufG.p1Wert %= VarZufG.p1Laenge PZZufG.p1Wert

# Wenn man die Länge der Felderreihe verkleinern möchte, wird geprüft ob die aktuelle Position nicht auf dem gelöschten Feld lag, falls doch, wird die Position auf das erste Feld gesetzt.
execute if score @s[scores={PZZufG.p1Wert=-1}] PZZufG.p1Pos >= VarZufG.p1Laenge PZZufG.p1Wert run scoreboard players set @s PZZufG.p1Pos 0

# Für den Aufruf der Felder-Funktion wird die Variable für die aktuelle Position auf null gesetzt.
scoreboard players set VarZufG.p1AktuellePosition PZZufG.p1Pos 0
function zufallsgenerator:vp1felder

# Der Spieler mit dem Stock erhält eine Chat-Nachricht, mit allen Optionen für die Felderreihe mit Zufallswerten.
tellraw @s ["Zufallsgenerator.erweitert.1:\n",{"text":"Felder == [","bold":true},{"storage":"zufallsgenerator:vp1daten","nbt":"\"EigZufG.p1Felder\"[]","color":"dark_purple","bold":true},{"text":"]","bold":true},"\n",{"text":"Felder.laenge (","bold":true},{"text":"=laenge + 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Länge + 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZZufG.p1Wert set 1"} },{"text":",","bold":true},{"text":"=laenge - 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Länge - 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZZufG.p1Wert set -1"} },{"text":") == ","bold":true},{"score":{"name":"VarZufG.p1Laenge","objective":"PZZufG.p1Wert"},"color":"gold","bold":true},"\n",{"text":"Felder.position = ","bold":true},{"text":"zufallswert(0,laenge-1)","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für eine zufällige Position"} },"clickEvent":{"action":"run_command","value":"/trigger PZZufG.p1Wert set 2"} },"\n",{"text":"Felder.position == ","bold":true},{"score":{"name":"@s","objective":"PZZufG.p1Pos"},"color":"green","bold":true},"\n",{"text":"Felder[","bold":true},{"score":{"name":"@s","objective":"PZZufG.p1Pos"},"color":"green","bold":true},{"text":"] == ","bold":true},{"score":{"name":"VarZufG.p1Wert","objective":"PZZufG.p1Pos"},"color":"dark_purple","bold":true}]

# Der Spieler erhält die Berechtigung den Auslöser erneut auszuführen und sein Wert wird auf null gesetzt.
scoreboard players enable @s PZZufG.p1Wert
scoreboard players set @s PZZufG.p1Wert 0


Variante 1: Felder-Funktion
Die Felder-Funktion ruft sich solange selbst auf solang wie die Felderreihe lang ist. Dabei wird bei jedem einzelnen Feld geprüft ob das die gesuchte Position ist.

Editor Icon.png zufallsgenerator:vp1felder.mcfunction
# Wenn die Zufalls-Position erreicht wurde, wird der Wert an dieser Position aus der Felderreihe ausgelesen.
execute if score @s PZZufG.p1Pos = VarZufG.p1AktuellePosition PZZufG.p1Pos store result score VarZufG.p1Wert PZZufG.p1Pos run data get storage zufallsgenerator:vp1daten "EigZufG.p1Felder"[0]

# Das erste Feld wird an die letzte Position der Felderreihe verschoben.
data modify storage zufallsgenerator:vp1daten "EigZufG.p1Felder" append from storage zufallsgenerator:vp1daten "EigZufG.p1Felder"[0]
data remove storage zufallsgenerator:vp1daten "EigZufG.p1Felder"[0]

# Die aktuelle Position wird um eins erhöht und wenn sie damit noch nicht die komplette Felderreihe durchlaufen hat, wird die Felder-Funktion selbst nochmal aufgerufen.
scoreboard players add VarZufG.p1AktuellePosition PZZufG.p1Pos 1
execute if score VarZufG.p1AktuellePosition PZZufG.p1Pos < VarZufG.p1Laenge PZZufG.p1Wert run function zufallsgenerator:vp1felder


Variante 1: Stopp-Funktion
Die Stopp-Funktion löscht das Punkte-Ziele wieder. Sie leert den NBT-Speicher und löscht den Stock.

Editor Icon.png zufallsgenerator:vp1stopp.mcfunction
# Die zwei Punkte-Ziele werden entfernt.
scoreboard objectives remove PZZufG.p1Pos
scoreboard objectives remove PZZufG.p1Wert

# Der NBT-Speicher wird geleert.
data remove storage zufallsgenerator:vp1daten "EigZufG.p1Felder"

# Das Etikett zur Auswahl des Stockes wird entfernt.
tag @a[tag=EtiZufG.p1Auswahl] remove EtiZufG.p1Auswahl

# Der Stock wird aus dem Inventar entfernt.
clear @a minecraft:stick{EigZufG.p1Alle:true}

# Falls der Stock auf den Boden geworfen wurde, wird ebenfalls entfernt.
kill @e[type=minecraft:item,nbt={Item:{tag:{EigZufG.p1Alle:true} } }]


Variante 2[]

Zufallsgenerator (Befehle, erweitert) Bild 2.1.png Zufallsgenerator (Befehle, erweitert) Bild 2.2.png

Mit Hilfe dieses Zufallsgenerators kann man bestimmten Zahlenwerten eine höhere Wahrscheinlichkeit geben, damit diese als Zufallszahl errechnet werden. Es wird eine Felderreihe angelegt in der Zufallszahlen eingefügt werden und die Werte von diesen sind von der Position abhängig. Man erhält einen Stock den man auswählen muss um die Felderreihe per Chat-Schaltflächen füllen zu können. Hat man mindestens einen Zahlenwert hinzugefügt, kann man auf die Kopie-Schaltfläche klicken, damit weitere Zahlen die man in die Felderreihe einfügt den selben Wert besitzen wie der letzte Zahlenwert. Damit kann man dann die Häufigkeit bestimmter Zahlen ändern.

Einschalten
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:
Datenpaket


Variante 2: Start-Funktion
Die Start-Funktion erstellt das Punkte-Ziel und erzeugt die benötigten Variablen. Es wird ein NBT-Speicher erzeugt und ein Markierer. Ebenfalls erhalten die Spieler den Stock.

Editor Icon.png zufallsgenerator:vp2start.mcfunction
# Zwei Punkte-Ziele werden erstellt.
scoreboard objectives add PZZufG.p2Pos dummy ["Zufallsgenerator.erweitert.2: ",{"text":"Feldposition und Auslöser","bold":true}]
scoreboard objectives add PZZufG.p2Wert trigger ["Zufallsgenerator.erweitert.2: ",{"text":"Wert der Variablen","bold":true}]

# Die Konstante mit dem Wert zehn wird erstellt.
scoreboard players set KonstZufG.p2ZEHN PZZufG.p2Wert 10

# Ein NBT-Speicher wird angelegt.
data merge storage zufallsgenerator:vp2daten {EigZufG.p2Felder:[]}

# Ein Markierer, der in seinem Namen einen Wahrheitswert speichern kann, wird erzeugt.
summon minecraft:marker ~ ~ ~ {CustomName:'{"text":"falsch","color":"red","bold":true}',Tags:["EtiZufG.p2Alle","EtiZufG.p2Bool"]}

# Spieler im Umkreis von 15 Blöcken erhalten einen Stock mit Verzauberungsschimmer.
give @a[distance=..15] minecraft:stick{EigZufG.p2Alle:true,EigZufG.p2Felder:true,Enchantments:[{id:-1}],display:{Name:'{"text":"Zufallsgenerator","color":"dark_purple","bold":true}',Lore:['"Wähle den Stock aus"','"um Zahlenwerte in eine"','"Felderreihe zu speichern"','"und um einen zufälligen"','"Zahlenwert davon zu erhalten."'] } }


Variante 2: Zyklus-Funktion
Die Zyklus-Funktion prüft ob der Stock ausgewählt wurde und nur dann wird für diese Spieler die Auslöser-Funktion geladen.

Editor Icon.png zufallsgenerator:vp2zyklus.mcfunction
# Wenn Spieler den Stock ausgewählkt haben, erhalten sie ein Etikett.
tag @a[nbt={SelectedItem:{tag:{EigZufG.p2Felder:true} } }] add EtiZufG.p2Ausgewaehlt

# Wenn Spieler den Stock gerade erst ausgewählt haben, wird ihnen der Auslöser-Wert und die Position gesetzt.
scoreboard players set @a[tag=EtiZufG.p2Ausgewaehlt,tag=!EtiZufG.p2Auswahl] PZZufG.p2Wert -99
scoreboard players add @a[tag=EtiZufG.p2Ausgewaehlt,tag=!EtiZufG.p2Auswahl] PZZufG.p2Pos 0

# Wenn Spieler den Stock ausgewählt haben und irgend einen Auslöser angeklickt haben, wird die Auslöser-Funktion gestartet.
execute as @a[tag=EtiZufG.p2Ausgewaehlt] unless entity @s[scores={PZZufG.p2Wert=0}] run function zufallsgenerator:vp2ausloeser

# Es wird ein Etikett gegeben oder genommen, je nach dem ob man gerade Stock ausgewählt hat, oder nicht.
tag @a[tag=EtiZufG.p2Ausgewaehlt,tag=!EtiZufG.p2Auswahl] add EtiZufG.p2Auswahl
tag @a[tag=!EtiZufG.p2Ausgewaehlt,tag=EtiZufG.p2Auswahl] remove EtiZufG.p2Auswahl

# Das Etikett wird wieder entfernt.
tag @a[tag=EtiZufG.p2Ausgewaehlt] remove EtiZufG.p2Ausgewaehlt


Variante 2: Auslöser-Funktion
Die Auslöser-Funktion bieten den Spielern über den Chat mehrere Schaltflächen an, die man betätigen kann um die Felderreihe aufzufüllen und um eine Zufallsposition auswählen zu können. Man kann auch vorhandene Werte kopieren.

Editor Icon.png zufallsgenerator:vp2ausloeser.mcfunction
# Hat man auf die Schaltfläche für das Verlängern der Felderreihe geklickt oder für eine Zufallsposition, so wird eine Partikelwolke erzeugt, mit der ein Zufallswert generiert wird.
execute at @s[scores={PZZufG.p2Wert=1..2}] run summon minecraft:area_effect_cloud ~ ~ ~ {Duration:1,Tags:["EtiZufG.p2Alle"]}
execute at @s[scores={PZZufG.p2Wert=1..2}] store result score VarZufG.p2Zufallswert PZZufG.p2Wert run data get entity @e[type=minecraft:area_effect_cloud,tag=EtiZufG.p2Alle,sort=nearest,limit=1] UUID[0] 1

# Wenn man auf die Länge geklickt hat, wird die Felderreihe verlängert oder gekürzt.
execute if entity @s[scores={PZZufG.p2Wert=1}] run data modify storage zufallsgenerator:vp2daten "EigZufG.p2Felder" append value 0
execute if entity @s[scores={PZZufG.p2Wert=-1}] run data remove storage zufallsgenerator:vp2daten "EigZufG.p2Felder"[-1]

# Die Anzahl der Felder wird ausgelesen und in eine Variable gespeichert.
execute store result score VarZufG.p2Laenge PZZufG.p2Wert run data get storage zufallsgenerator:vp2daten "EigZufG.p2Felder"

# Hat man auf die Kopie-Schaltfläche geklickt, wird der Namen des Markierers entsprechend auf den Wahrheitswert gesetzt. Dadurch wird das letzte Feld kopiert und erneut hinzugefügt, wenn man auf Verlängern geklickt hat. Wenn man auf verkürzen geklickt hat, wird ebenfalls der Markierer auf falsch gesetzt.
execute if entity @s[scores={PZZufG.p2Wert=3}] if score VarZufG.p2Laenge PZZufG.p2Wert matches 1.. run data merge entity @e[type=minecraft:marker,tag=EtiZufG.p2Bool,sort=nearest,limit=1] {CustomName:'{"text":"wahr","color":"green","bold":true}'}
execute if entity @s[scores={PZZufG.p2Wert=-3..-1}] run data merge entity @e[type=minecraft:marker,tag=EtiZufG.p2Bool,sort=nearest,limit=1] {CustomName:'{"text":"falsch","color":"red","bold":true}'}

# Wenn die Felderreihe verlängert, wird der Zufallswert in einen Bereich von null bis neun zurecht gestutzt und anschließend wird das Vielfache von Zehn abhängig der aktuellen Größe der Felderreihe aufsummiert. Dies erfolgt jedoch nur, wenn der Markierer den Wert auf falsch gesetzt hat, ansonsten wird der Vorgang abgebrochen, da dann der Wert vom letzten Feld verwendet wird.
execute if entity @s[scores={PZZufG.p2Wert=1}] if entity @e[type=minecraft:marker,tag=EtiZufG.p2Bool,name="falsch",sort=nearest,limit=1] run scoreboard players operation VarZufG.p2Zufallswert PZZufG.p2Wert %= KonstZufG.p2ZEHN PZZufG.p2Wert
execute if entity @s[scores={PZZufG.p2Wert=1}] if entity @e[type=minecraft:marker,tag=EtiZufG.p2Bool,name="falsch",sort=nearest,limit=1] run scoreboard players operation VarZufG.p2Min PZZufG.p2Wert = KonstZufG.p2ZEHN PZZufG.p2Wert
execute if entity @s[scores={PZZufG.p2Wert=1}] if entity @e[type=minecraft:marker,tag=EtiZufG.p2Bool,name="falsch",sort=nearest,limit=1] run scoreboard players operation VarZufG.p2Min PZZufG.p2Wert *= VarZufG.p2Laenge PZZufG.p2Wert
execute if entity @s[scores={PZZufG.p2Wert=1}] if entity @e[type=minecraft:marker,tag=EtiZufG.p2Bool,name="falsch",sort=nearest,limit=1] store result storage zufallsgenerator:vp2daten "EigZufG.p2Felder"[-1] int 1 run scoreboard players operation VarZufG.p2Zufallswert PZZufG.p2Wert += VarZufG.p2Min PZZufG.p2Wert

# Wenn der Wahrheitswert der Kopie-Schaltfläche auf wahr gesetzt ist, wird der Wert des vorletzen Feldes ausgelesen und in das letzte Feld gespeichert.
execute if entity @s[scores={PZZufG.p2Wert=1}] if entity @e[type=minecraft:marker,tag=EtiZufG.p2Bool,name="wahr",sort=nearest,limit=1] store result storage zufallsgenerator:vp2daten "EigZufG.p2Felder"[-1] int 1 run data get storage zufallsgenerator:vp2daten "EigZufG.p2Felder"[-2]

# Wenn man eine Zufallsposition erhalten möchte, wird der Zufallswert modulo der Felderlänge gerechnet und anschlie0end in den Positions-Wert des Spielers gespeichert.
execute if score VarZufG.p2Laenge PZZufG.p2Wert matches 1.. store result score @s[scores={PZZufG.p2Wert=2}] PZZufG.p2Pos run scoreboard players operation VarZufG.p2Zufallswert PZZufG.p2Wert %= VarZufG.p2Laenge PZZufG.p2Wert

# Wenn man die Länge der Felderreihe verkleinern möchte, wird geprüft ob die aktuelle Position nicht auf dem gelöschten Feld lag, falls doch, wird die Position auf das erste Feld gesetzt.
execute if score @s[scores={PZZufG.p2Wert=-1}] PZZufG.p2Pos >= VarZufG.p2Laenge PZZufG.p2Wert run scoreboard players set @s PZZufG.p2Pos 0

# Für den Aufruf der Felder-Funktion wird die Variable für die aktuelle Position auf null gesetzt.
scoreboard players set VarZufG.p2AktuellePosition PZZufG.p2Pos 0
function zufallsgenerator:vp2felder

# Der Spieler mit dem Stock erhält eine Chat-Nachricht, mit allen Optionen für die Felderreihe mit Zufallswerten.
tellraw @s ["Zufallsgenerator.erweitert.2:\n",{"text":"Felder == [","bold":true},{"storage":"zufallsgenerator:vp2daten","nbt":"\"EigZufG.p2Felder\"[]","color":"dark_purple","bold":true},{"text":"]","bold":true},"\n",{"text":"Felder.laenge (","bold":true},{"text":"=laenge + 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Länge + 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZZufG.p2Wert set 1"} },{"text":",","bold":true},{"text":"=laenge - 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Länge - 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZZufG.p2Wert set -1"} },{"text":") == ","bold":true},{"score":{"name":"VarZufG.p2Laenge","objective":"PZZufG.p2Wert"},"color":"gold","bold":true},"\n",{"text":"Felder.kopie (","bold":true},{"text":"=wahr","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für wahr"} },"clickEvent":{"action":"run_command","value":"/trigger PZZufG.p2Wert set 3"} },{"text":",","bold":true},{"text":"=falsch","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für falsch"} },"clickEvent":{"action":"run_command","value":"/trigger PZZufG.p2Wert set -3"} },{"text":") == ","bold":true},{"entity":"@e[type=minecraft:marker,tag=EtiZufG.p2Bool,sort=nearest,limit=1]","nbt":"CustomName","interpret":true},"\n",{"text":"Felder.position = ","bold":true},{"text":"zufallswert(0,laenge-1)","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für eine zufällige Position"} },"clickEvent":{"action":"run_command","value":"/trigger PZZufG.p2Wert set 2"} },"\n",{"text":"Felder.position == ","bold":true},{"score":{"name":"@s","objective":"PZZufG.p2Pos"},"color":"green","bold":true},"\n",{"text":"Felder[","bold":true},{"score":{"name":"@s","objective":"PZZufG.p2Pos"},"color":"green","bold":true},{"text":"] == ","bold":true},{"score":{"name":"VarZufG.p2Wert","objective":"PZZufG.p2Pos"},"color":"dark_purple","bold":true}]

# Der Spieler erhält die Berechtigung den Auslöser erneut auszuführen und sein Wert wird auf null gesetzt.
scoreboard players enable @s PZZufG.p2Wert
scoreboard players set @s PZZufG.p2Wert 0


Variante 2: Felder-Funktion
Die Felder-Funktion prüft ob sie an der richtigen Position in der Felderreihe ist und kopiert sich dann den wert. Dabei ruft sie sich solange selbst auf, bis sie durch die Felderreihe hindurch ist.

Editor Icon.png zufallsgenerator:vp2felder.mcfunction
# Wenn die Zufalls-Position erreicht wurde, wird der Wert an dieser Position aus der Felderreihe ausgelesen.
execute if score @s PZZufG.p2Pos = VarZufG.p2AktuellePosition PZZufG.p2Pos store result score VarZufG.p2Wert PZZufG.p2Pos run data get storage zufallsgenerator:vp2daten "EigZufG.p2Felder"[0]

# Das erste Feld wird an die letzte Position der Felderreihe verschoben.
data modify storage zufallsgenerator:vp2daten "EigZufG.p2Felder" append from storage zufallsgenerator:vp2daten "EigZufG.p2Felder"[0]
data remove storage zufallsgenerator:vp2daten "EigZufG.p2Felder"[0]

# Die aktuelle Position wird um eins erhöht und wenn sie damit noch nicht die komplette Felderreihe durchlaufen hat, wird die Felder-Funktion selbst nochmal aufgerufen.
scoreboard players add VarZufG.p2AktuellePosition PZZufG.p2Pos 1
execute if score VarZufG.p2AktuellePosition PZZufG.p2Pos < VarZufG.p2Laenge PZZufG.p2Wert run function zufallsgenerator:vp2felder


Variante 2: Stopp-Funktion
Die Stopp-Funktion löscht das Punkte-Ziele wieder. Der NBT-Speicher wird geleert und der Markierer wird gelöscht. Die Stöcke werden ebenfalls gelöscht.

Editor Icon.png zufallsgenerator:vp2stopp.mcfunction
# Die zwei Punkte-Ziele werden entfernt.
scoreboard objectives remove PZZufG.p2Pos
scoreboard objectives remove PZZufG.p2Wert

# Der NBT-Speicher wird geleert.
data remove storage zufallsgenerator:vp2daten "EigZufG.p2Felder"

# Das Etikett zur Auswahl des Stockes wird entfernt.
tag @a[tag=EtiZufG.p2Auswahl] remove EtiZufG.p2Auswahl

# Der Stock wird aus dem Inventar entfernt.
clear @a minecraft:stick{EigZufG.p2Alle:true}

# Falls der Stock auf den Boden geworfen wurde, erhält er ein Etikett und alle Objekte mit diesem werden gelöscht.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigZufG.p2Alle:true} } }] add EtiZufG.p2Alle
kill @e[tag=EtiZufG.p2Alle]
Advertisement