Das offizielle Minecraft Wiki twittert hier: Wiki-Twitter  –  Chatte im Wiki-Discord  – Noch keinen Server gefunden? Es gibt einen Wiki-Server

Labyrinth- und Irrgartengenerator (Befehle)

Aus Technik Wiki
Wechseln zu: Navigation, Suche
Gruppe: Grid Klebriger Kolben.png
Anlagen

Grid Roter Sand blass.png mit Mechaniken

Grid Redstone blass.png mit Redstone
                Hier:
Grid Befehlsblock.png mit Befehlen

Die vorgestellte Technik kann in der Redstone-Welt angesehen werden.

Ein Labyrinth besitzt nur einen einzigen Weg, während der Irrgarten Verzweigungen und Sackgassen aufweist. Man kann sie als Teil von Minispielen oder für Abenteuerwelten verwenden. Das Generieren eines Labyrinthes wird durch das Formen eines Weges entlang einer Schnecke gebaut und in drei Richtungen werden Wege umgeleitet. Vielschichtiger könnte man ein Labyrinth mit Hilfe einer Hilbert-Kurve generieren. Irrgärten werden generiert, in dem von der Anfangsposition aus, eine zufällige von vier Richtungen ausgewählt wird und ein weg in diese Richtung gebaut wird, dies wird solange wiederholt, bis kein Bereich mehr frei für einen Weg wäre, dann wird der Weg wieder zurück gelaufen, falls sich beim Zurücklaufen noch weitere unberührte Bereiche auftun, wird dort eine Abzweigung errichtet und der Generierungsvorgang starten von neuem. Erst wenn man wieder an der Anfangsposition angekommen ist, ist der Irrgarten vollständig generiert.

Labyrinthgenerator[Bearbeiten | Quelltext bearbeiten]

Redstone-Schaltkreise Symbol.png
Diese neue oder überarbeitete Technik ist noch nicht in der aktuellen Redstone-Welt vorhanden.
In einem der nächsten Updates wird sie dort hinzugefügt werden.

Labyrinth- und Irrgartengenerator (Befehle) Bild 1.1.png Labyrinth- und Irrgartengenerator (Befehle) Bild 1.2.png Labyrinth- und Irrgartengenerator (Befehle) Bild 1.3.png Labyrinth- und Irrgartengenerator (Befehle) Bild 1.4.png

Wenn man den Hebel des Labyrinthgenerators zum Einschalten umgelegt hat, erhält man über den Chat die Möglichkeit die Größe des Labyrinths einzustellen. Von vier bis 1024 Blöcke groß kann ein Labyrinth generiert werden. Man erhält einen Rüstungsständer dem man platzieren kann um das Labyrinth zu generieren. Der Standort der Platzierung bildet das Zentrum des Labyrinths, von dort aus bahnt sich der Rüstungsständer wie der Weg eines Schneckenhauses seinen Weg. An drei von vier Richtungen wird jeweils der Schnecken-Weg umgeleitet, sodass man der Spieler beim Durchlaufen nicht häufig lange monotone gerade Gänge entlanglaufen muss.

Einschalten
  • Befehl 1.1 Wenn der Hebel umgelegt wird, wird die Start-Funktion gestartet.
Wiederholen
  • Befehl 1.2 Beim Einschalten wird auch der Wiederhol-Befehlsblock gestartet, der jeden Tick die Zyklus-Funktion lädt.
Ausschalten
  • Befehl 1.3 Wenn der Hebel wieder in Ausgangsstellung zurück gelegt wird, wird die Stopp-Funktion ausgelöst und schaltet alles wieder ab.

Befehlsblöcke mit Befehlen:


Variante 1: Start-Funktion
Die Start-Funktion erstellt ein Punktestand-Ziel und Variablen für das Einstellen der Größe des Labyrinths. Spieler bekommen einen Rüstungsständer und eine Anleitung wie man mit ihm arbeiten muss.

Editor Icon.png labyrinth-_und_irrgartengenerator:v1start.mcfunction
# Ein Punktestand-Ziel, dass als Auslöser arbeitet um die Optionen der Nachrichten anzuzeigen.
scoreboard objectives add PZLaUIr.2Gross trigger ["Labyrinth- und Irrgartengenerator.1: ",{"text":"Größe des Labyrinths","bold":true}]

# Eine Variable für die Größe des Labyrinths und eine Konstante für das Multiplizieren mit zwei
scoreboard players set #VarLaUIr.2Groesse PZLaUIr.2Gross 4
scoreboard players set #KonstLaUIr.2ZWEI PZLaUIr.2Gross 2

# Allen Spielern in umkreis der Befehlsquelle von bis zu 25 Metern erhalten einen Rüstungsständer mit dem man Labyrinthe generieren lassen kann.
give @a[distance=..25] minecraft:armor_stand{labyrinth-_und_irrgartengenerator:"v1gegenstand",display:{Name:'{"text":"Labyrinth erstellen","bold":true}',Lore:['"Platziere den Rüstungsständer"','"um den Irrgarten"','"zu erstellen"']},EntityTag:{Small:true,Invisible:true,NoGravity:true,Tags:["EtiLaUIr.1Alle","EtiLaUIr.1Erzeuger","EtiLaUIr.1Generieren","EtiLaUIr.1Erstellen"],ArmorItems:[{},{},{},{id:"minecraft:command_block",Count:1b} ] } }

# Eine Anleitung in Form einer tellraw-Nachricht, damit man als Spieler weis was zu tun ist.
tellraw @a[distance=..25] ["Labyrinth- und Irrgartengenerator.1: ",{"text":"Man platziert den Rüstungsständer und das Labyrinth wird von dort im Zentrum aus generiert.","bold":true}]

Variante 1: Zyklus-Funktion
Die Zyklus-Funktion gibt dem Spieler per Chat-Nachricht die Möglichkeit die Größe des Labyrinths einzustellen. Wird der Rüstungsständer zum generieren platziert werden die entsprechenden Funktionen aufgerufen.

Editor Icon.png labyrinth-_und_irrgartengenerator:v1zyklus.mcfunction
# Wenn irgendein Spieler im Umkreis von 150 Metern den Auslöser der tellraw-Nachricht aktiviert hat, wird die Größen-Variable mal zwei gerechnet, wenn der Wert eins war, bei minus eins wird er durch zwei geteilt.
execute if entity @a[distance=..150,scores={PZLaUIr.2Gross=1}] if score #VarLaUIr.2Groesse PZLaUIr.2Gross matches ..1023 run scoreboard players operation #VarLaUIr.2Groesse PZLaUIr.2Gross *= #KonstLaUIr.2ZWEI PZLaUIr.2Gross
execute if entity @a[distance=..150,scores={PZLaUIr.2Gross=-1}] if score #VarLaUIr.2Groesse PZLaUIr.2Gross matches 8.. run scoreboard players operation #VarLaUIr.2Groesse PZLaUIr.2Gross /= #KonstLaUIr.2ZWEI PZLaUIr.2Gross

# Wenn die Größen-Variable exisitert, erhalten alle Spieler in einem Radius von 150 Metern, falls sie nicht den Wert null besitzen eine tellraw-Nachricht. In dieser kann man die Gräße des Labyrinths beginnend bei vier einstellen.
execute if score #VarLaUIr.2Groesse PZLaUIr.2Gross matches 0.. as @a[distance=..150] unless entity @s[scores={PZLaUIr.2Gross=0}] run tellraw @s ["Labyrinth- und Irrgartengenerator.1: ",{"text":"\nhilbertkurve (","bold":true},{"text":"*2","color":"green","bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für die Größe *2"} },"clickEvent":{"action":"run_command","value":"/trigger PZLaUIr.2Gross set 1"},"bold":true},{"text":"!","bold":true},{"text":"/2","color":"red","bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für die Größe /2"} },"clickEvent":{"action":"run_command","value":"/trigger PZLaUIr.2Gross set -1"},"bold":true},{"text":") == ","bold":true},{"score":{"name":"#VarLaUIr.2Groesse","objective":"PZLaUIr.2Gross"},"color":"dark_purple","bold":true}]

# Wenn der Spieler den Auslöser aktiviert hat, oder noch nie, dann erhält er erneut die Erlaubnis des Auslösers und sein Wert wird auf null gesetzt.
execute as @a[distance=..150] unless entity @s[scores={PZLaUIr.2Gross=0}] run scoreboard players enable @s PZLaUIr.2Gross
execute as @a[distance=..150] unless entity @s[scores={PZLaUIr.2Gross=0}] run scoreboard players set @s PZLaUIr.2Gross 0

# Wenn der Rüstungsständer platziert wurde, wird die Erstellen-Funktion aufgerufen um weitere Einstellungen vorzunehmen und um die Wand-Rüstungsständer zu erzeugen.
execute as @e[type=minecraft:armor_stand,tag=EtiLaUIr.1Erstellen] at @s run function labyrinth-_und_irrgartengenerator:v1erstellen

# Die Querwand-Funktion wird vom Wand-Rüstungsständer aufgerufen, wenn links nach hinten von seiner Blickrichtung aus der Generieren-Rüstungsständer vorbeigezogen ist und hinter ihm Quarzblöcke an entsprechender Stelle sich befinden, sodass man ausgehen kann, dass dort das Labyrinth sein muss.
execute as @e[type=minecraft:armor_stand,tag=EtiLaUIr.1Wand] at @s positioned ^5 ^ ^ if entity @e[distance=..3,type=minecraft:armor_stand,tag=EtiLaUIr.1Generieren] positioned ^-5 ^ ^ if block ~ ~ ~ minecraft:quartz_block if block ~ ~1 ~ minecraft:air if block ^ ^ ^-2 minecraft:quartz_block if block ^ ^1 ^-2 minecraft:air if block ^1 ^ ^-1 minecraft:quartz_block if block ^1 ^1 ^-1 minecraft:quartz_block if block ^-1 ^ ^-1 minecraft:quartz_block if block ^-1 ^1 ^-1 minecraft:quartz_block run function labyrinth-_und_irrgartengenerator:v1querwand

# Der platzierte Rüstungsständer ruft von sich aus die Generieren-Funktion auf um die Wände des Labyrinths zu generieren.
execute as @e[type=minecraft:armor_stand,tag=EtiLaUIr.1Generieren] at @s run function labyrinth-_und_irrgartengenerator:v1generieren

# Wenn der Größen-Wert des Generieren-Rüstungsständers auf null gelandet ist, wird den Spielern in einem Umkreis von 100 Metern die Nachricht ausgegeben und alle Rüstungsständer die für das Generieren verantowrtlich sind, werden entfernt.
execute at @e[type=minecraft:armor_stand,tag=EtiLaUIr.1Generieren,scores={PZLaUIr.2Gross=..0}] run tellraw @a[distance=..100] ["Labyrinth- und Irrgartengenerator.1:\n",{"text":"Labyrinth wurde generiert","color":"gray","bold":true}]
execute at @e[type=minecraft:armor_stand,tag=EtiLaUIr.1Generieren,scores={PZLaUIr.2Gross=..0}] run kill @e[distance=..100,type=minecraft:armor_stand,tag=EtiLaUIr.1Erzeuger,sort=nearest,limit=4]

Variante 1: Erstellen-Funktion
Die Erstellen-Funktion wird vom platzierten Rüstungsständer aufgerufen und stellt alles soweit ein und platziert drei Wand-Rüstungsständer die später die Wände umleiten lassen, sodass das Labyrinth etwas verschlungenere Wege besitzt.

Editor Icon.png labyrinth-_und_irrgartengenerator:v1erstellen.mcfunction
# Der Wert der Größen-Variable wird auf den Generieren-Rüstungsständer kopiert.
scoreboard players operation @s PZLaUIr.2Gross = #VarLaUIr.2Groesse PZLaUIr.2Gross

# Drei Wand-Rüstungsständer in bestimmten Abständen zum Generieren-Rüstungsständer werden erzeugt.
summon minecraft:armor_stand ^ ^ ^4 {Small:true,Marker:true,NoGravity:true,Tags:["EtiLaUIr.1Alle","EtiLaUIr.1Erzeuger","EtiLaUIr.1Wand"]}
summon minecraft:armor_stand ^ ^ ^-2 {Small:true,Marker:true,NoGravity:true,Tags:["EtiLaUIr.1Alle","EtiLaUIr.1Erzeuger","EtiLaUIr.1Wand"]}
summon minecraft:armor_stand ^6 ^ ^ {Small:true,Marker:true,NoGravity:true,Tags:["EtiLaUIr.1Alle","EtiLaUIr.1Erzeuger","EtiLaUIr.1Wand"]}

# Alle drei Wand-Rüstungsständer schauen in das Zentrum des Labyrinths, in dem sie zum Generieren-Rüstungsständer rotiert werden.
execute as @e[type=minecraft:armor_stand,tag=EtiLaUIr.1Wand] positioned as @s facing entity @e[type=minecraft:armor_stand,tag=EtiLaUIr.1Erstellen,sort=nearest,limit=1] feet run teleport @s ~ ~ ~ ~ 0

# Die Wand-Rüstungsständer werden genau in die vier Himmelsrichtungen ausgerichtet
execute as @e[tag=EtiLaUIr.1Erzeuger,y_rotation=135..-135] at @s run teleport @s ~ ~ ~ 180 0
execute as @e[tag=EtiLaUIr.1Erzeuger,y_rotation=-135..-45] at @s run teleport @s ~ ~ ~ -90 0
execute as @e[tag=EtiLaUIr.1Erzeuger,y_rotation=-45..45] at @s run teleport @s ~ ~ ~ 0 0
execute as @e[tag=EtiLaUIr.1Erzeuger,y_rotation=45..135] at @s run teleport @s ~ ~ ~ 90 0

# Das Erstellen-Etikett wird entfernt.
tag @s remove EtiLaUIr.1Erstellen

Variante 1: Querwand-Funktion
Die Querwand-Funktion lässt von den Wand-Rüstungsständern aus die Wege des Labyrinths in andere Richtungen verlaufen und bewegt die Rüstungsständer zum nächsten Arbeitsort weiter.

Editor Icon.png labyrinth-_und_irrgartengenerator:v1querwand.mcfunction
# Von der Position der Wand-Rüstungsständer wird der aktuelle Gang blockiert und gleichzeitig werden Zwischenwege eingebaut.
fill ^1 ^1 ^ ^1 ^2 ^-2 minecraft:air replace
fill ^-1 ^1 ^ ^-1 ^2 ^-2 minecraft:air replace
fill ^ ^1 ^ ^ ^2 ^-2 minecraft:quartz_block replace

# Der Wand-Rüstungsständer wird sechs Meter von seiner Blickrichtung nach hinten teleportiert.
teleport @s ^ ^ ^-6 ~ ~

Variante 1: Generieren-Funktion
Die Generieren-Funktion wird vom platzierten Rüstungsständer aufgerufen und lässt Schritt für Schritt den Weg des Labyrinths enstehen. Damit bei Abbiegungen der Weg ebenfalls eine solche Ecke besitzt, werden die Wände so platziert, dass beim Abbiegen automatisch eine Ecke entsteht.

Editor Icon.png labyrinth-_und_irrgartengenerator:v1generieren.mcfunction
# Der Labyrinth-Schacht wird erzeugt, in dem Quarzblöcke entsprechend platziert werden.
fill ~-1 ~ ~-1 ~1 ~ ~1 minecraft:quartz_block replace
fill ^1 ^ ^-3 ^1 ^2 ^1 minecraft:quartz_block replace
fill ^ ^1 ^-2 ^ ^2 ^ minecraft:air replace minecraft:quartz_block
fill ^-1 ^ ^-1 ^-1 ^2 ^1 minecraft:quartz_block replace

# Der Generieren-Rüstungsständer wird zwei Meter in Blickrichtung nach vorne teleportiert, falls jedoch rechts von ihm in Blickrichtung keine Labyrinth-Wand befindet wird er um 90° gedreht und entsprechend teleportiert, sodass er beim nächsten Schritt um die Ecke läuft.
teleport @s ^ ^ ^2
execute unless block ^-2 ^ ^ minecraft:quartz_block run teleport @s ^-2 ^ ^ ~90 ~

# Dem Rüstungsständer wird der Wert um eins verringert.
scoreboard players remove @s PZLaUIr.2Gross 1

# Eine Partikelwolke wird erzeugt, damit das Labyrinth wieder entfernt werden kann, falls man den Generator wieder ausschaltet.
summon minecraft:area_effect_cloud ~1 ~ ~1 {Duration:-1,Age:-2147483648,WaitTime:-2147483648,Particle:"minecraft:block minecraft:air",Tags:["EtiLaUIr.1Alle","EtiLaUIr.1Gang"]}

Variante 1: Stopp-Funktion
Die Stopp-Funktion löscht das Punktestand-Ziel sowie alle Rüstungsständer inklusive das Labyrinth.

Editor Icon.png labyrinth-_und_irrgartengenerator:v1stopp.mcfunction
# Das Punktestand-Ziel wird entfernt
scoreboard objectives remove PZLaUIr.2Gross

# Alle Rüstungsständer mit der entsprechenden Eigenschaft werden aus den Inventaren entfernt
clear @a minecraft:armor_stand{labyrinth-_und_irrgartengenerator:"v1gegenstand"}

# An der Position der Partikelwolken wird der Labyrinth-Gang entfernt
execute at @e[type=minecraft:area_effect_cloud,tag=EtiLaUIr.1Gang] run fill ~ ~ ~ ~-2 ~2 ~-2 minecraft:air replace

# Die eventuell auf den Boden geworfenen Gegenstände für das Labyrinth werden etikettiert und anschließend werden alle Objekte mit diesem Etikett entfernt
tag @e[type=minecraft:item,nbt={Item:{tag:{labyrinth-_und_irrgartengenerator:"v1gegenstand"} } }] add EtiLaUIr.1Alle
kill @e[tag=EtiLaUIr.1Alle]

Irrgartengenerator[Bearbeiten | Quelltext bearbeiten]

Redstone-Schaltkreise Symbol.png
Diese neue oder überarbeitete Technik ist noch nicht in der aktuellen Redstone-Welt vorhanden.
In einem der nächsten Updates wird sie dort hinzugefügt werden.

Labyrinth- und Irrgartengenerator (Befehle) Bild 2.1.png Labyrinth- und Irrgartengenerator (Befehle) Bild 2.2.png Labyrinth- und Irrgartengenerator (Befehle) Bild 2.3.png Labyrinth- und Irrgartengenerator (Befehle) Bild 2.4.png

Bei diesem Irrgartengenerator legt man einfach den Hebel um und man erhält einen Rüstungsständer zum Generieren und eine Chat-Nachricht zum Einstellen der Breite und Länge des Irrgartens. Man kann frei einstellen welche Rechtecksfläche er besitzen soll. Von 2*2 bis 64*64 sind alle Werte möglich. Wird der Rüstungsständer platziert, wird zuerst ein Rechteck aus Blöcken erzeugt in dem dann der Generator anfängt einen zufälligen Weg dadurch zu bauen. Abzweigungen und Sackgassen werden zufällig erzeugt und der Boden wird mit Seelaternen ausgeleuchtet.

Einschalten
  • Befehl 2.1 Wenn der Hebel umgelegt wird, wird die Start-Funktion gestartet.
Wiederholen
  • Befehl 2.2 Beim Einschalten wird auch der Wiederhol-Befehlsblock gestartet, der jeden Tick die Zyklus-Funktion lädt.
Ausschalten
  • Befehl 2.3 Wenn der Hebel wieder in Ausgangsstellung zurück gelegt wird, wird die Stopp-Funktion ausgelöst und schaltet alles wieder ab.

Befehlsblöcke mit Befehlen:


Variante 2: Start-Funktion
Die Start-Funktion erstellt ein Punktestand-Ziel und Variablen für das Einstellen der Größe des Irrgartens. Ebenfalls wird den Spielern ein Rüstungsständer für das Generieren gegeben.

Editor Icon.png labyrinth-_und_irrgartengenerator:v2start.mcfunction
# Es wird ein Auslöser-Punktestand-Ziel erstellt.
scoreboard objectives add PZLaUIr.2Gross trigger ["Labyrinth- und Irrgartengenerator.2: ",{"text":"Größe des Irrgartens","bold":true}]

# Variablen für Breite und Länge werden festgelegt.
scoreboard players set #VarLaUIr.2Breite PZLaUIr.2Gross 2
scoreboard players set #VarLaUIr.2Laenge PZLaUIr.2Gross 2

# Alle Spieler im Umkreis von 25 Metern erhalten einen Rüstungsständer mit dem man einen Irrgarten generieren lassen kann.
give @a[distance=..25] minecraft:armor_stand{labyrinth-_und_irrgartengenerator:"v2gegenstand",display:{Name:'{"text":"Irrgarten erstellen","bold":true}',Lore:['"Platziere den Rüstungsständer"','"um den Irrgarten"','"zu erstellen"']},EntityTag:{Small:true,Invisible:true,NoGravity:true,Tags:["EtiLaUIr.2Alle","EtiLaUIr.2Generieren","EtiLaUIr.2Erstellen"],ArmorItems:[{},{},{},{id:"minecraft:command_block",Count:1b} ] } }

Variante 2: Zyklus-Funktion
Die Zyklus-Funktion gibt dem Spieler über den Chat die Möglichkeit die Größe des Irrgartens einzustellen und ruft für das Generieren entsprechende Funktionen auf.

Editor Icon.png labyrinth-_und_irrgartengenerator:v2zyklus.mcfunction
# Wenn irgendein Spieler im Umkreis von 150 Metern einen Auslöser-Wert besitzt, wird die Breiten- oder Längen-Variable um eins erhöht oder verringert.
execute if entity @a[distance=..150,scores={PZLaUIr.2Gross=1}] if score #VarLaUIr.2Breite PZLaUIr.2Gross matches ..63 run scoreboard players add #VarLaUIr.2Breite PZLaUIr.2Gross 1
execute if entity @a[distance=..150,scores={PZLaUIr.2Gross=-1}] if score #VarLaUIr.2Breite PZLaUIr.2Gross matches 3.. run scoreboard players remove #VarLaUIr.2Breite PZLaUIr.2Gross 1
execute if entity @a[distance=..150,scores={PZLaUIr.2Gross=2}] if score #VarLaUIr.2Laenge PZLaUIr.2Gross matches ..63 run scoreboard players add #VarLaUIr.2Laenge PZLaUIr.2Gross 1
execute if entity @a[distance=..150,scores={PZLaUIr.2Gross=-2}] if score #VarLaUIr.2Laenge PZLaUIr.2Gross matches 3.. run scoreboard players remove #VarLaUIr.2Laenge PZLaUIr.2Gross 1

# Falls die Längen-Variable existiert wird in einem Umkreis von 150 Metern Spielern, die nicht den Wert null besitzen eine tellraw-Nachricht gesendet. Diese ermöglicht es die Optionen für Breite und Länge des Irrgartens einzustellen.
execute if score #VarLaUIr.2Laenge PZLaUIr.2Gross matches 0.. as @a[distance=..150] unless entity @s[scores={PZLaUIr.2Gross=0}] run tellraw @s ["Labyrinth- und Irrgartengenerator.2: ",{"text":"\nbreite (","bold":true},{"text":"+1","color":"green","bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für die Breite +1"} },"clickEvent":{"action":"run_command","value":"/trigger PZLaUIr.2Gross set 1"},"bold":true},{"text":"!","bold":true},{"text":"-1","color":"red","bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für die Breite -1"} },"clickEvent":{"action":"run_command","value":"/trigger PZLaUIr.2Gross set -1"},"bold":true},{"text":") == ","bold":true},{"score":{"name":"#VarLaUIr.2Breite","objective":"PZLaUIr.2Gross"},"color":"dark_purple","bold":true},{"text":"\nlänge (","bold":true},{"text":"+1","color":"green","bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für die Länge +1"} },"clickEvent":{"action":"run_command","value":"/trigger PZLaUIr.2Gross set 2"},"bold":true},{"text":"!","bold":true},{"text":"-1","color":"red","bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für die Länge -1"} },"clickEvent":{"action":"run_command","value":"/trigger PZLaUIr.2Gross set -2"} },{"text":") == ","bold":true},{"score":{"name":"#VarLaUIr.2Laenge","objective":"PZLaUIr.2Gross"},"color":"dark_purple","bold":true}]

# Wenn Spieler im Umkreis von 150 Metern einen Auslöser-Wert angeklickt hatten oder noch nie, dann erhalten sie die Erlaubnis den Auslöser zu aktiiveren und ihr Wert wird auf null gesetzt.
execute as @a[distance=..150] unless entity @s[scores={PZLaUIr.2Gross=0}] run scoreboard players enable @s PZLaUIr.2Gross
execute as @a[distance=..150] unless entity @s[scores={PZLaUIr.2Gross=0}] run scoreboard players set @s PZLaUIr.2Gross 0

# Wurde der Erstellen-Rüstungsständer paltziert, so wird von seiner zentrierten Position mittig die Erstellen-Funktion aufgerufen.
execute as @e[type=minecraft:armor_stand,tag=EtiLaUIr.2Erstellen] at @s align xz positioned ~0.5 ~ ~0.5 run function labyrinth-_und_irrgartengenerator:v2erstellen

# Der Rüstungsständer ruft von sich aus zentriert mittig die Generieren-Funktion auf.
execute as @e[type=minecraft:armor_stand,tag=EtiLaUIr.2Generieren] at @s align xz positioned ~0.5 ~ ~0.5 run function labyrinth-_und_irrgartengenerator:v2generieren

Variante 2: Erstellen-Funktion
Die Erstellen-Funktion sorgt dafür, dass der platzierte Rüstungsständer ordentlich positioniert wird und die Breiten-Funktion mit eingestellten Variablen Wert aufgerufen werden kann.

Editor Icon.png labyrinth-_und_irrgartengenerator:v2erstellen.mcfunction
# Der Breiten-Wert wird auf eins gesetzt.
scoreboard players set #VarLaUIr.2BreitePosition PZLaUIr.2Gross 1

# Die Breiten-Funktion wird aufgerufen
function labyrinth-_und_irrgartengenerator:v2erstellen_breite

# Das Etikett wird entfernt
tag @s remove EtiLaUIr.2Erstellen

# Der Rüstungsständer wird zentriert mittig neu positioniert.
execute align xyz positioned ~0.5 ~ ~0.5 run teleport @s ~-1 ~1 ~-1

Variante 2: Erstellen-Breiten-Funktion
Die Erstellen-Breiten-Funktion ruft sich selbst versetzt immer wieder auf um von jedem dieser Positionen die Erstellen-Längen-Funktion aufzurufen.

Editor Icon.png labyrinth-_und_irrgartengenerator:v2erstellen_breite.mcfunction
# Die Breiten-Variable wird um eins erhöht.
scoreboard players add #VarLaUIr.2BreitePosition PZLaUIr.2Gross 1

# Die Längen-Variable wird auf eins gesetzt und falls die Variable für die eingestellte Länge mindestens den Wert zwei hat, wird die Längen-Funktion aufgerufen. Ebenfalls wird geprüft ob die Breiten-Variable kleiner gleich der eingestellten Breite entspricht und nur dann wird die Breiten-Funktion um zwei Meter versetzt selbst aufgerufen.
scoreboard players set #VarLaUIr.2LaengePosition PZLaUIr.2Gross 1
execute if score #VarLaUIr.2Laenge PZLaUIr.2Gross matches 2.. run function labyrinth-_und_irrgartengenerator:v2erstellen_laenge
execute if score #VarLaUIr.2BreitePosition PZLaUIr.2Gross <= #VarLaUIr.2Breite PZLaUIr.2Gross positioned ~-2 ~ ~ run function labyrinth-_und_irrgartengenerator:v2erstellen_breite

Variante 2: Erstellen-Längen-Funktion
Die Erstellen-Längen-Funktion erledigt die eigentliche Arbeit. Es wird ein Quarzbereich platziert und sie ruft sich selbst versetzt wieder auf, dass sorgt dafür, dass ein Rechteck gewünschter Größe generiert wird.

Editor Icon.png labyrinth-_und_irrgartengenerator:v2erstellen_laenge.mcfunction
# Ein Quarz-Bereich wird platziert.
fill ~ ~ ~ ~-2 ~2 ~-2 minecraft:quartz_block replace

# Eine Partikelwolke wird erzeugt, damit der Irrgarten beim Ausschalten komplett entfernt werden kann.
summon minecraft:area_effect_cloud ~ ~ ~ {Duration:-1,Age:-2147483648,WaitTime:-2147483648,Particle:"minecraft:block minecraft:air",Tags:["EtiLaUIr.2Alle","EtiLaUIr.2Gang"]}

# Die Längen-Variable wird um eins erhöht und nur wenn deren Wert kleiner gleich dem eingestellten Längen-Wert entspricht wird die Längen-Funktion selbst um zwei Meter versetzt aufgerufen.
scoreboard players add #VarLaUIr.2LaengePosition PZLaUIr.2Gross 1
execute if score #VarLaUIr.2LaengePosition PZLaUIr.2Gross <= #VarLaUIr.2Laenge PZLaUIr.2Gross positioned ~ ~ ~-2 run function labyrinth-_und_irrgartengenerator:v2erstellen_laenge

Variante 2: Generieren-Funktion
Die Generieren-Funktion sorgt dafür, dass ein zufälliger Weg durch das Rechteck generiert wird. Gegebenfalls wird die Generieren-Abzweig-Funktion aufgerufen, falls der aktuelle Weg eine Sackgasse gebildet hat, dann wird der Weg solange zurückgegangen bis wieder eine Abzweigung möglich ist, um erneut einen Weg zu generieren.

Editor Icon.png labyrinth-_und_irrgartengenerator:v2generieren.mcfunction
# Von der aktuellen Position aus werden vier Rüstungsständer in jede Himmelsrichtung erzeugt, wenn sich in der Richtung ein Quarzblock befindet.
execute if block ~2 ~-1 ~ minecraft:quartz_block run summon minecraft:armor_stand ~2 ~ ~ {Small:true,Invisibel:true,Tags:["EtiLaUIr.2Alle","EtiLaUIr.2Richtung"]}
execute if block ~-2 ~-1 ~ minecraft:quartz_block run summon minecraft:armor_stand ~-2 ~ ~ {Small:true,Invisibel:true,Tags:["EtiLaUIr.2Alle","EtiLaUIr.2Richtung"]}
execute if block ~ ~-1 ~2 minecraft:quartz_block run summon minecraft:armor_stand ~ ~ ~2 {Small:true,Invisibel:true,Tags:["EtiLaUIr.2Alle","EtiLaUIr.2Richtung"]}
execute if block ~ ~-1 ~-2 minecraft:quartz_block run summon minecraft:armor_stand ~ ~ ~-2 {Small:true,Invisibel:true,Tags:["EtiLaUIr.2Alle","EtiLaUIr.2Richtung"]}

# Der Rüstungsständer schaut zufällig zu einem der maximal vier erzeugten Rüstungsständer.
teleport @s ~ ~ ~ facing entity @e[distance=..3,type=minecraft:armor_stand,tag=EtiLaUIr.2Richtung,sort=random,limit=1]

# Je nach dem zu welchen Rüstungsständer er schaut wird er entsprechend in diese Richtung einen Befehlsblock ausgerichtet platzieren.
execute if entity @s[y_rotation=135..-135] if block ~ ~-1 ~ minecraft:quartz_block run setblock ~ ~ ~ minecraft:command_block[facing=north] replace
execute if entity @s[y_rotation=-135..-45] if block ~ ~-1 ~ minecraft:quartz_block run setblock ~ ~ ~ minecraft:command_block[facing=east] replace
execute if entity @s[y_rotation=-45..45] if block ~ ~-1 ~ minecraft:quartz_block run setblock ~ ~ ~ minecraft:command_block[facing=south] replace
execute if entity @s[y_rotation=45..135] if block ~ ~-1 ~ minecraft:quartz_block run setblock ~ ~ ~ minecraft:command_block[facing=west] replace

# Eine Seelaterne wird im Boden platziert und es wird der obere Block durch Luft ersetzt.
setblock ~ ~-1 ~ minecraft:sea_lantern replace
setblock ~ ~1 ~ minecraft:air replace

# Falls mindestens ein Rüstungsständer für eine zufällige Richtung exisitiert, wird der Rüstungsständer in Blickrichtung nach vorne teleportiert und in Blickrichtung wird Luft platziert.
execute if entity @e[distance=..3,type=minecraft:armor_stand,tag=EtiLaUIr.2Richtung,limit=1] at @s run teleport @s ^ ^ ^2
execute if entity @e[distance=..3,type=minecraft:armor_stand,tag=EtiLaUIr.2Richtung,limit=1] at @s run fill ^ ^ ^ ^ ^1 ^-1 minecraft:air

# Falls es keinen Rüstungsständer für die Richtung gibt und auch kein Befehlsblock an der aktuellen Stelle sich befindet, muss der Irrgarten fertig sein und dementsprechend wird eine Nachricht im Umkreis von 100 Metern ausgegeben. Ebenfalls wird der Rüstungsständer entfernt.
execute unless entity @e[distance=..3,type=minecraft:armor_stand,tag=EtiLaUIr.2Richtung] unless block ~ ~ ~ minecraft:command_block run tellraw @a[distance=..100] ["Labyrinth- und Irrgartengenerator.2:\n",{"text":"Irrgarten wurde generiert","color":"gray","bold":true}]
execute unless entity @e[distance=..3,type=minecraft:armor_stand,tag=EtiLaUIr.2Richtung] unless block ~ ~ ~ minecraft:command_block run kill @s

# Falls der Rüstungsständer nicht entfernt wurde, muss es einen Rückweg geben der durch die Befehlsblöcke markiert ist, dann wird die Abzweig-Funktion aufgerufen.
execute unless entity @e[distance=..3,type=minecraft:armor_stand,tag=EtiLaUIr.2Richtung] at @s run function labyrinth-_und_irrgartengenerator:v2generieren_abzweig

# Alle möglichen vier Richtungs-Rüstungsständer werden gelöscht.
kill @e[type=minecraft:armor_stand,tag=EtiLaUIr.2Richtung]

Variante 2: Generieren-Abzweig-Funktion
Die Generieren-Abzweig-Funktion lässt den Rüstungsständer wieder zurück laufen, damit er aus der Sackgasse heraus kommt.

Editor Icon.png labyrinth-_und_irrgartengenerator:v2generieren_abzweig.mcfunction
# Je nach dem wo sich ein Befehlsblock befindet, wird der Rüstungsständer in diese Richtung teleportiert.
execute if block ~ ~ ~1 minecraft:air if block ~ ~ ~2 minecraft:command_block run teleport @s ~ ~ ~2
execute if block ~-1 ~ ~ minecraft:air if block ~-2 ~ ~ minecraft:command_block run teleport @s ~-2 ~ ~
execute if block ~ ~ ~-1 minecraft:air if block ~ ~ ~-2 minecraft:command_block run teleport @s ~ ~ ~-2
execute if block ~1 ~ ~ minecraft:air if block ~2 ~ ~ minecraft:command_block run teleport @s ~2 ~ ~

# Anschließend wird der Befehlsblock durch Luft ersetzt.
setblock ~ ~ ~ minecraft:air replace

Variante 2: Stopp-Funktion
Die Stopp-Funktion löscht das Punktestand-Ziel, alle Rüstungsständer und den Irrgarten.

Editor Icon.png labyrinth-_und_irrgartengenerator:v2stopp.mcfunction
# Das Punktestand-Ziel wird entfernt.
scoreboard objectives remove PZLaUIr.2Gross

# Die Rüstungsständer mit der speziellen Eigenschaft werden aus allen Spielern-Inventaren gelöscht.
clear @a minecraft:armor_stand{labyrinth-_und_irrgartengenerator:"v2gegenstand"}

# An der Position der Partikelwolken wird Luft platziert, sodass kein Irrgarten mehr übrig bleibt.
execute at @e[type=minecraft:area_effect_cloud,tag=EtiLaUIr.2Gang] run fill ~ ~ ~ ~-2 ~2 ~-2 minecraft:air replace

# Die gedroppten Rüstungsständer erhalten ein Etikett und alle Objekte mit diesem Etikett werden entfernt.
tag @e[type=minecraft:item,nbt={Item:{tag:{labyrinth-_und_irrgartengenerator:"v2gegenstand"} } }] add EtiLaUIr.2Alle
kill @e[tag=EtiLaUIr.2Alle]