Diese Seite stammt ursprünglich aus de.minecraft.wiki und wurde von der Quelle abweichend verändert.
|
Gruppe: Schaltkreise |
mit Mechaniken |
mit Redstone |
Hier: mit Befehlen |
Verfügbar in: Redstone-Welt |
mehr Redstone |
mehr Befehle |
Ein Zufallsgenerator erzeugt Zufallszahlenwerte. In Minecraft gibt es keinen vorgesehenen Befehl für das Erzeugen von Zufallszahlen, daher muss auf Umwegen dies ermöglicht werden. Die einfachste Methode eine Zufallszahl zu erhalten, ist es die erste Zahl der vierelementigen UUID zu verwenden. Diese sehr groß ausfallende Zahl muss nur noch mit einer Modulo-Operation zurecht gestutzt werden und man erhält eine Zufallszahl im gewünschten Wertebereich. Ebenso über Umwege kann eine Zufallszahl auch über Beutetabellen erzeugt werden. Bei Beutetabellen kann man die Stapelzahl des Gegenstands zufällig erzeugen lassen. Das kann man sich zu nutze machen um diese Stapelzahl auszulesen und als Zufallszahl zu verwenden. Ebenso lässt sich eine bestimmte Wahrscheinlichkeit durch Prädikate ermöglichen. So wird auch hier eine Zufallszahl in einem bestimmten Wertebereich erzeugt und nur wenn die Zufallszahl einen bestimmten Schwellenwert überschreitet ist der ausgeführte Test erfolgreich.
Beutetabellen[]
Hier werden zwei Beispiele von Beutetabellen gezeigt:
zufallsgenerator:v0zufallswert_bereich_100.json
|
{ "__comment":"/scoreboard objectives add PZZufG.0Wert dummy", "__comment":"/execute store result score VarZufG.0Zufallswert PZZufG.0Wert run loot spawn ~ ~ ~ loot zufallsgenerator:v0zufallswert_bereich_100", "pools": [ { "rolls": { "min": 0, "max": 100 }, "entries": [ { "type": "minecraft:item", "name": "minecraft:air" } ] } ] } |
zufallsgenerator:v0zufallswert_dynamisch.json
|
{ "__comment":"/scoreboard objectives add PZZufG.0Wert dummy", "__comment":"/scoreboard players set PZZufG.0Min PZZufG.0Wert 0", "__comment":"/scoreboard players set PZZufG.0Max PZZufG.0Wert 10", "__comment":"/execute store result score VarZufG.0Zufallswert PZZufG.0Wert run loot spawn ~ ~ ~ loot zufallsgenerator:v0zufallswert_dynamisch", "pools": [ { "rolls": { "min": { "type": "minecraft:score", "score": "PZZufG.0Wert", "target": { "type": "fixed", "name": "PZZufG.0Min" } }, "max": { "type": "minecraft:score", "score": "PZZufG.0Wert", "target": { "type": "fixed", "name": "PZZufG.0Max" } } }, "entries": [ { "type": "minecraft:item", "name": "minecraft:air" } ] } ] } |
Prädikate[]
Hier werden zwei Beispiele von Prädikaten gezeigt:
zufallsgenerator:v0chance_von_50_prozent.json
|
{ "__comment":"/execute if predicate zufallsgenerator:v0chance_von_50_prozent", "condition": "minecraft:random_chance", "chance": 0.5 } |
Variante 1[]
Folgende Voraussetzungen werden benötigt: | ||
---|---|---|
|
Folgende Materialien werden benötigt: | |
---|---|
|
Mit diesem Zufallsgenerator lassen sich zuverlässig Zufallszahlenwerte erzeugen. Dies wird mittels des Auslesen der UUID von einer Partikelwolke bewerkstelligt, welche beim erzeugen immer eine zufällige und sehr lange Nummer besitzt. Diese wird ausgelesen und mit modulo zurechtgestutzt, sodass sie nur zwischen 0 und 9 groß ist.
- Einschalten
- Befehl 1.1 Das Punkte-Ziel mit der Auslöser-Funktion wird erstellt.
- Befehl 1.2 Die Konstante mit dem Wert zehn wird angelegt. Gleichzeitig wird der Erfolg des Ausführen dieses Befehls (Wert eins) in den Wert des Spielers gespeichert. Dadurch löst der Spieler den Zufallsgenerator aus.
- Wiederholen
- Befehl 1.3 Wenn der Auslöser von einem Spieler im Umkreis von 15 Metern aktiviert wurde, wird eine Partikelwolke erzeugt, die einen Tick lang existiert. Für diesen Zeitraum reicht es vollkommen.
- Befehl 1.4 Wenn der Auslöser aktiviert wurde, wird jetzt von der Partikelwolke die erste Zahl der UUID mit einem Exponentenfaktor von eins multipliziert und anschließend in die Variable gespeichert.
- Befehl 1.5 Als letztes, nach dem der Auslöser aktiviert wurde, wird die Zufallszahl modulus 10 genommen, sodass sie im Bereich 0 bis 9 liegen kann.
- Befehl 1.6 Wenn die Konstante mit dem Wert zehn bereits existiert, wird in einem Umkreis von 15 Metern nach Spielern gesucht die nicht den Wert null des Auslöser besitzen. Diese erhalten eine tellraw-Nachricht, bei der sie auf die Zufallsfunktion klicken können, damit der Zufallszahlenwert erzeugt wird.
- Befehl 1.7 Spieler die den Auslöser aktiviert haben oder noch keinen Wert besitzen haben nicht den Wert 0 und werden so für den Auslöser freigeschaltet.
- Befehl 1.8 Wenn ein Spieler nicht den Wert null besitzt, dann hatte er den Auslöser betätigt, dann wird der Wert wieder auf null gesetzt.
- Ausschalten
- Befehl 1.9 Das Punkte-Ziel für den Auslöser wird wieder gelöscht.
Befehlsblöcke mit Befehlen: |
|
Variante 2[]
Folgende Voraussetzungen werden benötigt: | ||
---|---|---|
|
Folgende Materialien werden benötigt: | |
---|---|
|
Mit diesem Zufallsgenerator lassen sich Zufallszahlen erzeugen die in einem dynamisch einstellbaren Bereich liegen können. Dazu klickt man auf eine Schaltfläche im Chat und es erscheint eine Zufallszahl. Ebenfalls kann man eine Bereichs-Variable erhöhen, sodass der Bereich größer wird, in dem die Zufallszahl liegen kann.
- Einschalten
- Befehl 2.1 Das Punkte-Ziel mit der Auslöser-Funktion wird erstellt.
- Befehl 2.2 Spielern im Umkreis von 15 Metern erhalten den Wert eins zugewiesen, sodass sie direkt beim Einschalten einen zufallswert angezeigt bekommen. Ebenfalls wird die Bereichs-Variable mit dem Wert 10 angelegt.
- Wiederholen
- Befehl 2.3 Hat, man im Chat auf die Bereichs-Variable geklickt, so wird diese um eins erhöht.
- Befehl 2.4 Hat man auf die Schaltfläche für die Zufallszahl geklickt, wird eine Partikelwolke erzeugt.
- Befehl 2.5 Anschließend wird die erste Zahl der vierelementigen UUID ausgelesen und in die Zufallsvariable gespeichert.
- Befehl 2.6 Damit die Zufallszahl nur im Werte-Bereich von null bis Bereichs-Variable reicht, wird der Zufallswert mit modulo der Bereichs-Variable verrechnet.
- Befehl 2.7 In einem Umkreis von 15 Metern wird nach Spielern gesucht die nicht den Wert null des Auslöser besitzen. Diese erhalten eine tellraw-Nachricht, bei der sie auf die Zufallsfunktion klicken können, damit an ein zufälliger Wert erzeugt wird und um die Bereichs-Variable erhöhen zu können.
- Befehl 2.8 Spieler die eine Schaltfläche angeklickt haben, besitzen nicht mehr den Wert null oder Spieler die noch keinen Wert haben und all diese erhalten die Berechtigung für das Schalten der Schaltflächen.
- Befehl 2.9 ebenfalls wird diesen Spielern der Wert wieder auf null zurückgesetzt.
- Ausschalten
- Befehl 2.10 Das Punkte-Ziel wird wieder gelöscht.
Befehlsblöcke mit Befehlen: |
|
Variante 3[]
Folgende Voraussetzungen werden benötigt: | ||
---|---|---|
|
Folgende Materialien werden benötigt: | |
---|---|
|
Dieser Zufallsgenerator ermöglicht nicht nur das Erzeugen einer Zufallszahl und der Auswahl in welchen Bereich die Zahl liegen soll, sondern bietet auch die Möglichkeit eine bestimmte Chance einzustellen, ab wann ein Wahrheitswert wahr oder falsch ausgibt. Dazu kann man eine Chancen-Variable erhöhen und somit auch die Chance dass der Wahrheitswert wahr ausgibt.
- Einschalten
- Befehl 3.1 Das Punkte-Ziel mit der Auslöser-Funktion wird erstellt.
- Befehl 3.2 Die Bereichs-Variable wird mit dem Wert zehn erstellt und der Spieler erhält den Wert eins zugewiesen, sodass er direkt die Zufallsfunktion auslöst.
- Befehl 3.3 Die Chancen-Variable wird mit dem Wert null erzeugt.
- Befehl 3.4 Ein Markierer wird erzeugt, der in seinem Namen den Wahrheitswert speichert.
- Wiederholen
- Befehl 3.5 Wenn der Auslöser von einem Spieler im Umkreis von 15 Metern aktiviert wurde, wird die Chancen-Variable um eins erhöht, solange sie noch kleiner als die Bereichs-Variable ist.
- Befehl 3.6 Wenn der Auslöser aktiviert wurde, wird die Bereichs-Variable um eins erhöht.
- Befehl 3.7 Wenn man auf die Schaltfläche für die Zufallsfunktion geklickt hat, wird eine Partikelwolke erzeugt, die genau einen Tick existiert.
- Befehl 3.8 Anschließend wird die erste Zahl von vier aus der UUID kopiert und in eine Variable gespeichert.
- Befehl 3.9 Nach dem der Auslöser aktiviert wurde, wird die Zufallszahl modulus der Bereichs-Variable genommen, sodass sie im Bereich von null bis zur Bereichs-Variable liegt.
- Befehl 3.10 Danach wird geprüft ob die Chancen-Variable kleiner der Zufallszahl ist und das Ergebnis wird in den Markierer gespeichert.
- Befehl 3.11 Je nach dem ob der Markierer den Wert eins oder null besitzt bekommt den entsprechenden Wahrheitswert in den Namen gespeichert[B3.12].
- Befehl 3.13 Wenn der Spieler noch keinen Wert besitzt oder eine Schaltfläche angeklickt hat, wird ihm die Chat-Nachricht angezeigt, in der er die Chancen-Variable, die Bereichs-Variable und den Zufallswert anklicken kann und die aktuellen Werte von diesen angezeigt bekommt.
- Befehl 3.14 Falls Spieler Schaltflächen angeklickt oder noch nie angeklickt haben erhalten die Berechtigung erneut die Schaltfläche anzuklicken und erhalten den Wert null zugewiesen[B3.15].
- Ausschalten
- Befehl 3.16 Das Punkte-Ziel für den Auslöser wird wieder gelöscht.
- Befehl 3.17 Der Markierer wird entfernt.
Befehlsblöcke mit Befehlen: |
|
Variante 4[]
Folgende Voraussetzungen werden benötigt: | ||
---|---|---|
|
Folgende Materialien werden benötigt: | |
---|---|
|
Dieser Zufallsgenerator bietet einem die Möglichkeit, den Zahlenbereich einer Zufallszahl festzulegen, sodass sie mindestens so groß ist, wie der Mindestwert und maximal um eins kleiner ist als der Maximalwert.
- Einschalten
- Befehl 4.1 Auf dem Wiederhol-Befehlsblock befindet sich ein Hebel. Legt man ihn um, wird zuerst der Befehlsblock mit der Start-Funktion zufallsgenerator:v4start aktiviert.
- Wiederholen
- Befehl 4.2 Gleichzeitig wird auch der Wiederhol-Befehlsblock mit der Zyklus-Funktion zufallsgenerator:v4zyklus aktiv.
- Ausschalten
- Befehl 4.3 der Befehlsblock löst die Funktion zufallsgenerator:v4stopp aus.
Befehlsblöcke mit Befehlen: |
|
Datenpaket |
|
Variante 4: Start-Funktion
Die Start-Funktion erstellt das Punkte-Ziel und erzeugt die benötigten Variablen.
zufallsgenerator:v4start.mcfunction
|
# Das Punkte-Ziel wird erstellt. scoreboard objectives add PZZufG.4Wert trigger ["Zufallsgenerator.4: ",{"text":"Wert der Variablen","bold":true}] # Die Min- und Max-Variablen werden gesetzt. scoreboard players set VarZufG.4Min PZZufG.4Wert 0 scoreboard players set VarZufG.4Max PZZufG.4Wert 10 # Der Spieler erhält den Wert drei, sodass er direkt die Zufallsfunktion auslöst. scoreboard players set @p[distance=..15] PZZufG.4Wert 3 |
Variante 4: Zyklus-Funktion
Die Zyklus-Funktion bieten den Spielern über den Chat mehrere Schaltflächen an, die man betätigen kann um den Wertebereich in dem die Zufallszahl liegen soll festzulegen.
zufallsgenerator:v4zyklus.mcfunction
|
# Wenn der Spieler auf die Min-Schaltfläche geklickt hat, wird sie je nach was von ihr angeklickt wurde um eins erhöht oder verringert. Dabei kann sie nur maximal den gleichen Wert annehmen wie die Max-Variable, aber nicht höher. execute if entity @p[distance=..15,scores={PZZufG.4Wert=1}] if score VarZufG.4Min PZZufG.4Wert < VarZufG.4Max PZZufG.4Wert run scoreboard players add VarZufG.4Min PZZufG.4Wert 1 execute if entity @p[distance=..15,scores={PZZufG.4Wert=-1}] if score VarZufG.4Min PZZufG.4Wert matches 1.. run scoreboard players remove VarZufG.4Min PZZufG.4Wert 1 # Hat man auf die Max-Variable geklickt, wird sie je nach dem wo man angeklickt hat um eins erhöht oder verringert. Dabei gilt auch hier, sie kann nur minimal so klein sein wie die Min-Variable aber nicht kleiner. execute if entity @p[distance=..15,scores={PZZufG.4Wert=2}] run scoreboard players add VarZufG.4Max PZZufG.4Wert 1 execute if entity @p[distance=..15,scores={PZZufG.4Wert=-2}] if score VarZufG.4Max PZZufG.4Wert > VarZufG.4Min PZZufG.4Wert run scoreboard players remove VarZufG.4Max PZZufG.4Wert 1 # Der Bereich in dem die Zufallszahl liegen kann wird errechnet, in dem man von dem maximalen Wert den minimalen abzieht. execute if entity @p[distance=..15,scores={PZZufG.4Wert=3}] run scoreboard players operation VarZufG.4Bereich PZZufG.4Wert = VarZufG.4Max PZZufG.4Wert execute if entity @p[distance=..15,scores={PZZufG.4Wert=3}] run scoreboard players operation VarZufG.4Bereich PZZufG.4Wert -= VarZufG.4Min PZZufG.4Wert # Für die Zufallszahl wird eine Partikelwolke erzeugt, von der man die erste Zahl von vieren aus der UUID kopiert und in eine Variable speichert. execute if entity @p[distance=..15,scores={PZZufG.4Wert=3}] run summon minecraft:area_effect_cloud ~ ~ ~ {Duration:1,Tags:["EtiZufG.4Alle"]} execute if entity @p[distance=..15,scores={PZZufG.4Wert=3}] store result score VarZufG.4Zufallswert PZZufG.4Wert run data get entity @e[type=minecraft:area_effect_cloud,tag=EtiZufG.4Alle,sort=nearest,limit=1] UUID[0] 1 # Damit die Zufallszahl in dem eingestellten Wertebereich liegt, wird zuerst die Zufallszahl modulo der Bereichs-Variable gerechnet und anschließend wird die Min-Variable datrauf addiert. Falls die Min- und Max-Variable gleich sind, wird der Zufallswert auf den Wert der Min-Variable gesetzt. execute if entity @p[distance=..15,scores={PZZufG.4Wert=3}] run scoreboard players operation VarZufG.4Zufallswert PZZufG.4Wert %= VarZufG.4Bereich PZZufG.4Wert execute if entity @p[distance=..15,scores={PZZufG.4Wert=3}] run scoreboard players operation VarZufG.4Zufallswert PZZufG.4Wert += VarZufG.4Min PZZufG.4Wert execute if entity @p[distance=..15,scores={PZZufG.4Wert=3}] if score VarZufG.4Min PZZufG.4Wert = VarZufG.4Max PZZufG.4Wert run scoreboard players operation VarZufG.4Zufallswert PZZufG.4Wert = VarZufG.4Min PZZufG.4Wert # Alle Spieler im Umkreis von 15 Blöcken erhalten eine Chat-Nachricht, falls noch nie eine Schaltfläche angeklickt haben oder genau in diesem Moment eine angeklickt haben. In dieser kann man die Min- und Max-Variable erhöhen und verringern und damit eine Zufallszahl erzeugen lassen. execute if score VarZufG.4Bereich PZZufG.4Wert matches 0.. as @a[distance=..15] unless entity @s[scores={PZZufG.4Wert=0}] run tellraw @s ["Zufallsgenerator.4:\n",{"text":"min (","bold":true},{"text":"=min + 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Minimum + 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZZufG.4Wert set 1"} },{"text":",","bold":true},{"text":"=min - 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Minimum - 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZZufG.4Wert set -1"} },{"text":") == ","bold":true},{"score":{"name":"VarZufG.4Min","objective":"PZZufG.4Wert"},"color":"dark_purple","bold":true},"\n",{"text":"max (","bold":true},{"text":"=max + 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Maximum + 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZZufG.4Wert set 2"} },{"text":",","bold":true},{"text":"=max - 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Maximum - 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZZufG.4Wert set -2"} },{"text":") == ","bold":true},{"score":{"name":"VarZufG.4Max","objective":"PZZufG.4Wert"},"color":"dark_purple","bold":true},"\n",{"text":"var = ","bold":true},{"text":"zufallswert(min,max-1)","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für einen Zufallswert"} },"clickEvent":{"action":"run_command","value":"/trigger PZZufG.4Wert set 3"} },"\n",{"text":"var == ","bold":true},{"score":{"name":"VarZufG.4Zufallswert","objective":"PZZufG.4Wert"},"color":"dark_purple","bold":true} ] # Hat man die Schaltflächen angeklickt oder hat noch nie eine angeklickt erhält man die Berechtigung erneut die Schaltflächen anzuklicken und man bekommt den Wert null zugewiesen. execute as @a[distance=..15] unless entity @s[scores={PZZufG.4Wert=0}] run scoreboard players enable @s PZZufG.4Wert execute as @a[distance=..15] unless entity @s[scores={PZZufG.4Wert=0}] run scoreboard players set @s PZZufG.4Wert 0 |
Variante 4: Stopp-Funktion
Die Stopp-Funktion löscht das Punkte-Ziel wieder.
zufallsgenerator:v4stopp.mcfunction
|
# Das Punkte-Ziel wird entfernt. scoreboard objectives remove PZZufG.4Wert |
|
|