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 Gleisbaumaschine wird dafür genutzt um Gleisstrecken mit viel weniger Aufwand zu platzieren, als mit der Hand. Die Gleisbaumaschine kann in allen Himmelsrichtungen verwendet werden, dazu positioniert man sich so, sodass die Gleisbaumaschine in die gewünschte Richtung schaut und dann fährt man mit ihr. Bei manchen Varianten, muss der Spieler alle Blöcke die die Gleisbaumaschine für den Bau des Gleisbettes und der Gleise verbaut, bei sich tragen, da ansonsten die Gleisbaumaschine nicht weiter baut, bei anderen Varianten werden die Gleisstrecken auch so gebaut. Die Gleisbaumaschinen sind nur für halbwegs ebene Gelände gedacht (kleine Hügel können sie passieren) und sollten nicht in Gebirgen oder Ozeanen zum Einsatz kommen, dafür werden die Gleisbrücken- und -tunnelbaumaschinen verwendet, die für beides bestens gewappnet sind.

Manche Gleisbaumaschinen sind auch für die Eisenbahn konzipiert. Diese Gleisstrecken sind nicht für Loren nutzbar und besitzen auch grundsätzlich eher kosmetischen Charakter. Darüber hinaus erfüllen sie jedoch die Voraussetzung, die eine Eisenbahn verlangt, damit sie diese Wege befahren kann.

Inhaltsverzeichnis

Variante 1[]

Gleisbaumaschine (Befehle) Bild 1.1.png Gleisbaumaschine (Befehle) Bild 1.2.png Gleisbaumaschine (Befehle) Bild 1.3.png Gleisbaumaschine (Befehle) Bild 1.4.png

Diese Gleisbaumaschine benötigt das Material, was sie für den Bau von Gleisstrecken einsetzt. Man kann mit einen Rüstungsständer, den man erhalten hat, eine Gleisbaumaschine erzeugen, in dem man ihn platziert. Sitzt man in der Lore und hat die dazu erhaltene Angel ausgewählt, erhält man ein Menü im Chat und kann bestimmte Einstellungen vornehmen und dabei auch die Baumaschine in Gang setzen. Wird die Baumaschine nach vorne bewegt, wird ein Teil der Strecke platziert und dem Spieler wird das Material entnommen. Falls dieser kein Material mehr bei sich hat, kann die Baumaschine nicht weiter fahren. Die Einstellungen die der Spieler vornehmen kann, sind die Rastereinstellung, bei der die Maschine sich entweder nur in die vier Himmelsrichtungen ausrichten lässt oder nicht. Ebenso kann man die Spur-Anzahl von einer auf zwei ändern, was auch mehr Materialkosten mit sich bringt. Ebenso lassen sich die Neigung und auch ein Tempomat einstellen um automatisch nach vorne zu fahren.

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-Ziele für die Materialien und der Auslöser und gibt dem Spieler den Rüstungsständer, mit dem man die Baumaschine erzeugen kann, in die Hand. Ebenso erhält der Spieler alle Materialien zum Bau der Strecke.

Editor Icon.png gleisbaumaschine:v1start.mcfunction
# Punktestand-Ziele werden erstellt
# Ein Punkte-Ziel für die Werte wird erstellt.
scoreboard objectives add PZGleisBM.1Wert trigger ["Gleisbaumaschine.1: ",{"text":"Wert der Variablen","bold":true}]

# Spielern im Umkreis von 15 Blöcken werden 16 Rüstungsständer für die Gleisbaumaschine gegeben.
give @a[distance=..15] minecraft:armor_stand{EigGleisBM.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:["EtiGleisBM.1Alle","EtiGleisBM.1Entfernen","EtiGleisBM.1Erstellen"] } } 16

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

# Eine kurze Anleitung, wie die Gleisbaumaschine aktiviert werden kann.
tellraw @a[distance=..15] ["Gleisbaumaschine.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 kümmert sich darum, dass die Baumaschine erstellt oder entfernt wird und prüft ob der Spieler die Angel in der Hand hält mit der man die Baumaschine steuern kann. Ebenfalls wird die Ausrichtung aufgerufen.

Editor Icon.png gleisbaumaschine:v1zyklus.mcfunction
# Wenn der Rüstungsständer für das Erstellen platziert wurde, wird entweder die Erstellen- oder Entfernen-Funktion aufgerufen, abhängig ob sich in der Nähe eine andere Baumaschine befindet.
execute as @e[type=minecraft:armor_stand,tag=EtiGleisBM.1Erstellen] at @s if entity @e[distance=..20,type=minecraft:marker,tag=EtiGleisBM.1Baumaschine] run function gleisbaumaschine:v1entfernen
execute as @e[type=minecraft:armor_stand,tag=EtiGleisBM.1Erstellen] at @s align y run function gleisbaumaschine: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=EtiGleisBM.1Baumaschine] if entity @e[distance=..2,type=minecraft:fishing_bobber] run kill @e[distance=..5,type=minecraft:minecart,tag=EtiGleisBM.1Sitz,sort=nearest,limit=1]
execute at @e[type=minecraft:armor_stand,tag=EtiGleisBM.1Halter,nbt=!{Passengers:[{}]}] at @e[distance=..5,type=minecraft:marker,tag=EtiGleisBM.1Baumaschine,sort=nearest,limit=1] run function gleisbaumaschine:v1entfernen

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

# Wenn der Spieler die Angel ausgewählt hat, erhält er zur Erkennung ein Etikett.
tag @a[gamemode=!spectator,nbt={SelectedItem:{tag:{EigGleisBM.1Steuer:true} } }] add EtiGleisBM.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=EtiGleisBM.1Ausgewaehlt,tag=EtiGleisBM.1Auswahl,tag=!EtiGleisBM.1Sitzen] remove EtiGleisBM.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=EtiGleisBM.1Ausgewaehlt,tag=!EtiGleisBM.1Auswahl] PZGleisBM.1Wert -99

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

# Falls Spieler die Angel auswählen ohne in der Lore zu sitzen, erhalten sie eine Titel-Nachricht, als Rückmeldung.
title @a[tag=EtiGleisBM.1Ausgewaehlt,tag=!EtiGleisBM.1Auswahl,tag=!EtiGleisBM.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 ihn nicht mehr auswählt, wird ihm ein Etikett gegeben oder entfernt.
tag @a[tag=EtiGleisBM.1Ausgewaehlt,tag=!EtiGleisBM.1Auswahl] add EtiGleisBM.1Auswahl
tag @a[tag=!EtiGleisBM.1Ausgewaehlt,tag=EtiGleisBM.1Auswahl] remove EtiGleisBM.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=EtiGleisBM.1Baumaschine] at @s if entity @p[distance=..10,gamemode=!spectator] rotated ~ 0 run function gleisbaumaschine: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=EtiGleisBM.1Baumaschine] run data modify entity @s CustomName set from entity @s data."EigGleisBM.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=EtiGleisBM.1Baumaschine,name="wahr"] at @s unless entity @p[distance=..5,tag=EtiGleisBM.1Sitzen,tag=EtiGleisBM.1Ausgewaehlt] run data modify entity @s data."EigGleisBM.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 VarGleisBM.1Tick PZGleisBM.1Wert 1
execute if score VarGleisBM.1Tick PZGleisBM.1Wert matches 4.. at @e[type=minecraft:marker,tag=EtiGleisBM.1Baumaschine,name="wahr"] run scoreboard players set @p[distance=..5,tag=EtiGleisBM.1Sitzen] PZGleisBM.1Wert 11
execute if score VarGleisBM.1Tick PZGleisBM.1Wert matches 4.. run scoreboard players set VarGleisBM.1Tick PZGleisBM.1Wert 0

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

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

Variante 1: Erstellen-Funktion
Die Erstellen-Funktion erstellt die Gleisbaumaschine in Form von unsichtbaren Rüstungständer und einer Lore.

Editor Icon.png gleisbaumaschine:v1erstellen.mcfunction
# Dem Spieler wird eine Angel gegeben, mit der er die Maschine steuern kann.
give @p[distance=..5,gamemode=!spectator] minecraft:fishing_rod{EigGleisBM.1Alle:true,EigGleisBM.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:["EtiGleisBM.1Alle","EtiGleisBM.1Entfernen","EtiGleisBM.1Baumaschine"],data:{EigGleisBM.1Zweierspur:'{"bold":true,"color":"red","text":"falsch"}',EigGleisBM.1Neigung:'{"bold":true,"color":"aqua","text":"Geradeaus"}',EigGleisBM.1Raster:'{"bold":true,"color":"green","text":"wahr"}',EigGleisBM.1Tempomat:'{"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=EtiGleisBM.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:["EtiGleisBM.1Alle","EtiGleisBM.1Entfernen","EtiGleisBM.1Halter"],Passengers:[{id:"minecraft:minecart",NoGravity:true,Invulnerable:true,Tags:["EtiGleisBM.1Alle","EtiGleisBM.1Entfernen","EtiGleisBM.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:["EtiGleisBM.1Alle","EtiGleisBM.1Entfernen","EtiGleisBM.1Spur","EtiGleisBM.1EineSpur"],ArmorItems:[{},{},{},{id:"minecraft:rail",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiGleisBM.1Alle","EtiGleisBM.1Entfernen","EtiGleisBM.1SpurBett","EtiGleisBM.1EineSpur"],ArmorItems:[{},{},{},{id:"minecraft:andesite",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiGleisBM.1Alle","EtiGleisBM.1Entfernen","EtiGleisBM.1Rechts","EtiGleisBM.1SpurRand","EtiGleisBM.1EineSpur"],ArmorItems:[{},{},{},{id:"minecraft:smooth_stone",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiGleisBM.1Alle","EtiGleisBM.1Entfernen","EtiGleisBM.1Links1","EtiGleisBM.1SpurRand","EtiGleisBM.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:["EtiGleisBM.1Alle","EtiGleisBM.1Entfernen","EtiGleisBM.1Spur","EtiGleisBM.1Spur2"],ArmorItems:[{},{},{},{id:"minecraft:rail",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiGleisBM.1Alle","EtiGleisBM.1Entfernen","EtiGleisBM.1SpurBett","EtiGleisBM.1SpurBett2"],ArmorItems:[{},{},{},{id:"minecraft:andesite",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiGleisBM.1Alle","EtiGleisBM.1Entfernen","EtiGleisBM.1Rechts","EtiGleisBM.1Rechts2","EtiGleisBM.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 löscht die Baumaschine vollständig und erzeugt einen Drop mit dem Rüstungsständer, der zum Erzeugen der Baumaschine benötigt wird.

Editor Icon.png gleisbaumaschine:v1entfernen.mcfunction
# Der Rüstungsständer in Form eines Gegenstandes wird erzeugt.
summon minecraft:item ~ ~ ~ {Item:{id:"minecraft:armor_stand",Count:1b,tag:{EigGleisBM.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:["EtiGleisBM.1Alle","EtiGleisBM.1Erstellen"]},Motion:[0.0d,0.3d,0.0d] } } }

# Wenn die Maschine nicht gerade erst platziert wurde, wird die Angel aus dem Inventar entfernt.
execute unless entity @e[distance=..10,tag=EtiGleisBM.1Erstellen] run clear @p[distance=..25,gamemode=!spectator,nbt={Inventory:[{id:"minecraft:fishing_rod"}]}] minecraft:fishing_rod{EigGleisBM.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 unless entity @e[distance=..10,tag=EtiGleisBM.1Erstellen] run kill @e[distance=..10,tag=EtiGleisBM.1Entfernen,sort=nearest,limit=17]
kill @s[tag=EtiGleisBM.1Erstellen]

# Eine Meldung erscheint, damit man weiss dass sie entfernt wurde.
execute unless entity @e[distance=..10,tag=EtiGleisBM.1Erstellen] run tellraw @p[distance=..10,gamemode=!spectator] ["Gleisbaumaschine.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 stellt alle Einstellungen im Chat bereit. Der Spieler kann nach dem er die Angel ausgewählt hat auf die Schaltflächen klicken um die Einstellungen anzupassen.

Editor Icon.png gleisbaumaschine: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 PZGleisBM.1Wert run scoreboard players get @p[distance=..1,tag=EtiGleisBM.1Sitzen,scores={PZGleisBM.1Wert=1..}] PZGleisBM.1Wert

# Die Schaltflächen für die Neigung wurden aktiviert und setzen die Eigenschaft entsprechend auf den eingestellten Wert.
data modify entity @s[scores={PZGleisBM.1Wert=1}] data."EigGleisBM.1Neigung" set value '{"bold":true,"color":"green","text":"Oben"}'
data modify entity @s[scores={PZGleisBM.1Wert=2}] data."EigGleisBM.1Neigung" set value '{"bold":true,"color":"aqua","text":"Geradeaus"}'
data modify entity @s[scores={PZGleisBM.1Wert=3}] data."EigGleisBM.1Neigung" set value '{"bold":true,"color":"red","text":"Unten"}'
data modify entity @s[scores={PZGleisBM.1Wert=4}] data."EigGleisBM.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={PZGleisBM.1Wert=5}] data."EigGleisBM.1Raster" set value '{"bold":true,"color":"green","text":"wahr"}'
data modify entity @s[scores={PZGleisBM.1Wert=6}] data."EigGleisBM.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={PZGleisBM.1Wert=11}] if entity @e[distance=2..20,type=minecraft:marker,tag=EtiGleisBM.1Baumaschine] run scoreboard players set @s PZGleisBM.1Wert 8
execute at @s[scores={PZGleisBM.1Wert=11}] as @p[distance=..5,tag=EtiGleisBM.1Sitzen] run function gleisbaumaschine:v1material
execute at @s[scores={PZGleisBM.1Wert=8}] run tellraw @p[distance=..5,tag=EtiGleisBM.1Sitzen,scores={PZGleisBM.1Wert=11}] ["Gleisbaumaschine.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={PZGleisBM.1Wert=7}] data."EigGleisBM.1Tempomat" set value '{"bold":true,"color":"green","text":"wahr"}'
data modify entity @s[scores={PZGleisBM.1Wert=8}] data."EigGleisBM.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={PZGleisBM.1Wert=9}] data."EigGleisBM.1Zweierspur" set value '{"bold":true,"color":"green","text":"wahr"}'
data modify entity @s[scores={PZGleisBM.1Wert=10}] data."EigGleisBM.1Zweierspur" 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={PZGleisBM.1Wert=11},nbt={data:{EigGleisBM.1Tempomat:'{"bold":true,"color":"green","text":"wahr"}'} }] run tellraw @p[distance=..1,tag=EtiGleisBM.1Sitzen] ["Gleisbaumaschine.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 PZGleisBM.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 PZGleisBM.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 PZGleisBM.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 PZGleisBM.1Wert set 4"} },"\n",{"text":"neigung == ","bold":true},{"entity":"@s","nbt":"data.\"EigGleisBM.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 PZGleisBM.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 PZGleisBM.1Wert set 6"} },{"text":") == ","bold":true},{"entity":"@s","nbt":"data.\"EigGleisBM.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 PZGleisBM.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 PZGleisBM.1Wert set 8"} },{"text":") == ","bold":true},{"entity":"@s","nbt":"data.\"EigGleisBM.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 PZGleisBM.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 PZGleisBM.1Wert set 10"} },{"text":") == ","bold":true},{"entity":"@s","nbt":"data.\"EigGleisBM.1Zweierspur\"","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 PZGleisBM.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=EtiGleisBM.1Sitzen] PZGleisBM.1Wert
scoreboard players set @p[distance=..1,tag=EtiGleisBM.1Sitzen] PZGleisBM.1Wert 0

Variante 1: Material-Funktion
Die Material-Funktion prüft im Inventar des Spielers ob genug Material vorhanden ist und nur dann wird das Material abgezogen und zum Bau der Strecke verwendet.

Editor Icon.png gleisbaumaschine:v1material.mcfunction
# Zuerst wird die Anzahl der benötigten Blöcke ermittelt, in dem diese in die Variablen gespeichert werden.
execute store result score VarGleisBM.1Gleis PZGleisBM.1Wert run clear @s minecraft:rail 0
execute store result score VarGleisBM.1Andesit PZGleisBM.1Wert run clear @s minecraft:andesite 0
execute store result score VarGleisBM.1Stein PZGleisBM.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=EtiGleisBM.1Zweierspur,nbt={data:{EigGleisBM.1Zweierspur:'{"bold":true,"color":"green","text":"wahr"}'} },sort=nearest,limit=1] run tag @s add EtiGleisBM.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=!EtiGleisBM.1Zweierspur] if score VarGleisBM.1Gleis PZGleisBM.1Wert matches 1.. if score VarGleisBM.1Andesit PZGleisBM.1Wert matches 1.. if score VarGleisBM.1Stein PZGleisBM.1Wert matches 2.. run tag @s add EtiGleisBM.1Material
execute if entity @s[tag=EtiGleisBM.1Zweierspur] if score VarGleisBM.1Gleis PZGleisBM.1Wert matches 2.. if score VarGleisBM.1Andesit PZGleisBM.1Wert matches 2.. if score VarGleisBM.1Stein PZGleisBM.1Wert matches 3.. run tag @s add EtiGleisBM.1Material

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

# Für die Zweierspur wird weiteres Material abgezogen.
clear @s[tag=EtiGleisBM.1Zweierspur,tag=EtiGleisBM.1Material] minecraft:rail 1
clear @s[tag=EtiGleisBM.1Zweierspur,tag=EtiGleisBM.1Material] minecraft:andesite 1
clear @s[tag=EtiGleisBM.1Zweierspur,tag=EtiGleisBM.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=EtiGleisBM.1Material] as @e[type=minecraft:marker,tag=EtiGleisBM.1Baumaschine,sort=nearest,limit=1] rotated ~ 0 run function gleisbaumaschine:v1spur
tellraw @s[tag=!EtiGleisBM.1Material] ["Gleisbaumaschine.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=!EtiGleisBM.1Material] run data modify entity @e[distance=..10,type=minecraft:marker,tag=EtiGleisBM.1Baumaschine,sort=nearest,limit=1] data."EigGleisBM.1Tempomat" set value '{"text":"falsch","color":"red","bold":true}'

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

Variante 1: Spur-Funktion
Die Spur-Funktion platziert alle Blöcke für die Gleisstrecke und lässt die Baumaschine nach vorne bewegen. Abhängig von der Einstellung wird die Baumaschine auch nach oben oder unten bewegt.

Editor Icon.png gleisbaumaschine: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."EigGleisBM.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=EtiGleisBM.1SpurBett,sort=nearest,limit=2] run fill ^2 ^ ^ ^-2 ^4 ^3 minecraft:glass replace #gleisbaumaschine:v1umwelt
execute if entity @s[name="Geradeaus"] positioned as @e[distance=..5,type=minecraft:armor_stand,tag=EtiGleisBM.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=EtiGleisBM.1SpurBett,sort=nearest,limit=2] run fill ^2 ^ ^ ^-2 ^5 ^3 minecraft:glass replace #gleisbaumaschine:v1umwelt
execute if entity @s[name=!"Geradeaus"] positioned as @e[distance=..5,type=minecraft:armor_stand,tag=EtiGleisBM.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=EtiGleisBM.1SpurBett,sort=nearest,limit=2] run setblock ~ ~ ~ minecraft:andesite replace
execute positioned as @e[distance=..5,type=minecraft:armor_stand,tag=EtiGleisBM.1SpurRand,sort=nearest,limit=3] run setblock ~ ~ ~ minecraft:smooth_stone replace
execute positioned as @e[distance=..5,type=minecraft:armor_stand,tag=EtiGleisBM.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=EtiGleisBM.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=EtiGleisBM.1Sitz,sort=nearest,limit=1] PZGleisBM.1Wert 1
execute if entity @s[name=!"Geradeaus"] run scoreboard players set @e[distance=..10,type=minecraft:minecart,tag=EtiGleisBM.1Sitz,scores={PZGleisBM.1Wert=8..},sort=nearest,limit=1] PZGleisBM.1Wert 16

# Wenn der Punktestand größer gleich 16 ist, wird die Spur-Etappen-Funktion geladen.
execute if entity @e[distance=..10,type=minecraft:minecart,tag=EtiGleisBM.1Sitz,scores={PZGleisBM.1Wert=16..},sort=nearest,limit=1] run function gleisbaumaschine:v1spur_etappe

Variante 1: Spur-Etappen-Funktion
Die Spur-Etappen-Funktion sorgt für die Oberleitung in Form von Redstone-Fackeln und Holzständer. Falls die zweite Spur aktiv ist, wird eine zweite Redstone-Fackel auf der Rückseite des Ständers platziert.

Editor Icon.png gleisbaumaschine: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=EtiGleisBM.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."EigGleisBM.1Zweierspur"

# Falls es sich um einen Baumaschine mit zwei Spuren handelt, wird auch eine zweite Antriebsschiene und die 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

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

Variante 1: Ausrichtung-Funktion
Die Ausrichtung-Funktion richtet die Gleisbaumaschine entweder nach den Himmelsrichtungen aus oder wenn gewünscht richtet sie ihn auch nach der Richtung des Spielers rasterfrei aus.

Editor Icon.png gleisbaumaschine:v1ausrichtung.mcfunction
# Die Baumaschine richtet sich, nach dem Spieler der sich in der Lore befindet, aus.
execute rotated as @p[distance=..5,tag=EtiGleisBM.1Sitzen,tag=EtiGleisBM.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."EigGleisBM.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."EigGleisBM.1Zweierspur"
execute as @p[distance=..10,gamemode=!spectator] run function gleisbaumaschine:v1ausrichtung_spur

Variante 1: Ausrichtungs-Spur-Funktion
Die Ausrichtungs-Spur-Funktion richtet alle Rüstungsständer die die Blöcke der Strecke andeuten richtig aus und sorgt dafür, dass auch die zweite Spur, falls aktiv, entsprechend angezeigt wird.

Editor Icon.png gleisbaumaschine:v1ausrichtung_spur.mcfunction
# Die Lore wird ausgerichtet.
teleport @e[type=minecraft:armor_stand,tag=EtiGleisBM.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=EtiGleisBM.1Spur,sort=nearest,limit=2] ^ ^0.5 ^-4 facing entity @s feet
teleport @e[type=minecraft:armor_stand,tag=EtiGleisBM.1SpurBett,sort=nearest,limit=2] ^ ^ ^-4 facing entity @s feet
teleport @e[type=minecraft:armor_stand,tag=EtiGleisBM.1Links1,sort=nearest,limit=1] ^1 ^ ^-4 facing entity @s feet
teleport @e[type=minecraft:armor_stand,tag=EtiGleisBM.1Rechts,sort=nearest,limit=2] ^-1 ^ ^-4 facing entity @s feet

# Wenn die 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=EtiGleisBM.1Baumaschine,name="wahr",sort=nearest,limit=1] run teleport @e[type=minecraft:armor_stand,tag=EtiGleisBM.1Spur2,sort=nearest,limit=1] ^2 ^0.5 ^-4 facing entity @s feet
execute if entity @e[distance=..2,type=minecraft:marker,tag=EtiGleisBM.1Baumaschine,name="wahr",sort=nearest,limit=1] run teleport @e[type=minecraft:armor_stand,tag=EtiGleisBM.1SpurBett2,sort=nearest,limit=1] ^2 ^ ^-4 facing entity @s feet
execute if entity @e[distance=..2,type=minecraft:marker,tag=EtiGleisBM.1Baumaschine,name="wahr",sort=nearest,limit=1] run teleport @e[type=minecraft:armor_stand,tag=EtiGleisBM.1Rechts2,sort=nearest,limit=1] ^3 ^ ^-4 facing entity @s feet

Variante 1: Stopp-Funktion
Die Stopp-Funktion löscht das Punkte-Ziel und die Gegenstände im Inventar des Spielers, sowie auch die Gleisbaumaschine und eventuell für diese herumliegende Gegenstände.

Editor Icon.png gleisbaumaschine:v1stopp.mcfunction
# Das Punkte-Ziel wird entfernt.
scoreboard objectives remove PZGleisBM.1Wert

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

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

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

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

# Chunks werden entladen.
forceload remove ~ ~

Variante 2[]

Gleisbaumaschine (Befehle) Bild 2.1.png Gleisbaumaschine (Befehle) Bild 2.2.png Gleisbaumaschine (Befehle) Bild 2.3.png Gleisbaumaschine (Befehle) Bild 2.4.png

Mit dieser Variante können bis zu 16 Gleisstrecken auf einmal platziert werden. Man erhält dazu eine Angel, welche man auswählen muss. Dann erhält man im Chat die Möglichkeit die Spuren, die Länge und das Eisenbahngleis einzustellen. Hat man die Angel ausgewählt und schleicht dabei, so wird ein Zähler über der Schnellleiste anfangen loszuzählen. Diese Zahl steht für die Länge der Strecke. Lässt man die Shift-Taste los, wird die Strecke erzeugt. Je nach Spuren-Anzahl eine oder mehrere. Ebenso gilt dies für die Eisenbahngleise, auf der die Eisenbahn fahren kann. Ab einer bestimmten Distanz wird ein Oberleitungsmast erzeugt, in Form von Redstone-Fackeln und Holzzäunen.

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 erstellt drei Punkte-Ziele um die Schleichzeit und andere Werte zu speichern und gibt den Spielern eine Angel, mit der man die Gleisstrecken erzeugen kann.

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

# Es werden zwei globale Variablen angelegt, die jeder Spieler später ändern kann.
scoreboard players set VarGleisBM.2Spuren PZGleisBM.2Laen 1
scoreboard players set VarGleisBM.2Laenge PZGleisBM.2Laen 64

# 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{EigGleisBM.2Angel:true,Enchantments:[{id:-1}],display:{Name:'{"text":"Gleisbaumaschine","bold":true}',Lore:['"Wähle die Angel aus"','"und schleiche eine Zeit lang"','"um die Kanallänge festzulegen,"','"sobald du los lässt wird der Kanal gebaut."'] } }

# Eine kurze Anleitung, wie die Baumaschine aktiviert werden kann.
tellraw @a[distance=..15] ["Gleisbaumaschine.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 ausgewählt hat und ob er dabei schleicht. Abhängig davon, wird die Auslöser-Funktion geladen um die Einstellungen anzuzeigen.

Editor Icon.png gleisbaumaschine: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:{EigGleisBM.2Angel:true} } }] add EtiGleisBM.2Ausgewaehlt

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

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

# Wenn man schleicht und dabei die Angel nicht mehr auswählt, wird dem Spieler ein Etikett zum Abrechen des Vorgangs gegeben, gleiches gilt, wenn er die Angel ausgeworfen hat, dann wird ebenfalls das Etikett vergeben um den Spurenbau abzubrechen.
tag @a[tag=!EtiGleisBM.2Ausgewaehlt,tag=EtiGleisBM.2Auswahl,tag=EtiGleisBM.2Shift] add EtiGleisBM.2Abbrechen
execute as @a[tag=EtiGleisBM.2Auswahl,tag=EtiGleisBM.2Shift] at @s if entity @e[distance=..5,type=minecraft:fishing_bobber] run tag @s add EtiGleisBM.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=EtiGleisBM.2Ausgewaehlt,tag=!EtiGleisBM.2Auswahl] add EtiGleisBM.2Auswahl
tag @a[tag=!EtiGleisBM.2Ausgewaehlt,tag=EtiGleisBM.2Auswahl] remove EtiGleisBM.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=EtiGleisBM.2AufBoden,tag=EtiGleisBM.2Auswahl,tag=!EtiGleisBM.2Shift,scores={PZGleisBM.2Schl=1..}] ["Gleisbaumaschine.2:\n",{"text":"Shiftklick == ","bold":true},{"text":"wahr","color":"green","bold":true}]
execute as @a[tag=EtiGleisBM.2AufBoden,tag=EtiGleisBM.2Auswahl,tag=EtiGleisBM.2Shift,tag=!EtiGleisBM.2Abbrechen,scores={PZGleisBM.2Schl=0,PZGleisBM.2Laen=1..}] run tellraw @s ["Gleisbaumaschine.2:\n",{"text":"Shiftklick == ","bold":true},{"text":"falsch","color":"red","bold":true},"\n",{"text":"Spur-Länge == ","bold":true},{"score":{"name":"@s","objective":"PZGleisBM.2Laen"},"color":"dark_purple","bold":true}]
tellraw @a[tag=EtiGleisBM.2AufBoden,tag=EtiGleisBM.2Auswahl,tag=EtiGleisBM.2Shift,tag=EtiGleisBM.2Abbrechen,scores={PZGleisBM.2Schl=0}] ["Gleisbaumaschine.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=EtiGleisBM.2AufBoden,tag=EtiGleisBM.2Auswahl,tag=EtiGleisBM.2Shift,tag=!EtiGleisBM.2Abbrechen,scores={PZGleisBM.2Schl=0,PZGleisBM.2Laen=1..}] at @s rotated ~ 0 positioned ^ ^ ^1 run function gleisbaumaschine: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=EtiGleisBM.2Auswahl,tag=EtiGleisBM.2Shift,tag=EtiGleisBM.2Abbrechen,scores={PZGleisBM.2Schl=0}] remove EtiGleisBM.2Abbrechen
scoreboard players set @a[tag=EtiGleisBM.2Auswahl,tag=EtiGleisBM.2Shift,scores={PZGleisBM.2Schl=0}] PZGleisBM.2Laen 0

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

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

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

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

Variante 2: Auslöser-Funktion
Die Auslöser-Funktion gibt dem Spieler im Chat die Möglichkeit die Einstellungen zu ändern. Hier kann man die maximale Länge der Strecke festlegen oder ob es sich um eine Eisenbahnstrecke handelt. Ebenso lässt sich die Anzahl der Spuren einstellen.

Editor Icon.png gleisbaumaschine:v2ausloeser.mcfunction
# Wenn der Spieler auf die Option Zweierspur geklickt hat, besitzt er den entsprechenden Wert und bekommt das Etikett hinzugefügt oder entfernt.
execute if entity @s[scores={PZGleisBM.2Ausl=1}] if score VarGleisBM.2Spuren PZGleisBM.2Laen matches ..15 run scoreboard players add VarGleisBM.2Spuren PZGleisBM.2Laen 1
execute if entity @s[scores={PZGleisBM.2Ausl=-1}] if score VarGleisBM.2Spuren PZGleisBM.2Laen matches 2.. run scoreboard players remove VarGleisBM.2Spuren PZGleisBM.2Laen 1

# Wenn der Spieler auf das Eisenbahngleis geklickt hat, wird dem Spieler ein Etikett gegeben um diese Einstellung zu speichern.
tag @s[tag=!EtiGleisBM.2Bahngleis,scores={PZGleisBM.2Ausl=2}] add EtiGleisBM.2Bahngleis
tag @s[tag=EtiGleisBM.2Bahngleis,scores={PZGleisBM.2Ausl=-2}] remove EtiGleisBM.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={PZGleisBM.2Ausl=3}] if score VarGleisBM.2Laenge PZGleisBM.2Laen matches ..255 run scoreboard players add VarGleisBM.2Laenge PZGleisBM.2Laen 1
execute if entity @s[scores={PZGleisBM.2Ausl=-3}] if score VarGleisBM.2Laenge PZGleisBM.2Laen matches 5.. run scoreboard players remove VarGleisBM.2Laenge PZGleisBM.2Laen 1

# Der Spieler erhält ein Optionen-Menü in dem die spezifischen Werte angeklickt werden können, damit lassen sich die Zweierspur, das Eisenbahngleis und die Länge einstellen.
tellraw @s ["Gleisbaumaschine.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 PZGleisBM.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 PZGleisBM.2Ausl set -1"} },"\n",{"text":"spuren == ","bold":true},{"score":{"name":"VarGleisBM.2Spuren","objective":"PZGleisBM.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 PZGleisBM.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 PZGleisBM.2Ausl set -2"} }]
tellraw @s[tag=!EtiGleisBM.2Bahngleis] ["",{"text":"bahngleis == ","bold":true},{"text":"falsch","color":"red","bold":true}]
tellraw @s[tag=EtiGleisBM.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 PZGleisBM.2Ausl set 3"} },"\n",{"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 PZGleisBM.2Ausl set -3"} },"\n",{"text":"maxlänge == ","bold":true},{"score":{"name":"VarGleisBM.2Laenge","objective":"PZGleisBM.2Laen"},"color":"dark_purple","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 Berechtigung, die Auslöser auszulösen.
scoreboard players enable @s PZGleisBM.2Ausl
scoreboard players set @s PZGleisBM.2Ausl 0

Variante 2: Ausrichtung-Funktion
Die Ausrichtung-Funktion ruft die Spuren-Funktion exakt in eine Himmelsrichtung ausgerichtet auf.

Editor Icon.png gleisbaumaschine:v2ausrichtung.mcfunction
# Die Variable für die aktuelle Spur wird auf null gesetzt.
scoreboard players set VarGleisBM.2Spur PZGleisBM.2Laen 0

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

Variante 2: Spuren-Funktion
Die Spuren-Funktion sorgt für die richtige Anzahl an Spuren. Abhängig von der eingestellten Anzahl wird sie dann mehrmals nebeneinander aufgerufen.

Editor Icon.png gleisbaumaschine:v2spuren.mcfunction
# Bevor die Spur-Funktion geladen wird, werden die Variablen eingestellt.
scoreboard players add VarGleisBM.2Spur PZGleisBM.2Laen 1
scoreboard players set VarGleisBM.2Abstand PZGleisBM.2Laen 0
scoreboard players set VarGleisBM.2Schwelle PZGleisBM.2Laen 0
scoreboard players operation VarGleisBM.2Weite PZGleisBM.2Laen = @s PZGleisBM.2Laen
function gleisbaumaschine:v2spur

# Abhängig davon ob ein Eisenbahngleis oder ein normales Gleis gesetzt wird, wird zusätzlich geprüft ob die aktuelle Spur die letzte ist und nur wenn nicht, wird die Spuren-Funktion um paar Blöcke nach rechts versetzt erneut aufgerufen.
execute if entity @s[tag=!EtiGleisBM.2Bahngleis] if score VarGleisBM.2Spur PZGleisBM.2Laen < VarGleisBM.2Spuren PZGleisBM.2Laen positioned ^-2 ^ ^ run function gleisbaumaschine:v2spuren
execute if entity @s[tag=EtiGleisBM.2Bahngleis] if score VarGleisBM.2Spur PZGleisBM.2Laen < VarGleisBM.2Spuren PZGleisBM.2Laen positioned ^-6 ^ ^ run function gleisbaumaschine:v2spuren

Variante 2: Spur-Funktion
Die Spur-Funktion platziert die Gleisstrecke und ruft die Spur-Etappen-Funktion auf, wenn ein gewisser Abstand erreicht wurde, bei dem wieder Oberleitungen platziert werden sollen.

Editor Icon.png gleisbaumaschine:v2spur.mcfunction
# Es wird ein Gleisbett, Gleisrand und die Gleise platziert.
execute if entity @s[tag=!EtiGleisBM.2Bahngleis] run fill ^2 ^ ^ ^-2 ^4 ^1 minecraft:glass replace #gleisbaumaschine:v2umwelt
execute if entity @s[tag=!EtiGleisBM.2Bahngleis] run fill ^1 ^1 ^ ^-1 ^3 ^ minecraft:air replace
execute if entity @s[tag=!EtiGleisBM.2Bahngleis] run fill ^1 ^ ^ ^-1 ^ ^ minecraft:smooth_stone replace
execute if entity @s[tag=!EtiGleisBM.2Bahngleis] run setblock ~ ~ ~ minecraft:andesite replace
execute if entity @s[tag=!EtiGleisBM.2Bahngleis] run setblock ~ ~1 ~ minecraft:rail replace

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

# Für das Eisenbahngleis wird jedes mal eine Variable erhöht, wenn sie den Wert eins erreicht, wird die Schwelle platziert.
scoreboard players add VarGleisBM.2Schwelle PZGleisBM.2Laen 1
execute if score VarGleisBM.2Schwelle PZGleisBM.2Laen matches 1 if entity @s[tag=EtiGleisBM.2Bahngleis] run fill ^2 ^1 ^ ^-2 ^1 ^ minecraft:spruce_slab replace
execute if score VarGleisBM.2Schwelle PZGleisBM.2Laen matches 2.. run scoreboard players set VarGleisBM.2Schwelle PZGleisBM.2Laen 0

# Danach wird das eigentliche Gleis für das Eisenbahngleis in Form von Treppen platziert.
execute if entity @s[tag=EtiGleisBM.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=EtiGleisBM.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=EtiGleisBM.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=EtiGleisBM.2Bahngleis,y_rotation=135..45] unless entity @s[y_rotation=-135..-45] run setblock ~-1 ~1 ~ minecraft:stone_brick_stairs[facing=west] replace

# Bei jedem Aufruf dieser Funktion wird eine Abstands-Variable um eins erhöht und alle 16 Blöcke wird dann die Spur-Etappen-Funktion geladen.
scoreboard players add VarGleisBM.2Abstand PZGleisBM.2Laen 1
execute if score VarGleisBM.2Abstand PZGleisBM.2Laen matches 16.. run function gleisbaumaschine:v2spur_etappe

# 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 VarGleisBM.2Weite PZGleisBM.2Laen 1
execute if score VarGleisBM.2Weite PZGleisBM.2Laen matches 1.. positioned ^ ^ ^1 run function gleisbaumaschine:v2spur

Variante 2: Spur-Etappen-Funktion
Die Spur-Etappen-Funktion erzeugt die Oberleitung für die Gleisstrecke.

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

# Je nach Blickrichtung wird die Redstone-Fackel entsprechend platziert.
execute if entity @s[tag=!EtiGleisBM.2Bahngleis,y_rotation=135..-135] run setblock ^ ^2 ^-1 minecraft:redstone_wall_torch[facing=east] replace
execute if entity @s[tag=!EtiGleisBM.2Bahngleis,y_rotation=-135..-45] run setblock ^ ^2 ^-1 minecraft:redstone_wall_torch[facing=south] replace
execute if entity @s[tag=!EtiGleisBM.2Bahngleis,y_rotation=-45..45] run setblock ^ ^2 ^-1 minecraft:redstone_wall_torch[facing=west] replace
execute if entity @s[tag=!EtiGleisBM.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=EtiGleisBM.2Bahngleis] run fill ^3 ^ ^-1 ^3 ^ ^-3 minecraft:stone_bricks replace
execute if entity @s[tag=EtiGleisBM.2Bahngleis] run fill ^3 ^1 ^-2 ^3 ^4 ^-2 minecraft:cobblestone_wall replace
execute if entity @s[tag=EtiGleisBM.2Bahngleis] run fill ^3 ^5 ^-2 ^3 ^6 ^-2 minecraft:spruce_fence replace
execute if entity @s[tag=EtiGleisBM.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=EtiGleisBM.2Bahngleis,y_rotation=135..-135] run fill ^2 ^10 ^-2 ^ ^10 ^-2 minecraft:spruce_fence_gate[facing=north] replace
execute if entity @s[tag=EtiGleisBM.2Bahngleis,y_rotation=-135..-45] run fill ^2 ^10 ^-2 ^ ^10 ^-2 minecraft:spruce_fence_gate[facing=east] replace
execute if entity @s[tag=EtiGleisBM.2Bahngleis,y_rotation=-45..45] run fill ^2 ^10 ^-2 ^ ^10 ^-2 minecraft:spruce_fence_gate[facing=south] replace
execute if entity @s[tag=EtiGleisBM.2Bahngleis,y_rotation=45..135] run fill ^2 ^10 ^-2 ^ ^10 ^-2 minecraft:spruce_fence_gate[facing=west] replace

# Die Abstands-Variable wird auf null zurückgesetzt.
scoreboard players set VarGleisBM.2Abstand PZGleisBM.2Laen 0

Variante 2: Stopp-Funktion
Die Stopp-Funktion löscht die Punkte-Ziele, die Angel in dem Inventar und löscht eventuell vorhandene Gegenstände die auf dem Boden liegen.

Editor Icon.png gleisbaumaschine:v2stopp.mcfunction
# Die drei Punkte-Ziele werden entfernt und somit auch die Variablen und alle Werte die Spieler besitzen.
scoreboard objectives remove PZGleisBM.2Schl
scoreboard objectives remove PZGleisBM.2Ausl
scoreboard objectives remove PZGleisBM.2Laen

# Die Etiketten werden entfernt, falls sie noch vorhanden waren.
tag @a[tag=EtiGleisBM.2Auswahl] remove EtiGleisBM.2Auswahl
tag @a[tag=EtiGleisBM.2Shift] remove EtiGleisBM.2Shift
tag @a[tag=EtiGleisBM.2Zweierspur] remove EtiGleisBM.2Zweierspur
tag @a[tag=EtiGleisBM.2Bahngleis] remove EtiGleisBM.2Bahngleis

# Die Angel wird aus dem Inventar geslöscht.
clear @a minecraft:fishing_rod{EigGleisBM.2Angel:true}

# Falls die Angel auf den Boden geworfen wurde, wird sie erkannt und gelöscht.
kill @e[type=minecraft:item,nbt={Item:{tag:{EigGleisBM.2Angel:true} } }]

# Chunks werden entladen.
forceload remove ~ ~


Disambig color.svg
Advertisement