Technik Wiki
Advertisement
Gruppe: Grid Eichenholzboot
Seeverkehrsanlagen

Grid Roter Sand blass mit Mechaniken

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

Eine Kanalbrücken- und -tunnelbaumaschine ist in Erster Linie für das Errichten von Kanälen in gebirgigen oder wasserreichen Gebieten gedacht. Sie kann aber auch, wie die Kanalbaumaschine im ebenen Gelände eingesetzt werden. Wird sie im Gebirge verwendet, so baut sie den Kanal samt Pfeiler. Die Sockel der Pfeiler werden auch angepasst, wenn sie den Boden erreichen oder auf Flüssigkeiten stoßen. Man kann damit ebenfalls Tunnel graben und bauen. Es ist auch möglich sie Unterwasser auf dem Meeresgrund einzusetzen und falls sie dabei auf Untiefen stößt werden die Unterwasserkanäle mit Pfeiler ausgestattet.

Variante 1

Kanalbrücken- und -tunnelbaumaschine (Befehle) Bild 1.1 Kanalbrücken- und -tunnelbaumaschine (Befehle) Bild 1.2 Kanalbrücken- und -tunnelbaumaschine (Befehle) Bild 1.3 Kanalbrücken- und -tunnelbaumaschine (Befehle) Bild 1.4

Diese Kanalbrücken- und -tunnelbaumaschine kann einspurige und zweispurige Kanalbrücken und -tunnel errichten. Die Baumaschine durch einen Rüstungsständer, den man zuvor erhalten hat, platziert werden. Man setzt sich in eine Lore rein und erhält ein Menü über ein paar einstellbare Optionen, wenn man die Angel dabei ausgewählt hat. Das Material für den Bau des Kanals muss im Inventar des Spielers sein, wenn man mit der Baumaschine loslegt. Man kann mit dieser Maschine nahezu überall agieren. In Tälern werden Pfeiler erzeugt und in Berge werden Tunnel gegraben. Ebenfalls kann man auch in Höhlen mit Decken Brücken mit Hängepfeilern errichten lassen.

Einschalten
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:



Variante 1: Start-Funktion
Die Start-Funktion gibt den Spielern einen besonderen Rüstungsständer und Material für den Bau des Kanals und erstellt das Punkte-Ziel.

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

# Eine Variable für den Pfeiler-Abstand wird gesetzt. Diese lässt sich über ein Menü noch ändern.
scoreboard players set VarKanBTBM.1AbstandPfeiler PZKanBTBM.1Wert 16

# Spielern im Umkreis von 15 Blöcken werden 16 Rüstungsständer für die Kanalbrücken- und -tunnelbaumaschine gegeben.
give @a[distance=..15] minecraft:armor_stand{EigKanBTBM.1Alle:true,display:{Name:'{"text":"Kanalbrücken- und -tunnelbaumaschine","color":"gold","bold":true}',Lore:['"Platziere den Rüstungsständer"','"um die Kanalbrücken- und -tunnelbaumaschine zu erstellen"','"und um eine Angel zu erhalten"'] },EntityTag:{Small:true,Invisible:true,NoGravity:true,CustomNameVisible:true,CustomName:'{"text":"Kanalbrücken- und -tunnelbaumaschine","color":"gold","bold":true}',Tags:["EtiKanBTBM.1Alle","EtiKanBTBM.1Entfernen","EtiKanBTBM.1Erstellen"],ArmorItems:[{},{},{},{id:"minecraft:magenta_glazed_terracotta",Count:1b} ],Pose:{Head:[0.0f,0.0f,180.0f] } } } 16

# Alle Spieler im Umkreis von 15 Blöcken erhalten die Baumaterialien.
give @a[distance=..15] minecraft:white_concrete{EigKanBTBM.1Alle:true} 192
give @a[distance=..15] minecraft:quartz_slab{EigKanBTBM.1Alle:true} 256
give @a[distance=..15] minecraft:polished_andesite{EigKanBTBM.1Alle:true} 128

# Eine kurze Anleitung, wie die Kanalbrücken- und -tunnelbaumaschine aktiviert werden kann.
tellraw @a[distance=..15] ["Kanalbrücken- und -tunnelbaumaschine.1: ",{"text":"Platziere den Rüstungsständer um die Kanalbrücken- und -tunnelbaumaschine 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 Erstellen- oder Entfernen-Funktion für die Baumaschine auf, wenn man den Rüstungsständer platziert hat. Die Material-Funktion wird aufgerufen, wenn man mit der Baumaschine loslegt. Ebenfalls wird hierdurch auch die Pfeiler-Funktion aufgerufen.

Editor Icon kanalbruecken-_und_-tunnelbaumaschine:v1zyklus.mcfunction
# Wenn der Köder von der Angel geworfen wurde oder die Baumaschine ins Wasser geraten ist, wird die Entfernen-Funktion aufgerufen.
execute at @e[type=minecraft:armor_stand,tag=EtiKanBTBM.1Baumaschine] if entity @e[distance=..2,type=minecraft:fishing_bobber] run function kanalbruecken-_und_-tunnelbaumaschine:v1entfernen
execute at @e[type=minecraft:armor_stand,tag=EtiKanBTBM.1Halter,nbt=!{Passengers:[{}]}] at @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Baumaschine,sort=nearest,limit=1] run function kanalbruecken-_und_-tunnelbaumaschine:v1entfernen

# 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=EtiKanBTBM.1Erstellen] at @s unless entity @e[distance=..20,type=minecraft:armor_stand,tag=EtiKanBTBM.1Baumaschine] align y run function kanalbruecken-_und_-tunnelbaumaschine:v1erstellen
execute as @e[type=minecraft:armor_stand,tag=EtiKanBTBM.1Erstellen] at @s if entity @e[distance=..20,type=minecraft:armor_stand,tag=EtiKanBTBM.1Baumaschine] run function kanalbruecken-_und_-tunnelbaumaschine:v1entfernen

# Von der Kanalbrücken- und -tunnelbaumaschine aus wird geprüft ob sich in einem Umkreis von bis zu 20 Blöcken keine andere sich aufhält, nur dann wird die Material-Funktion aufgerufen. ansonsten wird eine Fehlernachricht ausgegeben.
execute as @e[type=minecraft:armor_stand,tag=EtiKanBTBM.1Baumaschine] at @s unless entity @e[distance=2..20,type=minecraft:armor_stand,tag=EtiKanBTBM.1Baumaschine] as @p[distance=..10,gamemode=!spectator,tag=EtiKanBTBM.1SpielerAngel,scores={PZKanBTBM.1Wert=11}] rotated ~180 0 run function kanalbruecken-_und_-tunnelbaumaschine:v1material
execute at @e[type=minecraft:armor_stand,tag=EtiKanBTBM.1Baumaschine] if entity @e[distance=2..20,type=minecraft:armor_stand,tag=EtiKanBTBM.1Baumaschine] run tellraw @p[distance=..10,gamemode=!spectator,tag=EtiKanBTBM.1SpielerAngel,scores={PZKanBTBM.1Wert=11}] ["Kanalbrücken- und -tunnelbaumaschine.1: ",{"text":"Es befindet sich eine weitere Kanalbrücken- und -tunnelbaumaschine in der Nähe, daher wurde der Bauvorgang abgebrochen. Entferne eine Kanalbrücken- und -tunnelbaumaschine mit dem Werfen des Köders der Angel, auf diese um weiter bauen zu können.","color":"yellow","bold":true}]

# Wenn sich in einem Umkreis von bis zu zehn Blöcken ein Spieler aufhält, dann wird die Ausrichtungs-Funktion aufgerufen.
execute as @e[type=minecraft:armor_stand,tag=EtiKanBTBM.1Baumaschine] at @s if entity @p[distance=..10,gamemode=!spectator] rotated ~ 0 run function kanalbruecken-_und_-tunnelbaumaschine:v1ausrichtung

# Falls der Spieler die Option "Tempomat" ausgewählt hat, besitzt der dafür vorgesehene Rüstungsständer den Namen "wahr" und dann wird jeden Tick sein Wert um eins erhöht, wobei er beim Wert vier wieder auf null gesetzt wird. Das hat zur Folge dass der nachfolgende Test auf den Wert eins immer nur alle vier Ticks ausgeführt wird. Wenn der Test erfolgreich verläuft bekommt der Spieler den Wert elf, welcher für das Vorfahren der Baumaschine zuständig ist.
execute at @e[type=minecraft:armor_stand,tag=EtiKanBTBM.1Baumaschine] run scoreboard players add @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Tempomat,name="wahr",sort=nearest,limit=1] PZKanBTBM.1Wert 1
execute at @e[type=minecraft:armor_stand,tag=EtiKanBTBM.1Baumaschine] run scoreboard players set @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Tempomat,name="wahr",scores={PZKanBTBM.1Wert=4..},sort=nearest,limit=1] PZKanBTBM.1Wert 0
execute at @e[type=minecraft:armor_stand,tag=EtiKanBTBM.1Baumaschine] at @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Tempomat,name="wahr",scores={PZKanBTBM.1Wert=1},sort=nearest,limit=1] run scoreboard players set @p[distance=..10,gamemode=!spectator] PZKanBTBM.1Wert 11

# Wenn Pfeiler erzeugt wurden, wird von ihnen aus, die Pfeiler-Funktion geladen.
execute as @e[tag=EtiKanBTBM.1Pfeiler] at @s run function kanalbruecken-_und_-tunnelbaumaschine:v1pfeiler

Variante 1: Erstellen-Funktion
Die Erstellen-Funktion erzeugt viele unsichtbare Rüstungsständer mit bestimmten Blöcken im Kopfslot, die zusammen die Baumaschine darstellen.

Editor Icon kanalbruecken-_und_-tunnelbaumaschine:v1erstellen.mcfunction
# Die Etiketten werden ausgetauscht, um kenntlich zu machen, dass der platzierte Rüstungsständer nun eine Baumaschine ist.
tag @s remove EtiKanBTBM.1Erstellen
tag @s add EtiKanBTBM.1Baumaschine

# Richtet den Rüstungsständer in Y-Ebene neu aus, falls er auf eine Stufe platziert wurde.
teleport @s ~ ~ ~

# Dem Spieler wird eine Angel gegeben, mit der er die Maschine steuern kann.
give @p[distance=..10,gamemode=!spectator] minecraft:fishing_rod{EigKanBTBM.1Alle:true,Enchantments:[{id:-1}],display:{Name:'{"text":"Optionen"}',Lore:['"Wähle die Angel aus"','"während du in der Lore sitzt,"','"um durch deine Blickrichtung die Richtung"','"der Kanalbaumaschine zu bestimmen."','"Ebenfalls erhält man die Nachricht-Optionen"','"und durch Werfen des Angelköders auf"','"die Kanalbaumaschine wird diese gedroppt."'] } }

# Unsichtbare Rüstungsständer mit bestimmten Blöcken im Kopfslot werden erstellt. Um alle Baumaterialien die für die Stracke verbaut werden, anzuzeigen.
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,CustomName:'{"text":"falsch","color":"red","bold":true}',Tags:["EtiKanBTBM.1Alle","EtiKanBTBM.1Entfernen","EtiKanBTBM.1Wasser"],ArmorItems:[{},{},{},{id:"minecraft:water_bucket",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiKanBTBM.1Alle","EtiKanBTBM.1Entfernen","EtiKanBTBM.1Mitte","EtiKanBTBM.1Kanalbett"],ArmorItems:[{},{},{},{id:"minecraft:white_concrete",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiKanBTBM.1Alle","EtiKanBTBM.1Entfernen","EtiKanBTBM.1Rechts1","EtiKanBTBM.1Kanalbett"],ArmorItems:[{},{},{},{id:"minecraft:white_concrete",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiKanBTBM.1Alle","EtiKanBTBM.1Entfernen","EtiKanBTBM.1Links1","EtiKanBTBM.1Kanalbett"],ArmorItems:[{},{},{},{id:"minecraft:white_concrete",Count:1b}]}

summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiKanBTBM.1Alle","EtiKanBTBM.1Entfernen","EtiKanBTBM.1Spur","EtiKanBTBM.1Rechts2","EtiKanBTBM.1Kanalufer"],ArmorItems:[{},{},{},{id:"minecraft:quartz_slab",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiKanBTBM.1Alle","EtiKanBTBM.1Entfernen","EtiKanBTBM.1Spur","EtiKanBTBM.1Rechts3","EtiKanBTBM.1Kanalufer"],ArmorItems:[{},{},{},{id:"minecraft:quartz_slab",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiKanBTBM.1Alle","EtiKanBTBM.1Entfernen","EtiKanBTBM.1Spur","EtiKanBTBM.1Links2","EtiKanBTBM.1Kanalufer"],ArmorItems:[{},{},{},{id:"minecraft:quartz_slab",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiKanBTBM.1Alle","EtiKanBTBM.1Entfernen","EtiKanBTBM.1Spur","EtiKanBTBM.1Links3","EtiKanBTBM.1Kanalufer"],ArmorItems:[{},{},{},{id:"minecraft:quartz_slab",Count:1b}]}

summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiKanBTBM.1Alle","EtiKanBTBM.1Entfernen","EtiKanBTBM.1Spur","EtiKanBTBM.1Rechts4","EtiKanBTBM.1Kanalrand"],ArmorItems:[{},{},{},{id:"minecraft:polished_andesite",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiKanBTBM.1Alle","EtiKanBTBM.1Entfernen","EtiKanBTBM.1Spur","EtiKanBTBM.1Links4","EtiKanBTBM.1Kanalrand"],ArmorItems:[{},{},{},{id:"minecraft:polished_andesite",Count:1b}]}

# Ein Rüstungsständer auf dem weitere Rüstungsständer reiten inklusive eine Lore werden erzeugt. Die Rüstungsständer speichern die Optionen die man ausgewählt hat.
summon minecraft:armor_stand ~ ~ ~ {Small:true,Marker:true,Invisible:true,NoGravity:true,Invulnerable:true,Tags:["EtiKanBTBM.1Alle","EtiKanBTBM.1Entfernen","EtiKanBTBM.1Halter"],Passengers:[{id:"minecraft:armor_stand",Small:true,NoGravity:true,Invisible:true,CustomName:'{"text":"falsch","color":"red","bold":true}',Tags:["EtiKanBTBM.1Alle","EtiKanBTBM.1Entfernen","EtiKanBTBM.1Zweierspur"],Rotation:[90.0f,0.0f],Passengers:[{id:"minecraft:minecart",NoGravity:true,Invulnerable:true,Tags:["EtiKanBTBM.1Alle","EtiKanBTBM.1Entfernen","EtiKanBTBM.1Sitz"] } ] },{id:"minecraft:armor_stand",Small:true,NoGravity:true,Invisible:true,CustomName:'{"text":"Geradeaus","color":"aqua","bold":true}',Tags:["EtiKanBTBM.1Alle","EtiKanBTBM.1Entfernen","EtiKanBTBM.1Neigung"]},{id:"minecraft:armor_stand",Small:true,NoGravity:true,Invisible:true,CustomName:'{"text":"wahr","color":"green","bold":true}',Tags:["EtiKanBTBM.1Alle","EtiKanBTBM.1Entfernen","EtiKanBTBM.1Raster"]},{id:"minecraft:armor_stand",Small:true,NoGravity:true,Invisible:true,CustomName:'{"text":"falsch","color":"red","bold":true}',Tags:["EtiKanBTBM.1Alle","EtiKanBTBM.1Entfernen","EtiKanBTBM.1Tempomat"] } ] }

Variante 1: Entfernen-Funktion
Die Entfernen-Funktion sorgt, dafür wenn die Baumaschine entfernt werden soll, dass ein Drop erscheint um die Baumaschine erneut platzieren zu können und löscht alle beteiligte Komponenten der Baumaschine die zu dieser gehören.

Editor Icon kanalbruecken-_und_-tunnelbaumaschine:v1entfernen.mcfunction
# Der Rüstungsständer als Drop wird erzeugt.
summon minecraft:item ~ ~ ~ {Item:{id:"minecraft:armor_stand",Count:1b,tag:{EigKanBTBM.1Alle:true,display:{Name:'{"text":"Kanalbrücken- und -tunnelbaumaschine","color":"gold","bold":true}',Lore:['"Platziere den Rüstungsständer"','"um die Kanalbaumaschine zu erstellen"','"und um eine Angel zu erhalten"'] },EntityTag:{Small:true,Invisible:true,NoGravity:true,CustomNameVisible:true,CustomName:'{"text":"Kanalbaumaschine","color":"gold","bold":true}',Tags:["EtiKanBTBM.1Alle","EtiKanBTBM.1Entfernen","EtiKanBTBM.1Erstellen"],ArmorItems:[{},{},{},{id:"minecraft:magenta_glazed_terracotta",Count:1b} ],Pose:{Head:[0.0f,0.0f,180.0f] } } } },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=EtiKanBTBM.1Erstellen] run clear @p[distance=..25,gamemode=!spectator,nbt={Inventory:[{id:"minecraft:fishing_rod"}]}] minecraft:fishing_rod{EigKanBTBM.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=EtiKanBTBM.1Erstellen] run kill @e[distance=..10,tag=EtiKanBTBM.1Entfernen,sort=nearest,limit=17]
kill @s[tag=EtiKanBTBM.1Erstellen]

# Eine Meldung erscheint, damit man weiss dass die Maschine entfernt wurde.
execute unless entity @e[distance=..10,tag=EtiKanBTBM.1Erstellen] run tellraw @p[distance=..10,gamemode=!spectator] ["Kanalbrücken- und -tunnelbaumaschine.1: ",{"text":"Die Kanalbrücken- und -tunnelbaumaschine wurde entfernt. Auslöser dafür war ein Angelköder, eine Wasserquelle voraus oder eine andere Baumaschine.","color":"red","bold":true}]

Variante 1: Material-Funktion
Die Material-Funktion prüft bevor sie die Kanal-Funktion aufruft, vorher nach ob der Spieler überhaupt genug Material bei sich trägt. Falls nicht erhält er eine Fehlermeldung.

Editor Icon kanalbruecken-_und_-tunnelbaumaschine:v1material.mcfunction
# Zuerst wird die Anzahl der benötigten Blöcke ermittelt, in dem sie in die Variablen gespeichert werden.
execute store result score VarKanBTBM.1Beton PZKanBTBM.1Wert run clear @s minecraft:white_concrete 0
execute store result score VarKanBTBM.1Stufe PZKanBTBM.1Wert run clear @s minecraft:quartz_slab 0
execute store result score VarKanBTBM.1Andesit PZKanBTBM.1Wert run clear @s minecraft:polished_andesite 0

# 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, falls er es nicht besitzt, wird ihm das Etikett wieder entfernt.
execute if score VarKanBTBM.1Beton PZKanBTBM.1Wert matches 3.. if score VarKanBTBM.1Stufe PZKanBTBM.1Wert matches 4.. if score VarKanBTBM.1Andesit PZKanBTBM.1Wert matches 2.. run tag @s add EtiKanBTBM.1Material
execute if entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Zweierspur,name="wahr",sort=nearest,limit=1] unless score VarKanBTBM.1Beton PZKanBTBM.1Wert matches 7.. run tag @s[tag=EtiKanBTBM.1Material] remove EtiKanBTBM.1Material

# Wenn das Material vorhanden ist, wird es abgezogen.
clear @s[tag=EtiKanBTBM.1Material] minecraft:white_concrete 3
clear @s[tag=EtiKanBTBM.1Material] minecraft:quartz_slab 4
clear @s[tag=EtiKanBTBM.1Material] minecraft:polished_andesite 2

# Für die Zweierspur wird weiteres Material abgezogen.
execute if entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Zweierspur,name="wahr",sort=nearest,limit=1] run clear @s[tag=EtiKanBTBM.1Material] minecraft:white_concrete 4

# Falls das Material vorhanden ist, wird die Kanal-Funktion aufgerufen, ansonsten erhält der Spieler eine Fehlermeldung.
execute if entity @s[tag=EtiKanBTBM.1Material] as @e[type=minecraft:armor_stand,tag=EtiKanBTBM.1Baumaschine,sort=nearest,limit=1] rotated ~ 0 run function kanalbruecken-_und_-tunnelbaumaschine:v1kanal
tellraw @s[tag=!EtiKanBTBM.1Material] ["Kanalbrücken- und -tunnelbaumaschine.1: ",{"text":"Du hast zu wenig Blöcke 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=!EtiKanBTBM.1Material] run data merge entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Tempomat,name="wahr",sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"red","text":"falsch"}'}

# Der Spieler bekommt das Etikett wieder entfernt.
tag @s[tag=EtiKanBTBM.1Material] remove EtiKanBTBM.1Material

Variante 1: Kanal-Funktion
Die Kanal-Funktion platziert die Blöcke des Kanals an der entsprechenden Stelle wo sich die einzelnen Komonenten der Kanalbaumaschine befinden. Sie sorgt auch dafür, dass die Kanal-Funktion in bestimmten Abständen aufgerufen wird.

Editor Icon kanalbruecken-_und_-tunnelbaumaschine:v1kanal.mcfunction
# Falls die Maschine in eine felsige oder feuchte Umgebung gelangt, wird zuerst ein Glasgewölbe errichtet und anschließend ausgehöhlt.
execute positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Kanalbett,sort=nearest,limit=3] run fill ^4 ^ ^2 ^-4 ^4 ^3 minecraft:glass replace #kanalbruecken-_und_-tunnelbaumaschine:v1bloecke
execute positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Kanalbett,sort=nearest,limit=3] run fill ^3 ^1 ^2 ^-3 ^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 @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Neigung,name=!"Geradeaus",sort=nearest,limit=1] positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Kanalbett,sort=nearest,limit=3] run fill ^5 ^1 ^2 ^-5 ^7 ^2 minecraft:air replace

# Das Wasser wird platziert und Stufen und Betonblöcke werden darunter gesetzt.
execute positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Wasser,sort=nearest,limit=1] run fill ^3 ^1 ^1 ^-3 ^1 ^-1 minecraft:quartz_slab replace minecraft:air
execute positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Wasser,sort=nearest,limit=1] run fill ^1 ^1 ^ ^-1 ^1 ^ minecraft:water replace
execute positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Kanalbett,sort=nearest,limit=3] run setblock ~ ~ ~ minecraft:white_concrete replace

# Falls der Spieler eine Option ausgewählt hat, die nicht gerade aus verläuft, werden die Quarzstufen am Becken entfernt, damit das Wasser nicht blockiert wird.
execute if entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Neigung,name=!"Geradeaus",sort=nearest,limit=1] positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Wasser,sort=nearest,limit=1] run fill ^1 ^1 ^-1 ^-1 ^3 ^-3 minecraft:air replace minecraft:quartz_slab

# Falls die Zweierspur aktiviert ist, wird das Wasserbecken breiter gemacht und der Kanalboden ebenfalls.
execute if entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Zweierspur,name="wahr",sort=nearest,limit=1] positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Wasser,sort=nearest,limit=1] run fill ^3 ^1 ^ ^-3 ^1 ^ minecraft:water replace
execute if entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Zweierspur,name="wahr",sort=nearest,limit=1] positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Kanalbett,sort=nearest,limit=3] run fill ^1 ^ ^ ^-1 ^ ^ minecraft:white_concrete replace

# Wenn der Spieler nicht geradeaus bauen will und die Zweierspur ausgewählt hat, werden mehr Quarzstufen im Becken entfernt.
execute if entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Neigung,name=!"Geradeaus",sort=nearest,limit=1] if entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Zweierspur,name="wahr",sort=nearest,limit=1] positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Wasser,sort=nearest,limit=1] run fill ^3 ^1 ^-1 ^-3 ^3 ^-3 minecraft:air replace minecraft:quartz_slab

# Am Kanalufer und am Kanalrand, wo sich die entsprechenden Rüstungsständer befinden, werden die Blöcke platziert.
execute positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Kanalufer,sort=nearest,limit=4] run setblock ~ ~ ~ minecraft:quartz_slab replace
execute positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Kanalrand,sort=nearest,limit=2] run setblock ~ ~ ~ minecraft:polished_andesite replace

# Wenn die Zweierspur aktiviert ist, wird in der Mitte eine unterbrochene Linie erzeugt, in dem zwei Quarzstufen in einem Abstand von einem Block platziert werden.
execute if entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Zweierspur,name="wahr",sort=nearest,limit=1] run scoreboard players add @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Wasser,sort=nearest,limit=1] PZKanBTBM.1Wert 1
execute if entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Zweierspur,name="wahr",sort=nearest,limit=1] positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Wasser,scores={PZKanBTBM.1Wert=2..},sort=nearest,limit=1] run setblock ~ ~1 ~ minecraft:quartz_slab replace
execute if entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Zweierspur,name="wahr",sort=nearest,limit=1] run scoreboard players set @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Wasser,scores={PZKanBTBM.1Wert=3..},sort=nearest,limit=1] PZKanBTBM.1Wert 0

# Die Baumaschine wird zunächst einen Block nach vorne bewegt. Wenn die Option "Automatisch" ausgewählt wurde, wird die Baumaschine nach oben oder unten teleportiert, falls das Gelände nicht eben ist.
teleport @s ^ ^ ^1
execute if entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Neigung,name="Automatisch",sort=nearest,limit=1] at @s unless block ^ ^ ^4 minecraft:air run teleport @s ~ ~1 ~
execute if entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Neigung,name="Automatisch",sort=nearest,limit=1] at @s if block ^ ^-1 ^4 minecraft:air run teleport @s ~ ~-1 ~

# Falls eine Option für nach oben oder unten ausgewählt wurde, wird die Baumaschine entsprechend nach oben oder unten teleportiert.
execute if entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Neigung,name="Oben",sort=nearest,limit=1] at @s run teleport @s ~ ~1 ~ ~ 0
execute if entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Neigung,name="Unten",sort=nearest,limit=1] at @s run teleport @s ~ ~-1 ~ ~ 0

# Jeden Meter die die Kanalbrücken- und -tunnelbaumaschine zurücklegt wird der Wert der Lore um eins erhöht.
scoreboard players add @e[distance=..10,type=minecraft:minecart,tag=EtiKanBTBM.1Sitz,sort=nearest,limit=1] PZKanBTBM.1Wert 1

# Wenn der Pfeiler-Wert größer gleich dem eingestellten Abstands-Wert ist, wird die Kanal-Pfeiler-Funktion geladen.
execute if score @e[distance=..10,type=minecraft:minecart,tag=EtiKanBTBM.1Sitz,sort=nearest,limit=1] PZKanBTBM.1Wert >= VarKanBTBM.1AbstandPfeiler PZKanBTBM.1Wert run function kanalbruecken-_und_-tunnelbaumaschine:v1kanal_pfeiler

Variante 1: Kanal-Pfeiler-Funktion
Die Kanal-Pfeiler-Funktion erzeugt zwei Rüstungsständer die die Pfeiler im weiteren Verlauf erstellen. Hier wird auch dafür gesorgt, dass die Pfeiler-Rüstungsständer die Pfeiler in die Richtung platzieren die vorher eingestellt wurde, so zeigen sie entweder nach unten oder nach oben.

Editor Icon kanalbruecken-_und_-tunnelbaumaschine:v1kanal_pfeiler.mcfunction
# Es wird die Verglasung an der Stelle an der der Pfeiler steht durch glatten Stein ersetzt.
fill ^7 ^2 ^-4.5 ^-7 ^4 ^-5.5 minecraft:smooth_stone replace minecraft:glass

# Wenn die Lore einen Wert besitz der größer gleich dem Wert ist, der den Pfeiler-Abstand bestimmt, werden zwei Pfeiler-Rüstungsständer erzeugt.
summon minecraft:armor_stand ^-2.5 ^ ^-5 {Small:true,Invisible:true,NoGravity:true,Tags:["EtiKanBTBM.1Alle","EtiKanBTBM.1Pfeiler"],Rotation:[0.0f,90.0f]}
summon minecraft:armor_stand ^2.5 ^ ^-5 {Small:true,Invisible:true,NoGravity:true,Tags:["EtiKanBTBM.1Alle","EtiKanBTBM.1Pfeiler"],Rotation:[0.0f,90.0f]}

# Wenn der Spieler die Zweierspur aktiviert hat, werden die Pfeiler etwas weiter nach außen gesetzt.
execute if entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Zweierspur,name="wahr",sort=nearest,limit=1] as @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Pfeiler,sort=nearest,limit=2] at @s facing entity @e[distance=2..5,type=minecraft:armor_stand,tag=EtiKanBTBM.1Pfeiler,sort=nearest,limit=1] eyes run teleport @s ^ ^1 ^-2

# Wenn der Spieler die Option Hängepfeiler aktiviert hat, werden die Pfeiler-Rüstungsständer so rotiert, dass sie nach oben schauen.
execute if entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Wasser,name="wahr",sort=nearest,limit=1] as @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Pfeiler,sort=nearest,limit=2] at @s run teleport @s ~ ~ ~ ~ -90

# Anschließend wird der Wert der Lore wieder auf null gesetzt.
scoreboard players set @e[distance=..10,type=minecraft:minecart,tag=EtiKanBTBM.1Sitz,sort=nearest,limit=1] PZKanBTBM.1Wert 0

Variante 1: Pfeiler-Funktion
Die Pfeiler-Funktion erzeugt die Pfeiler entweder nach unten oder nach oben. Sobald der Pfeiler Wasser berührt wird der Sockel breiter. Wenn der Pfeiler den Boden oder die Decke erreicht, wird er entfernt. Gleiches gilt, falls er außerhalb der Bauhöhe der Welt gelangt, dann wird er ebenfalls gelöscht.

Editor Icon kanalbruecken-_und_-tunnelbaumaschine:v1pfeiler.mcfunction
# Wenn der Pfeiler in Wasser platziert wird, wird er breiter gemacht, ansonsten etwas dünner.
execute if block ~ ~ ~ minecraft:water run fill ~1.5 ~ ~1.5 ~-1.5 ~ ~-1.5 minecraft:smooth_stone replace #kanalbruecken-_und_-tunnelbaumaschine:v1pfeiler_bloecke
fill ~0.5 ~ ~0.5 ~-0.5 ~ ~-0.5 minecraft:smooth_stone replace #kanalbruecken-_und_-tunnelbaumaschine:v2pfeiler_bloecke

# Wenn der Pfeiler bis an den Grund gelangt ist, wird der Rüstungsständer entfernt.
execute unless block ^ ^ ^1 #kanalbruecken-_und_-tunnelbaumaschine:v2pfeiler_bloecke 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 VarKanBTBM.1Weltgrenze1 PZKanBTBM.1Wert if block ^ ^ ^1 minecraft:air
execute store result score VarKanBTBM.1Weltgrenze2 PZKanBTBM.1Wert unless block ^ ^ ^1 minecraft:air
execute if score VarKanBTBM.1Weltgrenze1 PZKanBTBM.1Wert = VarKanBTBM.1Weltgrenze2 PZKanBTBM.1Wert run kill @s

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

Variante 1: Ausrichtungs-Funktion
Die Ausrichtungs-Funktion sorgt je nach Einstellung dafür, dass die Baumaschine entweder an die vier Himmelsrichtung ausgerichtet ist, oder frei bewegbar ist. Die Ausrichtung des Spieler bestimmt dabei die der Baumaschine.

Editor Icon kanalbruecken-_und_-tunnelbaumaschine:v1ausrichtung.mcfunction
# Die Etiketten für das Sitzen in der Lore und das Auswählen der Angel in der Schnellleiste werden entfernt.
tag @p[distance=..15,tag=EtiKanBTBM.1SpielerSitzt] remove EtiKanBTBM.1SpielerSitzt
tag @p[distance=..15,tag=EtiKanBTBM.1SpielerAngel] remove EtiKanBTBM.1SpielerAngel

# Wenn der Spieler in der Lore sitzt, ist das unterste Objekt der Rüstungsständer mit entsprechendem Etikett, nur dann erhält der Spieler das Etikett. Wenn er dieses besitzt, wird noch geprüft, ob er die Angel ausgewählt hat.
tag @p[distance=..10,nbt={RootVehicle:{Entity:{Tags:["EtiKanBTBM.1Halter"] } } }] add EtiKanBTBM.1SpielerSitzt
tag @p[distance=..10,tag=EtiKanBTBM.1SpielerSitzt,nbt={SelectedItem:{id:"minecraft:fishing_rod",tag:{EigKanBTBM.1Alle:true} } }] add EtiKanBTBM.1SpielerAngel

# Damit der Spieler die Optionen-Nachricht erneut erhalten kann, wenn er eine Option angeklickt hat, wird das entsprechende Etikett entfernt und anschließend wird die Auslöser-Funktion ausgeführt. Falls der Spieler den Tempomat aktiviert hatte, wird dieser deaktiviert.
execute if entity @p[distance=..10,tag=!EtiKanBTBM.1SpielerAngel,tag=EtiKanBTBM.1Nachricht] run data merge entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Tempomat,name="wahr",sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"red","text":"falsch"}'}
tag @p[distance=..10,tag=!EtiKanBTBM.1SpielerAngel,tag=EtiKanBTBM.1Nachricht] remove EtiKanBTBM.1Nachricht
execute as @p[distance=..10,tag=EtiKanBTBM.1SpielerAngel] run function kanalbruecken-_und_-tunnelbaumaschine:v1ausloeser

# Wenn der Spieler in der Lore sitzt und die Angel ausgewählt hat, wird der Rüstungsständer entsprechend ausgerichtet.
execute rotated as @p[distance=..10,tag=EtiKanBTBM.1SpielerSitzt,tag=EtiKanBTBM.1SpielerAngel] run teleport @s ~ ~ ~ ~180 ~

# Wenn die Raster-Option aktiviert ist, wird der Rüstungsständer entsprechend neu ausgerichtet, sodass er nur in eine der vier Himmelsrichtungen blicken wird.
execute if entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Raster,name="wahr",sort=nearest,limit=1] run tag @s add EtiKanBTBM.1RasterAusrichten
teleport @s[tag=EtiKanBTBM.1RasterAusrichten,y_rotation=135..-134.9] ~ ~ ~ 180 0
teleport @s[tag=EtiKanBTBM.1RasterAusrichten,y_rotation=-135..-44.9] ~ ~ ~ -90 0
teleport @s[tag=EtiKanBTBM.1RasterAusrichten,y_rotation=-45..44.9] ~ ~ ~ 0 0
teleport @s[tag=EtiKanBTBM.1RasterAusrichten,y_rotation=45..134.9] ~ ~ ~ 90 0
tag @s[tag=EtiKanBTBM.1RasterAusrichten] remove EtiKanBTBM.1RasterAusrichten

# Die Rüstungsständer für das Anzeigen des Materials werden entsprechend dem Kanal positioniert.
teleport @e[type=minecraft:armor_stand,tag=EtiKanBTBM.1Wasser,sort=nearest,limit=1] ^ ^0.5 ^4 facing entity @p[distance=..10,gamemode=!spectator] feet
teleport @e[type=minecraft:armor_stand,tag=EtiKanBTBM.1Mitte,sort=nearest,limit=1] ^ ^ ^4 facing entity @p[distance=..10,gamemode=!spectator] feet

# Der nächstgelegene Spieler der sich nicht im Zuschauermodus befindet führt die Ausrichtungs-Spur-Funktion aus.
execute as @p[distance=..10,gamemode=!spectator] run function kanalbruecken-_und_-tunnelbaumaschine:v1ausrichtung_spur

# Die Lore die für den Spieler bereit steht, wird entsprechend dem Rüstungsständer ausgerichtet.
teleport @e[type=minecraft:armor_stand,tag=EtiKanBTBM.1Halter,sort=nearest,limit=1] ^ ^ ^3 facing entity @p[distance=..10,gamemode=!spectator] feet

Variante 1: Ausrichtungs-Spur-Funktion
Die Ausrichtungs-Spur-Funktion ordnet die einzelnen Komponenten der Baumaschine sichtbar aus. Falls die Baumaschine zweispurige Kanäle errichten muss, werden die Komponenten breiter ausgerichtet.

Editor Icon kanalbruecken-_und_-tunnelbaumaschine:v1ausrichtung_spur.mcfunction
# Die Rüstungsständer mit dem Material im Kopfslot werden entsprechend positioniert und ausgerichtet.
teleport @e[type=minecraft:armor_stand,tag=EtiKanBTBM.1Rechts1,sort=nearest,limit=1] ^1 ^ ^4 facing entity @s feet
teleport @e[type=minecraft:armor_stand,tag=EtiKanBTBM.1Links1,sort=nearest,limit=1] ^-1 ^ ^4 facing entity @s feet

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

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

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

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

Variante 1: Auslöser-Funktion
Die Auslöser-Funktion zeigt dem Spieler alle Einstellungen an, die er an der Baumaschine vornehmen kann. So kann er die Richtung, die Neigung, das Raster, den Tempomat und die zweispurige Variante des Kanals bestimmen. Ebenfalls kann er den Abstand der Pfeiler zueinander einstellen und ob die Pfeiler nach unten oder nach oben erzeugt werden sollen.

Editor Icon kanalbruecken-_und_-tunnelbaumaschine:v1auslöser.mcfunction
# Wenn der Spieler auf eine Option geklickt hat, wird die angeklickte Option in dem Namen des Rüstungsständers gespeichert.
execute if entity @s[scores={PZKanBTBM.1Wert=1}] run data merge entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Neigung,sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"green","text":"Oben"}'}
execute if entity @s[scores={PZKanBTBM.1Wert=2}] run data merge entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Neigung,sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"aqua","text":"Geradeaus"}'}
execute if entity @s[scores={PZKanBTBM.1Wert=3}] run data merge entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Neigung,sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"red","text":"Unten"}'}
execute if entity @s[scores={PZKanBTBM.1Wert=4}] run data merge entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Neigung,sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"dark_purple","text":"Automatisch"}'}

execute if entity @s[scores={PZKanBTBM.1Wert=5}] run data merge entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Raster,sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"green","text":"wahr"}'}
execute if entity @s[scores={PZKanBTBM.1Wert=6}] run data merge entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Raster,sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"red","text":"falsch"}'}

execute if entity @s[scores={PZKanBTBM.1Wert=7}] run data merge entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Tempomat,sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"green","text":"wahr"}'}
execute if entity @s[scores={PZKanBTBM.1Wert=8}] run data merge entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Tempomat,sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"red","text":"falsch"}'}

execute if entity @s[scores={PZKanBTBM.1Wert=9}] run data merge entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Zweierspur,sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"green","text":"wahr"}'}
execute if entity @s[scores={PZKanBTBM.1Wert=10}] run data merge entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Zweierspur,sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"red","text":"falsch"}'}

execute if entity @s[scores={PZKanBTBM.1Wert=12}] if score VarKanBTBM.1AbstandPfeiler PZKanBTBM.1Wert matches ..31 run scoreboard players add VarKanBTBM.1AbstandPfeiler PZKanBTBM.1Wert 1
execute if entity @s[scores={PZKanBTBM.1Wert=-12}] if score VarKanBTBM.1AbstandPfeiler PZKanBTBM.1Wert matches 9.. run scoreboard players remove VarKanBTBM.1AbstandPfeiler PZKanBTBM.1Wert 1

execute if entity @s[scores={PZKanBTBM.1Wert=13}] run data merge entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Wasser,sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"green","text":"wahr"}'}
execute if entity @s[scores={PZKanBTBM.1Wert=-13}] run data merge entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Wasser,sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"red","text":"falsch"}'}

# Wenn der Spieler nicht den Wert null besitzt (also eine Option angeklickt hat) oder er noch nicht die Nachricht erhalten hat, wird ihm die Optionen-Nachricht angezeigt.
execute unless entity @s[scores={PZKanBTBM.1Wert=7}] if entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Tempomat,name="wahr",sort=nearest,limit=1] run tag @s add EtiKanBTBM.1KeineNachricht
execute unless entity @s[scores={PZKanBTBM.1Wert=0},tag=EtiKanBTBM.1Nachricht] run tellraw @s[tag=!EtiKanBTBM.1KeineNachricht] ["Kanalbrücken- und -tunnelbaumaschine.1: ",{"text":"\nneigung = ","bold":true},{"text":"Oben","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für Wert Oben"} },"clickEvent":{"action":"run_command","value":"/trigger PZKanBTBM.1Wert set 1"} },{"text":"\nneigung = ","bold":true},{"text":"Geradeaus","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für Wert Geradeaus"} },"clickEvent":{"action":"run_command","value":"/trigger PZKanBTBM.1Wert set 2"} },{"text":"\nneigung = ","bold":true},{"text":"Unten","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für Wert Unten"} },"clickEvent":{"action":"run_command","value":"/trigger PZKanBTBM.1Wert set 3"} },{"text":"\nneigung = ","bold":true},{"text":"Automatisch","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für Wert Automatisch"} },"clickEvent":{"action":"run_command","value":"/trigger PZKanBTBM.1Wert set 4"} },{"text":"\nneigung == ","bold":true},{"entity":"@e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Neigung,sort=nearest,limit=1]","nbt":"CustomName","interpret":true},{"text":"\nraster (","bold":true},{"text":"=wahr","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für Einrastung"} },"clickEvent":{"action":"run_command","value":"/trigger PZKanBTBM.1Wert set 5"} },{"text":",","bold":true},{"text":"=falsch","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für keine Einrastung"} },"clickEvent":{"action":"run_command","value":"/trigger PZKanBTBM.1Wert set 6"} },{"text":") == ","bold":true},{"entity":"@e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Raster,sort=nearest,limit=1]","nbt":"CustomName","interpret":true},{"text":"\ntempomat (","bold":true},{"text":"=wahr","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für aktiven Tempomat"} },"clickEvent":{"action":"run_command","value":"/trigger PZKanBTBM.1Wert set 7"} },{"text":",","bold":true},{"text":"=falsch","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für inaktiven Tempomat"} },"clickEvent":{"action":"run_command","value":"/trigger PZKanBTBM.1Wert set 8"} },{"text":") == ","bold":true},{"entity":"@e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Tempomat,sort=nearest,limit=1]","nbt":"CustomName","interpret":true},{"text":"\nzweierspur (","bold":true},{"text":"=wahr","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für die Zweierspur"} },"clickEvent":{"action":"run_command","value":"/trigger PZKanBTBM.1Wert set 9"} },{"text":",","bold":true},{"text":"=falsch","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für die Einerspur"} },"clickEvent":{"action":"run_command","value":"/trigger PZKanBTBM.1Wert set 10"} },{"text":") == ","bold":true},{"entity":"@e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Zweierspur,sort=nearest,limit=1]","nbt":"CustomName","interpret":true},{"text":"\npfeiler (","bold":true},{"text":"pfeiler + 1","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für Pfeiler-Distanz + 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZKanBTBM.1Wert set 12"} },{"text":",","bold":true},{"text":"=pfeiler - 1","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für Pfeiler-Distanz - 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZKanBTBM.1Wert set -12"} },{"text":") == ","bold":true},{"score":{"name":"VarKanBTBM.1AbstandPfeiler","objective":"PZKanBTBM.1Wert"},"color":"dark_purple","bold":true},{"text":"\nhängepfeiler (","bold":true},{"text":"=wahr","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für Hängepfeiler"} },"clickEvent":{"action":"run_command","value":"/trigger PZKanBTBM.1Wert set 13"} },{"text":",","bold":true},{"text":"=falsch","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für keine Hängepfeiler"} },"clickEvent":{"action":"run_command","value":"/trigger PZKanBTBM.1Wert set -13"} },{"text":") == ","bold":true},{"entity":"@e[distance=..10,type=minecraft:armor_stand,tag=EtiKanBTBM.1Wasser,sort=nearest,limit=1]","nbt":"CustomName","interpret":true},{"text":"\nfahren(neigung,zweierspur)","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Kanalbrücken- und -tunnelbaumaschine fahren"} },"clickEvent":{"action":"run_command","value":"/trigger PZKanBTBM.1Wert set 11"} }]

# Wenn der Spieler eine Option angeklickt hat, wird er wieder dazu befähig ein weiteres mal die Optionen auswählen zu können und er erhält den Wert null.
execute unless entity @s[scores={PZKanBTBM.1Wert=0}] run scoreboard players enable @s PZKanBTBM.1Wert
execute unless entity @s[scores={PZKanBTBM.1Wert=0}] run scoreboard players set @s PZKanBTBM.1Wert 0

# Der Spieler erhält das Etikett, damit er nicht ständig die Optionen-Nachricht erhält.
tag @s[tag=!EtiKanBTBM.1Nachricht] add EtiKanBTBM.1Nachricht
tag @s[tag=EtiKanBTBM.1KeineNachricht] remove EtiKanBTBM.1KeineNachricht

Variante 1: Stopp-Funktion
Die Stopp-Funktion entfernt das Punkte-Ziel und entfernt alle Materialien die der Spieler erhalten hatte. Ebenfalls werden alle Komponenten der Baumaschine in der welt gelöscht und eventuelkl gedroppte Rüstungsständer auch.

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

# Alle Gegenstände die der Spieler im Verlauf der Benutzung erhalten hatte werden wieder entfernt.
clear @a minecraft:fishing_rod{EigKanBTBM.1Alle:true}
clear @a minecraft:armor_stand{EigKanBTBM.1Alle:true}
clear @a minecraft:white_concrete{EigKanBTBM.1Alle:true}
clear @a minecraft:quartz_slab{EigKanBTBM.1Alle:true}
clear @a minecraft:polished_andesite{EigKanBTBM.1Alle:true}

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

# Alle Objekte die mit der Kanalbrücken- und -tunnelbaumaschine in Verbindung stehen besitzen das Etikett und werden gelöscht.
kill @e[tag=EtiKanBTBM.1Alle]

# Chunks werden entladen.
forceload remove ~ ~

Variante 2

Kanalbrücken- und -tunnelbaumaschine (Befehle) Bild 2.1 Kanalbrücken- und -tunnelbaumaschine (Befehle) Bild 2.2 Kanalbrücken- und -tunnelbaumaschine (Befehle) Bild 2.3 Kanalbrücken- und -tunnelbaumaschine (Befehle) Bild 2.4

Mit dieser Kanalbrücken- und -tunnelbaumaschine lassen sich einspurige und zweispurige Kanäle für Boote und Schiffe erstellen. Die Kanäle besitzen in Tälern Pfeilern und in Gebirgen werden Tunnel gegraben. Um Kanäle zu errichten bekommt man eine Angel. Wählt man sie aus und schleicht dabei wird, wird ein Zähler hochgezählt und dieser gibt gleichzeitig die Länge das Kanals vor. Lässt man los, wird der eingestellte Kanal erzeugt. Möchte man abbrechen, so muss man den Angelköder werfen. Hat man die Angel ausgewählt, erscheint ein Optionen-Menü in dem man den Kanal-Typ, die Spurweite und die Abstände zwischen Pfeilern einstellen kann. Ebenfalls kann man einstellen ob die Pfeiler nach unten oder oben erzeugt werden sollen.

Einschalten
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:



Variante 2: Start-Funktion
Die Start-Funktion erstellt drei Punkte-Ziele, gibt den Spielern die Angel und lässt den Chunk dauerhaft laden, damit man auch weiter weg laufen kann um die Kanäle zu errichten.

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

# Es werden zwei globale Variablen angelegt, die jeder Spieler später ändern kann.
scoreboard players set VarKanBTBM.2Laenge PZKanBTBM.2Laen 64
scoreboard players set VarKanBTBM.2AbstandPfeiler PZKanBTBM.2Laen 16

# Spielern im Umkreis von 15 Blöcken erhalten eine Angel, die man halten muss, um einen Kanal erzeugen zu können.
give @a[distance=..15] minecraft:fishing_rod{EigKanBTBM.2Angel:true,Enchantments:[{id:-1}],display:{Name:'{"text":"Kanalbrücken- und -tunnelbaumaschine"}',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 Kanalbrücken- und -tunnelbaumaschine aktiviert werden kann.
tellraw @a[distance=..15] ["Kanalbrücken- und -tunnelbaumaschine.2: ",{"text":"Wähle die Angel aus um den Kanaltyp einzustellen und schleiche und lasse dann los, wenn die gewünschte Länge erreicht wird. Breche den Kanalbau 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 schleicht und lädt darauf die Kanal-Funktion. Ebenfalls wird die Auslöser-Funktion aufgerufen, die dem Spieler die Optionen anzeigt.

Editor Icon kanalbruecken-_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:{EigKanBTBM.2Angel:true} } }] add EtiKanBTBM.2Ausgewaehlt

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

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

#execute as @a[tag=!EtiKanBTBM.2Ausgewaehlt,tag=EtiKanBTBM.2Auswahl] run say abbrechen
tag @a[tag=!EtiKanBTBM.2Ausgewaehlt,tag=EtiKanBTBM.2Auswahl,tag=EtiKanBTBM.2Shift] add EtiKanBTBM.2Abbrechen
execute as @a[tag=EtiKanBTBM.2Auswahl,tag=EtiKanBTBM.2Shift] at @s if entity @e[distance=..5,type=minecraft:fishing_bobber] run tag @s add EtiKanBTBM.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=EtiKanBTBM.2Ausgewaehlt,tag=!EtiKanBTBM.2Auswahl] add EtiKanBTBM.2Auswahl
tag @a[tag=!EtiKanBTBM.2Ausgewaehlt,tag=EtiKanBTBM.2Auswahl] remove EtiKanBTBM.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=EtiKanBTBM.2AufBoden,tag=EtiKanBTBM.2Auswahl,tag=!EtiKanBTBM.2Shift,scores={PZKanBTBM.2Schl=1..,PZKanBTBM.2Laen=1..}] ["Kanalbrücken- und -tunnelbaumaschine.2:\n",{"text":"Shiftklick == ","bold":true},{"text":"wahr","color":"green","bold":true}]
execute as @a[tag=EtiKanBTBM.2AufBoden,tag=EtiKanBTBM.2Auswahl,tag=EtiKanBTBM.2Shift,tag=!EtiKanBTBM.2Abbrechen,scores={PZKanBTBM.2Schl=0}] run tellraw @s ["Kanalbrücken- und -tunnelbaumaschine.2:\n",{"text":"Shiftklick == ","bold":true},{"text":"falsch","color":"red","bold":true},"\n",{"text":"Kanal-Länge == ","bold":true},{"score":{"name":"@s","objective":"PZKanBTBM.2Laen"},"color":"dark_purple","bold":true}]
tellraw @a[tag=EtiKanBTBM.2AufBoden,tag=EtiKanBTBM.2Auswahl,tag=EtiKanBTBM.2Shift,tag=EtiKanBTBM.2Abbrechen,scores={PZKanBTBM.2Schl=0,PZKanBTBM.2Laen=1..}] ["Kanalbrücken- und -tunnelbaumaschine.2:\n",{"text":"Shiftklick == ","bold":true},{"text":"undefiniert","color":"yellow","bold":true},"\n",{"text":"Kanal-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=EtiKanBTBM.2AufBoden,tag=EtiKanBTBM.2Auswahl,tag=EtiKanBTBM.2Shift,tag=!EtiKanBTBM.2Abbrechen,scores={PZKanBTBM.2Schl=0}] at @s rotated ~ 0 align xyz positioned ~0.5 ~ ~0.5 positioned ^ ^ ^1 run function kanalbruecken-_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=EtiKanBTBM.2Auswahl,tag=EtiKanBTBM.2Shift,tag=EtiKanBTBM.2Abbrechen,scores={PZKanBTBM.2Schl=0}] remove EtiKanBTBM.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=EtiKanBTBM.2Auswahl,tag=EtiKanBTBM.2Shift,scores={PZKanBTBM.2Schl=0}] PZKanBTBM.2Laen 0

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

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

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

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

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

Variante 2: Auslöser-Funktion
Die Auslöser-Funktion zeigt dem Spieler alle möglichen Einstellungen an. Die Einstellungen werden über Etiketten und globalen Variablen, die jeder Spieler beeinflussen kann, gespeichert.

Editor Icon kanalbruecken-_und_-tunnelbaumaschine:v2ausloeser.mcfunction
# Wenn der Spieler auf die Option Zweierspur geklickt hat, besitzt er den entsprechenden Wert und bekommt das Etikett hinzugefügt oder entfernt.
tag @s[tag=!EtiKanBTBM.2Zweierspur,scores={PZKanBTBM.2Ausl=1}] add EtiKanBTBM.2Zweierspur
tag @s[tag=EtiKanBTBM.2Zweierspur,scores={PZKanBTBM.2Ausl=-1}] remove EtiKanBTBM.2Zweierspur

# Wenn der Spieler auf den Schiffskanal geklickt hat, wird dem Spieler ein Etikett gegeben um diese Einstellung zu speichern.
tag @s[tag=!EtiKanBTBM.2Schiffskanal,scores={PZKanBTBM.2Ausl=2}] add EtiKanBTBM.2Schiffskanal
tag @s[tag=EtiKanBTBM.2Schiffskanal,scores={PZKanBTBM.2Ausl=-2}] remove EtiKanBTBM.2Schiffskanal

# 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={PZKanBTBM.2Ausl=3}] if score VarKanBTBM.2Laenge PZKanBTBM.2Laen matches ..255 run scoreboard players add VarKanBTBM.2Laenge PZKanBTBM.2Laen 1
execute if entity @s[scores={PZKanBTBM.2Ausl=-3}] if score VarKanBTBM.2Laenge PZKanBTBM.2Laen matches 5.. run scoreboard players remove VarKanBTBM.2Laenge PZKanBTBM.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={PZKanBTBM.2Ausl=4}] if score VarKanBTBM.2AbstandPfeiler PZKanBTBM.2Laen matches ..31 run scoreboard players add VarKanBTBM.2AbstandPfeiler PZKanBTBM.2Laen 1
execute if entity @s[scores={PZKanBTBM.2Ausl=-4}] if score VarKanBTBM.2AbstandPfeiler PZKanBTBM.2Laen matches 9.. run scoreboard players remove VarKanBTBM.2AbstandPfeiler PZKanBTBM.2Laen 1

# Wenn der Spieler auf den Schiffskanal geklickt hat, wird dem Spieler ein Etikett gegeben um diese Einstellung zu speichern.
tag @s[tag=!EtiKanBTBM.2Haengepfeiler,scores={PZKanBTBM.2Ausl=5}] add EtiKanBTBM.2Haengepfeiler
tag @s[tag=EtiKanBTBM.2Haengepfeiler,scores={PZKanBTBM.2Ausl=-5}] remove EtiKanBTBM.2Haengepfeiler

# Der Spieler erhält ein Optionen-Menü in dem die spezifischen Werte angeklickt werden können, damit lassen sich die Zweierspur, der Schiffskanal, die Länge und der Pfeiler-Abstand einstellen.
tellraw @s ["Kanalbrücken- und -tunnelbaumaschine.2:\n",{"text":"zweierspur = ","bold":true},{"text":"wahr","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für Wert wahr"} },"clickEvent":{"action":"run_command","value":"/trigger PZKanBTBM.2Ausl set 1"} },"\n",{"text":"zweierspur = ","bold":true},{"text":"falsch","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für Wert falsch"} },"clickEvent":{"action":"run_command","value":"/trigger PZKanBTBM.2Ausl set -1"} }]
tellraw @s[tag=!EtiKanBTBM.2Zweierspur] ["",{"text":"zweierspur == ","bold":true},{"text":"falsch","color":"red","bold":true}]
tellraw @s[tag=EtiKanBTBM.2Zweierspur] ["",{"text":"zweierspur == ","bold":true},{"text":"wahr","color":"green","bold":true}]

tellraw @s ["",{"text":"schiffkanal = ","bold":true},{"text":"wahr","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für Wert wahr"} },"clickEvent":{"action":"run_command","value":"/trigger PZKanBTBM.2Ausl set 2"} },"\n",{"text":"schiffkanal = ","bold":true},{"text":"falsch","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für Wert falsch"} },"clickEvent":{"action":"run_command","value":"/trigger PZKanBTBM.2Ausl set -2"} }]
tellraw @s[tag=!EtiKanBTBM.2Schiffskanal] ["",{"text":"schiffkanal == ","bold":true},{"text":"falsch","color":"red","bold":true}]
tellraw @s[tag=EtiKanBTBM.2Schiffskanal] ["",{"text":"schiffkanal == ","bold":true},{"text":"wahr","color":"green","bold":true}]

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

tellraw @s ["",{"text":"hängepfeiler = ","bold":true},{"text":"wahr","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für Wert wahr"} },"clickEvent":{"action":"run_command","value":"/trigger PZKanBTBM.2Ausl set 5"} },"\n",{"text":"hängepfeiler = ","bold":true},{"text":"falsch","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für Wert falsch"} },"clickEvent":{"action":"run_command","value":"/trigger PZKanBTBM.2Ausl set -5"} }]
tellraw @s[tag=!EtiKanBTBM.2Haengepfeiler] ["",{"text":"hängepfeiler == ","bold":true},{"text":"falsch","color":"red","bold":true}]
tellraw @s[tag=EtiKanBTBM.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 PZKanBTBM.2Ausl
scoreboard players set @s PZKanBTBM.2Ausl 0

Variante 2: Ausrichtungs-Funktion
Die Ausrichtungs-Funktion sorgt dafür, wenn der Spieler den Kanal erzeugen will, dass dieser exakt nach einer der vier Himmelsrichtungen ausgerichtet ist.

Editor Icon kanalbruecken-_und_-tunnelbaumaschine:v2ausrichtung.mcfunction
# Da der Schleichen-Wert später auf null gesetzt wird, wird er hier noch verwendet um das Kanalende und den Kanalanfang zu markieren. Immer wenn die beiden Werte gleich sind, ist eines der beiden der Fall.
scoreboard players operation @s PZKanBTBM.2Schl = @s PZKanBTBM.2Laen

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

Variante 2: Kanal-Funktion
Die Kanal-Funktion erstellt den Kanal, abhängig vom eingestellten Typ und lädt nach bestimmten Abständen die Kanal-Pfeiler-Funktion. Die Kanal-Funktion ruft sich so oft um einen Block versetzt erneut auf, wie lang der Kanal letztlich sein soll.

Editor Icon kanalbruecken-_und_-tunnelbaumaschine:v2kanal.mcfunction
# Kanal für Boote mit Einzelspur wird errichtet.
execute if entity @s[tag=!EtiKanBTBM.2Zweierspur,tag=!EtiKanBTBM.2Schiffskanal] run fill ^5 ^2 ^ ^-5 ^4 ^ minecraft:glass replace #kanalbruecken-_und_-tunnelbaumaschine:v2bloecke
execute if entity @s[tag=!EtiKanBTBM.2Zweierspur,tag=!EtiKanBTBM.2Schiffskanal] run fill ^1 ^ ^ ^-1 ^ ^ minecraft:white_concrete replace
execute if entity @s[tag=!EtiKanBTBM.2Zweierspur,tag=!EtiKanBTBM.2Schiffskanal] run fill ^4 ^1 ^ ^-4 ^1 ^ minecraft:polished_andesite replace
execute if entity @s[tag=!EtiKanBTBM.2Zweierspur,tag=!EtiKanBTBM.2Schiffskanal] run fill ^3 ^1 ^ ^-3 ^1 ^ minecraft:quartz_slab replace
execute if entity @s[tag=!EtiKanBTBM.2Zweierspur,tag=!EtiKanBTBM.2Schiffskanal] run fill ^1 ^1 ^ ^-1 ^1 ^ minecraft:water replace
execute if entity @s[tag=!EtiKanBTBM.2Zweierspur,tag=!EtiKanBTBM.2Schiffskanal] run fill ^4 ^2 ^ ^-4 ^3 ^ minecraft:air replace

# Kanal für Boote mit Zweierspur wird errichtet.
execute if entity @s[tag=EtiKanBTBM.2Zweierspur,tag=!EtiKanBTBM.2Schiffskanal] run fill ^7 ^2 ^ ^-7 ^4 ^ minecraft:glass replace #kanalbruecken-_und_-tunnelbaumaschine:v2bloecke
execute if entity @s[tag=EtiKanBTBM.2Zweierspur,tag=!EtiKanBTBM.2Schiffskanal] run fill ^3 ^ ^ ^-3 ^ ^ minecraft:white_concrete replace
execute if entity @s[tag=EtiKanBTBM.2Zweierspur,tag=!EtiKanBTBM.2Schiffskanal] run fill ^6 ^1 ^ ^-6 ^1 ^ minecraft:polished_andesite replace
execute if entity @s[tag=EtiKanBTBM.2Zweierspur,tag=!EtiKanBTBM.2Schiffskanal] run fill ^5 ^1 ^ ^-5 ^1 ^ minecraft:quartz_slab replace
execute if entity @s[tag=EtiKanBTBM.2Zweierspur,tag=!EtiKanBTBM.2Schiffskanal] run fill ^3 ^1 ^ ^-3 ^1 ^ minecraft:water replace
execute if entity @s[tag=EtiKanBTBM.2Zweierspur,tag=!EtiKanBTBM.2Schiffskanal] run fill ^6 ^2 ^ ^-6 ^3 ^ minecraft:air replace

# Kanal für Schiffe mit Einzelspur wird errichtet.
execute if entity @s[tag=!EtiKanBTBM.2Zweierspur,tag=EtiKanBTBM.2Schiffskanal] run fill ^11 ^5 ^ ^-11 ^19 ^ minecraft:glass replace #kanalbruecken-_und_-tunnelbaumaschine:v2bloecke
execute if entity @s[tag=!EtiKanBTBM.2Zweierspur,tag=EtiKanBTBM.2Schiffskanal] run fill ^8 ^ ^ ^-8 ^ ^ minecraft:white_concrete replace
execute if entity @s[tag=!EtiKanBTBM.2Zweierspur,tag=EtiKanBTBM.2Schiffskanal] run fill ^8 ^1 ^ ^-8 ^4 ^ minecraft:quartz_block replace
execute if entity @s[tag=!EtiKanBTBM.2Zweierspur,tag=EtiKanBTBM.2Schiffskanal] run fill ^10 ^4 ^ ^-10 ^4 ^ minecraft:polished_andesite replace
execute if entity @s[tag=!EtiKanBTBM.2Zweierspur,tag=EtiKanBTBM.2Schiffskanal] run fill ^9 ^4 ^ ^-9 ^4 ^ minecraft:quartz_slab replace
execute if entity @s[tag=!EtiKanBTBM.2Zweierspur,tag=EtiKanBTBM.2Schiffskanal] run fill ^7 ^1 ^ ^-7 ^4 ^ minecraft:water replace
execute if entity @s[tag=!EtiKanBTBM.2Zweierspur,tag=EtiKanBTBM.2Schiffskanal] run fill ^10 ^5 ^ ^-10 ^18 ^ minecraft:air replace

# Kanal für Schiffe mit Zweierspur wird errichtet.
execute if entity @s[tag=EtiKanBTBM.2Zweierspur,tag=EtiKanBTBM.2Schiffskanal] run fill ^19 ^5 ^ ^-19 ^19 ^ minecraft:glass replace #kanalbruecken-_und_-tunnelbaumaschine:v2bloecke
execute if entity @s[tag=EtiKanBTBM.2Zweierspur,tag=EtiKanBTBM.2Schiffskanal] run fill ^16 ^ ^ ^-16 ^ ^ minecraft:white_concrete replace
execute if entity @s[tag=EtiKanBTBM.2Zweierspur,tag=EtiKanBTBM.2Schiffskanal] run fill ^16 ^1 ^ ^-16 ^4 ^ minecraft:quartz_block replace
execute if entity @s[tag=EtiKanBTBM.2Zweierspur,tag=EtiKanBTBM.2Schiffskanal] run fill ^18 ^4 ^ ^-18 ^4 ^ minecraft:polished_andesite replace
execute if entity @s[tag=EtiKanBTBM.2Zweierspur,tag=EtiKanBTBM.2Schiffskanal] run fill ^17 ^4 ^ ^-17 ^4 ^ minecraft:quartz_slab replace
execute if entity @s[tag=EtiKanBTBM.2Zweierspur,tag=EtiKanBTBM.2Schiffskanal] run fill ^15 ^1 ^ ^-15 ^4 ^ minecraft:water replace
execute if entity @s[tag=EtiKanBTBM.2Zweierspur,tag=EtiKanBTBM.2Schiffskanal] run fill ^18 ^5 ^ ^-18 ^18 ^ minecraft:air replace

# Die Variable für den Pfeiler wird um eins erhöht.
scoreboard players add VarKanBTBM.2Pfeiler PZKanBTBM.2Laen 1

# Wenn die Variable für den Pfeiler größer gleich der Abstands-Pfeiler-Variable ist, wird die Kanal-Pfeiler-Funktion geladen.
execute if score VarKanBTBM.2Pfeiler PZKanBTBM.2Laen >= VarKanBTBM.2AbstandPfeiler PZKanBTBM.2Laen run function kanalbruecken-_und_-tunnelbaumaschine:v2kanal_pfeiler

# Wenn die Länge bei eins angekommen ist, wird der Schleichwert ebenfalls auf eins gesetzt, damit am Kanalanfang und -ende beide Werte gleich sind.
scoreboard players set @s[scores={PZKanBTBM.2Laen=1}] PZKanBTBM.2Schl 1

# Bei jedem Aufruf dieser Funktion wird eine Strichlinien-Variable um eins erhöht und alle drei Blöcke wird dann Wasser gesetzt um die typische Strichlinie zu erzeugen.
execute if entity @s[tag=EtiKanBTBM.2Zweierspur] run scoreboard players add VarKanBTBM.2StrichLinie PZKanBTBM.2Schl 1
execute unless score @s[tag=EtiKanBTBM.2Zweierspur] PZKanBTBM.2Schl = @s PZKanBTBM.2Laen run setblock ~ ~1 ~ minecraft:quartz_slab[waterlogged=true] replace
execute if entity @s[tag=EtiKanBTBM.2Zweierspur] if score VarKanBTBM.2StrichLinie PZKanBTBM.2Schl matches 3.. run setblock ~ ~1 ~ minecraft:water replace
execute if entity @s[tag=EtiKanBTBM.2Zweierspur] if score VarKanBTBM.2StrichLinie PZKanBTBM.2Schl matches 3.. run scoreboard players set VarKanBTBM.2StrichLinie PZKanBTBM.2Schl 0

# Wenn der Schleichwert und der Längenwert gleich sind, dann befindet sich die Funktion am Kanalanfang oder -ende und platziert die Kanalbegrenzungen, damit das Wasser nicht dort herausfließt.
execute if score @s[tag=!EtiKanBTBM.2Schiffskanal] PZKanBTBM.2Schl = @s PZKanBTBM.2Laen run fill ^3 ^1 ^ ^-3 ^1 ^ minecraft:quartz_slab replace minecraft:water

execute if score @s[tag=!EtiKanBTBM.2Zweierspur,tag=EtiKanBTBM.2Schiffskanal] PZKanBTBM.2Schl = @s PZKanBTBM.2Laen run fill ^7 ^1 ^ ^-7 ^3 ^ minecraft:quartz_block replace minecraft:water
execute if score @s[tag=!EtiKanBTBM.2Zweierspur,tag=EtiKanBTBM.2Schiffskanal] PZKanBTBM.2Schl = @s PZKanBTBM.2Laen run fill ^7 ^4 ^ ^-7 ^4 ^ minecraft:quartz_slab replace minecraft:water

execute if score @s[tag=EtiKanBTBM.2Zweierspur,tag=EtiKanBTBM.2Schiffskanal] PZKanBTBM.2Schl = @s PZKanBTBM.2Laen run fill ^15 ^1 ^ ^-15 ^3 ^ minecraft:quartz_block replace minecraft:water
execute if score @s[tag=EtiKanBTBM.2Zweierspur,tag=EtiKanBTBM.2Schiffskanal] PZKanBTBM.2Schl = @s PZKanBTBM.2Laen run fill ^15 ^4 ^ ^-15 ^4 ^ minecraft:quartz_slab replace minecraft:water

# 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 @s PZKanBTBM.2Laen 1
execute if score @s PZKanBTBM.2Laen matches 1.. positioned ^ ^ ^1 run function kanalbruecken-_und_-tunnelbaumaschine:v2kanal

Variante 2: Kanal-Pfeiler-Funktion
Die Kanal-Pfeiler-Funktion erzeugt die zwei Pfeiler-Rüstungsständer die im weiteren Verlauf die Pfeiler erzeugen. Je nach Typ des Kanals müssen sie entsprechend weiter auseinander liegen und je nach Pfeiler-Einstellung auch nach oben die Pfeiler generieren.

Editor Icon kanalbruecken-_und_-tunnelbaumaschine:v2kanal_pfeiler.mcfunction
# Wenn die Pfeiler-Variable größer gleich der Abstands-Pfeiler-Variable ist, wird sie wieder auf null gesetzt.
scoreboard players set VarKanBTBM.2Pfeiler PZKanBTBM.2Laen 0

# Zwei Pfeiler-Rüstungsständer werden erzeugt, die später die Pfeiler erzeugen werden.
summon minecraft:armor_stand ^-2.5 ^ ^ {Small:true,Invisible:true,NoGravity:true,Tags:["EtiKanBTBM.2Alle","EtiKanBTBM.2Pfeiler"],Rotation:[0.0f,90.0f]}
summon minecraft:armor_stand ^2.5 ^ ^ {Small:true,Invisible:true,NoGravity:true,Tags:["EtiKanBTBM.2Alle","EtiKanBTBM.2Pfeiler"],Rotation:[0.0f,90.0f]}

# In die Pfeiler-Rüstungsständer wird der Wert null oder eins gespeichert, abhängig davon ob der Spieler den Schiffskanal aktiviert oder deaktiviert hat.
execute positioned as @e[distance=..5,type=minecraft:armor_stand,tag=EtiKanBTBM.2Pfeiler,sort=nearest,limit=2] store success score @e[sort=nearest,limit=1] PZKanBTBM.2Schl if entity @s[tag=EtiKanBTBM.2Schiffskanal]

# Wenn der Spieler die Zweierspur aktiviert hat, werden die Pfeiler etwas weiter nach außen gesetzt.
execute if entity @s[tag=EtiKanBTBM.2Zweierspur,tag=!EtiKanBTBM.2Schiffskanal] as @e[distance=..5,type=minecraft:armor_stand,tag=EtiKanBTBM.2Pfeiler,sort=nearest,limit=2] at @s facing entity @e[distance=2..5,type=minecraft:armor_stand,tag=EtiKanBTBM.2Pfeiler,sort=nearest,limit=1] eyes run teleport @s ^ ^1 ^-2

# Wenn der Spieler den Schiffskanal aktiviert hat, werden die beiden Pfeiler-Rüstungsständer etwas weiter nach außen teleportiert.
execute if entity @s[tag=!EtiKanBTBM.2Zweierspur,tag=EtiKanBTBM.2Schiffskanal] as @e[distance=..5,type=minecraft:armor_stand,tag=EtiKanBTBM.2Pfeiler,sort=nearest,limit=2] at @s facing entity @e[distance=2..5,type=minecraft:armor_stand,tag=EtiKanBTBM.2Pfeiler,sort=nearest,limit=1] eyes run teleport @s ^ ^4 ^-7

# Wenn der Spieler nicht nur den Schiffskanal sondern auch die zweispurige Variante davon aktiviert hat, werden die beiden Pfeiler nochmals weiter teleportiert.
execute if entity @s[tag=EtiKanBTBM.2Zweierspur,tag=EtiKanBTBM.2Schiffskanal] as @e[distance=..5,type=minecraft:armor_stand,tag=EtiKanBTBM.2Pfeiler,sort=nearest,limit=2] at @s facing entity @e[distance=2..5,type=minecraft:armor_stand,tag=EtiKanBTBM.2Pfeiler,sort=nearest,limit=1] eyes run teleport @s ^ ^5 ^-15

# Wenn der Spieler Hängepfeiler als Option ausgewählt hat, so werden die Pfeiler statt nach unten nach oben erzeugt.
execute if entity @s[tag=EtiKanBTBM.2Haengepfeiler] as @e[distance=..20,type=minecraft:armor_stand,tag=EtiKanBTBM.2Pfeiler,sort=nearest,limit=2] at @s run teleport @s ~ ~ ~ ~ -90

# Wenn der Spieler Hängepfeiler als Option ausgewählt hat, so werden die Pfeiler statt nach unten nach oben erzeugt.
execute if entity @s[tag=EtiKanBTBM.2Haengepfeiler,tag=EtiKanBTBM.2Schiffskanal] as @e[distance=..20,type=minecraft:armor_stand,tag=EtiKanBTBM.2Pfeiler,sort=nearest,limit=2] at @s run teleport @s ~ ~-6 ~ ~ -90

# Unter dem Schiffskanal wird eine Verstrebung erzeugt.
execute if entity @s[tag=!EtiKanBTBM.2Zweierspur,tag=EtiKanBTBM.2Schiffskanal] run fill ^8 ^-2 ^0.5 ^-8 ^-1 ^-0.5 minecraft:smooth_stone replace #kanalbruecken-_und_-tunnelbaumaschine:v2pfeiler_bloecke

# Unter dem zweispurigen Schiffskanal wird eine Verstrebung erzeugt.
execute if entity @s[tag=EtiKanBTBM.2Zweierspur,tag=EtiKanBTBM.2Schiffskanal] run fill ^16 ^-2 ^0.5 ^-16 ^-1 ^-0.5 minecraft:smooth_stone replace #kanalbruecken-_und_-tunnelbaumaschine:v2pfeiler_bloecke

# Je nach Kanaltyp wird die Verglasung an der Stelle an der der Pfeiler steht durch glatten Stein ersetzt.
execute if entity @s[tag=!EtiKanBTBM.2Schiffskanal] run fill ^7 ^2 ^0.5 ^-7 ^4 ^-0.5 minecraft:smooth_stone replace minecraft:glass
execute if entity @s[tag=EtiKanBTBM.2Schiffskanal] run fill ^19 ^5 ^0.5 ^-19 ^19 ^-0.5 minecraft:smooth_stone replace minecraft:glass

Variante 2: Pfeiler-Funktion
Die Pfeiler-Funktion erzeugt um den Pfeiler-Rüstungsständer pro Ebene ein Teil des Pfeilers. Solange der Pfeiler noch nicht ab Boden oder an die Decke angelangt ist, wird der Pfeiler weiter erzeugt. Falls der Pfeiler außerhalb der Bauhöhe sein sollte, wird er ebenfalls beendet.

Editor Icon kanalbruecken-_und_-tunnelbaumaschine:v2pfeiler.mcfunction
# Wenn der Pfeiler in Wasser platziert wird, wird er breiter gemacht, ansonsten etwas dünner.
execute if entity @s[scores={PZKanBTBM.2Schl=0}] if block ~ ~ ~ minecraft:water run fill ~1.5 ~ ~1.5 ~-1.5 ~ ~-1.5 minecraft:smooth_stone replace #kanalbruecken-_und_-tunnelbaumaschine:v2pfeiler_bloecke
execute if entity @s[scores={PZKanBTBM.2Schl=0}] run fill ~0.5 ~ ~0.5 ~-0.5 ~ ~-0.5 minecraft:smooth_stone replace #kanalbruecken-_und_-tunnelbaumaschine:v2pfeiler_bloecke

# Wenbn der Pfeiler für den Schiffkanal ist, besitzt er den Wert eins und wird entsprechend breiter erzeugt.
execute if entity @s[scores={PZKanBTBM.2Schl=1}] if block ~ ~ ~ minecraft:water run fill ~2.5 ~ ~2.5 ~-2.5 ~ ~-2.5 minecraft:smooth_stone replace #kanalbruecken-_und_-tunnelbaumaschine:v2pfeiler_bloecke
execute if entity @s[scores={PZKanBTBM.2Schl=1}] run fill ~1.5 ~ ~1.5 ~-1.5 ~ ~-1.5 minecraft:smooth_stone replace #kanalbruecken-_und_-tunnelbaumaschine:v2pfeiler_bloecke

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

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

Variante 2: Stopp-Funktion
Die Stopp-Funktion löscht die Punkte-Ziele wieder, die Etiketten für die Einstellungen und die Angel aus dem Inventar oder als Drop in der Welt. Der Chunk wird entladen.

Editor Icon kanalbruecken-_und_-tunnelbaumaschine:v2stopp.mcfunction
# Die Punkte-Ziele werden entfernt und somit auch die Variable und alle Werte die Spieler besitzen.
scoreboard objectives remove PZKanBTBM.2Schl
scoreboard objectives remove PZKanBTBM.2Ausl
scoreboard objectives remove PZKanBTBM.2Laen

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

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

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

# Chunks werden entladen.
forceload remove ~ ~


Disambig color
Advertisement