Technik Wiki
Registrieren
Advertisement
Gruppe: Grid Sattel
Straßenverkehrsanlagen

Grid Roter Sand blass mit Mechaniken

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

Eine Straßenbrücken- und -tunnelbaumaschine ist dafür gedacht, in unebenen Gelände das Täler und Berge enthält, Brücken und Tunnel zu errichten. Für ebenes Gelände ist eine Straßenbaumaschine zu bevorzugen. Wenn die Baumaschine durch den Boden gräbt, baut sie dabei eine Glasfassade um von oben stürzendes Geröll oder Wasserfluten zu vermeiden. Ebenso lässt sich die Baumaschine durch Ozeane manövrieren, bei denen die Straßentunnel eine gute Aussicht auf die Tiefsee ermöglicht. Wird dagegen in weiten Höhen gearbeitet, so werden Pfeiler in festen Abständen platziert um der Straßenbrücke halt zu geben. Die Straßen können einspurig oder mehrspurig sein. Ebenso ist es möglich für die Straßenbahn ein Gleis eingebettet in die Straße zu platzieren.

Variante 1[]

Straßenbrücken- und -tunnelbaumaschine (Befehle) Bild 1.1 Straßenbrücken- und -tunnelbaumaschine (Befehle) Bild 1.2 Straßenbrücken- und -tunnelbaumaschine (Befehle) Bild 1.3 Straßenbrücken- und -tunnelbaumaschine (Befehle) Bild 1.4

Mit dieser Straßenbrücken- und -tunnelbaumaschine lassen sich ein- und zweispurige Straßenbrücken und -tunnel anlegen. Beim Einschalten erhält man einen Rüstungsständer, den man auf den Boden platzieren kann. Dann erscheint ein Fahrzeug in Form von schwebenden Blöcke die die Straße andeuten und eine Lore in die man sich setzen kann. Setzt man sich hinein, so erhält man in das Inventar eine Angel, die man auswählen kann um das Fahrzeug zu fahren. Alle Blöcke die man für den Straßenbau verbaut, müssen vorher auch im Inventar des Spielers sein.

Einschalten
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:


Datenpaket


Variante 1: Start-Funktion
Die Start-Funktion erstellt das Punkte-Ziel und gibt den Spielern den Rüstungsständer mit dem man die Baumaschine platzieren kann. Ebenso erhalten die Spieler alle Materialien.

Editor Icon strassenbruecken-_und_-tunnelbaumaschine:v1start.mcfunction
# Es wird ein Punkte-Ziel für Werte und Auslöser erstellt.
scoreboard objectives add PZStrBTBM.1Wert trigger ["Straßenbrücken- und -tunnelbaumaschine.1: ",{"text":"Wert der Variablen","bold":true}]

# Die globale Variable für Pfeiler wird gesetzt.
scoreboard players set VarStrBTBM.1Pfeiler PZStrBTBM.1Wert 16

# Spieler im Umkreis erhalten einen Rüstungsständer, den man platzieren kann um die Baumaschine zu erzeugen.
give @a[distance=..15] minecraft:armor_stand{EigStrBTBM.1Alle:true,display:{Name:'{"text":"Straßenbrücken- und -tunnelbaumaschine","color":"gold","bold":true}',Lore:['"Platziere den Rüstungsständer"','"um die Straßenbrücken- und"','"-tunnelbaumaschine zu erstellen"','"und um eine Angel zu erhalten"'] },EntityTag:{Small:true,Invisible:true,NoGravity:true,Tags:["EtiStrBTBM.1Alle","EtiStrBTBM.1Erstellen"] } } 16

# Man erhält ein wenig von dem Material dass zum Bau der Spuren verwendet wird.
give @a[distance=..15] minecraft:gray_concrete{EigStrBTBM.1Alle:true} 192
give @a[distance=..15] minecraft:quartz_block{EigStrBTBM.1Alle:true} 128
give @a[distance=..15] minecraft:stone_brick_slab{EigStrBTBM.1Alle:true} 256

# Eine kurze Anleitung, wie die Baumaschine aktiviert werden kann.
tellraw @a[distance=..15] ["Straßenbrücken- und -tunnelbaumaschine.1:\n",{"text":"Platziere den Rüstungsständer um die Straßenbaumaschine zu erzeugen. Setze dich in die Lore und steuere die Maschine durch das Auswählen der Angel. Um die Maschine zu löschen, wirf den Köder von der Angel auf diese.","bold":true}]

# Der Chunk wird aktiviert.
forceload add ~ ~

Variante 1: Zyklus-Funktion
Die Zyklus-Funktion schaut, dass die Baumaschine erstellt oder entfernt wird. Sie schaut danach ob der Spieler in der Baumaschine sitzt und das Steuer ausgewählt hat und sorgt für die Pfeiler.

Editor Icon strassenbruecken-_und_-tunnelbaumaschine:v1zyklus.mcfunction
# Wird der Rüstungsständer platziert um die Baumaschine zu erzeugen, wird geprüft ob nicht bereits eine Baumaschine in der Nähe ist, andernfalls wird der Rüstungsständer entfernt.
execute as @e[type=minecraft:armor_stand,tag=EtiStrBTBM.1Erstellen] at @s if entity @e[distance=..20,type=minecraft:marker,tag=EtiStrBTBM.1Baumaschine] run function strassenbruecken-_und_-tunnelbaumaschine:v1entfernen
execute as @e[type=minecraft:armor_stand,tag=EtiStrBTBM.1Erstellen] at @s align y run function strassenbruecken-_und_-tunnelbaumaschine:v1erstellen

# Wenn die Baumaschine keine Lore mehr als Sitz besitzt, wird sie entfernt. Ebenso soll sie entfernt werden, wenn man mit einem Angelköder nach ihr schmeißt, diesbezüglich wird die Lore entfernt um den anderen Fall auszulösen.
execute at @e[type=minecraft:marker,tag=EtiStrBTBM.1Baumaschine] if entity @e[distance=..5,type=minecraft:fishing_bobber] run kill @e[distance=..5,type=minecraft:minecart,tag=EtiStrBTBM.1Sitz,sort=nearest,limit=1]
execute at @e[type=minecraft:armor_stand,tag=EtiStrBTBM.1Halter,nbt=!{Passengers:[{}]}] at @e[distance=..5,type=minecraft:marker,tag=EtiStrBTBM.1Baumaschine,sort=nearest,limit=1] run function strassenbruecken-_und_-tunnelbaumaschine:v1entfernen

# Wenn der Spieler in der Lore der Baumaschine sitzt, bekommt er ein Etikett.
execute at @e[type=minecraft:marker,tag=EtiStrBTBM.1Baumaschine] run tag @p[distance=..5,gamemode=!spectator,nbt={RootVehicle:{Entity:{Tags:["EtiStrBTBM.1Alle"]} } }] add EtiStrBTBM.1Sitzen

# Wenn der Spieler die Angel ausgewählt hat, erhält er zur Erkennung ein Etikett.
tag @a[gamemode=!spectator,nbt={SelectedItem:{tag:{EigStrBTBM.1Steuer:true} } }] add EtiStrBTBM.1Ausgewaehlt

# Wenn der Spieler die Angel ausgewählt hatte, aber nicht mehr in der Lore sitzt, wird ihm das Etikett entfernt.
tag @a[tag=EtiStrBTBM.1Ausgewaehlt,tag=EtiStrBTBM.1Auswahl,tag=!EtiStrBTBM.1Sitzen] remove EtiStrBTBM.1Auswahl

# Wenn der Spieler die Angel auswählt, wird ihm sein Punktestand auf einen Wert ohne Funktion gesetzt, sodass er aber dennoch den Auslöser aktiviert und so eine Auslöser-Nachricht erhählt.
scoreboard players set @a[tag=EtiStrBTBM.1Ausgewaehlt,tag=!EtiStrBTBM.1Auswahl] PZStrBTBM.1Wert -99

# Spieler die das Etikett besitzen laden von sich aus die Auslöser-Funktion.
execute as @a[tag=EtiStrBTBM.1Ausgewaehlt,tag=EtiStrBTBM.1Sitzen] unless entity @s[scores={PZStrBTBM.1Wert=0}] at @s as @e[distance=..5,type=minecraft:marker,tag=EtiStrBTBM.1Baumaschine,sort=nearest,limit=1] run function strassenbruecken-_und_-tunnelbaumaschine:v1ausloeser

# Falls Spieler die Angel auswählen ohne in der Lore zu sitzen erhalten sie eine Titel-Nachricht, als Rückmeldung.
title @a[tag=EtiStrBTBM.1Ausgewaehlt,tag=!EtiStrBTBM.1Auswahl,tag=!EtiStrBTBM.1Sitzen] actionbar ["",{"text":"Spieler sitzt == ","bold":true},{"text":"falsch","color":"red","bold":true}]

# Um zu erfassen ob der Spieler gerade das Schwert ausgewählt hat oder ihn nicht mehr auswählt, wird ihm ein Etikett gegeben oder entfernt.
tag @a[tag=EtiStrBTBM.1Ausgewaehlt,tag=!EtiStrBTBM.1Auswahl] add EtiStrBTBM.1Auswahl
tag @a[tag=!EtiStrBTBM.1Ausgewaehlt,tag=EtiStrBTBM.1Auswahl] remove EtiStrBTBM.1Auswahl

# Damit die Baumaschine ausgerichtet wird, wird von iherer Position die Ausrichtungs-Funktion geladen, sofern Spieler in der Nähe sind.
execute as @e[type=minecraft:marker,tag=EtiStrBTBM.1Baumaschine] at @s if entity @p[distance=..10,gamemode=!spectator] rotated ~ 0 run function strassenbruecken-_und_-tunnelbaumaschine:v1ausrichtung

# Der Wahrheitswert von der Tempomat-Eigenschaft wird in den Namen kopiert um eine erleichterte Abfrage zu ermöglichen.
execute as @e[type=minecraft:marker,tag=EtiStrBTBM.1Baumaschine] run data modify entity @s CustomName set from entity @s data."EigStrBTBM.1Tempomat"

# Wenn sich in der Nähe des Baumaschinen-Markierers kein Spieler aufhält der das Schwert ausgewählt hat, wird, falls der Tempomat aktiv ist, dieser deaktiviert, in dem die NBT-Eigenschaft geändert wird.
execute as @e[type=minecraft:marker,tag=EtiStrBTBM.1Baumaschine,name="wahr"] at @s unless entity @p[distance=..5,tag=EtiStrBTBM.1Sitzen,tag=EtiStrBTBM.1Ausgewaehlt] run data modify entity @s data."EigStrBTBM.1Tempomat" set value '{"bold":true,"color":"red","text":"falsch"}'

# Damit nur alle vier Ticks die Baumaschine einen Block zurücklegt, wenn der Tempomat aktiv ist, wird eine Variable hochgezählt und nur bei dem Wert vier wird dem Spieler der Wert zum Fahren gegeben.
scoreboard players add VarStrBTBM.1Tick PZStrBTBM.1Wert 1
execute if score VarStrBTBM.1Tick PZStrBTBM.1Wert matches 4.. at @e[type=minecraft:marker,tag=EtiStrBTBM.1Baumaschine,name="wahr"] run scoreboard players set @p[distance=..5,tag=EtiStrBTBM.1Sitzen] PZStrBTBM.1Wert 11
execute if score VarStrBTBM.1Tick PZStrBTBM.1Wert matches 4.. run scoreboard players set VarStrBTBM.1Tick PZStrBTBM.1Wert 0

# Das Etikett wird wieder entfernt.
tag @a[tag=EtiStrBTBM.1Ausgewaehlt] remove EtiStrBTBM.1Ausgewaehlt

# Das Etikett zum Sitzen wird entfernt.
tag @a[tag=EtiStrBTBM.1Sitzen] remove EtiStrBTBM.1Sitzen

# Falls die Baumaschine Pfeiler erzeugt hat, wird für diese die Pfeiler-Funktion geladen.
execute as @e[type=minecraft:marker,tag=EtiStrBTBM.1Pfeiler] at @s run function strassenbruecken-_und_-tunnelbaumaschine:v1pfeiler

Variante 1: Erstellen-Funktion
Die Erstellen-Funktion gibt dem Spieler den Steuer-Gegenstand und erzeugt die komplette Baumaschine.

Editor Icon strassenbruecken-_und_-tunnelbaumaschine:v1erstellen.mcfunction
# Der nächst gelegene Spieler erhält eine Angel um die Baumaschine über den Chat steuern zu können.
give @p[distance=..5,gamemode=!spectator] minecraft:fishing_rod{EigStrBTBM.1Alle:true,EigStrBTBM.1Steuer:true,Enchantments:[{id:-1}],display:{Name:'{"text":"Optionen","bold":true}',Lore:['"Wähle die Angel aus"','"während du in der Lore sitzt,"','"um durch deine Blickrichtung die Richtung"','"der Straßenbaumaschine zu bestimmen."','"Ebenfalls erhält man die Nachricht-Optionen"','"und durch Werfen des Angelköders auf"','"die Straßenbaumaschine wird diese gedroppt."'] } }

# Die Baumaschine in Form eines Markierers wird erzeugt. Der Markierer besitzt für alle Einstellungs-Werte bestimmte Eigenschaften.
summon minecraft:marker ~ ~ ~ {Tags:["EtiStrBTBM.1Alle","EtiStrBTBM.1Entfernen","EtiStrBTBM.1Baumaschine"],data:{EigStrBTBM.1Zweierspur:'{"bold":true,"color":"red","text":"falsch"}',EigStrBTBM.1Neigung:'{"bold":true,"color":"aqua","text":"Geradeaus"}',EigStrBTBM.1Raster:'{"bold":true,"color":"green","text":"wahr"}',EigStrBTBM.1Tempomat:'{"bold":true,"color":"red","text":"falsch"}',EigStrBTBM.1Haengepfeiler:'{"bold":true,"color":"red","text":"falsch"}'} }

# Damit die Baumaschine beim Erzeugen immer in die Richtung schaut in die der Spieler schaut, wird sie nach dem platzierten Rüstungsständer ausgerichtet, welcher aber in die entgegengesetzte Richtung schaut.
teleport @e[type=minecraft:marker,tag=EtiStrBTBM.1Baumaschine,sort=nearest,limit=1] ~ ~ ~ ~180 ~

# Die Lore, in die der Spieler sich setzen kann, wird auf einem unsichtbaren Rüstungsständer erzeugt.
summon minecraft:armor_stand ~ ~ ~ {Invulnerable:true,Invisible:true,NoGravity:true,Marker:true,Tags:["EtiStrBTBM.1Alle","EtiStrBTBM.1Entfernen","EtiStrBTBM.1Halter"],Passengers:[{id:"minecraft:minecart",NoGravity:true,Invulnerable:true,Tags:["EtiStrBTBM.1Alle","EtiStrBTBM.1Entfernen","EtiStrBTBM.1Sitz"] } ] }

# Alle Blöcke zum Bau der Spuren werden als sichtbare kleine Blöcke per unsichtbaren Rüstungsständer erzeugt.
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiStrBTBM.1Alle","EtiStrBTBM.1Entfernen","EtiStrBTBM.1Mitte","EtiStrBTBM.1SpurBett"],ArmorItems:[{},{},{},{id:"minecraft:gray_concrete",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiStrBTBM.1Alle","EtiStrBTBM.1Entfernen","EtiStrBTBM.1Rechts1","EtiStrBTBM.1SpurBett"],ArmorItems:[{},{},{},{id:"minecraft:gray_concrete",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiStrBTBM.1Alle","EtiStrBTBM.1Entfernen","EtiStrBTBM.1Links1","EtiStrBTBM.1SpurBett"],ArmorItems:[{},{},{},{id:"minecraft:gray_concrete",Count:1b}]}

summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiStrBTBM.1Alle","EtiStrBTBM.1Entfernen","EtiStrBTBM.1Rechts2","EtiStrBTBM.1Spur","EtiStrBTBM.1Unterbau","EtiStrBTBM.1SpurRand"],ArmorItems:[{},{},{},{id:"minecraft:quartz_block",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiStrBTBM.1Alle","EtiStrBTBM.1Entfernen","EtiStrBTBM.1Links2","EtiStrBTBM.1Spur","EtiStrBTBM.1Unterbau","EtiStrBTBM.1SpurRand"],ArmorItems:[{},{},{},{id:"minecraft:quartz_block",Count:1b}]}

summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiStrBTBM.1Alle","EtiStrBTBM.1Entfernen","EtiStrBTBM.1Rechts3","EtiStrBTBM.1Spur","EtiStrBTBM.1Unterbau","EtiStrBTBM.1GehSteig"],ArmorItems:[{},{},{},{id:"minecraft:stone_brick_slab",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiStrBTBM.1Alle","EtiStrBTBM.1Entfernen","EtiStrBTBM.1Rechts4","EtiStrBTBM.1Spur","EtiStrBTBM.1GehSteig"],ArmorItems:[{},{},{},{id:"minecraft:stone_brick_slab",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiStrBTBM.1Alle","EtiStrBTBM.1Entfernen","EtiStrBTBM.1Links3","EtiStrBTBM.1Spur","EtiStrBTBM.1Unterbau","EtiStrBTBM.1GehSteig"],ArmorItems:[{},{},{},{id:"minecraft:stone_brick_slab",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiStrBTBM.1Alle","EtiStrBTBM.1Entfernen","EtiStrBTBM.1Links4","EtiStrBTBM.1Spur","EtiStrBTBM.1GehSteig"],ArmorItems:[{},{},{},{id:"minecraft:stone_brick_slab",Count:1b}]}

# Der eigentliche Rüstungsständer zum erzeugen der Baumaschine wird entfernt.
kill @s

Variante 1: Entfernen-Funktion
Die Entfernen-Funktion sorgt dafür, dass die Baumaschine ordnungsgemäß und korrekt entfernt wird und sie sorgt dafür, das der Baumaschinen-Gegenstand gedroppt wird.

Editor Icon strassenbruecken-_und_-tunnelbaumaschine:v1entfernen.mcfunction
# Es wird der Rüstungsständer als Gegenstand erzeugt.
summon minecraft:item ~ ~ ~ {Item:{id:"minecraft:armor_stand",Count:1b,tag:{EigStrBTBM.1Alle:true,display:{Name:'{"text":"Straßenbrücken- und -tunnelbaumaschine","color":"gold","bold":true}',Lore:['"Platziere den Rüstungsständer"','"um die Straßenbrücken- und"','"-tunnelbaumaschine zu erstellen"','"und um eine Angel zu erhalten"'] },EntityTag:{Small:true,Invisible:true,NoGravity:true,Tags:["EtiStrBTBM.1Alle","EtiStrBTBM.1Erstellen"]},Motion:[0.0d,0.3d,0.0d] } } }

# Wenn die Baumaschine bereits vorhanden war, wird dem Spieler die Angel aus dem Inventar entfernt.
execute unless entity @e[distance=..10,tag=EtiStrBTBM.1Erstellen] run clear @p[distance=..25,gamemode=!spectator,nbt={Inventory:[{id:"minecraft:fishing_rod"}]}] minecraft:fishing_rod{EigStrBTBM.1Alle:true} 1

# Falls die Baumaschine vollständig vorhanden war, werden alle Bauteile von ihr ebenfalls entfernt. Andernfalls nur sie selbst.
execute unless entity @e[distance=..10,tag=EtiStrBTBM.1Erstellen] run kill @e[distance=..10,tag=EtiStrBTBM.1Entfernen,sort=nearest,limit=17]
kill @s[tag=EtiStrBTBM.1Erstellen]

# Eine Meldung erscheint, damit der Spieler weis warum die Maschine entfernt wurde.
execute unless entity @e[distance=..10,tag=EtiStrBTBM.1Erstellen] run tellraw @p[distance=..10,gamemode=!spectator] ["Straßenbrücken- und -tunnelbaumaschine.1:\n",{"text":"Die Straßenbaumaschine wurde entfernt. Auslöser dafür war ein Angelköder, ein fehlender Sitz oder eine andere Baumaschine.","color":"red","bold":true}]

Variante 1: Auslöser-Funktion
Die Auslöser-Funktion bietet dem Spieler das Optionen-Menü in dem er alle Einstellungen des Spurenbaus treffen kann.

Editor Icon strassenbruecken-_und_-tunnelbaumaschine:v1ausloeser.mcfunction
# Der Wert des Spielers wird ausgelesen und in den Punktestand des Markierers gespeichert. Falls der Spieler nicht gefunden wurde, wird stattdessen der Wert null gespeichert.
execute store result score @s PZStrBTBM.1Wert run scoreboard players get @p[distance=..1,tag=EtiStrBTBM.1Sitzen,scores={PZStrBTBM.1Wert=1..}] PZStrBTBM.1Wert

# Die Schaltflächen für die Neigung wurden aktiviert und setzen die Eigenschaft entsprechend auf den eingestellten Wert.
data modify entity @s[scores={PZStrBTBM.1Wert=1}] data."EigStrBTBM.1Neigung" set value '{"bold":true,"color":"green","text":"Oben"}'
data modify entity @s[scores={PZStrBTBM.1Wert=2}] data."EigStrBTBM.1Neigung" set value '{"bold":true,"color":"aqua","text":"Geradeaus"}'
data modify entity @s[scores={PZStrBTBM.1Wert=3}] data."EigStrBTBM.1Neigung" set value '{"bold":true,"color":"red","text":"Unten"}'
data modify entity @s[scores={PZStrBTBM.1Wert=4}] data."EigStrBTBM.1Neigung" set value '{"bold":true,"color":"dark_purple","text":"Automatisch"}'

# Wenn die Raster-Funktion aktiviert wurde, wird die Baumaschine nur noch exakt in die Himmelsrichtungen schauen.
data modify entity @s[scores={PZStrBTBM.1Wert=5}] data."EigStrBTBM.1Raster" set value '{"bold":true,"color":"green","text":"wahr"}'
data modify entity @s[scores={PZStrBTBM.1Wert=6}] data."EigStrBTBM.1Raster" set value '{"bold":true,"color":"red","text":"falsch"}'

# Wenn der Spieler mit der Baumaschine einen Block nach vorne fahren möchte, wird geprüft, ob sich nicht bereits eine andere Baumaschine im Weg befindet. Falls ja, wird nicht die Material-Funktion geladen und stattdessen, erhält der Spieler eine Fehlermeldung.
execute at @s[scores={PZStrBTBM.1Wert=11}] if entity @e[distance=2..20,type=minecraft:marker,tag=EtiStrBTBM.1Baumaschine] run scoreboard players set @s PZStrBTBM.1Wert 8
execute at @s[scores={PZStrBTBM.1Wert=11}] as @p[distance=..5,tag=EtiStrBTBM.1Sitzen] run function strassenbruecken-_und_-tunnelbaumaschine:v1material
execute at @s[scores={PZStrBTBM.1Wert=8}] run tellraw @p[distance=..5,tag=EtiStrBTBM.1Sitzen,scores={PZStrBTBM.1Wert=11}] ["Straßenbrücken- und -tunnelbaumaschine.1:\n",{"text":"Es befindet sich eine weitere Straßenbrücken- und -tunnelbaumaschine in der Nähe, daher wurde der Bauvorgang abgebrochen. Entferne eine Straßenbrücken- und -tunnelbaumaschine mit der Angel um weiter bauen zu können.","color":"yellow","bold":true}]

# Wenn der Tempomat aktiviert wurde, fährt die Baumaschine automatisch nach vorne.
data modify entity @s[scores={PZStrBTBM.1Wert=7}] data."EigStrBTBM.1Tempomat" set value '{"bold":true,"color":"green","text":"wahr"}'
data modify entity @s[scores={PZStrBTBM.1Wert=8}] data."EigStrBTBM.1Tempomat" set value '{"bold":true,"color":"red","text":"falsch"}'

# Wenn die Zweierspur aktiv ist, werden zwei Spuren statt nur einer platziert.
data modify entity @s[scores={PZStrBTBM.1Wert=9}] data."EigStrBTBM.1Zweierspur" set value '{"bold":true,"color":"green","text":"wahr"}'
data modify entity @s[scores={PZStrBTBM.1Wert=10}] data."EigStrBTBM.1Zweierspur" set value '{"bold":true,"color":"red","text":"falsch"}'

# Wenn diese Schaltfläche aktiviert wird, wird die globale Variable für die Pfeiler entsprechend angehoben oder abgesenkt.
execute if entity @s[scores={PZStrBTBM.1Wert=12}] if score VarStrBTBM.1Pfeiler PZStrBTBM.1Wert matches ..31 run scoreboard players add VarStrBTBM.1Pfeiler PZStrBTBM.1Wert 1
execute if entity @s[scores={PZStrBTBM.1Wert=13}] if score VarStrBTBM.1Pfeiler PZStrBTBM.1Wert matches 9.. run scoreboard players remove VarStrBTBM.1Pfeiler PZStrBTBM.1Wert 1

# Wenn die Hängepfeiler aktiv sind, werden Pfeiler nach oben, statt nach unten generiert.
data modify entity @s[scores={PZStrBTBM.1Wert=14}] data."EigStrBTBM.1Haengepfeiler" set value '{"bold":true,"color":"green","text":"wahr"}'
data modify entity @s[scores={PZStrBTBM.1Wert=15}] data."EigStrBTBM.1Haengepfeiler" set value '{"bold":true,"color":"red","text":"falsch"}'

# Die Auslöser-Nachricht wird dem Spieler angezeigt, wenn dieser nicht gerade den Tempomat aktiv hat und gleichzeitig das Fahren-Signal gibt. Das sorgt dafür, dass der Spieler nur beim aktiven Drücken der Schaltflächen eine Auslöser-Nachricht bekommt und beim Tempomat-Fahren nicht.
execute unless entity @s[scores={PZStrBTBM.1Wert=11},nbt={data:{EigStrBTBM.1Tempomat:'{"bold":true,"color":"green","text":"wahr"}'} }] run tellraw @p[distance=..1,tag=EtiStrBTBM.1Sitzen] ["Straßenbrücken- und -tunnelbaumaschine.1:\n",{"text":"neigung = ","bold":true},{"text":"Oben","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Wert Oben"} },"clickEvent":{"action":"run_command","value":"/trigger PZStrBTBM.1Wert set 1"} },"\n",{"text":"neigung = ","bold":true},{"text":"Geradeaus","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Wert Geradeaus"} },"clickEvent":{"action":"run_command","value":"/trigger PZStrBTBM.1Wert set 2"} },"\n",{"text":"neigung = ","bold":true},{"text":"Unten","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Wert Unten"} },"clickEvent":{"action":"run_command","value":"/trigger PZStrBTBM.1Wert set 3"} },"\n",{"text":"neigung = ","bold":true},{"text":"Automatisch","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Wert Automatisch"} },"clickEvent":{"action":"run_command","value":"/trigger PZStrBTBM.1Wert set 4"} },"\n",{"text":"neigung == ","bold":true},{"entity":"@s","nbt":"data.\"EigStrBTBM.1Neigung\"","interpret":true},"\n",{"text":"raster (","bold":true},{"text":"=wahr","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Einrastung"} },"clickEvent":{"action":"run_command","value":"/trigger PZStrBTBM.1Wert set 5"} },{"text":",","bold":true},{"text":"=falsch","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für keine Einrastung"} },"clickEvent":{"action":"run_command","value":"/trigger PZStrBTBM.1Wert set 6"} },{"text":") == ","bold":true},{"entity":"@s","nbt":"data.\"EigStrBTBM.1Raster\"","interpret":true},"\n",{"text":"tempomat (","bold":true},{"text":"=wahr","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für aktiven Tempomat"} },"clickEvent":{"action":"run_command","value":"/trigger PZStrBTBM.1Wert set 7"} },{"text":",","bold":true},{"text":"=falsch","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für inaktiven Tempomat"} },"clickEvent":{"action":"run_command","value":"/trigger PZStrBTBM.1Wert set 8"} },{"text":") == ","bold":true},{"entity":"@s","nbt":"data.\"EigStrBTBM.1Tempomat\"","interpret":true},"\n",{"text":"zweierspur (","bold":true},{"text":"=wahr","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für die Zweierspur"} },"clickEvent":{"action":"run_command","value":"/trigger PZStrBTBM.1Wert set 9"} },{"text":",","bold":true},{"text":"=falsch","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für die Einerspur"} },"clickEvent":{"action":"run_command","value":"/trigger PZStrBTBM.1Wert set 10"} },{"text":") == ","bold":true},{"entity":"@s","nbt":"data.\"EigStrBTBM.1Zweierspur\"","interpret":true},"\n",{"text":"pfeiler (","bold":true},{"text":"=pfeiler + 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Pfeiler-Distanz + 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZStrBTBM.1Wert set 12"} },{"text":",","bold":true},{"text":"=pfeiler - 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Pfeiler-Distanz - 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZStrBTBM.1Wert set 13"} },{"text":") == ","bold":true},{"score":{"name":"VarStrBTBM.1Pfeiler","objective":"PZStrBTBM.1Wert"},"color":"dark_purple","bold":true},"\n",{"text":"hängepfeiler (","bold":true},{"text":"=wahr","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Hängepfeiler"} },"clickEvent":{"action":"run_command","value":"/trigger PZStrBTBM.1Wert set 14"} },{"text":",","bold":true},{"text":"=falsch","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für keine Hängepfeiler"} },"clickEvent":{"action":"run_command","value":"/trigger PZStrBTBM.1Wert set 15"} },{"text":") == ","bold":true},{"entity":"@s","nbt":"data.\"EigStrBTBM.1Haengepfeiler\"","interpret":true},"\n",{"text":"fahren(neigung,zweierspur)","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Straßenbaumaschine fahren"} },"clickEvent":{"action":"run_command","value":"/trigger PZStrBTBM.1Wert set 11"} }]

# Damit der Spieler danach wieder die Möglichkeit erhält auf die schaltflächen zu klicken.
scoreboard players enable @p[distance=..1,tag=EtiStrBTBM.1Sitzen] PZStrBTBM.1Wert
scoreboard players set @p[distance=..1,tag=EtiStrBTBM.1Sitzen] PZStrBTBM.1Wert 0

Variante 1: Material-Funktion
Die Material-Funktion prüft ob der Spieler das richtige und in ausreichender Menge liegende Material bei sich hat und nur dann ruft sie die Spur-Funktion auf.

Editor Icon strassenbruecken-_und_-tunnelbaumaschine:v1material.mcfunction
# Die Baumaterialien werden abgefragt und deren Werte werden in Variablen gespeichert.
execute store result score VarStrBTBM.1Beton PZStrBTBM.1Wert run clear @s minecraft:gray_concrete 0
execute store result score VarStrBTBM.1Quarz PZStrBTBM.1Wert run clear @s minecraft:quartz_block 0
execute store result score VarStrBTBM.1Stufe PZStrBTBM.1Wert run clear @s minecraft:stone_brick_slab 0

# Wenn die Zweierspur aktiv ist, müssen mehr Materialien entnommen werden, dazu erhält der Spieler ein zusätzliches Etikett.
execute if entity @e[distance=..10,type=minecraft:marker,tag=EtiStrBTBM.1Baumaschine,nbt={data:{EigStrBTBM.1Zweierspur:'{"bold":true,"color":"green","text":"wahr"}'} },sort=nearest,limit=1] run tag @s add EtiStrBTBM.1Zweierspur

# Wenn der Spieler die Mindestmenge besitzt, erhält er ein Etikett, falls er aber nicht genug hat, wenn die Zweierspur aktiv ist, wird ihm das Etikett wieder entfernt.
execute if score VarStrBTBM.1Beton PZStrBTBM.1Wert matches 3.. if score VarStrBTBM.1Stufe PZStrBTBM.1Wert matches 4.. if score VarStrBTBM.1Quarz PZStrBTBM.1Wert matches 2.. run tag @s add EtiStrBTBM.1Material
execute unless score VarStrBTBM.1Beton PZStrBTBM.1Wert matches 7.. run tag @s[tag=EtiStrBTBM.1Zweierspur,tag=EtiStrBTBM.1Material] remove EtiStrBTBM.1Material

# Besitzt der Spieler die Mindestmenge, wird ihm diese aus dem Inventar entfernt.
clear @s[tag=EtiStrBTBM.1Material] minecraft:gray_concrete 3
clear @s[tag=EtiStrBTBM.1Material] minecraft:quartz_block 2
clear @s[tag=EtiStrBTBM.1Material] minecraft:stone_brick_slab 4

# Ebenso, wenn er die Zweierspur aktiv hat.
clear @s[tag=EtiStrBTBM.1Zweierspur,tag=EtiStrBTBM.1Material] minecraft:gray_concrete 4

# Wenn der Spieler genug Material bei sich hat, wird die Spur-Funktion geladen. Ansonsten bekommt der Spieler eine Fehlermeldung.
execute if entity @s[tag=EtiStrBTBM.1Material] as @e[distance=..10,type=minecraft:marker,tag=EtiStrBTBM.1Baumaschine,sort=nearest,limit=1] rotated ~ 0 run function strassenbruecken-_und_-tunnelbaumaschine:v1spur
tellraw @s[tag=!EtiStrBTBM.1Material] ["Straßenbrücken- und -tunnelbaumaschine.1:\n",{"text":"Du hast zu wenig Blöcke bei dir!","color":"red","bold":true}]

# Falls der Tempomat aktiv ist, wird er ausgeschaltet.
execute if entity @s[tag=!EtiStrBTBM.1Material] run data modify entity @e[distance=..10,type=minecraft:marker,tag=EtiStrBTBM.1Baumaschine,sort=nearest,limit=1] data."EigStrBTBM.1Tempomat" set value '{"text":"falsch","color":"red","bold":true}'

# Die Etiketten werden nicht mehr gebraucht und somit wieder entfernt.
tag @s[tag=EtiStrBTBM.1Zweierspur] remove EtiStrBTBM.1Zweierspur
tag @s[tag=EtiStrBTBM.1Material] remove EtiStrBTBM.1Material

Variante 1: Spur-Funktion
Die Spur-Funktion platziert alle Blöcke für die Spur und sorgt dafür, dass die Baumaschine nach vorne bewegt wird und Pfeiler platziert werden, wenn der Abstand erreicht ist.

Editor Icon strassenbruecken-_und_-tunnelbaumaschine:v1spur.mcfunction
# Die Baumaschine wird nach vorne bewegt und bei automatischer Neigung auch deren Richtung nach oben oder unten.
teleport @s ^ ^ ^1
data modify entity @s CustomName set from entity @s data."EigStrBTBM.1Neigung"
execute at @s[name="Automatisch"] unless block ^ ^ ^4 minecraft:air run teleport @s ~ ~1 ~
execute at @s[name="Automatisch"] if block ^ ^-1 ^4 minecraft:air run teleport @s ~ ~-1 ~

# Bei einer Einstellung der Neigung wird die Baumaschine entsprechend bewegt.
execute at @s[name="Oben"] run teleport @s ~ ~1 ~ ~ 0
execute at @s[name="Unten"] run teleport @s ~ ~-1 ~ ~ 0

# Befindet sich die Baumaschine unter Wasser oder unter der Erde, so wird eine Glasfassade errichtet.
execute positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiStrBTBM.1SpurBett,sort=nearest,limit=3] run fill ^4 ^1 ^2 ^-4 ^9 ^3 minecraft:glass replace #strassenbruecken-_und_-tunnelbaumaschine:v1umwelt
execute positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiStrBTBM.1SpurBett,sort=nearest,limit=1] run fill ^4 ^1 ^2 ^-4 ^8 ^2 minecraft:air replace

# Wenn der Spieler eine der drei Optionen gewählt hat, die nicht geradeaus laufen, so wird ein größerer Bereich ausgehöhlt.
execute if entity @s[name=!"Geradeaus"] positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiStrBTBM.1SpurBett,sort=nearest,limit=3] run fill ^4 ^ ^ ^-4 ^13 ^1 minecraft:glass replace #strassenbruecken-_und_-tunnelbaumaschine:v1umwelt
execute if entity @s[name=!"Geradeaus"] positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiStrBTBM.1SpurBett,sort=nearest,limit=1] run fill ^4 ^1 ^ ^-4 ^12 ^1 minecraft:air replace

# Ist die Zweierspur aktiv, so wird eine größere Glasfassade errichtet.
data modify entity @s CustomName set from entity @s data."EigStrBTBM.1Zweierspur"
execute if entity @s[name="wahr"] positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiStrBTBM.1SpurBett,sort=nearest,limit=3] run fill ^5 ^ ^2 ^-5 ^9 ^3 minecraft:glass replace #strassenbruecken-_und_-tunnelbaumaschine:v1umwelt
execute if entity @s[name="wahr"] positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiStrBTBM.1SpurBett,sort=nearest,limit=1] run fill ^6 ^1 ^2 ^-6 ^8 ^2 minecraft:air replace

# Je nach Einstellung der Zweierspur wird mehr oder weniger Beton platziert.
execute if entity @s[name="falsch"] positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiStrBTBM.1SpurBett,sort=nearest,limit=3] run setblock ~ ~ ~ minecraft:gray_concrete replace
execute if entity @s[name="wahr"] positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiStrBTBM.1SpurBett,sort=nearest,limit=3] run fill ^1 ^ ^ ^-1 ^ ^ minecraft:gray_concrete replace

# Die restliche Spur wird platziert.
execute positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiStrBTBM.1SpurRand,sort=nearest,limit=2] run setblock ~ ~ ~ minecraft:quartz_block replace
execute positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiStrBTBM.1GehSteig,sort=nearest,limit=4] run setblock ~ ~ ~ minecraft:stone_brick_slab replace
execute positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiStrBTBM.1Unterbau,sort=nearest,limit=7] run setblock ~ ~-1 ~ minecraft:polished_andesite replace
execute positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiStrBTBM.1SpurBett,sort=nearest,limit=3] run fill ^1 ^-1 ^ ^-1 ^-1 ^ minecraft:polished_andesite replace

# Wenn die Zweierspur aktiv ist, wird ein Punktestand bis drei gezählt und anschließend eine Strichlinie eingebaut.
execute if entity @s[name="wahr"] run scoreboard players add @e[distance=..10,type=minecraft:armor_stand,tag=EtiStrBTBM.1Mitte,sort=nearest,limit=1] PZStrBTBM.1Wert 1
execute if entity @s[name="wahr"] positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiStrBTBM.1Mitte,scores={PZStrBTBM.1Wert=3..},sort=nearest,limit=1] run fill ^ ^-1 ^ ^ ^1 ^-1 minecraft:quartz_block replace minecraft:gray_concrete
execute if entity @s[name="wahr"] run scoreboard players set @e[distance=..10,type=minecraft:armor_stand,tag=EtiStrBTBM.1Mitte,scores={PZStrBTBM.1Wert=3..},sort=nearest,limit=1] PZStrBTBM.1Wert 0

# Für jeden Meter den die Baumaschine zurücklegt, wird der Wert der Lore um eins erhöht. Wenn der Wert den Pfeiler-Wert erreicht, wird die Spur-Etappen-Funktion geladen.
scoreboard players add @e[distance=..10,type=minecraft:minecart,tag=EtiStrBTBM.1Sitz,sort=nearest,limit=1] PZStrBTBM.1Wert 1
execute if score @e[distance=..10,type=minecraft:minecart,tag=EtiStrBTBM.1Sitz,sort=nearest,limit=1] PZStrBTBM.1Wert >= VarStrBTBM.1Pfeiler PZStrBTBM.1Wert run function strassenbruecken-_und_-tunnelbaumaschine:v1spur_etappe

Variante 1: Spur-Etappen-Funktion
Die Spur-Etappen-Funktion errichtet die Pfeiler und Bögen der Spur.

Editor Icon strassenbruecken-_und_-tunnelbaumaschine:v1spur_etappe.mcfunction
# Zuerst werden die Einstellungen ausgelesen und in vereinfachter Form abfragbar gemacht.
data modify entity @s CustomName set from entity @s data."EigStrBTBM.1Zweierspur"
execute store success score @s PZStrBTBM.1Wert if entity @s[nbt={data:{EigStrBTBM.1Haengepfeiler:'{"bold":true,"color":"green","text":"wahr"}'} }]

# Wenn die Hängepfeiler aktiv sind, wird ein Bogen über der Spur erzeugt.
execute if entity @s[scores={PZStrBTBM.1Wert=1}] run fill ^5 ^1 ^-2 ^-5 ^9 ^-1 minecraft:smooth_stone replace
execute if entity @s[scores={PZStrBTBM.1Wert=1}] run fill ^4 ^1 ^-2 ^-4 ^8 ^-1 minecraft:air replace

# Die Pfeiler werden in Form von Markierern erzeugt.
summon minecraft:marker ^2.5 ^ ^-1.5 {Tags:["EtiStrBTBM.1Alle","EtiStrBTBM.1Pfeiler"],Rotation:[0.0f,90.0f]}
summon minecraft:marker ^-2.5 ^ ^-1.5 {Tags:["EtiStrBTBM.1Alle","EtiStrBTBM.1Pfeiler"],Rotation:[0.0f,90.0f]}

# Wenn der Spieler die Zweierspur aktiviert hat, werden die Pfeiler etwas weiter nach außen gesetzt.
execute if entity @s[name="wahr"] as @e[distance=..15,type=minecraft:marker,tag=EtiStrBTBM.1Pfeiler,sort=nearest,limit=2] at @s facing entity @e[distance=2..8,type=minecraft:marker,tag=EtiStrBTBM.1Pfeiler,sort=furthest,limit=1] feet rotated ~ 0 run teleport @s ^ ^ ^-2

#Falls es sich um Hängepfeiler handeln soll, werden diese weiter nach oben gesetzt und blicken nach oben.
execute if entity @s[scores={PZStrBTBM.1Wert=1}] as @e[distance=..10,type=minecraft:marker,tag=EtiStrBTBM.1Pfeiler,sort=nearest,limit=2] at @s run teleport @s ~ ~10 ~ ~ -90

# Es wird die Verglasung an der Stelle an der der Pfeiler steht durch glatten Stein ersetzt.
fill ^5 ^1 ^-2 ^-5 ^9 ^-1 minecraft:smooth_stone replace minecraft:glass
execute if entity @s[name="wahr"] run fill ^7 ^1 ^-2 ^-7 ^9 ^-1 minecraft:smooth_stone replace minecraft:glass

# Falls die Zweierspur und die Hängepfeiler aktiv sind, wird der Bogen noch größer gemacht.
execute if entity @s[name="wahr",scores={PZStrBTBM.1Wert=1}] run fill ^7 ^1 ^-2 ^-7 ^9 ^-1 minecraft:smooth_stone replace
execute if entity @s[name="wahr",scores={PZStrBTBM.1Wert=1}] run fill ^6 ^1 ^-2 ^-6 ^8 ^-1 minecraft:air replace

# Die Lore bekommt den Wert wieder auf null gesetzt.
scoreboard players set @e[distance=..10,type=minecraft:minecart,tag=EtiStrBTBM.1Sitz,sort=nearest,limit=1] PZStrBTBM.1Wert 0

Variante 1: Ausrichtungs-Funktion
Die Ausrichtungs-Funktion sorgt dafür, dass die Baumaschine immer den Blickwinkeln des Spielers folgt und reagiert auf die Raster-Einstellung.

Editor Icon strassenbruecken-_und_-tunnelbaumaschine:v1ausrichtung.mcfunction
# Die Baumaschine richtet sich, nach dem Spieler der sich in der Lore befindet, aus.
execute rotated as @p[distance=..5,tag=EtiStrBTBM.1Sitzen,tag=EtiStrBTBM.1Ausgewaehlt] run teleport @s ~ ~ ~ ~ ~

# Die Raster-Einstellung wird ausgelesen und als vereinfachte Abfrage ermöglicht. Danach wird, sofern die Raster-Einstellung aktiv ist, die Baumaschine nur noch in die vier Himmelsrichtungen ausrichtbar sein.
data modify entity @s CustomName set from entity @s data."EigStrBTBM.1Raster"
teleport @s[y_rotation=-45.0..44.9,name="wahr"] ~ ~ ~ 0 0
teleport @s[y_rotation=45.0..134.9,name="wahr"] ~ ~ ~ 90 0
teleport @s[y_rotation=135.0..-134.9,name="wahr"] ~ ~ ~ 180 0
teleport @s[y_rotation=-135.0..-44.9,name="wahr"] ~ ~ ~ 270 0

# Der nächstgelegene Spieler der sich nicht im Zuschauermodus befindet führt die Ausrichtungs-Spur-Funktion aus.
data modify entity @s CustomName set from entity @s data."EigStrBTBM.1Zweierspur"
execute as @p[distance=..10,gamemode=!spectator] run function strassenbruecken-_und_-tunnelbaumaschine:v1ausrichtung_spur

Variante 1: Ausrichtungs-Spur-Funktion
Die Ausrichtungs-Spur-Funktion sorgt dafür, dass die Materialien der Spur richtig angeordnet werden.

Editor Icon strassenbruecken-_und_-tunnelbaumaschine:v1ausrichtung_spur.mcfunction
# Die Lore wird ausgerichtet.
teleport @e[type=minecraft:armor_stand,tag=EtiStrBTBM.1Halter,sort=nearest,limit=1] ^ ^1 ^-3 facing entity @s feet

# Alle Material-Rüstungsständer werden entsprechend der Spur ausgerichtet.
teleport @e[type=minecraft:armor_stand,tag=EtiStrBTBM.1Mitte,sort=nearest,limit=1] ^ ^ ^-4 facing entity @s feet

teleport @e[type=minecraft:armor_stand,tag=EtiStrBTBM.1Rechts1,sort=nearest,limit=1] ^1 ^ ^-4 facing entity @s feet
teleport @e[type=minecraft:armor_stand,tag=EtiStrBTBM.1Links1,sort=nearest,limit=1] ^-1 ^ ^-4 facing entity @s feet

teleport @e[type=minecraft:armor_stand,tag=EtiStrBTBM.1Rechts2,sort=nearest,limit=1] ^2 ^ ^-4 facing entity @s feet
teleport @e[type=minecraft:armor_stand,tag=EtiStrBTBM.1Rechts3,sort=nearest,limit=1] ^3 ^1 ^-4 facing entity @s feet
teleport @e[type=minecraft:armor_stand,tag=EtiStrBTBM.1Rechts4,sort=nearest,limit=1] ^4 ^1 ^-4 facing entity @s feet

teleport @e[type=minecraft:armor_stand,tag=EtiStrBTBM.1Links2,sort=nearest,limit=1] ^-2 ^ ^-4 facing entity @s feet
teleport @e[type=minecraft:armor_stand,tag=EtiStrBTBM.1Links3,sort=nearest,limit=1] ^-3 ^1 ^-4 facing entity @s feet
teleport @e[type=minecraft:armor_stand,tag=EtiStrBTBM.1Links4,sort=nearest,limit=1] ^-4 ^1 ^-4 facing entity @s feet

# Falls die Option für eine Zweierspur eingestellt ist, werden die zwei inersten Rüstungsständer mit dem weißen Beton um einen Block nach außen teleportiert und alle anderen Rüstungsständer um zwei Blöcke bewegt.
execute if entity @e[distance=..2,type=minecraft:marker,tag=EtiStrBTBM.1Baumaschine,name="wahr",sort=nearest,limit=1] as @e[type=minecraft:armor_stand,tag=EtiStrBTBM.1SpurBett,tag=!EtiStrBTBM.1Mitte,sort=nearest,limit=2] at @s facing entity @e[type=minecraft:armor_stand,tag=EtiStrBTBM.1Mitte,sort=nearest,limit=1] feet rotated ~ 0 run teleport @s ^ ^ ^-1

execute if entity @e[distance=..2,type=minecraft:marker,tag=EtiStrBTBM.1Baumaschine,name="wahr",sort=nearest,limit=1] as @e[type=minecraft:armor_stand,tag=EtiStrBTBM.1Spur,sort=nearest,limit=6] at @s facing entity @e[type=minecraft:armor_stand,tag=EtiStrBTBM.1Mitte,sort=nearest,limit=1] feet rotated ~ 0 run teleport @s ^ ^ ^-2

Variante 1: Pfeiler-Funktion
Die Pfeiler-Funktion ist dafür zuständig dass die Pfeiler Schritt für Schritt nach unten oder oben entlang laufen.

Editor Icon strassenbruecken-_und_-tunnelbaumaschine:v1pfeiler.mcfunction
# Wenn der Pfeiler nach unten und in Wasser oder Lava platziert werden soll, wird er breiter gemacht, ansonsten wird er etwas dünner gemacht.
execute store result score @s PZStrBTBM.1Wert if block ~ ~ ~ minecraft:water
execute store result score @s[scores={PZStrBTBM.1Wert=0}] PZStrBTBM.1Wert if block ~ ~ ~ minecraft:lava
execute if entity @s[x_rotation=90,scores={PZStrBTBM.1Wert=1}] run fill ~1.5 ~ ~1.5 ~-1.5 ~ ~-1.5 minecraft:smooth_stone replace #strassenbruecken-_und_-tunnelbaumaschine:v1untergrund
fill ~0.5 ~ ~0.5 ~-0.5 ~ ~-0.5 minecraft:smooth_stone replace #strassenbruecken-_und_-tunnelbaumaschine:v1untergrund

# Wenn der Pfeiler bis an den Grund oder an die Decke gelangt ist, wird der Markierer entfernt.
execute unless block ^ ^ ^1 #strassenbruecken-_und_-tunnelbaumaschine:v1untergrund run kill @s

# Wenn der Pfeiler über oder unter die Bauhöhe gekommen ist, kann Luft nicht geprüft werden, sodass beide Prüfungen eine null zurückgeben. Genau bei diesem Fall, wird der Pfeiler ebenfalls gelöscht.
execute store result score VarStrBTBM.1Weltgrenze1 PZStrBTBM.1Wert if block ^ ^ ^1 minecraft:air
execute store result score VarStrBTBM.1Weltgrenze2 PZStrBTBM.1Wert unless block ^ ^ ^1 minecraft:air
execute if score VarStrBTBM.1Weltgrenze1 PZStrBTBM.1Wert = VarStrBTBM.1Weltgrenze2 PZStrBTBM.1Wert run kill @s

# Der Markierer wird um einen Block in Blickrichtung teleportiert.
teleport @s ^ ^ ^1

Variante 1: Stopp-Funktion
Die Stopp-Funktion löscht das Punkte-Ziel, die Etiketten und Gegenstände für die Baumaschine. Ebenso werden alle Baumaschinen entfernt.

Editor Icon strassenbruecken-_und_-tunnelbaumaschine:v1stopp.mcfunction
# Das Punkte-Ziel wird entfernt und somit alle Variablen und Werten in dessen Zusammenhang.
scoreboard objectives remove PZStrBTBM.1Wert

# Die verwendeten Gegenstände werden gelöscht.
clear @a minecraft:fishing_rod{EigStrBTBM.1Alle:true}
clear @a minecraft:armor_stand{EigStrBTBM.1Alle:true}
clear @a minecraft:gray_concrete{EigStrBTBM.1Alle:true}
clear @a minecraft:quartz_block{EigStrBTBM.1Alle:true}
clear @a minecraft:stone_brick_slab{EigStrBTBM.1Alle:true}

# Das noch eventuell vorhandene Etikett wird entfernt.
tag @a[tag=EtiStrBTBM.1Auswahl] remove EtiStrBTBM.1Auswahl

# Alle fallengelassenen Gegenstände und Objekte werden entfernt.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigStrBTBM.1Alle:true} } }] add EtiStrBTBM.1Alle
kill @e[tag=EtiStrBTBM.1Alle]

# Der Chunk wird deaktiviert.
forceload remove ~ ~

Variante 2[]

Straßenbrücken- und -tunnelbaumaschine (Befehle) Bild 2.1 Straßenbrücken- und -tunnelbaumaschine (Befehle) Bild 2.2 Straßenbrücken- und -tunnelbaumaschine (Befehle) Bild 2.3 Straßenbrücken- und -tunnelbaumaschine (Befehle) Bild 2.4

Mit dieser Straßenbrücken- und -tunnelbaumaschine lassen sich Straßenbrücken und Tunnel durch Berge, über Täler oder und unter Wasser verlegen. Schaltet man die Technik ein, so erhält man eine Angel, die man auswählen kann um im Chat ein Menü zu erhalten. Dort lassen sich die Spuren, das Straßenbahngleis, die Maximallänge, der Pfeilerabstand und die Hängepfeiler einstellen. Man kann damit bis zu 16 Spuren auf einmal anlegen lassen. Ebenso kann man einstellen ob in der ersten Spur ein Gleis eingebettet ist. Zudem lässt sich einstellen wie weit auseinander die Pfeiler platziert werden sollen und ob diese unter der Brücke oder von oben herab kommen sollen, falls man sich in einer Höhle befindet.

Einschalten
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:



Datenpaket


Variante 2: Start-Funktion
Die Start-Funktion erstellt die drei Punkte-Ziele und gibt den Spielern die Angel um die Spuren erstellen zu können.

Editor Icon strassenbruecken-_und_-tunnelbaumaschine:v2start.mcfunction
# Es werden drei Punkte-Ziele erstellt, mit denen man das Schleichen oder das Auslösen erfassen und Werte speichern kann.
scoreboard objectives add PZStrBTBM.2Schl minecraft.custom:minecraft.sneak_time ["Straßenbrücken- und -tunnelbaumaschine.2: ",{"text":"Schleich-Zeit","bold":true}]
scoreboard objectives add PZStrBTBM.2Ausl trigger ["Straßenbrücken- und -tunnelbaumaschine.2: ",{"text":"Auslöser für Nachrichten","bold":true}]
scoreboard objectives add PZStrBTBM.2Laen dummy ["Straßenbrücken- und -tunnelbaumaschine.2: ",{"text":"Spuren und Länge","bold":true}]

# Es wird eine globale Variable angelegt, die jeder Spieler später ändern kann.
scoreboard players set VarStrBTBM.2Spuren PZStrBTBM.2Laen 1
scoreboard players set VarStrBTBM.2Laenge PZStrBTBM.2Laen 64
scoreboard players set VarStrBTBM.2Pfeiler PZStrBTBM.2Laen 16

# Spielern im Umkreis von 15 Blöcken erhalten eine Angel, die man halten muss, um eine Spur erzeugen zu können.
give @a[distance=..15] minecraft:fishing_rod{EigStrBTBM.2Angel:true,Enchantments:[{id:-1}],display:{Name:'{"text":"Straßenbrücken- und -tunnelbaumaschine","bold":true}',Lore:['"Wähle die Angel aus"','"und schleiche eine Zeit lang"','"um die Straßenlänge festzulegen,"','"sobald du los lässt wird die Straße gebaut."'] } }

# Eine kurze Anleitung, wie die Baumaschine aktiviert werden kann.
tellraw @a[distance=..15] ["Straßenbrücken- und -tunnelbaumaschine.2:\n",{"text":"Wähle die Angel aus um den Straßentyp einzustellen und schleiche und lasse dann los, wenn die gewünschte Länge erreicht wird. Breche den Straßenbau beim Schleichen ab, in dem der Köder geworfen wird.","bold":true}]

# Der Chunk in dem die Technik steht wird dauerhaft geladen.
forceload add ~ ~

Variante 2: Zyklus-Funktion
Die Zyklus-Funktion prüft ob der Spieler die Angel in der Hand hält und daran abhängig wird dann der Spurbau ausgelöst. Pfeiler werden ebenso erfasst und errichtet.

Editor Icon strassenbruecken-_und_-tunnelbaumaschine:v2zyklus.mcfunction
# Wenn der Spieler die Angel mit der gleichnamigen Eigenschaft ausgewählt hat, erhält er zur Erkennung ein Etikett.
tag @a[nbt={SelectedItem:{tag:{EigStrBTBM.2Angel:true} } }] add EtiStrBTBM.2Ausgewaehlt

# Wenn der Spieler das Etikett der Angel besitzt und dabei auf dem Boden steht, erhält er ein weiteres Etikett.
tag @a[tag=EtiStrBTBM.2Ausgewaehlt,nbt={OnGround:true}] add EtiStrBTBM.2AufBoden

# Da Spieler nicht von Anfang einen Wert besitzen wird ihnen der Wert auf null addiert, sodass sie einen besitzen und solche die vorher schon einen Wert besaßen, dieser sich nicht ändert.
scoreboard players add @a[tag=EtiStrBTBM.2Ausgewaehlt,tag=!EtiStrBTBM.2Auswahl] PZStrBTBM.2Schl 0
scoreboard players add @a[tag=EtiStrBTBM.2Ausgewaehlt,tag=!EtiStrBTBM.2Auswahl] PZStrBTBM.2Laen 0
scoreboard players set @a[tag=EtiStrBTBM.2Ausgewaehlt,tag=!EtiStrBTBM.2Auswahl] PZStrBTBM.2Ausl -99

# Wenn Spieler die Angel ausgewählt haben und den Auslöse-Wert nicht auf null haben, wird die Funktion für diese Spieler aufgerufen.
execute as @a[tag=EtiStrBTBM.2Ausgewaehlt] unless entity @s[scores={PZStrBTBM.2Ausl=0}] run function strassenbruecken-_und_-tunnelbaumaschine:v2ausloeser

# Wenn Spieler den Köder ausgeworfen haben, wird der Längenwert auf null zurückgesetzt. Ansonsten wird der Längenwert jedes mal um eins erhöht.
scoreboard players set @a[tag=EtiStrBTBM.2Ausgewaehlt,tag=EtiStrBTBM.2Abbrechen] PZStrBTBM.2Laen 0
execute as @a[tag=EtiStrBTBM.2AufBoden,tag=EtiStrBTBM.2Ausgewaehlt,tag=!EtiStrBTBM.2Abbrechen,scores={PZStrBTBM.2Schl=1..}] if score @s PZStrBTBM.2Laen < VarStrBTBM.2Laenge PZStrBTBM.2Laen run scoreboard players add @s PZStrBTBM.2Laen 1

# Spieler die die zwei Etiketten besitzen und aktuell schleichen, erhalten eine Schnellleisten-Nachricht, die ausgibt ob man Shift gedrückt hält oder nicht.
execute as @a[tag=EtiStrBTBM.2AufBoden,tag=EtiStrBTBM.2Ausgewaehlt,scores={PZStrBTBM.2Schl=1..}] run title @s actionbar ["",{"text":"Spur-Länge == ","bold":true},{"score":{"name":"@s","objective":"PZStrBTBM.2Laen"},"color":"dark_purple","bold":true}]

# Wenn die Angel nicht mehr ausgewählt wird, wird die Nachricht über der Schnellleiste geleert.
title @a[tag=!EtiStrBTBM.2Ausgewaehlt,tag=EtiStrBTBM.2Auswahl] actionbar [""]

# Falls man die Angel nicht mehr auswählt, wird abgebrochen, ebenso wenn der Spieler einen Angelköder wirft.
tag @a[tag=!EtiStrBTBM.2Ausgewaehlt,tag=EtiStrBTBM.2Auswahl,tag=EtiStrBTBM.2Shift] add EtiStrBTBM.2Abbrechen
execute as @a[tag=EtiStrBTBM.2Auswahl,tag=EtiStrBTBM.2Shift] at @s if entity @e[distance=..5,type=minecraft:fishing_bobber] run tag @s add EtiStrBTBM.2Abbrechen

# Um zu erfassen ob der Spieler gerade die Angel ausgewählt hat oder sie nicht mehr auswählt, wird ihm ein Etikett entsprechend gegeben oder entfernt.
tag @a[tag=EtiStrBTBM.2Ausgewaehlt,tag=!EtiStrBTBM.2Auswahl] add EtiStrBTBM.2Auswahl
tag @a[tag=!EtiStrBTBM.2Ausgewaehlt,tag=EtiStrBTBM.2Auswahl] remove EtiStrBTBM.2Auswahl

# Wenn der Spieler gerade erst Shift gedrückt oder gerade losgelassen hat, wird ihm eine Chat-Nachricht ausgegeben. Ebenfalls wird ihm die Länge angezeigt. Falls er den Vorgang abgebrochen hat, wird dies ebenfalls angezeigt.
tellraw @a[tag=EtiStrBTBM.2AufBoden,tag=EtiStrBTBM.2Auswahl,tag=!EtiStrBTBM.2Shift,scores={PZStrBTBM.2Schl=1..,PZStrBTBM.2Laen=1..}] ["Straßenbrücken- und -tunnelbaumaschine.2:\n",{"text":"Shiftklick == ","bold":true},{"text":"wahr","color":"green","bold":true}]
execute as @a[tag=EtiStrBTBM.2AufBoden,tag=EtiStrBTBM.2Auswahl,tag=EtiStrBTBM.2Shift,tag=!EtiStrBTBM.2Abbrechen,scores={PZStrBTBM.2Schl=0}] run tellraw @s ["Straßenbrücken- und -tunnelbaumaschine.2:\n",{"text":"Shiftklick == ","bold":true},{"text":"falsch","color":"red","bold":true},"\n",{"text":"Spur-Länge == ","bold":true},{"score":{"name":"@s","objective":"PZStrBTBM.2Laen"},"color":"dark_purple","bold":true}]
tellraw @a[tag=EtiStrBTBM.2AufBoden,tag=EtiStrBTBM.2Auswahl,tag=EtiStrBTBM.2Shift,tag=EtiStrBTBM.2Abbrechen,scores={PZStrBTBM.2Schl=0,PZStrBTBM.2Laen=1..}] ["Straßenbrücken- und -tunnelbaumaschine.2:\n",{"text":"Shiftklick == ","bold":true},{"text":"undefiniert","color":"yellow","bold":true},"\n",{"text":"Spur-Länge == ","bold":true},{"text":"0","color":"dark_purple","bold":true}]

# Wenn man auf dem Boden steht, die Angel ausgewählt hat, geschlichen ist und gerade losgelassen hat, wird die Ausrichtungs-Funktion vom Spieler aus vor ihm zwei Blöcke versetzt aufgerufen.
execute as @a[tag=EtiStrBTBM.2AufBoden,tag=EtiStrBTBM.2Auswahl,tag=EtiStrBTBM.2Shift,tag=!EtiStrBTBM.2Abbrechen,scores={PZStrBTBM.2Schl=0}] at @s align xyz rotated ~ 0 positioned ~0.5 ~ ~0.5 positioned ^ ^ ^1 run function strassenbruecken-_und_-tunnelbaumaschine:v2ausrichtung

# Wenn der Spieler nicht mehr schleicht, wird das Etikett entfernt, falls er es besaß und der Wert für die Länge wird auf null gesetzt.
tag @a[tag=EtiStrBTBM.2Auswahl,tag=EtiStrBTBM.2Shift,tag=EtiStrBTBM.2Abbrechen,scores={PZStrBTBM.2Schl=0}] remove EtiStrBTBM.2Abbrechen

# Wenn der Spieler nicht mehr schleicht, wird das Etikett entfernt, falls er es besaß und der Wert für die Länge wird auf null gesetzt.
scoreboard players set @a[tag=EtiStrBTBM.2Auswahl,tag=EtiStrBTBM.2Shift,scores={PZStrBTBM.2Schl=0}] PZStrBTBM.2Laen 0

# Wenn der Spieler Shift klickt oder loslässt wird ihm ein Etikett gegeben oder entfernt.
tag @a[tag=EtiStrBTBM.2Auswahl,tag=!EtiStrBTBM.2Shift,scores={PZStrBTBM.2Schl=1..}] add EtiStrBTBM.2Shift
tag @a[tag=EtiStrBTBM.2Auswahl,tag=EtiStrBTBM.2Shift,scores={PZStrBTBM.2Schl=0}] remove EtiStrBTBM.2Shift

# Der Punkte-Wert der Spieler wird auf null gesetzt, wenn sie Shift geklickt haben.
scoreboard players set @a[scores={PZStrBTBM.2Schl=1..}] PZStrBTBM.2Schl 0

# Das Etikett für den Boden wird wieder entfernt.
tag @a[tag=EtiStrBTBM.2AufBoden] remove EtiStrBTBM.2AufBoden

# Das Etikett wird wieder entfernt.
tag @a[tag=EtiStrBTBM.2Ausgewaehlt] remove EtiStrBTBM.2Ausgewaehlt

# Falls Pfeiler-Markierer existieren, wird von ihnen aus die Pfeiler-Funktion gestartet.
execute as @e[type=minecraft:marker,tag=EtiStrBTBM.2Pfeiler] at @s run function strassenbruecken-_und_-tunnelbaumaschine:v2pfeiler

Variante 2: Auslöser-Funktion
Die Auslöser-Funktion bietet in einem Optionen-Menü alle Schalt-Einstellungen an und zeigt die aktuellen Einstellungen.

Editor Icon strassenbruecken-_und_-tunnelbaumaschine:v2ausloeser.mcfunction
# Wurde auf die Schaltfläche geklickt, wird die Spuren-Variable um eins erhöht oder verringert.
execute if entity @s[scores={PZStrBTBM.2Ausl=1}] if score VarStrBTBM.2Spuren PZStrBTBM.2Laen matches ..15 run scoreboard players add VarStrBTBM.2Spuren PZStrBTBM.2Laen 1
execute if entity @s[scores={PZStrBTBM.2Ausl=-1}] if score VarStrBTBM.2Spuren PZStrBTBM.2Laen matches 2.. run scoreboard players remove VarStrBTBM.2Spuren PZStrBTBM.2Laen 1

# Man kann die Straßenbahngleise ein oder ausschalten.
tag @s[tag=!EtiStrBTBM.2Bahngleis,scores={PZStrBTBM.2Ausl=2}] add EtiStrBTBM.2Bahngleis
tag @s[tag=EtiStrBTBM.2Bahngleis,scores={PZStrBTBM.2Ausl=-2}] remove EtiStrBTBM.2Bahngleis

# In dem Optionen-Menü kann der Spieler die Länge festlegen wie lang die Spur maximal sein soll. Diese Option kann jeder Spieler ändern und es gilt dann für alle Spieler die gleiche Länge.
execute if entity @s[scores={PZStrBTBM.2Ausl=3}] if score VarStrBTBM.2Laenge PZStrBTBM.2Laen matches ..255 run scoreboard players add VarStrBTBM.2Laenge PZStrBTBM.2Laen 1
execute if entity @s[scores={PZStrBTBM.2Ausl=-3}] if score VarStrBTBM.2Laenge PZStrBTBM.2Laen matches 5.. run scoreboard players remove VarStrBTBM.2Laenge PZStrBTBM.2Laen 1

# In dem Optionen-Menü kann der Spieler den Pfeiler-Abstand festlegen, ab wie viel Metern ein weiterer Pfeiler erzeugt werden soll. Diese Option kann jeder Spieler ändern und es gilt dann für alle Spieler der gleiche Pfeiler-Abstand.
execute if entity @s[scores={PZStrBTBM.2Ausl=4}] if score VarStrBTBM.2Pfeiler PZStrBTBM.2Laen matches ..31 run scoreboard players add VarStrBTBM.2Pfeiler PZStrBTBM.2Laen 1
execute if entity @s[scores={PZStrBTBM.2Ausl=-4}] if score VarStrBTBM.2Pfeiler PZStrBTBM.2Laen matches 9.. run scoreboard players remove VarStrBTBM.2Pfeiler PZStrBTBM.2Laen 1

# Wenn der Spieler auf die Hängepfeiler geklickt hat, wird dem Spieler ein Etikett gegeben um diese Einstellung zu speichern.
tag @s[tag=!EtiStrBTBM.2Haengepfeiler,scores={PZStrBTBM.2Ausl=5}] add EtiStrBTBM.2Haengepfeiler
tag @s[tag=EtiStrBTBM.2Haengepfeiler,scores={PZStrBTBM.2Ausl=-5}] remove EtiStrBTBM.2Haengepfeiler

# Der Spieler erhält die Auslöser-Nachricht in der ein Optionen-Menü gezeigt wird auf das man klicken kann.
tellraw @s ["Straßenbrücken- und -tunnelbaumaschine.2:\n",{"text":"spuren = ","bold":true},{"text":"spuren + 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Spuren + 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZStrBTBM.2Ausl set 1"} },"\n",{"text":"spuren = ","bold":true},{"text":"spuren - 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Spuren - 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZStrBTBM.2Ausl set -1"} },"\n",{"text":"spuren == ","bold":true},{"score":{"name":"VarStrBTBM.2Spuren","objective":"PZStrBTBM.2Laen"},"color":"dark_purple","bold":true},"\n",{"text":"straßengleis = ","bold":true},{"text":"wahr","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Wert wahr"} },"clickEvent":{"action":"run_command","value":"/trigger PZStrBTBM.2Ausl set 2"} },"\n",{"text":"straßengleis = ","bold":true},{"text":"falsch","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Wert falsch"} },"clickEvent":{"action":"run_command","value":"/trigger PZStrBTBM.2Ausl set -2"} }]
tellraw @s[tag=!EtiStrBTBM.2Bahngleis] ["",{"text":"straßengleis == ","bold":true},{"text":"falsch","color":"red","bold":true}]
tellraw @s[tag=EtiStrBTBM.2Bahngleis] ["",{"text":"straßengleis == ","bold":true},{"text":"wahr","color":"green","bold":true}]

tellraw @s ["",{"text":"maxlänge (","bold":true},{"text":"=maxlänge + 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Länge + 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZStrBTBM.2Ausl set 3"} },{"text":",","bold":true},{"text":"=maxlänge - 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Länge - 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZStrBTBM.2Ausl set -3"} },{"text":") == ","bold":true},{"score":{"name":"VarStrBTBM.2Laenge","objective":"PZStrBTBM.2Laen"},"color":"dark_purple","bold":true},"\n",{"text":"pfeiler (","bold":true},{"text":"=pfeiler + 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Pfeiler-Distanz + 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZStrBTBM.2Ausl set 4"} },{"text":",","bold":true},{"text":"=pfeiler - 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Pfeiler-Distanz - 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZStrBTBM.2Ausl set -4"} },{"text":") == ","bold":true},{"score":{"name":"VarStrBTBM.2Pfeiler","objective":"PZStrBTBM.2Laen"},"color":"dark_purple","bold":true}]

tellraw @s ["",{"text":"hängepfeiler = ","bold":true},{"text":"wahr","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Wert wahr"} },"clickEvent":{"action":"run_command","value":"/trigger PZStrBTBM.2Ausl set 5"} },"\n",{"text":"hängepfeiler = ","bold":true},{"text":"falsch","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Wert falsch"} },"clickEvent":{"action":"run_command","value":"/trigger PZStrBTBM.2Ausl set -5"} }]
tellraw @s[tag=!EtiStrBTBM.2Haengepfeiler] ["",{"text":"hängepfeiler == ","bold":true},{"text":"falsch","color":"red","bold":true}]
tellraw @s[tag=EtiStrBTBM.2Haengepfeiler] ["",{"text":"hängepfeiler == ","bold":true},{"text":"wahr","color":"green","bold":true}]

# Damit die Nachricht nur dann erscheint, wenn man in ihr die Optionen angeklickt hat, wird der Wert des Spielers auf null gesetzt und erhält erneut die Erlaubnis, die Auslöser auszulösen.
scoreboard players enable @s PZStrBTBM.2Ausl
scoreboard players set @s PZStrBTBM.2Ausl 0

Variante 2: Ausrichtungs-Funktion
Die Ausrichtungs-Funktion richtet die Funktionen aus, sodass sie exakt in eine der vier Himmelsrichtungen blicken.

Editor Icon strassenbruecken-_und_-tunnelbaumaschine:v2ausrichtung.mcfunction
# Die Variable für die aktuelle Spur wird auf null gesetzt.
scoreboard players set VarStrBTBM.2Spur PZStrBTBM.2Laen 0

# Je nach Blickrichtung wird die Spuren-Funktion vor dem Aufruf entsprechend exakt ausgerichtet aufgerufen.
execute if entity @s[y_rotation=-45..45] rotated 0 0 run function strassenbruecken-_und_-tunnelbaumaschine:v2spuren
execute if entity @s[y_rotation=45..135] rotated 90 0 run function strassenbruecken-_und_-tunnelbaumaschine:v2spuren
execute if entity @s[y_rotation=135..-135] rotated 180 0 run function strassenbruecken-_und_-tunnelbaumaschine:v2spuren
execute if entity @s[y_rotation=-135..-45] rotated 270 0 run function strassenbruecken-_und_-tunnelbaumaschine:v2spuren

Variante 2: Spuren-Funktion
Die Spuren-Funktion ruft für jede Spur die Spur-Funktion auf und zählt dabei mit bei welcher Spur sie gerade ist.

Editor Icon strassenbruecken-_und_-tunnelbaumaschine:v2spuren.mcfunction
# Die aktuelle Spur wird um eins erhöht.
scoreboard players add VarStrBTBM.2Spur PZStrBTBM.2Laen 1

# Bevor die Spur-Funktion aufgerufen wird, werden alle benötigten Variablen auf Startwerte gesetzt.
scoreboard players operation VarStrBTBM.2Abstand PZStrBTBM.2Laen = VarStrBTBM.2Pfeiler PZStrBTBM.2Laen
scoreboard players remove VarStrBTBM.2Abstand PZStrBTBM.2Laen 4
scoreboard players set VarStrBTBM.2StrichLinie PZStrBTBM.2Laen 0
scoreboard players operation VarStrBTBM.2Weite PZStrBTBM.2Laen = @s PZStrBTBM.2Laen
function strassenbruecken-_und_-tunnelbaumaschine:v2spur

# Falls die aktuelle Spur kleiner als die eingestellten Spuren ist, ruft sich diese Funktion um vier Blöcke versetzt erneut auf.
execute if score VarStrBTBM.2Spur PZStrBTBM.2Laen < VarStrBTBM.2Spuren PZStrBTBM.2Laen positioned ^-4 ^ ^ run function strassenbruecken-_und_-tunnelbaumaschine:v2spuren

Variante 2: Spur-Funktion
Die Spur-Funktion errichtet die Spur. Abhängig der Einstellungen werden noch Straßenbahngleise oder Hängepfeiler errichtet.

Editor Icon strassenbruecken-_und_-tunnelbaumaschine:v2spur.mcfunction
# Die Pfeiler werden gesetzt, falls der richtige Abstand erreicht wurde.
scoreboard players add VarStrBTBM.2Abstand PZStrBTBM.2Laen 1
execute if score VarStrBTBM.2Abstand PZStrBTBM.2Laen >= VarStrBTBM.2Pfeiler PZStrBTBM.2Laen run summon minecraft:marker ^-2.5 ^ ^0.5 {Tags:["EtiStrBTBM.2Alle","EtiStrBTBM.2Pfeiler"],Rotation:[0.0f,90.0f]}
execute if score VarStrBTBM.2Abstand PZStrBTBM.2Laen >= VarStrBTBM.2Pfeiler PZStrBTBM.2Laen if score VarStrBTBM.2Spur PZStrBTBM.2Laen matches 1 run summon minecraft:marker ^2.5 ^ ^0.5 {Tags:["EtiStrBTBM.2Alle","EtiStrBTBM.2Pfeiler"],Rotation:[0.0f,90.0f]}
execute if score VarStrBTBM.2Abstand PZStrBTBM.2Laen >= VarStrBTBM.2Pfeiler PZStrBTBM.2Laen if entity @s[tag=EtiStrBTBM.2Haengepfeiler] as @e[distance=..8,type=minecraft:marker,tag=EtiStrBTBM.2Pfeiler,sort=nearest,limit=2] at @s run teleport @s ~ ~9 ~ ~ -90
execute if score VarStrBTBM.2Abstand PZStrBTBM.2Laen >= VarStrBTBM.2Pfeiler PZStrBTBM.2Laen if entity @s[tag=EtiStrBTBM.2Haengepfeiler] run fill ^4 ^1 ^ ^-5 ^9 ^1 minecraft:smooth_stone replace
execute if score VarStrBTBM.2Abstand PZStrBTBM.2Laen >= VarStrBTBM.2Pfeiler PZStrBTBM.2Laen if entity @s[tag=EtiStrBTBM.2Haengepfeiler] if score VarStrBTBM.2Spur PZStrBTBM.2Laen matches 1 run fill ^5 ^1 ^ ^5 ^9 ^1 minecraft:smooth_stone replace

# Straße wird mit oder ohne Straßenbahngleisen errichtet.
fill ^5 ^1 ^ ^-5 ^9 ^1 minecraft:glass replace #strassenbruecken-_und_-tunnelbaumaschine:v2umwelt
execute if score VarStrBTBM.2Spur PZStrBTBM.2Laen matches 1 run setblock ^3 ^ ^ minecraft:polished_andesite replace
setblock ^-3 ^ ^ minecraft:polished_andesite replace
fill ^2 ^-1 ^ ^-2 ^-1 ^ minecraft:polished_andesite replace
fill ^2 ^ ^ ^-2 ^ ^ minecraft:quartz_block replace
fill ^1 ^ ^ ^-1 ^ ^ minecraft:gray_concrete replace
execute if score VarStrBTBM.2Spur PZStrBTBM.2Laen matches 1 if entity @s[tag=EtiStrBTBM.2Bahngleis,y_rotation=-135..135] unless entity @s[y_rotation=-45..45] run setblock ~ ~ ~1 minecraft:stone_brick_stairs[facing=south] replace
execute if score VarStrBTBM.2Spur PZStrBTBM.2Laen matches 1 if entity @s[tag=EtiStrBTBM.2Bahngleis,y_rotation=135..45] unless entity @s[y_rotation=-135..-45] run setblock ~1 ~ ~ minecraft:stone_brick_stairs[facing=east] replace
execute if score VarStrBTBM.2Spur PZStrBTBM.2Laen matches 1 if entity @s[tag=EtiStrBTBM.2Bahngleis,y_rotation=-135..135] unless entity @s[y_rotation=-45..45] run setblock ~ ~ ~-1 minecraft:stone_brick_stairs[facing=north] replace
execute if score VarStrBTBM.2Spur PZStrBTBM.2Laen matches 1 if entity @s[tag=EtiStrBTBM.2Bahngleis,y_rotation=135..45] unless entity @s[y_rotation=-135..-45] run setblock ~-1 ~ ~ minecraft:stone_brick_stairs[facing=west] replace
fill ^4 ^1 ^ ^-4 ^1 ^ minecraft:stone_brick_slab replace
execute if score VarStrBTBM.2Spur PZStrBTBM.2Laen matches 2.. run fill ^4 ^1 ^ ^3 ^1 ^ minecraft:air replace
fill ^2 ^1 ^ ^-2 ^1 ^ minecraft:air replace
fill ^4 ^2 ^ ^-4 ^8 ^ minecraft:air replace

# Falls die Spur unter Wasser oder unter der Erde verläuft, hat die Spur eine Glasfassade erhalten. Damit die Pfeiler bessere Verbindungen haben, wird dort ein Teil der Glasfassade durch einen Bogen ersetzt.
execute if score VarStrBTBM.2Abstand PZStrBTBM.2Laen >= VarStrBTBM.2Pfeiler PZStrBTBM.2Laen run fill ^5 ^1 ^ ^-5 ^9 ^1 minecraft:smooth_stone replace minecraft:glass
execute if score VarStrBTBM.2Abstand PZStrBTBM.2Laen >= VarStrBTBM.2Pfeiler PZStrBTBM.2Laen run scoreboard players set VarStrBTBM.2Abstand PZStrBTBM.2Laen 0

# Bei jedem Aufruf dieser Funktion wird eine Strichlinien-Variable um eins erhöht und alle drei Blöcke wird dann eine Linienunterbrechung gesetzt um die typische Strichlinie zu erzeugen.
execute if score VarStrBTBM.2Spur PZStrBTBM.2Laen matches 2.. run scoreboard players add VarStrBTBM.2StrichLinie PZStrBTBM.2Laen 1
execute if score VarStrBTBM.2Spur PZStrBTBM.2Laen matches 2.. if score VarStrBTBM.2StrichLinie PZStrBTBM.2Laen matches 3.. run setblock ^2 ^ ^ minecraft:gray_concrete replace
execute if score VarStrBTBM.2Spur PZStrBTBM.2Laen matches 2.. if score VarStrBTBM.2StrichLinie PZStrBTBM.2Laen matches 3.. run scoreboard players set VarStrBTBM.2StrichLinie PZStrBTBM.2Laen 0

# Der Längenwert wird um eins reduziert und nur solange dieser Wert über null liegt, wird die Funktion selbst nochmal um einen Block nach vorne versetzt aufgerufen.
scoreboard players remove VarStrBTBM.2Weite PZStrBTBM.2Laen 1
execute if score VarStrBTBM.2Weite PZStrBTBM.2Laen matches 1.. positioned ^ ^ ^1 run function strassenbruecken-_und_-tunnelbaumaschine:v2spur

Variante 2: Pfeiler-Funktion
Die Pfeiler-Funktion errichtet die Pfeiler für die Spuren.

Editor Icon strassenbruecken-_und_-tunnelbaumaschine:v2pfeiler.mcfunction
# Wenn der Pfeiler nach unten und in Wasser oder Lava platziert werden soll, wird er breiter gemacht, ansonsten wird er etwas dünner gemacht.
execute store result score @s PZStrBTBM.2Wert if block ~ ~ ~ minecraft:water
execute store result score @s[scores={PZStrBTBM.2Wert=0}] PZStrBTBM.2Wert if block ~ ~ ~ minecraft:lava
execute if entity @s[x_rotation=90,scores={PZStrBTBM.2Wert=1}] run fill ~1.5 ~ ~1.5 ~-1.5 ~ ~-1.5 minecraft:smooth_stone replace #strassenbruecken-_und_-tunnelbaumaschine:v2untergrund
fill ~0.5 ~ ~0.5 ~-0.5 ~ ~-0.5 minecraft:smooth_stone replace #strassenbruecken-_und_-tunnelbaumaschine:v2untergrund

# Wenn der Pfeiler bis an den Grund oder an die Decke gelangt ist, wird der Markierer entfernt.
execute unless block ^ ^ ^1 #strassenbruecken-_und_-tunnelbaumaschine:v2untergrund run kill @s

# Wenn der Pfeiler über oder unter die Bauhöhe gekommen ist, kann Luft nicht geprüft werden, sodass beide Prüfungen eine null zurückgeben. Genau bei diesem Fall, wird der Pfeiler ebenfalls gelöscht.
execute store result score VarStrBTBM.2Weltgrenze1 PZStrBTBM.2Laen if block ^ ^ ^1 minecraft:air
execute store result score VarStrBTBM.2Weltgrenze2 PZStrBTBM.2Laen unless block ^ ^ ^1 minecraft:air
execute if score VarStrBTBM.2Weltgrenze1 PZStrBTBM.2Laen = VarStrBTBM.2Weltgrenze2 PZStrBTBM.2Laen run kill @s

# Der Markierer wird um einen Block in Blickrichtung teleportiert.
teleport @s ^ ^ ^1

Variante 2: Stopp-Funktion
Die Stopp-Funktion löscht die Punkte-Ziele wieder und alle Etiketten. Ebenso werden die Angeln entfernt.

Editor Icon strassenbruecken-_und_-tunnelbaumaschine:v2stopp.mcfunction
# Die Punkte-Ziele werden entfernt.
scoreboard objectives remove PZStrBTBM.2Schl
scoreboard objectives remove PZStrBTBM.2Ausl
scoreboard objectives remove PZStrBTBM.2Laen

# Alle eventuell vorhandenen Etiketten werden entfernt.
tag @a[tag=EtiStrBTBM.2Auswahl] remove EtiStrBTBM.2Auswahl
tag @a[tag=EtiStrBTBM.2Shift] remove EtiStrBTBM.2Shift
tag @a[tag=EtiStrBTBM.2Bahngleis] remove EtiStrBTBM.2Bahngleis
tag @a[tag=EtiStrBTBM.2Haengepfeiler] remove EtiStrBTBM.2Haengepfeiler

# Die Angel wird aus dem Inventar oder als Drop in der Welt gelöscht.
clear @a minecraft:fishing_rod{EigStrBTBM.2Angel:true}
kill @e[type=minecraft:item,nbt={Item:{tag:{EigStrBTBM.2Angel:true} } }]

# Chunks werden entladen.
forceload remove ~ ~


Disambig color
Advertisement