Technik Wiki
Advertisement
Gruppe: Grid Schiene.png
Schienenverkehrsanlagen

Grid Roter Sand blass.png mit Mechaniken

Grid Redstone blass.png mit Redstone
                Hier:
Grid Befehlsblock.png mit Befehlen
Verfügbar in:
Wiki Schienen-Welt.png Schienen-Welt
Wiki Schienen-Welt.png
Alle neuen oder überarbeiteten Techniken auf dieser Seite sind noch nicht in der aktuellen Schienen-Welt vorhanden.
In einem der nächsten Updates werden sie dort hinzugefügt werden.

Die Gleisbrücken- und -tunnelbaumaschine basiert auf der Gleisbaumaschine und vereinfacht das Bauen von Gleisbrücken, Gleistunnels, ebenen Gleisstrecken und in besonderen Fällen auch das Bauen von Gleisrampen. Hierbei muss man das Material für den Bau solcher Konstruktionen bei sich tragen und die Gleisbaumaschine entnimmt dann dieses für den Bau. Wenn man damit Brücken konstruiert, werden nach einem eingestellten Abstand Pfeiler platziert, welche genau so lang sind wie die Schlucht tief ist. Falls die Brücke im Ozean oder Lavaozean errichtet wird, so werden die Pfeiler ab dem Meeresspiegel breiter und gehen bis auf den Grund. Unterwasserbrücken wie auch Unterwassertunnel sind auch möglich, hierbei wird eine schützende Glasfasse für die Schächte errichtet.

Es gibt auch Varianten für die Eisenbahn, welche genauso arbeitet wie für Gleisstrecken, nur dass die Brücken und Tunnel entsprechend an Eisenbahnen angepasst sind.

Variante 1[]

Gleisbrücken- und -tunnelbaumaschine (Befehle) Bild 1.1.png Gleisbrücken- und -tunnelbaumaschine (Befehle) Bild 1.2.png Gleisbrücken- und -tunnelbaumaschine (Befehle) Bild 1.3.png Gleisbrücken- und -tunnelbaumaschine (Befehle) Bild 1.4.png

Mit dieser Gleisbrücken- und -tunnelbaumaschine lassen sich eine oder zwei Spuren platzieren. Das Material für den Bau muss man bei sich tragen. Man erhält beim Einschalten eine Rüstungsständer den man platzieren kann um die Baumaschine zu erzeugen. Dann setzt man sich in die Lore und wählt die Angel aus. Dadurch bekommt man im Chat ein Menü angezeigt in dem sich Schaltflächen befinden, auf die man klicken kann um Einstellungen zu ändern. So kann man die Neigung, die Rasterung, die zweite Spur oder die Pfeiler einstellen. Ebenso lässt sich über die Tempomat-Einstellung die Baumaschine einfach losfahren, ohne das man selbst ständig klicken muss. Die Baumaschine platziert eine Spur mit Gleisen mit Gleisbett und Gleisrand. Ab einen einstellbaren Abstand wird ein Pfeiler erzeugt und eine Redstone-Fackel für die Antriebsschiene platziert. Ebenso kann es eingestellt sein, sodass die Pfeiler nicht nach unten, sondern nach oben generiert werden, um die Brücke hängend zu erzeugen. Wenn die Pfeiler ins Wasser oder in die Lava kommen, werden sie ab da, etwas breiter.

Einschalten

Wird der Hebel umgelegt, startet der Befehlsblock und führt die Start-Funktion einmal aus.

Wiederholen

Der Wiederhol-Befehlsblock führt jeden Tick die Zyklus-Funktion aus.

Ausschalten

Sobald der Hebel wieder in Ausgangsstellung zurück gelegt wurde, wird die Stopp-Funktion aktiviert.


Befehlsblöcke mit Befehlen:


Datenpaket


Variante 1: Start-Funktion
Die Start-Funktion erstellt das Punkte-Ziel, gibt alle Materialien und gibt den Spieler die Baumaschine in Form eines Rüstungsständers

Editor Icon.png gleisbruecken-_und_-tunnelbaumaschine:v1start.mcfunction
# Ein Punkte-Ziel für die Werte wird erstellt.
scoreboard objectives add PZGleBTBM.1Wert trigger ["Gleisbrücken- und -tunnelbaumaschine.1: ",{"text":"Wert der Variablen","bold":true}]

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

# Der Spieler erhält einen Rüstungsständer, mit welchem man, durch das Platzieren eine Baumaschine erzeugen kann.
give @a[distance=..15] minecraft:armor_stand{EigGleBTBM.1Alle:true,display:{Name:'{"text":"Gleisbrücken- und -tunnelbaumaschine","color":"gold","bold":true}',Lore:['"Platziere den Rüstungsständer"','"um die Gleisbaumaschine zu erstellen"','"und um eine Angel zu erhalten"']},EntityTag:{Invisible:true,Small:true,NoGravity:true,Tags:["EtiGleBTBM.1Alle","EtiGleBTBM.1Baumaschine","EtiGleBTBM.1Erstellen"] } } 16

# Alle Spieler im Umkreis von 15 Blöcken erhalten die Baumaterialien.
give @a[distance=..15] minecraft:rail{EigGleBTBM.1Alle:true} 64
give @a[distance=..15] minecraft:andesite{EigGleBTBM.1Alle:true} 64
give @a[distance=..15] minecraft:smooth_stone{EigGleBTBM.1Alle:true} 128

# Eine kurze Anleitung, wie die Gleisbaumaschine aktiviert werden kann.
tellraw @a[distance=..15] ["Gleisbrücken- und -tunnelbaumaschine.1:\n",{"text":"Platziere den Rüstungsständer um die Gleisbaumaschine 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 der Angel auf diese.","bold":true}]

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

Variante 1: Zyklus-Funktion
Die Zyklus-Funktion ruft die Funktionen für das Erstellen der Baumaschine auf, wenn der Rüstungsständer platziert wurde. Funktionen für das Ausrichten und das Bauen der Gleiswege und für den Pfeiler werden ebenfalls geladen.

Editor Icon.png gleisbruecken-_und_-tunnelbaumaschine:v1zyklus.mcfunction
# Wenn der Rüstungsständer für das Erstellen platziert wurde, wird entweder die Erstellen- oder Entfernen-Funktion aufgerufen, abhängig davon ob sich in der Nähe eine andere Baumaschine befindet.
execute as @e[type=minecraft:armor_stand,tag=EtiGleBTBM.1Erstellen] at @s if entity @e[distance=..20,type=minecraft:marker,tag=EtiGleBTBM.1Baumaschine] run function gleisbruecken-_und_-tunnelbaumaschine:v1entfernen
execute as @e[type=minecraft:armor_stand,tag=EtiGleBTBM.1Erstellen] at @s align y run function gleisbruecken-_und_-tunnelbaumaschine:v1erstellen

# Wenn der Köder von der Angel geworfen wurde oder die Baumaschine keine Lore zum Sitzen besitzt, wird die Entfernen-Funktion aufgerufen.
execute at @e[type=minecraft:marker,tag=EtiGleBTBM.1Baumaschine] if entity @e[distance=..2,type=minecraft:fishing_bobber] run kill @e[distance=..5,type=minecraft:minecart,tag=EtiGleBTBM.1Sitz,sort=nearest,limit=1]
execute at @e[type=minecraft:armor_stand,tag=EtiGleBTBM.1Halter,nbt=!{Passengers:[{}]}] as @e[distance=..5,type=minecraft:marker,tag=EtiGleBTBM.1Baumaschine,sort=nearest,limit=1] at @s run function gleisbruecken-_und_-tunnelbaumaschine:v1entfernen

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

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

# Wenn der Spieler die Angel ausgewählt hatte, aber nicht mehr in der Lore sitzt, wird ihm das Etikett entfernt, sodass er beim erneuten Einsteigen wieder das Optionen-Menü angezeigt bekommt.
tag @a[tag=EtiGleBTBM.1Ausgewaehlt,tag=EtiGleBTBM.1Auswahl,tag=!EtiGleBTBM.1Sitzen] remove EtiGleBTBM.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=EtiGleBTBM.1Ausgewaehlt,tag=!EtiGleBTBM.1Auswahl] PZGleBTBM.1Wert -99

# Spieler die das Etikett besitzen, laden von sich aus die Auslöser-Funktion.
execute as @a[tag=EtiGleBTBM.1Ausgewaehlt,tag=EtiGleBTBM.1Sitzen] unless entity @s[scores={PZGleBTBM.1Wert=0}] at @s as @e[distance=..5,type=minecraft:marker,tag=EtiGleBTBM.1Baumaschine,sort=nearest,limit=1] run function gleisbruecken-_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=EtiGleBTBM.1Ausgewaehlt,tag=!EtiGleBTBM.1Auswahl,tag=!EtiGleBTBM.1Sitzen] actionbar ["",{"text":"Spieler sitzt == ","bold":true},{"text":"falsch","color":"red","bold":true}]

# Um zu erfassen ob der Spieler gerade die Angel ausgewählt hat oder sie nicht mehr auswählt, wird ihm ein Etikett gegeben oder entfernt.
tag @a[tag=EtiGleBTBM.1Ausgewaehlt,tag=!EtiGleBTBM.1Auswahl] add EtiGleBTBM.1Auswahl
tag @a[tag=!EtiGleBTBM.1Ausgewaehlt,tag=EtiGleBTBM.1Auswahl] remove EtiGleBTBM.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=EtiGleBTBM.1Baumaschine] at @s if entity @p[distance=..10,gamemode=!spectator] rotated ~ 0 run function gleisbruecken-_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=EtiGleBTBM.1Baumaschine] run data modify entity @s CustomName set from entity @s data."EigGleBTBM.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=EtiGleBTBM.1Baumaschine,name="wahr"] at @s unless entity @p[distance=..5,tag=EtiGleBTBM.1Sitzen,tag=EtiGleBTBM.1Ausgewaehlt] run data modify entity @s data."EigGleBTBM.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 VarGleBTBM.1Tick PZGleBTBM.1Wert 1
execute if score VarGleBTBM.1Tick PZGleBTBM.1Wert matches 4.. at @e[type=minecraft:marker,tag=EtiGleBTBM.1Baumaschine,name="wahr"] run scoreboard players set @p[distance=..5,tag=EtiGleBTBM.1Sitzen] PZGleBTBM.1Wert 11
execute if score VarGleBTBM.1Tick PZGleBTBM.1Wert matches 4.. run scoreboard players set VarGleBTBM.1Tick PZGleBTBM.1Wert 0

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

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

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

Variante 1: Erstellen-Funktion
Die Erstellen-Funktion erzeugt alle unsichtbaren Rüstungsständer mit Block im Kopfslot, die für den Bau der Brücke benötigt werden.

Editor Icon.png gleisbruecken-_und_-tunnelbaumaschine:v1erstellen.mcfunction
# Dem Spieler wird eine Angel gegeben, mit der er die Maschine steuern kann.
give @p[distance=..5,gamemode=!spectator] minecraft:fishing_rod{EigGleBTBM.1Alle:true,EigGleBTBM.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 Gleisbaumaschine zu bestimmen."','"Ebenfalls erhält man die Nachricht-Optionen"','"und durch Werfen des Angelköders auf"','"die Gleisbaumaschine wird diese gedroppt."'] } }

# Die Baumaschine in Form eines Markierers wird erzeugt. Der Markierer besitzt für alle Einstellungen bestimmte Eigenschaften.
summon minecraft:marker ~ ~ ~ {Tags:["EtiGleBTBM.1Alle","EtiGleBTBM.1Entfernen","EtiGleBTBM.1Baumaschine"],data:{EigGleBTBM.1Zweierspur:'{"bold":true,"color":"red","text":"falsch"}',EigGleBTBM.1Neigung:'{"bold":true,"color":"aqua","text":"Geradeaus"}',EigGleBTBM.1Raster:'{"bold":true,"color":"green","text":"wahr"}',EigGleBTBM.1Tempomat:'{"bold":true,"color":"red","text":"falsch"}',EigGleBTBM.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=EtiGleBTBM.1Baumaschine,sort=nearest,limit=1] ~ ~ ~ ~180 ~

# Ein Rüstungsständer auf dem eine Lore ist, wird erzeugt. In diese kann der Spieler sich setzen um die Maschine zu steuern.
summon minecraft:armor_stand ~ ~ ~ {Invulnerable:true,Invisible:true,NoGravity:true,Marker:true,Tags:["EtiGleBTBM.1Alle","EtiGleBTBM.1Entfernen","EtiGleBTBM.1Halter"],Passengers:[{id:"minecraft:minecart",NoGravity:true,Invulnerable:true,Tags:["EtiGleBTBM.1Alle","EtiGleBTBM.1Entfernen","EtiGleBTBM.1Sitz"] } ] }

# Unsichtbare Rüstungsständer mit bestimmten Blöcken im Kopfslot werden erstellt. Um alle Baumaterialien die für die Spur verbaut werden, anzuzeigen.
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiGleBTBM.1Alle","EtiGleBTBM.1Entfernen","EtiGleBTBM.1Spur","EtiGleBTBM.1EineSpur"],ArmorItems:[{},{},{},{id:"minecraft:rail",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiGleBTBM.1Alle","EtiGleBTBM.1Entfernen","EtiGleBTBM.1SpurBett","EtiGleBTBM.1EineSpur"],ArmorItems:[{},{},{},{id:"minecraft:andesite",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiGleBTBM.1Alle","EtiGleBTBM.1Entfernen","EtiGleBTBM.1Rechts","EtiGleBTBM.1SpurRand","EtiGleBTBM.1EineSpur"],ArmorItems:[{},{},{},{id:"minecraft:smooth_stone",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiGleBTBM.1Alle","EtiGleBTBM.1Entfernen","EtiGleBTBM.1Links1","EtiGleBTBM.1SpurRand","EtiGleBTBM.1EineSpur"],ArmorItems:[{},{},{},{id:"minecraft:smooth_stone",Count:1b}]}

# Für die zweite Spur werden Rüstungsständer erstellt.
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiGleBTBM.1Alle","EtiGleBTBM.1Entfernen","EtiGleBTBM.1Spur","EtiGleBTBM.1Spur2"],ArmorItems:[{},{},{},{id:"minecraft:rail",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiGleBTBM.1Alle","EtiGleBTBM.1Entfernen","EtiGleBTBM.1SpurBett","EtiGleBTBM.1SpurBett2"],ArmorItems:[{},{},{},{id:"minecraft:andesite",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiGleBTBM.1Alle","EtiGleBTBM.1Entfernen","EtiGleBTBM.1Rechts","EtiGleBTBM.1Rechts2","EtiGleBTBM.1SpurRand"],ArmorItems:[{},{},{},{id:"minecraft:smooth_stone",Count:1b}]}

# Anschließend wird der Rüstungsständer zum Erstellen der Baumaschine entfernt.
kill @s

Variante 1: Entfernen-Funktion
Die Entfernen-Funktion erzeugt einen Drop um die Baumaschine zu erzeugen und löscht alle Objekte, die Teil der Baumaschine waren.

Editor Icon.png gleisbruecken-_und_-tunnelbaumaschine:v1entfernen.mcfunction
# Der Rüstungsständer in Form eines Gegenstandes wird erzeugt.
summon minecraft:item ~ ~ ~ {Item:{id:"minecraft:armor_stand",Count:1b,tag:{EigGleBTBM.1Alle:true,display:{Name:'{"text":"Gleisbaumaschine","color":"gold","bold":true}',Lore:['"Platziere den Rüstungsständer"','"um die Gleisbaumaschine zu erstellen"','"und um eine Angel zu erhalten"'] },EntityTag:{Small:true,Invisible:true,NoGravity:true,Tags:["EtiGleBTBM.1Alle","EtiGleBTBM.1Erstellen"]},Motion:[0.0d,0.3d,0.0d] } } }

# Wenn die Maschine nicht gerade erst platziert wurde, wird die Angel aus dem Inventar entfernt.
execute if entity @s[tag=!EtiGleBTBM.1Erstellen] run clear @p[distance=..25,gamemode=!spectator,nbt={Inventory:[{id:"minecraft:fishing_rod"}]}] minecraft:fishing_rod{EigGleBTBM.1Alle:true} 1

# Falls die Maschine nicht gerade erstellt wurde, werden alle Rüstungsständer von dieser entfernt. Falls sie gerade erstellt werden sollte, wird nur sie selbst wieder entfernt.
execute if entity @s[tag=!EtiGleBTBM.1Erstellen] run kill @e[distance=..10,tag=EtiGleBTBM.1Entfernen,sort=nearest,limit=9]
kill @s[tag=EtiGleBTBM.1Erstellen]

# Eine Meldung erscheint, damit man weis dass sie entfernt wurde.
tellraw @p[distance=..10,gamemode=!spectator] ["Gleisbrücken- und -tunnelbaumaschine.1:\n",{"text":"Die Gleisbaumaschine 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 gibt dem Spieler im Chat alle Optionen die er einstellen kann.

Editor Icon.png gleisbruecken-_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 PZGleBTBM.1Wert run scoreboard players get @p[distance=..1,tag=EtiGleBTBM.1Sitzen,scores={PZGleBTBM.1Wert=1..}] PZGleBTBM.1Wert

# Die Schaltflächen für die Neigung wurden aktiviert und setzen die Eigenschaft entsprechend auf den eingestellten Wert.
data modify entity @s[scores={PZGleBTBM.1Wert=1}] data."EigGleBTBM.1Neigung" set value '{"bold":true,"color":"green","text":"Oben"}'
data modify entity @s[scores={PZGleBTBM.1Wert=2}] data."EigGleBTBM.1Neigung" set value '{"bold":true,"color":"aqua","text":"Geradeaus"}'
data modify entity @s[scores={PZGleBTBM.1Wert=3}] data."EigGleBTBM.1Neigung" set value '{"bold":true,"color":"red","text":"Unten"}'
data modify entity @s[scores={PZGleBTBM.1Wert=4}] data."EigGleBTBM.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={PZGleBTBM.1Wert=5}] data."EigGleBTBM.1Raster" set value '{"bold":true,"color":"green","text":"wahr"}'
data modify entity @s[scores={PZGleBTBM.1Wert=6}] data."EigGleBTBM.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 doch, wird nicht die Material-Funktion geladen und stattdessen, erhält der Spieler eine Fehlermeldung.
execute at @s[scores={PZGleBTBM.1Wert=11}] if entity @e[distance=2..20,type=minecraft:marker,tag=EtiGleBTBM.1Baumaschine] run scoreboard players set @s PZGleBTBM.1Wert 8
execute at @s[scores={PZGleBTBM.1Wert=11}] as @p[distance=..5,tag=EtiGleBTBM.1Sitzen] run function gleisbruecken-_und_-tunnelbaumaschine:v1material
execute at @s[scores={PZGleBTBM.1Wert=8}] run tellraw @p[distance=..5,tag=EtiGleBTBM.1Sitzen,scores={PZGleBTBM.1Wert=11}] ["Gleisbrücken- und -tunnelbaumaschine.1:\n",{"text":"Es befindet sich eine weitere Gleisbaumaschine in der Nähe, daher wurde der Bauvorgang abgebrochen. Entferne eine Gleisbaumaschine 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={PZGleBTBM.1Wert=7}] data."EigGleBTBM.1Tempomat" set value '{"bold":true,"color":"green","text":"wahr"}'
data modify entity @s[scores={PZGleBTBM.1Wert=8}] data."EigGleBTBM.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={PZGleBTBM.1Wert=9}] data."EigGleBTBM.1Zweierspur" set value '{"bold":true,"color":"green","text":"wahr"}'
data modify entity @s[scores={PZGleBTBM.1Wert=10}] data."EigGleBTBM.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={PZGleBTBM.1Wert=12}] if score VarGleBTBM.1Pfeiler PZGleBTBM.1Wert matches ..31 run scoreboard players add VarGleBTBM.1Pfeiler PZGleBTBM.1Wert 1
execute if entity @s[scores={PZGleBTBM.1Wert=13}] if score VarGleBTBM.1Pfeiler PZGleBTBM.1Wert matches 9.. run scoreboard players remove VarGleBTBM.1Pfeiler PZGleBTBM.1Wert 1

# Wenn die Hängepfeiler aktiv sind, werden Pfeiler nach oben, statt nach unten generiert.
data modify entity @s[scores={PZGleBTBM.1Wert=14}] data."EigGleBTBM.1Haengepfeiler" set value '{"bold":true,"color":"green","text":"wahr"}'
data modify entity @s[scores={PZGleBTBM.1Wert=15}] data."EigGleBTBM.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={PZGleBTBM.1Wert=11},nbt={data:{EigGleBTBM.1Tempomat:'{"bold":true,"color":"green","text":"wahr"}'} }] run tellraw @p[distance=..1,tag=EtiGleBTBM.1Sitzen] ["Gleisbrü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 PZGleBTBM.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 PZGleBTBM.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 PZGleBTBM.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 PZGleBTBM.1Wert set 4"} },"\n",{"text":"neigung == ","bold":true},{"entity":"@s","nbt":"data.\"EigGleBTBM.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 PZGleBTBM.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 PZGleBTBM.1Wert set 6"} },{"text":") == ","bold":true},{"entity":"@s","nbt":"data.\"EigGleBTBM.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 PZGleBTBM.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 PZGleBTBM.1Wert set 8"} },{"text":") == ","bold":true},{"entity":"@s","nbt":"data.\"EigGleBTBM.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 PZGleBTBM.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 PZGleBTBM.1Wert set 10"} },{"text":") == ","bold":true},{"entity":"@s","nbt":"data.\"EigGleBTBM.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 PZGleBTBM.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 PZGleBTBM.1Wert set 13"} },{"text":") == ","bold":true},{"score":{"name":"VarGleBTBM.1Pfeiler","objective":"PZGleBTBM.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 PZGleBTBM.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 PZGleBTBM.1Wert set 15"} },{"text":") == ","bold":true},{"entity":"@s","nbt":"data.\"EigGleBTBM.1Haengepfeiler\"","interpret":true},"\n",{"text":"fahren(neigung,zweierspur)","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Gleisbaumaschine fahren"} },"clickEvent":{"action":"run_command","value":"/trigger PZGleBTBM.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=EtiGleBTBM.1Sitzen] PZGleBTBM.1Wert
scoreboard players set @p[distance=..1,tag=EtiGleBTBM.1Sitzen] PZGleBTBM.1Wert 0

Variante 1: Material-Funktion
Die Material-Funktion prüft ob der Spieler das benötigte Material bei sich trägt und nur dann wird die Spur-Funktion geladen, ansonsten erhält der Spieler eine Fehlermeldung.

Editor Icon.png gleisbruecken-_und_-tunnelbaumaschine:v1material.mcfunction
# Zuerst wird die Anzahl der benötigten Blöcke ermittelt, in dem diese in die Variablen gespeichert werden.
execute store result score VarGleBTBM.1Gleis PZGleBTBM.1Wert run clear @s minecraft:rail 0
execute store result score VarGleBTBM.1Andesit PZGleBTBM.1Wert run clear @s minecraft:andesite 0
execute store result score VarGleBTBM.1Stein PZGleBTBM.1Wert run clear @s minecraft:smooth_stone 0

# Wenn der Spieler die zweite Spur aktiviert hat, so bekommt er temporär ein Etikett.
execute if entity @e[distance=..10,type=minecraft:marker,tag=EtiGleBTBM.1Baumaschine,nbt={data:{EigGleBTBM.1Zweierspur:'{"bold":true,"color":"green","text":"wahr"}'} },sort=nearest,limit=1] run tag @s add EtiGleBTBM.1Zweierspur

# Wenn das benötigte Material vorhanden ist, wird dem Spieler ein Etikett gegeben. Falls er die Zweierspur bauen will, wird geprüft ob er auch dafür das Material besitzt.
execute if entity @s[tag=!EtiGleBTBM.1Zweierspur] if score VarGleBTBM.1Gleis PZGleBTBM.1Wert matches 1.. if score VarGleBTBM.1Andesit PZGleBTBM.1Wert matches 1.. if score VarGleBTBM.1Stein PZGleBTBM.1Wert matches 2.. run tag @s add EtiGleBTBM.1Material
execute if entity @s[tag=EtiGleBTBM.1Zweierspur] if score VarGleBTBM.1Gleis PZGleBTBM.1Wert matches 2.. if score VarGleBTBM.1Andesit PZGleBTBM.1Wert matches 2.. if score VarGleBTBM.1Stein PZGleBTBM.1Wert matches 3.. run tag @s add EtiGleBTBM.1Material

# Wenn das Material vorhanden ist, wird es abgezogen.
clear @s[tag=EtiGleBTBM.1Material] minecraft:rail 1
clear @s[tag=EtiGleBTBM.1Material] minecraft:andesite 1
clear @s[tag=EtiGleBTBM.1Material] minecraft:smooth_stone 2

# Für die Zweierspur wird weiteres Material abgezogen.
clear @s[tag=EtiGleBTBM.1Zweierspur,tag=EtiGleBTBM.1Material] minecraft:rail 1
clear @s[tag=EtiGleBTBM.1Zweierspur,tag=EtiGleBTBM.1Material] minecraft:andesite 1
clear @s[tag=EtiGleBTBM.1Zweierspur,tag=EtiGleBTBM.1Material] minecraft:smooth_stone 1

# Falls das Material vorhanden ist, wird die Spur-Funktion aufgerufen. Ansonsten bekommt der Spieler eine Fehlermeldung.
execute if entity @s[tag=EtiGleBTBM.1Material] as @e[type=minecraft:marker,tag=EtiGleBTBM.1Baumaschine,sort=nearest,limit=1] rotated ~ 0 run function gleisbruecken-_und_-tunnelbaumaschine:v1spur
tellraw @s[tag=!EtiGleBTBM.1Material] ["Gleisbrücken- und -tunnelbaumaschine.1:\n",{"text":"Du hast zu wenig Material bei dir!","color":"red","bold":true}]

# Falls der Spieler kein Material bei sich trägt, aber die Tempomat-Option aktiviert ist, wird sie deaktiviert.
execute if entity @s[tag=!EtiGleBTBM.1Material] run data modify entity @e[distance=..10,type=minecraft:marker,tag=EtiGleBTBM.1Baumaschine,sort=nearest,limit=1] data."EigGleBTBM.1Tempomat" set value '{"text":"falsch","color":"red","bold":true}'

# Der Spieler bekommt die Etiketten wieder entfernt.
tag @s[tag=EtiGleBTBM.1Zweierspur] remove EtiGleBTBM.1Zweierspur
tag @s[tag=EtiGleBTBM.1Material] remove EtiGleBTBM.1Material

Variante 1: Spur-Funktion
Die Spur-Funktion platziert die Spursegmente sowie im Meer die Glasfassade und ruft immer ab einen eingestellten Abstand die Spur-Etappen-Funktion auf.

Editor Icon.png gleisbruecken-_und_-tunnelbaumaschine:v1spur.mcfunction
# Die Gleisbaumaschine wird einen Block nach vorne teleportiert und es wird geprüft ob sie noch auf festen Untergrund steht, falls nicht, wird sie entsprechend neu positioniert.
teleport @s ^ ^ ^1
data modify entity @s CustomName set from entity @s data."EigGleBTBM.1Neigung"
execute at @s[name="Automatisch"] unless block ^ ^ ^1 minecraft:air unless block ^ ^ ^1 #minecraft:rails run teleport @s ~ ~1 ~
execute at @s[name="Automatisch"] if block ^ ^-1 ^1 minecraft:air run teleport @s ~ ~-1 ~
execute at @s[name="Automatisch"] if block ^ ^-1 ^-1 #minecraft:rails 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

# Das Gleisbett, samt Gleisen wird in Blickrichtung der Gleisbaumaschines platziert.
execute if entity @s[name="Geradeaus"] positioned as @e[distance=..5,type=minecraft:armor_stand,tag=EtiGleBTBM.1SpurBett,sort=nearest,limit=2] run fill ^2 ^ ^ ^-2 ^4 ^3 minecraft:glass replace #gleisbruecken-_und_-tunnelbaumaschine:v1umwelt
execute if entity @s[name="Geradeaus"] positioned as @e[distance=..5,type=minecraft:armor_stand,tag=EtiGleBTBM.1SpurBett,sort=nearest,limit=2] run fill ^1 ^ ^ ^-1 ^3 ^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=..5,type=minecraft:armor_stand,tag=EtiGleBTBM.1SpurBett,sort=nearest,limit=2] run fill ^2 ^ ^ ^-2 ^5 ^3 minecraft:glass replace #gleisbruecken-_und_-tunnelbaumaschine:v1umwelt
execute if entity @s[name=!"Geradeaus"] positioned as @e[distance=..5,type=minecraft:armor_stand,tag=EtiGleBTBM.1SpurBett,sort=nearest,limit=2] run fill ^1 ^ ^ ^-1 ^4 ^2 minecraft:air replace

# Das Gleisbett, der Gleisrand und die Gleise werden platziert.
execute positioned as @e[distance=..5,type=minecraft:armor_stand,tag=EtiGleBTBM.1SpurBett,sort=nearest,limit=2] run setblock ~ ~ ~ minecraft:andesite replace
execute positioned as @e[distance=..5,type=minecraft:armor_stand,tag=EtiGleBTBM.1SpurBett,sort=nearest,limit=2] run fill ~ ~-1 ~ ~ ~-2 ~ minecraft:smooth_stone replace
execute positioned as @e[distance=..5,type=minecraft:armor_stand,tag=EtiGleBTBM.1SpurRand,sort=nearest,limit=3] run fill ~ ~ ~ ~ ~-1 ~ minecraft:smooth_stone replace
execute positioned as @e[distance=..5,type=minecraft:armor_stand,tag=EtiGleBTBM.1Spur,sort=nearest,limit=2] run setblock ~ ~1 ~ minecraft:rail replace
execute if entity @s[name=!"Geradeaus",name=!"Automatisch"] positioned as @e[distance=..5,type=minecraft:armor_stand,tag=EtiGleBTBM.1Spur,sort=nearest,limit=2] run setblock ~ ~1 ~ minecraft:powered_rail replace

# Jeden Meter die die Baumaschine zurücklegt wird der Wert der Lore um eins erhöht. Damit die Abstände der Antriebsschienen kleiner ausfällt, wenn die Baumaschine nach oben oder unten fährt, wird der Wert entsprechend auf den Höchstwert gesetzt.
scoreboard players add @e[distance=..10,type=minecraft:minecart,tag=EtiGleBTBM.1Sitz,sort=nearest,limit=1] PZGleBTBM.1Wert 1
execute if entity @s[name=!"Geradeaus"] run scoreboard players set @e[distance=..10,type=minecraft:minecart,tag=EtiGleBTBM.1Sitz,scores={PZGleBTBM.1Wert=8..},sort=nearest,limit=1] PZGleBTBM.1Wert 16

# Wenn der Punktestand größer gleich der Pfeiler-Variable ist, wird die Spur-Etappen-Funktion geladen.
execute if score @e[distance=..10,type=minecraft:minecart,tag=EtiGleBTBM.1Sitz,sort=nearest,limit=1] PZGleBTBM.1Wert >= VarGleBTBM.1Pfeiler PZGleBTBM.1Wert run function gleisbruecken-_und_-tunnelbaumaschine:v1spur_etappe

Variante 1: Spur-Etappen-Funktion
Die Spur-Etappen-Funktion platziert die Oberleitung und erzeugt einen Rüstungsständer für die Pfeiler-Funktion.

Editor Icon.png gleisbruecken-_und_-tunnelbaumaschine:v1spur_etappe.mcfunction
# In Blickrichtung der Gleisbaumaschine wird die Antriebsschiene wie auch die Oberleitung platziert.
setblock ^1 ^ ^-4 minecraft:stone_bricks replace
setblock ^1 ^1 ^-4 minecraft:spruce_fence replace
setblock ^1 ^2 ^-4 minecraft:spruce_planks replace
execute positioned as @e[distance=..5,type=minecraft:armor_stand,tag=EtiGleBTBM.1Spur,sort=nearest,limit=2] run setblock ~ ~1 ~ minecraft:powered_rail replace

# Je nach Blickrichtung wird die Redstone-Fackel entsprechend platziert.
execute if entity @s[y_rotation=135..-135] run setblock ^ ^2 ^-4 minecraft:redstone_wall_torch[facing=east] replace
execute if entity @s[y_rotation=-135..-45] run setblock ^ ^2 ^-4 minecraft:redstone_wall_torch[facing=south] replace
execute if entity @s[y_rotation=-45..45] run setblock ^ ^2 ^-4 minecraft:redstone_wall_torch[facing=west] replace
execute if entity @s[y_rotation=45..135] run setblock ^ ^2 ^-4 minecraft:redstone_wall_torch[facing=north] replace

# Der Wahrheitswert der Einstellung der Zweierspur wird in den Namen kopiert um die Abfrage zu vereinfachen.
data modify entity @s CustomName set from entity @s data."EigGleBTBM.1Zweierspur"

# Falls es sich um einen Baumaschine mit zwei Spuren handelt, wird auch eine zweite Redstone-Fackel platziert.
execute if entity @s[name="wahr",y_rotation=135..-135] run setblock ^2 ^2 ^-4 minecraft:redstone_wall_torch[facing=west] replace
execute if entity @s[name="wahr",y_rotation=-135..-45] run setblock ^2 ^2 ^-4 minecraft:redstone_wall_torch[facing=north] replace
execute if entity @s[name="wahr",y_rotation=-45..45] run setblock ^2 ^2 ^-4 minecraft:redstone_wall_torch[facing=east] replace
execute if entity @s[name="wahr",y_rotation=45..135] run setblock ^2 ^2 ^-4 minecraft:redstone_wall_torch[facing=south] replace

# Es werden die Einstellungen ausgelesen und in vereinfachter Form abfragbar gemacht.
data modify entity @s CustomName set from entity @s data."EigGleBTBM.1Zweierspur"
execute store success score @s PZGleBTBM.1Wert if entity @s[nbt={data:{EigGleBTBM.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={PZGleBTBM.1Wert=1}] run fill ^2 ^ ^-2 ^-2 ^4 ^ minecraft:smooth_stone replace
execute if entity @s[scores={PZGleBTBM.1Wert=1}] run fill ^1 ^ ^-2 ^-1 ^3 ^ minecraft:air replace

# Wenn zusätzlich auch die Zweierspur aktiv ist, wird der Bogen etwas vergrößert.
execute if entity @s[name="wahr",scores={PZGleBTBM.1Wert=1}] run fill ^4 ^ ^-2 ^3 ^4 ^ minecraft:smooth_stone replace
execute if entity @s[name="wahr",scores={PZGleBTBM.1Wert=1}] run fill ^3 ^ ^-2 ^2 ^3 ^ minecraft:air replace

# Die Pfeiler werden in Form von Markierern erzeugt.
summon minecraft:marker ^ ^-1 ^-1 {Tags:["EtiGleBTBM.1Alle","EtiGleBTBM.1Pfeiler"],Rotation:[0.0f,90.0f]}
execute if entity @s[name="wahr"] run summon minecraft:marker ^2 ^-1 ^-1 {Tags:["EtiGleBTBM.1Alle","EtiGleBTBM.1Pfeiler"],Rotation:[0.0f,90.0f]}

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

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

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

Variante 1: Ausrichtung-Funktion
Die Ausrichtung-Funktion lässt die Baumaschine in eine der vier Himmelsrichtungen blicken und positioniert die Rüstungsständer.

Editor Icon.png gleisbruecken-_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=EtiGleBTBM.1Sitzen,tag=EtiGleBTBM.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."EigGleBTBM.1Raster"
teleport @s[y_rotation=-45..44.9,name="wahr"] ~ ~ ~ 0 0
teleport @s[y_rotation=45..134.9,name="wahr"] ~ ~ ~ 90 0
teleport @s[y_rotation=135..-134.9,name="wahr"] ~ ~ ~ 180 0
teleport @s[y_rotation=-135..-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."EigGleBTBM.1Zweierspur"
execute as @p[distance=..10,gamemode=!spectator] run function gleisbruecken-_und_-tunnelbaumaschine:v1ausrichtung_spur

Variante 1: Ausrichtung-Spur-Funktion
Die Ausrichtung-Spur-Funktion positioniert die Rüstungsständer die die Blöcke visualisieren, entsprechend und ob die Baumaschine zweispurig ausgerichtet werden soll.

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

# Die Rüstungsständer mit den verschiedenen Blöcken im Kopfslot werden an die entsprechende Stelle teleportiert.
teleport @e[type=minecraft:armor_stand,tag=EtiGleBTBM.1Spur,sort=nearest,limit=2] ^ ^0.5 ^-4 facing entity @s feet
teleport @e[type=minecraft:armor_stand,tag=EtiGleBTBM.1SpurBett,sort=nearest,limit=2] ^ ^ ^-4 facing entity @s feet
teleport @e[type=minecraft:armor_stand,tag=EtiGleBTBM.1Links1,sort=nearest,limit=1] ^1 ^ ^-4 facing entity @s feet
teleport @e[type=minecraft:armor_stand,tag=EtiGleBTBM.1Rechts,sort=nearest,limit=2] ^-1 ^ ^-4 facing entity @s feet

# Wenn der Gleisbaumaschine zwei Spuren bauen kann, werden auch die Rüstungsständer für die zweite Spur entsprechend teleportiert.
execute if entity @e[distance=..2,type=minecraft:marker,tag=EtiGleBTBM.1Baumaschine,name="wahr",sort=nearest,limit=1] run teleport @e[type=minecraft:armor_stand,tag=EtiGleBTBM.1Spur2,sort=nearest,limit=1] ^2 ^0.5 ^-4 facing entity @s feet
execute if entity @e[distance=..2,type=minecraft:marker,tag=EtiGleBTBM.1Baumaschine,name="wahr",sort=nearest,limit=1] run teleport @e[type=minecraft:armor_stand,tag=EtiGleBTBM.1SpurBett2,sort=nearest,limit=1] ^2 ^ ^-4 facing entity @s feet
execute if entity @e[distance=..2,type=minecraft:marker,tag=EtiGleBTBM.1Baumaschine,name="wahr",sort=nearest,limit=1] run teleport @e[type=minecraft:armor_stand,tag=EtiGleBTBM.1Rechts2,sort=nearest,limit=1] ^3 ^ ^-4 facing entity @s feet

Variante 1: Pfeiler-Funktion
Die Pfeiler-Funktion wird jeden Tick von der Zyklus-Funktion aufgerufen, wenn ein Markierer mit entsprechenden Etikett existiert. Pfeiler werden damit Meter für Meter von der Brücke aus nach unten oder nach oben verlegt.

Editor Icon.png gleisbruecken-_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 PZGleBTBM.1Wert if block ~ ~ ~ minecraft:water
execute store result score @s[scores={PZGleBTBM.1Wert=0}] PZGleBTBM.1Wert if block ~ ~ ~ minecraft:lava
execute if entity @s[x_rotation=90,scores={PZGleBTBM.1Wert=1}] run fill ~-2 ~ ~-2 ~2 ~ ~2 minecraft:smooth_stone replace #gleisbruecken-_und_-tunnelbaumaschine:v1untergrund
fill ~-1 ~ ~-1 ~1 ~ ~1 minecraft:smooth_stone replace #gleisbruecken-_und_-tunnelbaumaschine:v1untergrund

# Wenn der Pfeiler bis an den Grund oder an die Decke gelangt ist, wird der Markierer entfernt.
execute unless block ^ ^ ^1 #gleisbruecken-_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 VarGleBTBM.1Weltgrenze1 PZGleBTBM.1Wert if block ^ ^ ^1 minecraft:air
execute store result score VarGleBTBM.1Weltgrenze2 PZGleBTBM.1Wert unless block ^ ^ ^1 minecraft:air
execute if score VarGleBTBM.1Weltgrenze1 PZGleBTBM.1Wert = VarGleBTBM.1Weltgrenze2 PZGleBTBM.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 Punktestand-Ziel und entfernt die Gegenstände sowie die Baumaschine wieder.

Editor Icon.png gleisbruecken-_und_-tunnelbaumaschine:v1stopp.mcfunction
# Das Punkte-Ziel wird entfernt.
scoreboard objectives remove PZGleBTBM.1Wert

# Alle Gegenstände die der Spieler im Verlauf der Benutzung erhalten hatte werden wieder entfernt.
clear @a minecraft:fishing_rod{EigGleBTBM.1Alle:true}
clear @a minecraft:armor_stand{EigGleBTBM.1Alle:true}
clear @a minecraft:rail{EigGleBTBM.1Alle:true}
clear @a minecraft:andesite{EigGleBTBM.1Alle:true}
clear @a minecraft:smooth_stone{EigGleBTBM.1Alle:true}

# Das Etikett zur Auswahl der Angel wird wieder entfernt.
tag @a[tag=EtiGleBTBM.1Auswahl] remove EtiGleBTBM.1Auswahl

# Eventuell gedroppte Gegenstände werden mit dem Etikett ausgestattet.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigGleBTBM.1Alle:true} } }] add EtiGleBTBM.1Alle

# Alle Objekte die mit der Gleisbaumaschine in Verbindung stehen besitzen das Etikett und werden gelöscht.
kill @e[tag=EtiGleBTBM.1Alle]

# Chunks werden entladen.
forceload remove ~ ~

Variante 2[]

Gleisbrücken- und -tunnelbaumaschine (Befehle) Bild 2.1.png Gleisbrücken- und -tunnelbaumaschine (Befehle) Bild 2.2.png Gleisbrücken- und -tunnelbaumaschine (Befehle) Bild 2.3.png Gleisbrücken- und -tunnelbaumaschine (Befehle) Bild 2.4.png

Mit dieser Variante lassen sich Gleisspuren oder Eisenbahngleisspuren mit Brücken und Tunnel erzeugen. Dazu erhält man eine Angel, welche man in der Schnellleiste auswählen muss. Dann erhält man ein Optionen-Menü im Chat und kann dort Einstellungen vornehmen, wie die Anzahl der Spuren, ob die Spur ein Eisenbahngleis sein soll oder ab welchen Abstand immer ein Pfeiler erzeugt werden soll. Hat man die Angel weiterhin ausgewählt und schleicht dann dabei, so zählt ein Zähler hoch und sobald man loslässt, wird die Zahl als Spurlänge verwendet und die Spur wird dementsprechend lang sein. Es werden Pfeiler generiert und auch mehrere Spuren, falls dies eingestellt wurde. Ebenso lassen sich Hängepfeiler erzeugen, bei denen die Pfeiler nach oben generiert werden um an einer Höhlendecke anzuschließen.

Einschalten

Wird der Hebel umgelegt, startet der Befehlsblock und führt die Start-Funktion einmal aus

Wiederholen

Der Wiederhol-Befehlsblock führt jeden Tick die Zyklus-Funktion aus

Ausschalten

Sobald der Hebel wieder in Ausgangsstellung zurück gelegt wurde, wird die Stopp-Funktion aktiviert


Befehlsblöcke mit Befehlen:


Datenpaket


Variante 2: Start-Funktion
Die Start-Funktion erzeugt die drei Punkte-Ziele und gibt dem Spieler eine Angel für das Bauen der Spuren.

Editor Icon.png gleisbruecken-_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 PZGleBTBM.2Schl minecraft.custom:minecraft.sneak_time ["Gleisbrücken- und -tunnelbaumaschine.2: ",{"text":"Schleich-Zeit","bold":true}]
scoreboard objectives add PZGleBTBM.2Ausl trigger ["Gleisbrücken- und -tunnelbaumaschine.2: ",{"text":"Auslöser für Nachrichten","bold":true}]
scoreboard objectives add PZGleBTBM.2Laen dummy ["Gleisbrücken- und -tunnelbaumaschine.2: ",{"text":"Spuren und Länge","bold":true}]

# Es werden drei globale Variablen angelegt, die jeder Spieler mit dem Optionen-Menü ändern kann.
scoreboard players set VarGleBTBM.2Spuren PZGleBTBM.2Laen 1
scoreboard players set VarGleBTBM.2Laenge PZGleBTBM.2Laen 64
scoreboard players set VarGleBTBM.2Pfeiler PZGleBTBM.2Laen 16

# Spielern im Umkreis von 15 Blöcken erhalten eine Angel, die man halten muss, um eine Straße erzeugen zu können.
give @a[distance=..15] minecraft:fishing_rod{EigGleBTBM.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] ["Gleisbrücken- und -tunnelbaumaschine.2:\n",{"text":"Wähle die Angel aus um den Gleistyp einzustellen und schleiche und lasse dann los, wenn die gewünschte Länge erreicht wird. Breche den Gleisbau 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 dabei auf dem Boden steht. Wenn er dabei schleicht wird ein Zähler hochgezählt der die Länge der Spur festlegt. Lässt der Spieler die Shift-Taste los, wird die Spur erzeugt.

Editor Icon.png gleisbruecken-_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:{EigGleBTBM.2Angel:true} } }] add EtiGleBTBM.2Ausgewaehlt

# Wenn der Spieler das Etikett der Angel besitzt und dabei auf dem Boden steht, erhält er ein weiteres Etikett.
tag @a[tag=EtiGleBTBM.2Ausgewaehlt,nbt={OnGround:true}] add EtiGleBTBM.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=EtiGleBTBM.2Ausgewaehlt,tag=!EtiGleBTBM.2Auswahl] PZGleBTBM.2Schl 0
scoreboard players add @a[tag=EtiGleBTBM.2Ausgewaehlt,tag=!EtiGleBTBM.2Auswahl] PZGleBTBM.2Laen 0
scoreboard players set @a[tag=EtiGleBTBM.2Ausgewaehlt,tag=!EtiGleBTBM.2Auswahl] PZGleBTBM.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=EtiGleBTBM.2Ausgewaehlt] unless entity @s[scores={PZGleBTBM.2Ausl=0}] run function gleisbruecken-_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=EtiGleBTBM.2Ausgewaehlt,tag=EtiGleBTBM.2Abbrechen] PZGleBTBM.2Laen 0
execute as @a[tag=EtiGleBTBM.2AufBoden,tag=EtiGleBTBM.2Ausgewaehlt,tag=!EtiGleBTBM.2Abbrechen,scores={PZGleBTBM.2Schl=1..}] if score @s PZGleBTBM.2Laen < VarGleBTBM.2Laenge PZGleBTBM.2Laen run scoreboard players add @s PZGleBTBM.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=EtiGleBTBM.2AufBoden,tag=EtiGleBTBM.2Ausgewaehlt,scores={PZGleBTBM.2Schl=1..}] run title @s actionbar ["",{"text":"Spur-Länge == ","bold":true},{"score":{"name":"@s","objective":"PZGleBTBM.2Laen"},"color":"dark_purple","bold":true}]

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

# Wenn man die Angel nicht mehr ausgewählt hat oder einen Angelköder geworfen hat, bekommt man ein Etikett zum Abbrechen des Bauvorgangs.
tag @a[tag=!EtiGleBTBM.2Ausgewaehlt,tag=EtiGleBTBM.2Auswahl,tag=EtiGleBTBM.2Shift] add EtiGleBTBM.2Abbrechen
execute as @a[tag=EtiGleBTBM.2Auswahl,tag=EtiGleBTBM.2Shift] at @s if entity @e[distance=..5,type=minecraft:fishing_bobber] run tag @s add EtiGleBTBM.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=EtiGleBTBM.2Ausgewaehlt,tag=!EtiGleBTBM.2Auswahl] add EtiGleBTBM.2Auswahl
tag @a[tag=!EtiGleBTBM.2Ausgewaehlt,tag=EtiGleBTBM.2Auswahl] remove EtiGleBTBM.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=EtiGleBTBM.2AufBoden,tag=EtiGleBTBM.2Auswahl,tag=!EtiGleBTBM.2Shift,scores={PZGleBTBM.2Schl=1..,PZGleBTBM.2Laen=1..}] ["Gleisbrücken- und -tunnelbaumaschine.2:\n",{"text":"Shiftklick == ","bold":true},{"text":"wahr","color":"green","bold":true}]
execute as @a[tag=EtiGleBTBM.2AufBoden,tag=EtiGleBTBM.2Auswahl,tag=EtiGleBTBM.2Shift,tag=!EtiGleBTBM.2Abbrechen,scores={PZGleBTBM.2Schl=0}] run tellraw @s ["Gleisbrü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":"PZGleBTBM.2Laen"},"color":"dark_purple","bold":true}]
tellraw @a[tag=EtiGleBTBM.2AufBoden,tag=EtiGleBTBM.2Auswahl,tag=EtiGleBTBM.2Shift,tag=EtiGleBTBM.2Abbrechen,scores={PZGleBTBM.2Schl=0,PZGleBTBM.2Laen=1..}] ["Gleisbrü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, so wird die Ausrichtungs-Funktion vom Spieler aus vor ihm zwei Blöcke versetzt aufgerufen.
execute as @a[tag=EtiGleBTBM.2AufBoden,tag=EtiGleBTBM.2Auswahl,tag=EtiGleBTBM.2Shift,tag=!EtiGleBTBM.2Abbrechen,scores={PZGleBTBM.2Schl=0}] at @s rotated ~ 0 positioned ^ ^ ^1 run function gleisbruecken-_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=EtiGleBTBM.2Auswahl,tag=EtiGleBTBM.2Shift,tag=EtiGleBTBM.2Abbrechen,scores={PZGleBTBM.2Schl=0}] remove EtiGleBTBM.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=EtiGleBTBM.2Auswahl,tag=EtiGleBTBM.2Shift,scores={PZGleBTBM.2Schl=0}] PZGleBTBM.2Laen 0

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

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

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

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

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

Variante 2: Auslöser-Funktion
Die Auslöser-Funktion bietet im Chat dem Spieler ein Optionen-Menü an, in dem Schaltflächen angeklickt werden können um Einstellungen zu ändern.

Editor Icon.png gleisbruecken-_und_-tunnelbaumaschine:v2ausloeser.mcfunction
# Falls der Spieler auf die Schaltflächen für die Spuren geklickt hat, wird eine Variable für diese um eins erhöht oder verringert.
execute if entity @s[scores={PZGleBTBM.2Ausl=1}] if score VarGleBTBM.2Spuren PZGleBTBM.2Laen matches ..15 run scoreboard players add VarGleBTBM.2Spuren PZGleBTBM.2Laen 1
execute if entity @s[scores={PZGleBTBM.2Ausl=-1}] if score VarGleBTBM.2Spuren PZGleBTBM.2Laen matches 2.. run scoreboard players remove VarGleBTBM.2Spuren PZGleBTBM.2Laen 1

# Wenn der Spieler auf das Eisenbahngleis geklickt hat, wird dem Spieler ein Etikett gegeben um diese Einstellung zu speichern.
tag @s[tag=!EtiGleBTBM.2Bahngleis,scores={PZGleBTBM.2Ausl=2}] add EtiGleBTBM.2Bahngleis
tag @s[tag=EtiGleBTBM.2Bahngleis,scores={PZGleBTBM.2Ausl=-2}] remove EtiGleBTBM.2Bahngleis

# In dem Optionen-Menü kann der Spieler die Länge festlegen wie lang der Kanal 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={PZGleBTBM.2Ausl=3}] if score VarGleBTBM.2Laenge PZGleBTBM.2Laen matches ..255 run scoreboard players add VarGleBTBM.2Laenge PZGleBTBM.2Laen 1
execute if entity @s[scores={PZGleBTBM.2Ausl=-3}] if score VarGleBTBM.2Laenge PZGleBTBM.2Laen matches 5.. run scoreboard players remove VarGleBTBM.2Laenge PZGleBTBM.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={PZGleBTBM.2Ausl=4}] if score VarGleBTBM.2Pfeiler PZGleBTBM.2Laen matches ..31 run scoreboard players add VarGleBTBM.2Pfeiler PZGleBTBM.2Laen 1
execute if entity @s[scores={PZGleBTBM.2Ausl=-4}] if score VarGleBTBM.2Pfeiler PZGleBTBM.2Laen matches 9.. run scoreboard players remove VarGleBTBM.2Pfeiler PZGleBTBM.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=!EtiGleBTBM.2Haengepfeiler,scores={PZGleBTBM.2Ausl=5}] add EtiGleBTBM.2Haengepfeiler
tag @s[tag=EtiGleBTBM.2Haengepfeiler,scores={PZGleBTBM.2Ausl=-5}] remove EtiGleBTBM.2Haengepfeiler

# Der Spieler erhält ein Optionen-Menü in dem die spezifischen Werte angeklickt werden können, damit lassen sich die Zweierspur, das Eisenbahngleis, die Länge und der Pfeiler-Abstand einstellen.
tellraw @s ["Gleisbrü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 PZGleBTBM.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 PZGleBTBM.2Ausl set -1"} },"\n",{"text":"spuren == ","bold":true},{"score":{"name":"VarGleBTBM.2Spuren","objective":"PZGleBTBM.2Laen"},"color":"dark_purple","bold":true},"\n",{"text":"bahngleis = ","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 PZGleBTBM.2Ausl set 2"} },"\n",{"text":"bahngleis = ","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 PZGleBTBM.2Ausl set -2"} }]
tellraw @s[tag=!EtiGleBTBM.2Bahngleis] ["",{"text":"bahngleis == ","bold":true},{"text":"falsch","color":"red","bold":true}]
tellraw @s[tag=EtiGleBTBM.2Bahngleis] ["",{"text":"bahngleis == ","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 PZGleBTBM.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 PZGleBTBM.2Ausl set -3"} },{"text":") == ","bold":true},{"score":{"name":"VarGleBTBM.2Laenge","objective":"PZGleBTBM.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 PZGleBTBM.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 PZGleBTBM.2Ausl set -4"} },{"text":") == ","bold":true},{"score":{"name":"VarGleBTBM.2Pfeiler","objective":"PZGleBTBM.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 PZGleBTBM.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 PZGleBTBM.2Ausl set -5"} }]
tellraw @s[tag=!EtiGleBTBM.2Haengepfeiler] ["",{"text":"hängepfeiler == ","bold":true},{"text":"falsch","color":"red","bold":true}]
tellraw @s[tag=EtiGleBTBM.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 PZGleBTBM.2Ausl
scoreboard players set @s PZGleBTBM.2Ausl 0

Variante 2: Ausrichtung-Funktion
Die Ausrichtung-Funktion ruft die Spuren-Funktion exakt in eine der vier Himmelsrichtungen auf.

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

# Die Spuren-Funktion wird exakt in eine der vier Himmelsrichtungen aufgerufen.
execute if entity @s[y_rotation=-45..45] rotated 0 0 run function gleisbruecken-_und_-tunnelbaumaschine:v2spuren
execute if entity @s[y_rotation=45..135] rotated 90 0 run function gleisbruecken-_und_-tunnelbaumaschine:v2spuren
execute if entity @s[y_rotation=135..-135] rotated 180 0 run function gleisbruecken-_und_-tunnelbaumaschine:v2spuren
execute if entity @s[y_rotation=-135..-45] rotated 270 0 run function gleisbruecken-_und_-tunnelbaumaschine:v2spuren

Variante 2: Spuren-Funktion
Die Spuren-Funktion ruft sich selbst versetzt entsprechend oft auf um die eingestellte Anzahl der Spuren zu generieren.

Editor Icon.png gleisbruecken-_und_-tunnelbaumaschine:v2spuren.mcfunction
# Bevor die Spur-Funktion geladen wird, werden verschiedene Variablen dafür vorbereitet.
scoreboard players add VarGleBTBM.2Spur PZGleBTBM.2Laen 1
scoreboard players operation VarGleBTBM.2Abstand PZGleBTBM.2Laen = VarGleBTBM.2Pfeiler PZGleBTBM.2Laen
scoreboard players remove VarGleBTBM.2Abstand PZGleBTBM.2Laen 4
scoreboard players set VarGleBTBM.2StrichLinie PZGleBTBM.2Laen 0
scoreboard players set VarGleBTBM.2Schwelle PZGleBTBM.2Laen 0
scoreboard players operation VarGleBTBM.2Weite PZGleBTBM.2Laen = @s PZGleBTBM.2Laen
function gleisbruecken-_und_-tunnelbaumaschine:v2spur

# Je nach dem ob das Eisenbahngleis aktiv oder nicht aktiv ist, wird die Spuren-Funktion selbst nochmal um bestimmte Blöcke versetzt aufgerufen, falls mehr als eine Spur erstellt werden soll.
execute if entity @s[tag=!EtiGleBTBM.2Bahngleis] if score VarGleBTBM.2Spur PZGleBTBM.2Laen < VarGleBTBM.2Spuren PZGleBTBM.2Laen positioned ^-2 ^ ^ run function gleisbruecken-_und_-tunnelbaumaschine:v2spuren
execute if entity @s[tag=EtiGleBTBM.2Bahngleis] if score VarGleBTBM.2Spur PZGleBTBM.2Laen < VarGleBTBM.2Spuren PZGleBTBM.2Laen positioned ^-6 ^ ^ run function gleisbruecken-_und_-tunnelbaumaschine:v2spuren

Variante 2: Spur-Funktion
Die Spur-Funktion platziert die Spur und ruft die Spur-Etappen-Funktion abhängig vom eingestellten Abstand auf.

Editor Icon.png gleisbruecken-_und_-tunnelbaumaschine:v2spur.mcfunction
# Die Abstands-Variable wird jeden Aufruf dieser Funktion um eins erhöht und wenn sie den eingestellten Pfeiler-Wert erreicht, wird die Spur-Etappen-Funktion aufgerufen.
scoreboard players add VarGleBTBM.2Abstand PZGleBTBM.2Laen 1
execute if score VarGleBTBM.2Abstand PZGleBTBM.2Laen >= VarGleBTBM.2Pfeiler PZGleBTBM.2Laen align xyz run function gleisbruecken-_und_-tunnelbaumaschine:v2spur_etappe

# Es wird ein Gleisbett, Gleisrand und die Gleise platziert.
execute if entity @s[tag=!EtiGleBTBM.2Bahngleis] run fill ^2 ^ ^ ^-2 ^4 ^1 minecraft:glass replace #gleisbruecken-_und_-tunnelbaumaschine:v2umwelt
execute if entity @s[tag=!EtiGleBTBM.2Bahngleis] run fill ^1 ^1 ^ ^-1 ^3 ^ minecraft:air replace
execute if entity @s[tag=!EtiGleBTBM.2Bahngleis] run fill ^1 ^-1 ^ ^-1 ^ ^ minecraft:smooth_stone replace
execute if entity @s[tag=!EtiGleBTBM.2Bahngleis] run setblock ~ ~-2 ~ minecraft:smooth_stone replace
execute if entity @s[tag=!EtiGleBTBM.2Bahngleis] run setblock ~ ~ ~ minecraft:andesite replace
execute if entity @s[tag=!EtiGleBTBM.2Bahngleis] run setblock ~ ~1 ~ minecraft:rail replace

# Es wird ein Eisenbahngleis erstellt.
execute if entity @s[tag=EtiGleBTBM.2Bahngleis] run fill ^4 ^1 ^ ^-4 ^11 ^1 minecraft:glass replace #gleisbruecken-_und_-tunnelbaumaschine:v2umwelt
execute if entity @s[tag=EtiGleBTBM.2Bahngleis] run fill ^3 ^1 ^ ^-3 ^10 ^ minecraft:air replace
execute if entity @s[tag=EtiGleBTBM.2Bahngleis] run fill ^3 ^-1 ^ ^-3 ^ ^ minecraft:smooth_stone replace
execute if entity @s[tag=EtiGleBTBM.2Bahngleis] run fill ^2 ^-2 ^ ^-2 ^-2 ^ minecraft:smooth_stone replace
execute if entity @s[tag=EtiGleBTBM.2Bahngleis] run fill ^2 ^ ^ ^-2 ^ ^ minecraft:andesite replace

# Die Schwelle für ein Eisenbahngleis wird alle zwei Blöcke platziert.
scoreboard players add VarGleBTBM.2Schwelle PZGleBTBM.2Laen 1
execute if score VarGleBTBM.2Schwelle PZGleBTBM.2Laen matches 1 if entity @s[tag=EtiGleBTBM.2Bahngleis] run fill ^2 ^1 ^ ^-2 ^1 ^ minecraft:spruce_slab replace
execute if score VarGleBTBM.2Schwelle PZGleBTBM.2Laen matches 2.. run scoreboard players set VarGleBTBM.2Schwelle PZGleBTBM.2Laen 0

# Die Schienen der Eisenbahngleise werden erzeugt.
execute if entity @s[tag=EtiGleBTBM.2Bahngleis,y_rotation=-135..135] unless entity @s[y_rotation=-45..45] run setblock ~ ~1 ~1 minecraft:stone_brick_stairs[facing=south] replace
execute if entity @s[tag=EtiGleBTBM.2Bahngleis,y_rotation=135..45] unless entity @s[y_rotation=-135..-45] run setblock ~1 ~1 ~ minecraft:stone_brick_stairs[facing=east] replace
execute if entity @s[tag=EtiGleBTBM.2Bahngleis,y_rotation=-135..135] unless entity @s[y_rotation=-45..45] run setblock ~ ~1 ~-1 minecraft:stone_brick_stairs[facing=north] replace
execute if entity @s[tag=EtiGleBTBM.2Bahngleis,y_rotation=135..45] unless entity @s[y_rotation=-135..-45] run setblock ~-1 ~1 ~ minecraft:stone_brick_stairs[facing=west] replace

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

Variante 2: Spur-Etappen-Funktion
Die Spur-Etappen-Funktion erzeugt die Oberleitung und die Pfeiler-Objekte.

Editor Icon.png gleisbruecken-_und_-tunnelbaumaschine:v2spur_etappe.mcfunction
# In Blickrichtung des Gleisbaumaschines wird die Antriebsschiene wie auch die Oberleitung platziert
execute if entity @s[tag=!EtiGleBTBM.2Bahngleis] run setblock ^1 ^ ^-1 minecraft:stone_bricks replace
execute if entity @s[tag=!EtiGleBTBM.2Bahngleis] run setblock ^1 ^1 ^-1 minecraft:spruce_fence replace
execute if entity @s[tag=!EtiGleBTBM.2Bahngleis] run setblock ^1 ^2 ^-1 minecraft:spruce_planks replace
execute if entity @s[tag=!EtiGleBTBM.2Bahngleis] run setblock ^ ^1 ^-1 minecraft:powered_rail replace

# Je nach Blickrichtung wird die Redstone-Fackel entsprechend platziert
execute if entity @s[tag=!EtiGleBTBM.2Bahngleis,y_rotation=135..-135] run setblock ^ ^2 ^-1 minecraft:redstone_wall_torch[facing=east] replace
execute if entity @s[tag=!EtiGleBTBM.2Bahngleis,y_rotation=-135..-45] run setblock ^ ^2 ^-1 minecraft:redstone_wall_torch[facing=south] replace
execute if entity @s[tag=!EtiGleBTBM.2Bahngleis,y_rotation=-45..45] run setblock ^ ^2 ^-1 minecraft:redstone_wall_torch[facing=west] replace
execute if entity @s[tag=!EtiGleBTBM.2Bahngleis,y_rotation=45..135] run setblock ^ ^2 ^-1 minecraft:redstone_wall_torch[facing=north] replace

# Für den Masten werden Steine und Mauern platziert
execute if entity @s[tag=EtiGleBTBM.2Bahngleis] run fill ^3 ^ ^-1 ^3 ^ ^-3 minecraft:stone_bricks replace
execute if entity @s[tag=EtiGleBTBM.2Bahngleis] run fill ^3 ^1 ^-2 ^3 ^4 ^-2 minecraft:cobblestone_wall replace
execute if entity @s[tag=EtiGleBTBM.2Bahngleis] run fill ^3 ^5 ^-2 ^3 ^6 ^-2 minecraft:spruce_fence replace
execute if entity @s[tag=EtiGleBTBM.2Bahngleis] run fill ^3 ^7 ^-2 ^3 ^10 ^-2 minecraft:cobblestone_wall replace

# Je nach Blickrichtung werden die Abnehmer in Form von Zauntoren entsprechend ausgerichtet
execute if entity @s[tag=EtiGleBTBM.2Bahngleis,y_rotation=135..-135] run fill ^2 ^10 ^-2 ^ ^10 ^-2 minecraft:spruce_fence_gate[facing=north] replace
execute if entity @s[tag=EtiGleBTBM.2Bahngleis,y_rotation=-135..-45] run fill ^2 ^10 ^-2 ^ ^10 ^-2 minecraft:spruce_fence_gate[facing=east] replace
execute if entity @s[tag=EtiGleBTBM.2Bahngleis,y_rotation=-45..45] run fill ^2 ^10 ^-2 ^ ^10 ^-2 minecraft:spruce_fence_gate[facing=south] replace
execute if entity @s[tag=EtiGleBTBM.2Bahngleis,y_rotation=45..135] run fill ^2 ^10 ^-2 ^ ^10 ^-2 minecraft:spruce_fence_gate[facing=west] replace

# Der Markierer wird erzeugt, um als Pfeiler zu arbeiten.
summon minecraft:marker ^ ^-2 ^1 {Tags:["EtiGleBTBM.2Alle","EtiGleBTBM.2Pfeiler"],Rotation:[0.0f,90.0f]}

# Wenn die Hängepfeiler-Option aktiv ist, wird der Pfeiler nach oben gesetzt und schaut auch nach oben.
execute if entity @s[tag=EtiGleBTBM.2Haengepfeiler,tag=!EtiGleBTBM.2Bahngleis] as @e[distance=..8,type=minecraft:marker,tag=EtiGleBTBM.2Pfeiler,sort=nearest,limit=1] at @s run teleport @s ~ ~7 ~ ~ -90
execute if entity @s[tag=EtiGleBTBM.2Haengepfeiler,tag=EtiGleBTBM.2Bahngleis] as @e[distance=..8,type=minecraft:marker,tag=EtiGleBTBM.2Pfeiler,sort=nearest,limit=1] at @s run teleport @s ~ ~14 ~ ~ -90

# Es wird ein Bogen erzeugt, falls Hängepfeiler aktiv sind.
execute if entity @s[tag=EtiGleBTBM.2Haengepfeiler,tag=!EtiGleBTBM.2Bahngleis] run fill ^1 ^ ^ ^-2 ^4 ^2 minecraft:smooth_stone replace
execute if entity @s[tag=EtiGleBTBM.2Haengepfeiler,tag=!EtiGleBTBM.2Bahngleis] if score VarGleBTBM.2Spur PZGleBTBM.2Laen matches 1 run fill ^2 ^ ^ ^2 ^4 ^2 minecraft:smooth_stone replace

# Wenn zusätzlich auch das Eisenbahngleis aktiv ist, wird der Bogen deutlich größer gemacht.
execute if entity @s[tag=EtiGleBTBM.2Haengepfeiler,tag=EtiGleBTBM.2Bahngleis] run fill ^3 ^ ^ ^-4 ^11 ^2 minecraft:smooth_stone replace
execute if entity @s[tag=EtiGleBTBM.2Haengepfeiler,tag=EtiGleBTBM.2Bahngleis] if score VarGleBTBM.2Spur PZGleBTBM.2Laen matches 1 run fill ^4 ^ ^ ^4 ^11 ^2 minecraft:smooth_stone replace

# Die Abstands-Variable wird wieder auf null gesetzt.
scoreboard players set VarGleBTBM.2Abstand PZGleBTBM.2Laen 0

Variante 2: Pfeiler-Funktion
Die Pfeiler-Funktion wird aufgerufen, wenn Pfeiler-Objekte vorhanden sind. Sie platziert die Pfeiler und macht sie breiter, wenn sie in Flüssigkeiten gerät.

Editor Icon.png gleisbruecken-_und_-tunnelbaumaschine:v2pfeiler.mcfunction
# Wenn der Pfeiler in Wasser platziert wird, wird er breiter gemacht, ansonsten etwas dünner.
execute store result score @s PZGleBTBM.2Laen if block ~ ~ ~ minecraft:water
execute store result score @s[scores={PZGleBTBM.2Laen=0}] PZGleBTBM.2Laen if block ~ ~ ~ minecraft:lava
execute if entity @s[x_rotation=90,scores={PZGleBTBM.2Laen=1}] run fill ~-2 ~ ~-2 ~2 ~ ~2 minecraft:smooth_stone replace #gleisbruecken-_und_-tunnelbaumaschine:v2untergrund
fill ~-1 ~ ~-1 ~1 ~ ~1 minecraft:smooth_stone replace #gleisbruecken-_und_-tunnelbaumaschine:v2untergrund

# Wenn der Pfeiler bis an den Grund oder an die Decke gelangt ist, wird der Rüstungsständer entfernt.
execute unless block ^ ^ ^1 #gleisbruecken-_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 VarGleBTBM.2Weltgrenze1 PZGleBTBM.2Laen if block ^ ^ ^1 minecraft:air
execute store result score VarGleBTBM.2Weltgrenze2 PZGleBTBM.2Laen unless block ^ ^ ^1 minecraft:air
execute if score VarGleBTBM.2Weltgrenze1 PZGleBTBM.2Laen = VarGleBTBM.2Weltgrenze2 PZGleBTBM.2Laen run kill @s

# Der Rüstungsständer wird um einen Block in Blickrichtung teleportiert.
teleport @s ^ ^ ^1

Variante 2: Stopp-Funktion
Die Stopp-Funktion löscht alle Punkte-Ziele wieder und entfernt die Angel aus dem Inventar und auf dem Boden.

Editor Icon.png gleisbruecken-_und_-tunnelbaumaschine:v2stopp.mcfunction
# Die drei Punkte-Ziele werden entfernt.
scoreboard objectives remove PZGleBTBM.2Schl
scoreboard objectives remove PZGleBTBM.2Ausl
scoreboard objectives remove PZGleBTBM.2Laen

# Die vorhandenen Etiketten werden wieder entfernt.
tag @a[tag=EtiGleBTBM.2Auswahl] remove EtiGleBTBM.2Auswahl
tag @a[tag=EtiGleBTBM.2Shift] remove EtiGleBTBM.2Shift
tag @a[tag=EtiGleBTBM.2Bahngleis] remove EtiGleBTBM.2Bahngleis
tag @a[tag=EtiGleBTBM.2Haengepfeiler] remove EtiGleBTBM.2Haengepfeiler

# Die Angel wird aus dem Inventar oder auf dem Boden gelöscht.
clear @a minecraft:fishing_rod{EigGleBTBM.2Angel:true}
kill @e[type=minecraft:item,nbt={Item:{tag:{EigGleBTBM.2Angel:true} } }]

# Chunks werden entladen.
forceload remove ~ ~


Disambig color.svg
Advertisement