Technik Wiki
K (Bot: Vorlage:Unterseite angepasst)
(Überarbeitet: Einleitung grundlegend neu geschrieben. Variante 1, 2 und 3: Grundlegend überarbeitet. Variante 4 hinzugefügt.)
Markierung: Quelltext-Bearbeitung
(5 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
{{Unterseite|gruppe=Schaltkreise|
 
{{Unterseite|gruppe=Schaltkreise|
{{Seitenkopf|dw=r|re=1|rep=1}}
+
{{Seitenkopf|dw=r|re=1|rep=1|bep=1}}
  +
{{Neue Technik|r|artikel}}
 
}}
 
}}
  +
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 {{mcw|UUID}} zu verwenden. Diese sehr groß ausfallende Zahl muss nur noch mit einer [[Moduluswerk (Befehle)|Modulo-Operation]] zurecht gestutzt werden und man erhält eine Zufallszahl im gewünschten Wertebereich. Ebenso über Umwege kann eine Zufallszahl auch über {{mcw|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 {{mcw|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 ==
Ein '''Zufallsgenerator''' gibt wie der Name schon aussagt ein Zufallssignal aus, welches einen bestimmten Befehlsblock anvisiert.
 
  +
Hier werden zwei Beispiele von Beutetabellen gezeigt:
  +
{{JSON-Datei|name=zufallsgenerator:v0zufallswert_bereich_100|type=loot|offen=|1=
  +
{
  +
"__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"
  +
}
  +
]
  +
}
  +
]
  +
}
  +
}}
  +
{{JSON-Datei|name=zufallsgenerator:v0zufallswert_dynamisch|type=loot|offen=|1=
  +
{
  +
"__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 ==
== Redstone-Signal-Zufallsgenerator ==
 
  +
Hier werden zwei Beispiele von Prädikaten gezeigt:
  +
{{JSON-Datei|name=zufallsgenerator:v0chance_von_50_prozent|type=predicate|offen=|1=
  +
{
  +
"__comment":"/execute if predicate zufallsgenerator:v0chance_von_50_prozent",
  +
"condition": "minecraft:random_chance",
  +
"chance": 0.5
  +
}
  +
}}
  +
{{JSON-Datei|name=zufallsgenerator:v0chance_dynamiasch|type=predicate|offen=|1=
  +
{
  +
"__comment":"/scoreboard objectives add PZZufG.0Wert dummy",
  +
"__comment":"/scoreboard players set PZZufG.0Chance PZZufG.0Wert 50",
  +
"__comment":"/execute if predicate zufallsgenerator:v0chance_dynamisch",
  +
"condition": "value_check",
  +
"value": {
  +
"type": "uniform",
  +
"min": 0,
  +
"max": 100
  +
},
  +
"range": {
  +
"min": 1,
  +
"max": {
  +
"type": "score",
  +
"score": "PZZufG.0Wert",
  +
"target": {
  +
"type": "fixed",
  +
"name": "PZZufG.0Chance"
  +
}
  +
}
  +
}
  +
}
  +
}}
   
=== Variante 1 ===
+
== Variante 1 ==
 
{{Voraussetzung|
 
{{Voraussetzung|
  +
*[[Moduluswerk (Befehle)]]
* {{b|/summon}}
 
* {{b|/execute}}
+
*{{mcw|UUID}}
* {{b|/setblock}}
+
*{{mcw|NBT}}
 
|
 
|
* {{Gridbild|Goldblock|link}}
+
*{{Gridbild|Hebel|link}}
* {{Gridbild|Hebel|link}}
+
*{{Gridbild|Redstone-Fackel|link}}
* {{Gridbild|Befehlsblock|link}}
+
*{{Gridbild|Befehlsblock|link|stapel=2}}
* {{Gridbild|Ketten-Befehlsblock|link}}
+
*{{Gridbild|Ketten-Befehlsblock|link|stapel=6}}
  +
*{{Gridbild|Wiederhol-Befehlsblock|link}}
|videos=
 
(0YXvg4mTnTY,Halbzwilling)
 
 
}}
 
}}
[[Datei:Schaltkreise Zufallsgenerator (Befehle) Bild 1.1.png|400px]]
+
{{Bilderfolge|#1#2|Zufallsgenerator (Befehle) Bild 1.|400px|list=1}}
   
  +
Mit diesem Zufallsgenerator lassen sich zuverlässig Zufallszahlenwerte erzeugen. Dies wird mittels des Auslesen der {{mcw|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.
Der Zufallsgenerator beseht aus drei Bereichen: Zum einen gibt es den Goldblock mit dem Knopf drauf, der löst die Befehlskette mit dem {{bb|1|1}} aus und lässt über den Befehlsblöcken Rüstungsständern beschwören. Dann gibt es den Goldblock mit Hebel, der den {{bb|1|2}} auslöst, wodurch zufällig einer der beschworenen Rüstungsständer anvisiert wird. An einem dieser Rüstungsständer wird dann ein Redstone-Block gesetzt. Da aber unter dem Rüstungsständer ein Befehlsblock ist, wird dieser ausgelöst. So wird im dritten Bereich der Befehlsblock mit dem {{bb|1|3}} ausgelöst, welcher den so eben gesetzten Redstone-Block wieder entfernt. Gleichzeitig kann das eingehende {{mcw|Befehlssignal}} abgegriffen werden, in dem Beispiel wurde der {{bb|1|4}} genutzt.
 
  +
  +
;Einschalten
  +
*{{bb|1|1}} Das Punkte-Ziel mit der Auslöser-Funktion wird erstellt.
  +
*{{bb|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
  +
*{{bb|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.
  +
*{{bb|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.
  +
*{{bb|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.
  +
*{{bb|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.
  +
*{{bb|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.
  +
*{{bb|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
  +
*{{bb|1|9}} Das Punkte-Ziel für den Auslöser wird wieder gelöscht.
   
 
{{Ausklappmenü|offen=1|{{bb}}|
 
{{Ausklappmenü|offen=1|{{bb}}|
{{bb|1|1|i|4=/summon minecraft:armor_stand ~ ~1 ~2 {CustomName:"{\"text\":\"Zufall1\"}"} }}
+
{{bb|1|1|i|4=scoreboard objectives add PZZufG.1Wert trigger ["Zufallsgenerator.1: ",{"text":"Wert der Variablen","bold":true}] }}
  +
{{bb|1|2|k|4=execute store success score @p[distance=..15] PZZufG.1Wert run scoreboard players set KonstZufG.1ZEHN PZZufG.1Wert 10}}
   
   
{{bb|1|2|i|4=/execute as @e[type=armor_stand,name="Zufall1",distance=..10,sort=random,limit=1] at @s run setblock ~ ~ ~ minecraft:redstone_block}}
+
{{bb|1|3|w|4=execute if entity @p[distance=..15,scores={PZZufG.1Wert=1}] run summon minecraft:area_effect_cloud ~ ~ ~ {Duration:1,Tags:["EtiZufG.1Alle"]} }}
  +
{{bb|1|4|k|4=execute if entity @p[distance=..15,scores={PZZufG.1Wert=1}] store result score VarZufG.1Zufallswert PZZufG.1Wert run data get entity @e[type=minecraft:area_effect_cloud,tag=EtiZufG.1Alle,sort=nearest,limit=1] UUID[0] 1}}
  +
{{bb|1|5|k|4=execute if entity @p[distance=..15,scores={PZZufG.1Wert=1}] run scoreboard players operation VarZufG.1Zufallswert PZZufG.1Wert %= KonstZufG.1ZEHN PZZufG.1Wert}}
  +
{{bb|1|6|k|4=execute if score KonstZufG.1ZEHN PZZufG.1Wert matches 10 as @a[distance=..15] unless entity @s[scores={PZZufG.1Wert=0}] run tellraw @a[distance=..15] ["Zufallsgenerator.1:\n",{"text":"var = ","bold":true},{"text":"zufallswert(0,9)","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für einen Zufallswert"} },"clickEvent":{"action":"run_command","value":"/trigger PZZufG.1Wert set 1"} },"\n",{"text":"var == ","bold":true},{"score":{"name":"VarZufG.1Zufallswert","objective":"PZZufG.1Wert"},"color":"dark_purple","bold":true} ] }}
  +
{{bb|1|7|k|4=execute as @a[distance=..15] unless entity @s[scores={PZZufG.1Wert=0}] run scoreboard players enable @s PZZufG.1Wert}}
  +
{{bb|1|8|k|4=execute as @a[distance=..15] unless entity @s[scores={PZZufG.1Wert=0}] run scoreboard players set @s PZZufG.1Wert 0}}
   
   
{{bb|1|3|i|4=/setblock ~ ~1 ~ minecraft:air}}
+
{{bb|1|9|i|4=scoreboard objectives remove PZZufG.1Wert}}
{{bb|1|4|k|4=/particle minecraft:witch ~ ~1 ~ 0 1 0 0 10 true @a[distance=..10] }}
 
 
}}
 
}}
   
=== Variante 2 ===
+
== Variante 2 ==
 
{{Voraussetzung|
 
{{Voraussetzung|
  +
*[[Moduluswerk (Befehle)]]
* [[#Variante 1|Variante 1]]
 
* {{b|/summon}}
+
*{{mcw|UUID}}
* {{b|/execute}}
+
*{{mcw|NBT}}
* {{b|/setblock}}
 
 
|
 
|
* {{Gridbild|Goldblock|link}}
+
*{{Gridbild|Hebel|link}}
* {{Gridbild|Hebel|link}}
+
*{{Gridbild|Redstone-Fackel|link}}
* {{Gridbild|Befehlsblock|link}}
+
*{{Gridbild|Befehlsblock|link|stapel=2}}
* {{Gridbild|Ketten-Befehlsblock|link}}
+
*{{Gridbild|Ketten-Befehlsblock|link|stapel=7}}
  +
*{{Gridbild|Wiederhol-Befehlsblock|link}}
 
}}
 
}}
[[Datei:Schaltkreise Zufallsgenerator (Befehle) Bild 1.2.png|400px]]
+
{{Bilderfolge|#1#2|Zufallsgenerator (Befehle) Bild 2.|400px|list=1}}
   
  +
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 eine Bereichs-Variable erhöhen, sodass der Bereich größer wird, in dem die Zufallszahl liegen kann.
Der Zufallsgenerator basiert auf der Variante 1 und wurde beim Hebel erweitert. Wenn der Redstone-Block durch den Befehlsblock gesetzt wurde, wird von dem nachfolgenden Ketten-Befehlsblock geprüft welcher der Rüstungsständer den Redstone-Block gesetzt hat und anschließend wird genau dieser Rüstungsständer durch den {{bb|2|1}} gelöscht. Dadurch wird die vorgegebene Anzahl an Zufällen genau einmal erreicht. Jeder Abschnitt kann nur einmal angesteuert werden.
 
  +
;Einschalten
  +
*{{bb|2|1}} Das Punkte-Ziel mit der Auslöser-Funktion wird erstellt.
  +
*{{bb|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
  +
*{{bb|2|3}} Hat, man im Chat auf die Bereichs-Variable geklickt, so wird diese um eins erhöht.
  +
*{{bb|2|4}} Hat man auf die Schaltfläche für die Zufallszahl geklickt, wird eine Partikelwolke erzeugt.
  +
*{{bb|2|5}} Anschließend wird die erste Zahl der vierelementigen UUID ausgelesen und in die Zufallsvariable gespeichert.
  +
*{{bb|2|6}} Damit die Zufallszahl nur im Werte-Bereich von null bis Bereichs-Variable reicht, wird der Zufallswert mit modulo der Bereichs-Variable verrechnet.
  +
*{{bb|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.
  +
*{{bb|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.
  +
*{{bb|2|9}} ebenfalls wird diesen Spielern der Wert wieder auf null zurückgesetzt.
  +
  +
;Ausschalten
  +
*{{bb|2|10}} Das Punkte-Ziel wird wieder gelöscht.
   
 
{{Ausklappmenü|offen=1|{{bb}}|
 
{{Ausklappmenü|offen=1|{{bb}}|
  +
{{bb|2|1|i|4=scoreboard objectives add PZZufG.2Wert trigger ["Zufallsgenerator.2: ",{"text":"Wert der Variablen","bold":true}] }}
{{bb|2|1|k|4=/execute as @e[type=minecraft:armor_stand,name="Zufall2"] at @s if block ~ ~ ~ redstone_block run kill @e[type=minecraft:armor_stand,name="Zufall2",distance=..0] }}
 
  +
{{bb|2|2|k|4=execute store success score @p[distance=..15] PZZufG.2Wert run scoreboard players set VarZufG.2Bereich PZZufG.2Wert 10}}
}}
 
   
== Befehlssignal-Zufallsgenerator ==
 
   
  +
{{bb|2|3|w|4=execute if entity @p[distance=..15,scores={PZZufG.2Wert=2}] run scoreboard players add VarZufG.2Bereich PZZufG.2Wert 1}}
=== Variante 1 ===
 
  +
{{bb|2|4|k|4=execute if entity @p[distance=..15,scores={PZZufG.2Wert=1}] run summon minecraft:area_effect_cloud ~ ~ ~ {Duration:1,Tags:["EtiZufG.2Alle"]} }}
  +
{{bb|2|5|k|4=execute if entity @p[distance=..15,scores={PZZufG.2Wert=1}] store result score VarZufG.2Zufallswert PZZufG.2Wert run data get entity @e[type=minecraft:area_effect_cloud,tag=EtiZufG.2Alle,sort=nearest,limit=1] UUID[0] 1}}
  +
{{bb|2|6|k|4=execute if entity @p[distance=..15,scores={PZZufG.2Wert=1}] run scoreboard players operation VarZufG.2Zufallswert PZZufG.2Wert %= VarZufG.2Bereich PZZufG.2Wert}}
  +
{{bb|2|7|k|4=execute if score VarZufG.2Bereich PZZufG.2Wert matches 10.. as @a[distance=..15] unless entity @s[scores={PZZufG.2Wert=0}] run tellraw @a[distance=..15] ["Zufallsgenerator.2:\n",{"text":"bereich = ","bold":true},{"text":"bereich + 1","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Bereich + 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZZufG.2Wert set 2"} },"\n",{"text":"bereich == ","bold":true},{"score":{"name":"VarZufG.2Bereich","objective":"PZZufG.2Wert"},"color":"dark_purple","bold":true},"\n",{"text":"var = ","bold":true},{"text":"zufallswert(0,bereich-1)","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für einen Zufallswert"} },"clickEvent":{"action":"run_command","value":"/trigger PZZufG.2Wert set 1"} },"\n",{"text":"var == ","bold":true},{"score":{"name":"VarZufG.2Zufallswert","objective":"PZZufG.2Wert"},"color":"dark_purple","bold":true} ] }}
  +
{{bb|2|8|k|4=execute as @a[distance=..15] unless entity @s[scores={PZZufG.2Wert=0}] run scoreboard players enable @s PZZufG.2Wert}}
  +
{{bb|2|9|k|4=execute as @a[distance=..15] unless entity @s[scores={PZZufG.2Wert=0}] run scoreboard players set @s PZZufG.2Wert 0}}
  +
  +
  +
{{bb|2|10|i|4=scoreboard objectives remove PZZufG.2Wert}}
  +
}}
  +
  +
== Variante 3 ==
 
{{Voraussetzung|
 
{{Voraussetzung|
  +
*[[Moduluswerk (Befehle)]]
* [[#Variante 1|Variante 1]]
 
* {{b|/summon}}
+
*{{mcw|UUID}}
* {{b|/execute}}
+
*{{mcw|NBT}}
* {{b|/setblock}}
 
 
|
 
|
* {{Gridbild|Goldblock|link}}
+
*{{Gridbild|Hebel|link}}
* {{Gridbild|Hebel|link}}
+
*{{Gridbild|Redstone-Fackel|link}}
* {{Gridbild|Befehlsblock|link}}
+
*{{Gridbild|Befehlsblock|link|stapel=2}}
* {{Gridbild|Ketten-Befehlsblock|link}}
+
*{{Gridbild|Ketten-Befehlsblock|link|stapel=14}}
  +
*{{Gridbild|Wiederhol-Befehlsblock|link}}
 
}}
 
}}
[[Datei:Schaltkreise Zufallsgenerator (Befehle) Bild 2.1.png|400px]]
+
{{Bilderfolge|#1#2|Zufallsgenerator (Befehle) Bild 3.|400px|list=1}}
   
  +
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.
Um einen Zufallsgenerator zu erbauen, der nur mit Befehlssignalen arbeitet muss man nur den Redstone-Signal-Zufallsgenerator umprogrammieren. Der Befehlsblock bei dem Hebel muss dazu folgend umgeändert werden: {{bb|3|1}}.
 
  +
  +
;Einschalten
  +
*{{bb|3|1}} Das Punkte-Ziel mit der Auslöser-Funktion wird erstellt.
  +
*{{bb|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.
  +
*{{bb|3|3}} Die Chancen-Variable wird mit dem Wert null erzeugt.
  +
*{{bb|3|4}} Ein Markierer wird erzeugt, der in seinem Namen den Wahrheitswert speichert.
  +
  +
;Wiederholen
  +
*{{bb|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.
  +
*{{bb|3|6}} Wenn der Auslöser aktiviert wurde, wird die Bereichs-Variable um eins erhöht.
  +
*{{bb|3|7}} Wenn man auf die Schaltfläche für die Zufallsfunktion geklickt hat, wird eine Partikelwolke erzeugt, die genau einen Tick existiert.
  +
*{{bb|3|8}} Anschließend wird die erste Zahl von vier aus der UUID kopiert und in eine Variable gespeichert.
  +
*{{bb|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.
  +
*{{bb|3|10}} Danach wird geprüft ob die Chancen-Variable kleiner der Zufallszahl ist und das Ergebnis wird in den Markierer gespeichert.
  +
*{{bb|3|11}} Je nach dem ob der Markierer den Wert eins oder null besitzt bekommt den entsprechenden Wahrheitswert in den Namen gespeichert{{bb|3|12|up=1}}.
  +
*{{bb|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.
  +
*{{bb|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{{bb|3|15|up=1}}.
  +
  +
;Ausschalten
  +
*{{bb|3|16}} Das Punkte-Ziel für den Auslöser wird wieder gelöscht.
  +
*{{bb|3|17}} Der Markierer wird entfernt.
   
 
{{Ausklappmenü|offen=1|{{bb}}|
 
{{Ausklappmenü|offen=1|{{bb}}|
  +
{{bb|3|1|i|4=scoreboard objectives add PZZufG.3Wert trigger ["Zufallsgenerator.3: ",{"text":"Wert der Variablen","bold":true}] }}
{{bb|3|1|k|4=/execute as @e[type=minecraft:armor_stand,name="Zufall3",distance=..10,sort=random,limit=1] at @s run data merge block ~ ~-1 ~ {auto:1b} }}
 
  +
{{bb|3|2|k|4=execute store success score @p[distance=..15] PZZufG.3Wert run scoreboard players set VarZufG.3Bereich PZZufG.3Wert 10}}
  +
{{bb|3|3|k|4=scoreboard players set VarZufG.3Chance PZZufG.3Wert 0}}
  +
{{bb|3|4|k|4=summon minecraft:marker ~ ~1 ~ {CustomName:'{"text":"falsch","color":"red","bold":true}',Tags:["EtiZufG.3Alle","EtiZufG.3Bool"]} }}
  +
  +
  +
{{bb|3|5|w|4=execute if entity @p[distance=..15,scores={PZZufG.3Wert=3}] if score VarZufG.3Chance PZZufG.3Wert < VarZufG.3Bereich PZZufG.3Wert run scoreboard players add VarZufG.3Chance PZZufG.3Wert 1}}
  +
{{bb|3|6|k|4=execute if entity @p[distance=..15,scores={PZZufG.3Wert=2}] run scoreboard players add VarZufG.3Bereich PZZufG.3Wert 1}}
  +
{{bb|3|7|k|4=execute if entity @p[distance=..15,scores={PZZufG.3Wert=1}] run summon minecraft:area_effect_cloud ~ ~ ~ {Duration:1,Tags:["EtiZufG.3Alle"]} }}
  +
{{bb|3|8|k|4=execute if entity @p[distance=..15,scores={PZZufG.3Wert=1}] store result score VarZufG.3Zufallswert PZZufG.3Wert run data get entity @e[type=minecraft:area_effect_cloud,tag=EtiZufG.3Alle,sort=nearest,limit=1] UUID[0] 1}}
  +
{{bb|3|9|k|4=execute if entity @p[distance=..15,scores={PZZufG.3Wert=1}] run scoreboard players operation VarZufG.3Zufallswert PZZufG.3Wert %= VarZufG.3Bereich PZZufG.3Wert}}
  +
{{bb|3|10|k|4=execute if entity @p[distance=..15,scores={PZZufG.3Wert=1}] store result score @e[type=minecraft:marker,tag=EtiZufG.3Bool,sort=nearest,limit=1] PZZufG.3Wert if score VarZufG.3Zufallswert PZZufG.3Wert < VarZufG.3Chance PZZufG.3Wert}}
  +
{{bb|3|11|k|4=execute if entity @p[distance=..15,scores={PZZufG.3Wert=1}] run data merge entity @e[type=minecraft:marker,tag=EtiZufG.3Bool,scores={PZZufG.3Wert=0},sort=nearest,limit=1] {CustomName:'{"text":"falsch","color":"red","bold":true}'} }}
  +
{{bb|3|12|k|4=execute if entity @p[distance=..15,scores={PZZufG.3Wert=1}] run data merge entity @e[type=minecraft:marker,tag=EtiZufG.3Bool,scores={PZZufG.3Wert=1},sort=nearest,limit=1] {CustomName:'{"text":"wahr","color":"green","bold":true}'} }}
  +
{{bb|3|13|k|4=execute if score VarZufG.3Bereich PZZufG.3Wert matches 10.. as @a[distance=..15] unless entity @s[scores={PZZufG.3Wert=0}] run tellraw @a[distance=..15] ["Zufallsgenerator.3:\n",{"text":"chance = ","bold":true},{"text":"chance + 1","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Bereich + 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZZufG.3Wert set 3"} },"\n",{"text":"chance == ","bold":true},{"score":{"name":"VarZufG.3Chance","objective":"PZZufG.3Wert"},"color":"dark_purple","bold":true},"\n",{"text":"bereich = ","bold":true},{"text":"bereich + 1","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Bereich + 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZZufG.3Wert set 2"} },"\n",{"text":"bereich == ","bold":true},{"score":{"name":"VarZufG.3Bereich","objective":"PZZufG.3Wert"},"color":"dark_purple","bold":true},"\n",{"text":"var = ","bold":true},{"text":"zufallswert(0,bereich-1)","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für einen Zufallswert"} },"clickEvent":{"action":"run_command","value":"/trigger PZZufG.3Wert set 1"} },"\n",{"text":"var == ","bold":true},{"score":{"name":"VarZufG.3Zufallswert","objective":"PZZufG.3Wert"},"color":"dark_purple","bold":true},"\n",{"text":"var < chance == ","bold":true},{"entity":"@e[type=minecraft:marker,tag=EtiZufG.3Bool,sort=nearest,limit=1]","nbt":"CustomName","interpret":true} ] }}
  +
{{bb|3|14|k|4=execute as @a[distance=..15] unless entity @s[scores={PZZufG.3Wert=0}] run scoreboard players enable @s PZZufG.3Wert}}
  +
{{bb|3|15|k|4=execute as @a[distance=..15] unless entity @s[scores={PZZufG.3Wert=0}] run scoreboard players set @s PZZufG.3Wert 0}}
  +
  +
  +
{{bb|3|16|i|4=scoreboard objectives remove PZZufG.3Wert}}
  +
{{bb|3|17|k|4=kill @e[type=minecraft:marker,tag=EtiZufG.3Alle] }}
 
}}
 
}}
   
=== Variante 2 ===
+
== Variante 4 ==
 
{{Voraussetzung|
 
{{Voraussetzung|
  +
*{{mcw|JSON-Text}}
* [[#Variante 1|Variante 1]]
 
* {{b|/summon}}
+
*{{mcw|Datenpaket}}
* {{b|/execute}}
+
*{{mcw|Funktion}}
* {{b|/setblock}}
 
 
|
 
|
* {{Gridbild|Goldblock|link}}
+
*{{Gridbild|Hebel|link}}
* {{Gridbild|Hebel|link}}
+
*{{Gridbild|Redstone-Fackel|link}}
* {{Gridbild|Befehlsblock|link}}
+
*{{Gridbild|Befehlsblock|link|stapel=2}}
* {{Gridbild|Ketten-Befehlsblock|link}}
+
*{{Gridbild|Wiederhol-Befehlsblock|link}}
 
}}
 
}}
[[Datei:Schaltkreise Zufallsgenerator (Befehle) Bild 2.2.png|400px]]
+
{{Bilderfolge|#1#2|Zufallsgenerator (Befehle) Bild 4.|400px|list=1}}
   
  +
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.
Damit nun auch hier ein Zufallssignal nur einmal an einem bestimmten Befehlsblock gelangt, sind mehrere Befehle notwendig: Der Befehlsblock beim Hebel besitzt den {{bb|4|1}}. Der Ketten-Befehlsblock besitzt den {{bb|4|2}}. Der zweite Ketten-Befehlsblock besitzt den {{bb|4|3}}. Dabei funktioniert das Prinzip wie folgt: Der erste Befehl sucht zufällig einen vorhandenen Rüstungsständer aus und gibt ihm die Eigenschaft "Aktiv1". Der zweite Befehl aktiviert unter dem Rüstungsständer der die Eigenschaft "Aktiv1" hat den Befehlsblock und der dritte Befehl löscht den Rüstungsständer der diese Eigenschaft besitzt.
 
  +
  +
;Einschalten
  +
*{{bb|4|1}} Auf dem Wiederhol-Befehlsblock befindet sich ein Hebel. Legt man ihn um, wird zuerst der Befehlsblock mit der Start-Funktion {{f|link=v4start}} aktiviert.
  +
  +
;Wiederholen
  +
*{{bb|4|2}} Gleichzeitig wird auch der Wiederhol-Befehlsblock mit der Zyklus-Funktion {{f|link=v4zyklus}} aktiv.
  +
  +
;Ausschalten
  +
*{{bb|4|3}} der Befehlsblock löst die Funktion {{f|link=v4stopp}} aus.
   
 
{{Ausklappmenü|offen=1|{{bb}}|
 
{{Ausklappmenü|offen=1|{{bb}}|
  +
{{bb|4|1|i|4=function zufallsgenerator:v4start}}
{{bb|4|1|i|4=/execute as @e[type=minecraft:armor_stand,name="Zufall4",distance=..10,sort=random,limit=1] at @s run tag @e[type=minecraft:armor_stand,distance=..0] add Aktiv1}}
 
  +
{{bb|4|2|k|4=/execute as @e[type=minecraft:armor_stand,name="Zufall4",distance=..10,tag=Aktiv1] at @s run data merge block ~ ~-1 ~ {auto:1b} }}
 
  +
{{bb|4|2|w|4=function zufallsgenerator:v4zyklus}}
{{bb|4|3|k|4=/kill @e[type=minecraft:armor_stand,distance=..10,tag=Aktiv1] }}
 
  +
  +
{{bb|4|3|i|4=function zufallsgenerator:v4stopp}}
  +
}}
  +
  +
{{Ausklappmenü|offen=1|{{mcw|Datenpaket}}<br>|
  +
{{Datenpaket
  +
|name=Schaltkreise
  +
|namespace=zufallsgenerator
  +
|functions=v4start;v4zyklus;v4stopp
  +
}}
  +
}}
  +
  +
{{fü|4|name=Start}}
  +
Die Start-Funktion erstellt das Punkte-Ziel und erzeugt die benötigten Variablen.
  +
  +
{{f|name=zufallsgenerator:v4start|alias=v4start|1=
  +
# 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
  +
}}
  +
  +
  +
{{fü|4|name=Zyklus}}
  +
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.
  +
  +
{{f|name=zufallsgenerator:v4zyklus|alias=v4zyklus|1=
  +
# 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
  +
}}
  +
  +
  +
{{fü|4|name=Stopp}}
  +
Die Stopp-Funktion löscht das Punkte-Ziele wieder.
  +
  +
{{f|name=zufallsgenerator:v4stopp|alias=v4stopp|1=
  +
# Das Punkte-Ziel wird entfernt.
  +
scoreboard objectives remove PZZufG.4Wert
 
}}
 
}}
   

Version vom 26. Juni 2021, 11:04 Uhr

Gruppe: Grid Redstone-Fackel
Schaltkreise

Grid Roter Sand blass mit Mechaniken

Grid Redstone mit Redstone
                Hier:
Grid Befehlsblock mit Befehlen
Verfügbar in:
Wiki Redstone-Welt Redstone-Welt

Grid Redstone-Block mehr Redstone

Grid Wiederhol-Befehlsblock mehr Befehle
Wiki Redstone-Welt
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 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:

Prädikate

Hier werden zwei Beispiele von Prädikaten gezeigt:

Variante 1

Zufallsgenerator (Befehle) Bild 1.1 Zufallsgenerator (Befehle) Bild 1.2

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:
scoreboard objectives add PZZufG.1Wert trigger ["Zufallsgenerator.1: ",{"text":"Wert der Variablen","bold":true}]
execute store success score @p[distance=..15] PZZufG.1Wert run scoreboard players set KonstZufG.1ZEHN PZZufG.1Wert 10


execute if entity @p[distance=..15,scores={PZZufG.1Wert=1}] run summon minecraft:area_effect_cloud ~ ~ ~ {Duration:1,Tags:["EtiZufG.1Alle"]}
execute if entity @p[distance=..15,scores={PZZufG.1Wert=1}] store result score VarZufG.1Zufallswert PZZufG.1Wert run data get entity @e[type=minecraft:area_effect_cloud,tag=EtiZufG.1Alle,sort=nearest,limit=1] UUID[0] 1
execute if entity @p[distance=..15,scores={PZZufG.1Wert=1}] run scoreboard players operation VarZufG.1Zufallswert PZZufG.1Wert %= KonstZufG.1ZEHN PZZufG.1Wert
execute if score KonstZufG.1ZEHN PZZufG.1Wert matches 10 as @a[distance=..15] unless entity @s[scores={PZZufG.1Wert=0}] run tellraw @a[distance=..15] ["Zufallsgenerator.1:\n",{"text":"var = ","bold":true},{"text":"zufallswert(0,9)","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für einen Zufallswert"} },"clickEvent":{"action":"run_command","value":"/trigger PZZufG.1Wert set 1"} },"\n",{"text":"var == ","bold":true},{"score":{"name":"VarZufG.1Zufallswert","objective":"PZZufG.1Wert"},"color":"dark_purple","bold":true} ]
execute as @a[distance=..15] unless entity @s[scores={PZZufG.1Wert=0}] run scoreboard players enable @s PZZufG.1Wert
execute as @a[distance=..15] unless entity @s[scores={PZZufG.1Wert=0}] run scoreboard players set @s PZZufG.1Wert 0


scoreboard objectives remove PZZufG.1Wert

Variante 2

Zufallsgenerator (Befehle) Bild 2.1 Zufallsgenerator (Befehle) Bild 2.2

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 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

Befehlsblöcke mit Befehlen:
scoreboard objectives add PZZufG.2Wert trigger ["Zufallsgenerator.2: ",{"text":"Wert der Variablen","bold":true}]
execute store success score @p[distance=..15] PZZufG.2Wert run scoreboard players set VarZufG.2Bereich PZZufG.2Wert 10


execute if entity @p[distance=..15,scores={PZZufG.2Wert=2}] run scoreboard players add VarZufG.2Bereich PZZufG.2Wert 1
execute if entity @p[distance=..15,scores={PZZufG.2Wert=1}] run summon minecraft:area_effect_cloud ~ ~ ~ {Duration:1,Tags:["EtiZufG.2Alle"]}
execute if entity @p[distance=..15,scores={PZZufG.2Wert=1}] store result score VarZufG.2Zufallswert PZZufG.2Wert run data get entity @e[type=minecraft:area_effect_cloud,tag=EtiZufG.2Alle,sort=nearest,limit=1] UUID[0] 1
execute if entity @p[distance=..15,scores={PZZufG.2Wert=1}] run scoreboard players operation VarZufG.2Zufallswert PZZufG.2Wert %= VarZufG.2Bereich PZZufG.2Wert
execute if score VarZufG.2Bereich PZZufG.2Wert matches 10.. as @a[distance=..15] unless entity @s[scores={PZZufG.2Wert=0}] run tellraw @a[distance=..15] ["Zufallsgenerator.2:\n",{"text":"bereich = ","bold":true},{"text":"bereich + 1","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Bereich + 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZZufG.2Wert set 2"} },"\n",{"text":"bereich == ","bold":true},{"score":{"name":"VarZufG.2Bereich","objective":"PZZufG.2Wert"},"color":"dark_purple","bold":true},"\n",{"text":"var = ","bold":true},{"text":"zufallswert(0,bereich-1)","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für einen Zufallswert"} },"clickEvent":{"action":"run_command","value":"/trigger PZZufG.2Wert set 1"} },"\n",{"text":"var == ","bold":true},{"score":{"name":"VarZufG.2Zufallswert","objective":"PZZufG.2Wert"},"color":"dark_purple","bold":true} ]
execute as @a[distance=..15] unless entity @s[scores={PZZufG.2Wert=0}] run scoreboard players enable @s PZZufG.2Wert
execute as @a[distance=..15] unless entity @s[scores={PZZufG.2Wert=0}] run scoreboard players set @s PZZufG.2Wert 0


scoreboard objectives remove PZZufG.2Wert

Variante 3

Zufallsgenerator (Befehle) Bild 3.1 Zufallsgenerator (Befehle) Bild 3.2

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:
scoreboard objectives add PZZufG.3Wert trigger ["Zufallsgenerator.3: ",{"text":"Wert der Variablen","bold":true}]
execute store success score @p[distance=..15] PZZufG.3Wert run scoreboard players set VarZufG.3Bereich PZZufG.3Wert 10
scoreboard players set VarZufG.3Chance PZZufG.3Wert 0
summon minecraft:marker ~ ~1 ~ {CustomName:'{"text":"falsch","color":"red","bold":true}',Tags:["EtiZufG.3Alle","EtiZufG.3Bool"]}


execute if entity @p[distance=..15,scores={PZZufG.3Wert=3}] if score VarZufG.3Chance PZZufG.3Wert < VarZufG.3Bereich PZZufG.3Wert run scoreboard players add VarZufG.3Chance PZZufG.3Wert 1
execute if entity @p[distance=..15,scores={PZZufG.3Wert=2}] run scoreboard players add VarZufG.3Bereich PZZufG.3Wert 1
execute if entity @p[distance=..15,scores={PZZufG.3Wert=1}] run summon minecraft:area_effect_cloud ~ ~ ~ {Duration:1,Tags:["EtiZufG.3Alle"]}
execute if entity @p[distance=..15,scores={PZZufG.3Wert=1}] store result score VarZufG.3Zufallswert PZZufG.3Wert run data get entity @e[type=minecraft:area_effect_cloud,tag=EtiZufG.3Alle,sort=nearest,limit=1] UUID[0] 1
execute if entity @p[distance=..15,scores={PZZufG.3Wert=1}] run scoreboard players operation VarZufG.3Zufallswert PZZufG.3Wert %= VarZufG.3Bereich PZZufG.3Wert
execute if entity @p[distance=..15,scores={PZZufG.3Wert=1}] store result score @e[type=minecraft:marker,tag=EtiZufG.3Bool,sort=nearest,limit=1] PZZufG.3Wert if score VarZufG.3Zufallswert PZZufG.3Wert < VarZufG.3Chance PZZufG.3Wert
execute if entity @p[distance=..15,scores={PZZufG.3Wert=1}] run data merge entity @e[type=minecraft:marker,tag=EtiZufG.3Bool,scores={PZZufG.3Wert=0},sort=nearest,limit=1] {CustomName:'{"text":"falsch","color":"red","bold":true}'}
execute if entity @p[distance=..15,scores={PZZufG.3Wert=1}] run data merge entity @e[type=minecraft:marker,tag=EtiZufG.3Bool,scores={PZZufG.3Wert=1},sort=nearest,limit=1] {CustomName:'{"text":"wahr","color":"green","bold":true}'}
execute if score VarZufG.3Bereich PZZufG.3Wert matches 10.. as @a[distance=..15] unless entity @s[scores={PZZufG.3Wert=0}] run tellraw @a[distance=..15] ["Zufallsgenerator.3:\n",{"text":"chance = ","bold":true},{"text":"chance + 1","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Bereich + 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZZufG.3Wert set 3"} },"\n",{"text":"chance == ","bold":true},{"score":{"name":"VarZufG.3Chance","objective":"PZZufG.3Wert"},"color":"dark_purple","bold":true},"\n",{"text":"bereich = ","bold":true},{"text":"bereich + 1","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Bereich + 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZZufG.3Wert set 2"} },"\n",{"text":"bereich == ","bold":true},{"score":{"name":"VarZufG.3Bereich","objective":"PZZufG.3Wert"},"color":"dark_purple","bold":true},"\n",{"text":"var = ","bold":true},{"text":"zufallswert(0,bereich-1)","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für einen Zufallswert"} },"clickEvent":{"action":"run_command","value":"/trigger PZZufG.3Wert set 1"} },"\n",{"text":"var == ","bold":true},{"score":{"name":"VarZufG.3Zufallswert","objective":"PZZufG.3Wert"},"color":"dark_purple","bold":true},"\n",{"text":"var < chance == ","bold":true},{"entity":"@e[type=minecraft:marker,tag=EtiZufG.3Bool,sort=nearest,limit=1]","nbt":"CustomName","interpret":true} ]
execute as @a[distance=..15] unless entity @s[scores={PZZufG.3Wert=0}] run scoreboard players enable @s PZZufG.3Wert
execute as @a[distance=..15] unless entity @s[scores={PZZufG.3Wert=0}] run scoreboard players set @s PZZufG.3Wert 0


scoreboard objectives remove PZZufG.3Wert
kill @e[type=minecraft:marker,tag=EtiZufG.3Alle]

Variante 4

Zufallsgenerator (Befehle) Bild 4.1 Zufallsgenerator (Befehle) Bild 4.2

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
Ausschalten

Befehlsblöcke mit Befehlen:
Datenpaket
  • Schaltkreise


Variante 4: Start-Funktion
Die Start-Funktion erstellt das Punkte-Ziel und erzeugt die benötigten Variablen.

Editor Icon 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.

Editor Icon 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-Ziele wieder.

Editor Icon zufallsgenerator:v4stopp.mcfunction
# Das Punkte-Ziel wird entfernt.
scoreboard objectives remove PZZufG.4Wert