Kanalbaumaschine (Befehle)

Aus Technik Wiki
Wechseln zu: Navigation, Suche
Gruppe: Grid Eichenholzboot.png
Seeverkehrsanlagen

Grid Roter Sand blass.png mit Mechaniken

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

Eine Kanalbaumaschine ermöglicht es, Kanäle für Boote und Schiffe zu erstellen. Dabei kann die Kanalbaumaschine ein Fahrzeug sein das der Spieler steuern kann oder nur ein reines Optionen-Menü in dem man die einzelnen Einstellungen auswählen kann. Die Kanalbaumaschine kann dabei entweder so ausgeführt sein, dass man das Material des Kanals selbst dabei haben muss oder so dass man nichts selbst dafür braucht. Die Kanalbaumaschine kann auch für Tunnel und Unterwasser verwendet werden und gleitet den Bereich mit Glas aus. Für gebirgigere Landschaften ist eine Kanalbrücke- und -tunnelbaumaschine vorgesehen.

Inhaltsverzeichnis

Variante 1[Bearbeiten | Quelltext bearbeiten]

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

Mit dieser Kanalbaumaschine lassen sich einspurige oder zweispurige Kanäle für Boote errichten. Die Blöcke die dafür verwendet werden, muss der Spieler bei sich mit tragen. Der Spieler erhält einen Rüstungsständer, mit dem er die Kanalbaumaschine durch Platzieren erzeugen kann. Er kann sich in die Baumaschine hineinsetzen und erhält eine Angel mit der er die Ausrichtung der Baumaschine festlegen kann. Zusätzlich erhält er durch ein Optionen-Menü im Chat die Möglichkeit bestimmte Einstellungen per Mausklick auf die entsprechende Schaltfläche zu treffen.

Einschalten
  • Befehl 1.1 Auf dem Wiederhol-Befehlsblock befindet sich ein Hebel. Legt man ihn um, wird zuerst der Befehlsblock mit der Start-Funktion kanalbaumaschine:v1start aktiviert.
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:



Variante 1: Start-Funktion
Die Start-Funktion erstellt das Punkte-Ziel für das Auslösen im Optionen-Menü und gibt den Spielern den Rüstungsständer und die Materialien für den Kanal.

Editor Icon.png kanalbaumaschine:v1start.mcfunction
# Ein Punkte-Ziel für das Auslösen von Werten wird erstellt.
scoreboard objectives add PZKanaBM.1Wert trigger ["Kanalbaumaschine.1: ",{"text":"Wert der Variablen","bold":true}]

# Spielern im Umkreis von 15 Blöcken werden 16 Rüstungsständer für die Kanalbaumaschine gegeben.
give @a[distance=..15] minecraft:armor_stand{EigKanaBM.1Alle:true,display:{Name:'{"text":"Kanalbaumaschine","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:["EtiKanaBM.1Alle","EtiKanaBM.1Entfernen","EtiKanaBM.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 für den Kanal.
give @a[distance=..15] minecraft:white_concrete{EigKanaBM.1Alle:true} 192
give @a[distance=..15] minecraft:quartz_slab{EigKanaBM.1Alle:true} 256
give @a[distance=..15] minecraft:polished_andesite{EigKanaBM.1Alle:true} 128

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

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

Variante 1: Zyklus-Funktion
Die Zyklus-Funktion prüft, ob der Spieler den Rüstungsständer platziert hat und ruft abhängig von der Situation die Erstellen- oder Entfernen-Funktion auf. Ebenfalls wird von hier die Ausrichtungs-Funktion und die Material-Funktion aktiviert.

Editor Icon.png kanalbaumaschine: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=EtiKanaBM.1Baumaschine] if entity @e[distance=..2,type=minecraft:fishing_bobber] run function kanalbaumaschine:v1entfernen
execute at @e[type=minecraft:armor_stand,tag=EtiKanaBM.1Halter,nbt=!{Passengers:[{}]}] at @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.1Baumaschine,sort=nearest,limit=1] run function kanalbaumaschine: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=EtiKanaBM.1Erstellen] at @s unless entity @e[distance=..20,type=minecraft:armor_stand,tag=EtiKanaBM.1Baumaschine] align y run function kanalbaumaschine:v1erstellen
execute as @e[type=minecraft:armor_stand,tag=EtiKanaBM.1Erstellen] at @s if entity @e[distance=..20,type=minecraft:armor_stand,tag=EtiKanaBM.1Baumaschine] run function kanalbaumaschine:v1entfernen

# Von der Kanalbaumaschine 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=EtiKanaBM.1Baumaschine] at @s unless entity @e[distance=2..20,type=minecraft:armor_stand,tag=EtiKanaBM.1Baumaschine] as @p[distance=..10,gamemode=!spectator,tag=EtiKanaBM.1SpielerAngel,scores={PZKanaBM.1Wert=11}] rotated ~180 0 run function kanalbaumaschine:v1material
execute at @e[type=minecraft:armor_stand,tag=EtiKanaBM.1Baumaschine] if entity @e[distance=2..20,type=minecraft:armor_stand,tag=EtiKanaBM.1Baumaschine] run tellraw @p[distance=..10,gamemode=!spectator,tag=EtiKanaBM.1SpielerAngel,scores={PZKanaBM.1Wert=11}] ["Kanalbaumaschine.1: ",{"text":"Es befindet sich eine weitere Kanalbaumaschine in der Nähe, daher wurde der Bauvorgang abgebrochen. Entferne eine Kanalbaumaschine 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=EtiKanaBM.1Baumaschine] at @s if entity @p[distance=..10,gamemode=!spectator] rotated ~ 0 run function kanalbaumaschine: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=EtiKanaBM.1Baumaschine] run scoreboard players add @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.1Tempomat,name="wahr",sort=nearest,limit=1] PZKanaBM.1Wert 1
execute at @e[type=minecraft:armor_stand,tag=EtiKanaBM.1Baumaschine] run scoreboard players set @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.1Tempomat,name="wahr",scores={PZKanaBM.1Wert=4..},sort=nearest,limit=1] PZKanaBM.1Wert 0
execute at @e[type=minecraft:armor_stand,tag=EtiKanaBM.1Baumaschine] at @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.1Tempomat,name="wahr",scores={PZKanaBM.1Wert=1},sort=nearest,limit=1] run scoreboard players set @p[distance=..10,gamemode=!spectator] PZKanaBM.1Wert 11

Variante 1: Erstellen-Funktion
Die Erstellen-Funktion funktioniert den platzierten Rüstungsständer in die Kanalbaumaschine um und erstellt weitere unsichtbare Rüstungsständer die in ihrem Kopfslot alle passenden Blöcke liegen haben, die im Kanal verbaut werden.

Editor Icon.png kanalbaumaschine:v1erstellen.mcfunction
# Die Etiketten werden ausgetauscht, um kenntlich zu machen, dass der platzierte Rüstungsständer nun eine Baumaschine ist.
tag @s remove EtiKanaBM.1Erstellen
tag @s add EtiKanaBM.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{EigKanaBM.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,Tags:["EtiKanaBM.1Alle","EtiKanaBM.1Entfernen","EtiKanaBM.1Wasser"],ArmorItems:[{},{},{},{id:"minecraft:water_bucket",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiKanaBM.1Alle","EtiKanaBM.1Entfernen","EtiKanaBM.1Mitte","EtiKanaBM.1Kanalbett"],ArmorItems:[{},{},{},{id:"minecraft:white_concrete",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiKanaBM.1Alle","EtiKanaBM.1Entfernen","EtiKanaBM.1Rechts1","EtiKanaBM.1Kanalbett"],ArmorItems:[{},{},{},{id:"minecraft:white_concrete",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiKanaBM.1Alle","EtiKanaBM.1Entfernen","EtiKanaBM.1Links1","EtiKanaBM.1Kanalbett"],ArmorItems:[{},{},{},{id:"minecraft:white_concrete",Count:1b}]}

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

summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiKanaBM.1Alle","EtiKanaBM.1Entfernen","EtiKanaBM.1Spur","EtiKanaBM.1Rechts4","EtiKanaBM.1Kanalrand"],ArmorItems:[{},{},{},{id:"minecraft:polished_andesite",Count:1b}]}
summon minecraft:armor_stand ~ ~ ~ {Invisible:true,Small:true,NoGravity:true,Marker:true,Tags:["EtiKanaBM.1Alle","EtiKanaBM.1Entfernen","EtiKanaBM.1Spur","EtiKanaBM.1Links4","EtiKanaBM.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:["EtiKanaBM.1Alle","EtiKanaBM.1Entfernen","EtiKanaBM.1Halter"],Passengers:[{id:"minecraft:armor_stand",Small:true,NoGravity:true,Invisible:true,CustomName:'{"text":"falsch","color":"red","bold":true}',Tags:["EtiKanaBM.1Alle","EtiKanaBM.1Entfernen","EtiKanaBM.1Zweierspur"],Rotation:[90.0f,0.0f],Passengers:[{id:"minecraft:minecart",NoGravity:true,Invulnerable:true,Tags:["EtiKanaBM.1Alle","EtiKanaBM.1Entfernen","EtiKanaBM.1Sitz"] } ] },{id:"minecraft:armor_stand",Small:true,NoGravity:true,Invisible:true,CustomName:'{"text":"Geradeaus","color":"aqua","bold":true}',Tags:["EtiKanaBM.1Alle","EtiKanaBM.1Entfernen","EtiKanaBM.1Neigung"]},{id:"minecraft:armor_stand",Small:true,NoGravity:true,Invisible:true,CustomName:'{"text":"wahr","color":"green","bold":true}',Tags:["EtiKanaBM.1Alle","EtiKanaBM.1Entfernen","EtiKanaBM.1Raster"]},{id:"minecraft:armor_stand",Small:true,NoGravity:true,Invisible:true,CustomName:'{"text":"falsch","color":"red","bold":true}',Tags:["EtiKanaBM.1Alle","EtiKanaBM.1Entfernen","EtiKanaBM.1Tempomat"] } ] }

Variante 1: Entfernen-Funktion
Die Entfernen-Funktion erzeugt einen Drop an der alten Position der Kanalbaumaschine und löscht anschließend diese und die Angel vom Spieler.

Editor Icon.png kanalbaumaschine:v1entfernen.mcfunction
# Der Rüstungsständer als Drop wird erzeugt.
summon minecraft:item ~ ~ ~ {Item:{id:"minecraft:armor_stand",Count:1b,tag:{EigKanaBM.1Alle:true,display:{Name:'{"text":"Kanalbaumaschine","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:["EtiKanaBM.1Alle","EtiKanaBM.1Entfernen","EtiKanaBM.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=EtiKanaBM.1Erstellen] run clear @p[distance=..25,gamemode=!spectator,nbt={Inventory:[{id:"minecraft:fishing_rod"}]}] minecraft:fishing_rod{EigKanaBM.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=EtiKanaBM.1Erstellen] run kill @e[distance=..10,tag=EtiKanaBM.1Entfernen,sort=nearest,limit=17]
kill @s[tag=EtiKanaBM.1Erstellen]

# Eine Meldung erscheint, damit man weiss dass die Maschine entfernt wurde.
execute unless entity @e[distance=..10,tag=EtiKanaBM.1Erstellen] run tellraw @p[distance=..10,gamemode=!spectator] ["Kanalbaumaschine.1: ",{"text":"Die Kanalbaumaschine 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 zuerst ob der Spieler überhaupt genug Material in seinem Inventar bei sich hat. Nur dann wird das passende Material abgezogen um den entsprechenden Kanal bauen zu können.

Editor Icon.png kanalbaumaschine:v1material.mcfunction
# Zuerst wird die Anzahl der benötigten Blöcke ermittelt, in dem sie in die Variablen gespeichert werden.
execute store result score VarKanaBM.1Beton PZKanaBM.1Wert run clear @s minecraft:white_concrete 0
execute store result score VarKanaBM.1Stufe PZKanaBM.1Wert run clear @s minecraft:quartz_slab 0
execute store result score VarKanaBM.1Andesit PZKanaBM.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 VarKanaBM.1Beton PZKanaBM.1Wert matches 3.. if score VarKanaBM.1Stufe PZKanaBM.1Wert matches 4.. if score VarKanaBM.1Andesit PZKanaBM.1Wert matches 2.. run tag @s add EtiKanaBM.1Material
execute if entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.1Zweierspur,name="wahr",sort=nearest,limit=1] unless score VarKanaBM.1Beton PZKanaBM.1Wert matches 7.. run tag @s[tag=EtiKanaBM.1Material] remove EtiKanaBM.1Material

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

# Für die Zweierspur wird weiteres Material abgezogen.
execute if entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.1Zweierspur,name="wahr",sort=nearest,limit=1] run clear @s[tag=EtiKanaBM.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=EtiKanaBM.1Material] as @e[type=minecraft:armor_stand,tag=EtiKanaBM.1Baumaschine,sort=nearest,limit=1] rotated ~ 0 run function kanalbaumaschine:v1kanal
tellraw @s[tag=!EtiKanaBM.1Material] ["Kanalbaumaschine.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=!EtiKanaBM.1Material] run data merge entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.1Tempomat,name="wahr",sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"red","text":"falsch"}'}

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

Variante 1: Kanal-Funktion
Die Kanal-Funktion erstellt den Kanal an der Position der Kanalbaumaschine und sorgt dafür, dass eine gestrichelte Linie erzeugt wird, falls die entsprechende Option dafür aktiviert wurde.

Editor Icon.png kanalbaumaschine: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=EtiKanaBM.1Kanalbett,sort=nearest,limit=3] run fill ^4 ^ ^2 ^-4 ^4 ^3 minecraft:glass replace #kanalbaumaschine:v1bloecke
execute positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.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=EtiKanaBM.1Neigung,name=!"Geradeaus",sort=nearest,limit=1] positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.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=EtiKanaBM.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=EtiKanaBM.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=EtiKanaBM.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=EtiKanaBM.1Neigung,name=!"Geradeaus",sort=nearest,limit=1] positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.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=EtiKanaBM.1Zweierspur,name="wahr",sort=nearest,limit=1] positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.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=EtiKanaBM.1Zweierspur,name="wahr",sort=nearest,limit=1] positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.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=EtiKanaBM.1Neigung,name=!"Geradeaus",sort=nearest,limit=1] if entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.1Zweierspur,name="wahr",sort=nearest,limit=1] positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.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=EtiKanaBM.1Kanalufer,sort=nearest,limit=4] run setblock ~ ~ ~ minecraft:quartz_slab replace
execute positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.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=EtiKanaBM.1Zweierspur,name="wahr",sort=nearest,limit=1] run scoreboard players add @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.1Wasser,sort=nearest,limit=1] PZKanaBM.1Wert 1
execute if entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.1Zweierspur,name="wahr",sort=nearest,limit=1] positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.1Wasser,scores={PZKanaBM.1Wert=2..},sort=nearest,limit=1] run setblock ~ ~1 ~ minecraft:quartz_slab replace
execute if entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.1Zweierspur,name="wahr",sort=nearest,limit=1] run scoreboard players set @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.1Wasser,scores={PZKanaBM.1Wert=3..},sort=nearest,limit=1] PZKanaBM.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=EtiKanaBM.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=EtiKanaBM.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=EtiKanaBM.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=EtiKanaBM.1Neigung,name="Unten",sort=nearest,limit=1] at @s run teleport @s ~ ~-1 ~ ~ 0

Variante 1: Ausrichtungs-Funktion
Die Ausrichtungs-Funktion sorgt dafür, wenn der Spieler in der Lore sitzt und die Angel ausgewählt hat, dass die Kanalbaumaschine immer der Blickrichtung des Spielers folgt oder nach Einstellung im Raster auf die vier Himmelsrichtungen ausgerichtet ist.

Editor Icon.png kanalbaumaschine:v1ausrichtung.mcfunction
# Die Etiketten für das Sitzen in der Lore und das Auswählen der Angel in der Schnelleiste werdem entfernt.
tag @p[distance=..15,tag=EtiKanaBM.1SpielerSitzt] remove EtiKanaBM.1SpielerSitzt
tag @p[distance=..15,tag=EtiKanaBM.1SpielerAngel] remove EtiKanaBM.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:["EtiKanaBM.1Halter"] } } }] add EtiKanaBM.1SpielerSitzt
tag @p[distance=..10,tag=EtiKanaBM.1SpielerSitzt,nbt={SelectedItem:{id:"minecraft:fishing_rod",tag:{EigKanaBM.1Alle:true} } }] add EtiKanaBM.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=!EtiKanaBM.1SpielerAngel,tag=EtiKanaBM.1Nachricht] run data merge entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.1Tempomat,name="wahr",sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"red","text":"falsch"}'}
tag @p[distance=..10,tag=!EtiKanaBM.1SpielerAngel,tag=EtiKanaBM.1Nachricht] remove EtiKanaBM.1Nachricht
execute as @p[distance=..10,tag=EtiKanaBM.1SpielerAngel] run function kanalbaumaschine: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=EtiKanaBM.1SpielerSitzt,tag=EtiKanaBM.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=EtiKanaBM.1Raster,name="wahr",sort=nearest,limit=1] run tag @s add EtiKanaBM.1RasterAusrichten
teleport @s[tag=EtiKanaBM.1RasterAusrichten,y_rotation=135..-134.9] ~ ~ ~ 180 0
teleport @s[tag=EtiKanaBM.1RasterAusrichten,y_rotation=-135..-44.9] ~ ~ ~ -90 0
teleport @s[tag=EtiKanaBM.1RasterAusrichten,y_rotation=-45..44.9] ~ ~ ~ 0 0
teleport @s[tag=EtiKanaBM.1RasterAusrichten,y_rotation=45..134.9] ~ ~ ~ 90 0
tag @s[tag=EtiKanaBM.1RasterAusrichten] remove EtiKanaBM.1RasterAusrichten

# Die Rüstungsständer für das Anzeigen des Materials werden entsprechend dem Kanal positioniert.
teleport @e[type=minecraft:armor_stand,tag=EtiKanaBM.1Wasser,sort=nearest,limit=1] ^ ^0.5 ^4 facing entity @p[distance=..10,gamemode=!spectator] feet
teleport @e[type=minecraft:armor_stand,tag=EtiKanaBM.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 kanalbaumaschine: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=EtiKanaBM.1Halter,sort=nearest,limit=1] ^ ^ ^3 facing entity @p[distance=..10,gamemode=!spectator] feet

Variante 1: Ausrichtungs-Spur-Funktion
Die Ausrichtungs-Spur-Funktion richtet die Kanalbaumaschine für eine Spur aus. Falls die Zweierspur aktiviert ist, wird die Baumaschine entsprechenden weiter angepasst.

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

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

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

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

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

Variante 1: Auslöser-Funktion
Die Auslöser-Funktion zeigt im Chat die Optionen an, die der Spieler mit der Kanalbaumaschine hat und ermöglicht es per Klick auf die Einstellungen, diese zu ändern, in dem beim Klicken bestimmte Werte vergeben werden können, die anschließend ausgelesen werden können.

Editor Icon.png kanalbaumaschine:v1ausloeser.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={PZKanaBM.1Wert=1}] run data merge entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.1Neigung,sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"green","text":"Oben"}'}
execute if entity @s[scores={PZKanaBM.1Wert=2}] run data merge entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.1Neigung,sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"aqua","text":"Geradeaus"}'}
execute if entity @s[scores={PZKanaBM.1Wert=3}] run data merge entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.1Neigung,sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"red","text":"Unten"}'}
execute if entity @s[scores={PZKanaBM.1Wert=4}] run data merge entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.1Neigung,sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"dark_purple","text":"Automatisch"}'}

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

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

execute if entity @s[scores={PZKanaBM.1Wert=9}] run data merge entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.1Zweierspur,sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"green","text":"wahr"}'}
execute if entity @s[scores={PZKanaBM.1Wert=10}] run data merge entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.1Zweierspur,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. Allerdings wird zuvor geprüft ob er nicht gerade die Option "Tempomat" angeklickt hat und ob diese Option aktiuviert wird ist, nur dann wird die Nachricht nicht ausgegeben, damit beim Fahren mit dem Tempomat eine Nachrichtenflut ausgelöst wird.
execute unless entity @s[scores={PZKanaBM.1Wert=7}] if entity @e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.1Tempomat,name="wahr",sort=nearest,limit=1] run tag @s add EtiKanaBM.1KeineNachricht
execute unless entity @s[scores={PZKanaBM.1Wert=0},tag=EtiKanaBM.1Nachricht] run tellraw @s[tag=!EtiKanaBM.1KeineNachricht] ["Kanalbaumaschine.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 PZKanaBM.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 PZKanaBM.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 PZKanaBM.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 PZKanaBM.1Wert set 4"} },{"text":"\nneigung == ","bold":true},{"entity":"@e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.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 PZKanaBM.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 PZKanaBM.1Wert set 6"} },{"text":") == ","bold":true},{"entity":"@e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.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 PZKanaBM.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 PZKanaBM.1Wert set 8"} },{"text":") == ","bold":true},{"entity":"@e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.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 PZKanaBM.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 PZKanaBM.1Wert set 10"} },{"text":") == ","bold":true},{"entity":"@e[distance=..10,type=minecraft:armor_stand,tag=EtiKanaBM.1Zweierspur,sort=nearest,limit=1]","nbt":"CustomName","interpret":true},{"text":"\nfahren(neigung,zweierspur)","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Kanalbaumaschine fahren"} },"clickEvent":{"action":"run_command","value":"/trigger PZKanaBM.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={PZKanaBM.1Wert=0}] run scoreboard players enable @s PZKanaBM.1Wert
execute unless entity @s[scores={PZKanaBM.1Wert=0}] run scoreboard players set @s PZKanaBM.1Wert 0

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

Variante 1: Stopp-Funktion
Die Stopp-Funktion löscht das Punkte-Ziel, die Etiketten und den Stock wieder.

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

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

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

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

# Chunks werden entladen.
forceload remove ~ ~

Variante 2[Bearbeiten | Quelltext bearbeiten]

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

Mit Hilfe dieser Kanalbaumaschine kann man einspurige oder zweispurige Kanäle für Boote oder Schiffe errichten lassen. Die Kanäle werden erzeugt, ohne das man dafür Material benötigt. Man wählt eine Angel aus, die man dafür erhalten hat und man hält die Schleich-Taste gedrückt, dabei wird die Kanallänge hochgezählt und ab dem Punkt wo man los lässt, steht die Länge fest und der Kanal wird in diesem Augenblick erstellt. Solange man die Shift-Taste noch nicht losgelassen hat, kann man den Bau des Kanals noch abbrechen. Dazu wirft man den Köder aus oder wählt die Angel nicht mehr aus. Wählt man die Angel aus, erscheint auch ein Optionen-Menü im Chat in dem man den Kanaltyp bestimmen kann.

Einschalten
  • Befehl 2.1 Auf dem Wiederhol-Befehlsblock befindet sich ein Hebel. Legt man ihn um, wird zuerst der Befehlsblock mit der Start-Funktion kanalbaumaschine:v2start aktiviert.
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:



Variante 2: Start-Funktion
Die Start-Funktion erstellt die nötigen Punkte-Ziele und gibt dem Spieler eine Angel, mit der er die Kanallänge und den Kanal selbst erstellen kann.

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

# Es wird eine globale Variable angelegt, die jeder Spieler später ändern kann.
scoreboard players set VarKanaBM.2Laenge PZKanaBM.2Laen 64

# 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{EigKanaBM.2Angel:true,Enchantments:[{id:-1}],display:{Name:'{"text":"Kanalbaumaschine"}',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 Kanalbaumaschine aktiviert werden kann.
tellraw @a[distance=..15] ["Kanalbaumaschine.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 die Angel ausgewählt hat und die Shift-Taste dabei gedrückt hält. Wenn er lange Schleicht wird ein Zähler hochgezählt und über diesen wird die Länge des Kanals bestimmt, sobald er los lässt wird die Ausrichtungs-Funktion geladen und über sie der Kanal erstellt. Nur wenn die Angel ausgewählt ist, wird die Auslöser-Funktion aktiviert und nur dann kann man die Optionen einstellen.

Editor Icon.png kanalbaumaschine: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:{EigKanaBM.2Angel:true} } }] add EtiKanaBM.2Ausgewaehlt

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

# Wenn die Angel nicht mehr ausgewählt wird, wird die Nachricht über der Schnellleiste geleert.
title @a[tag=!EtiKanaBM.2Ausgewaehlt,tag=EtiKanaBM.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 Kanalbau abzubrechen.
tag @a[tag=!EtiKanaBM.2Ausgewaehlt,tag=EtiKanaBM.2Auswahl,tag=EtiKanaBM.2Shift] add EtiKanaBM.2Abbrechen
execute as @a[tag=EtiKanaBM.2Auswahl,tag=EtiKanaBM.2Shift] at @s if entity @e[distance=..5,type=minecraft:fishing_bobber] run tag @s add EtiKanaBM.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=EtiKanaBM.2Ausgewaehlt,tag=!EtiKanaBM.2Auswahl] add EtiKanaBM.2Auswahl
tag @a[tag=!EtiKanaBM.2Ausgewaehlt,tag=EtiKanaBM.2Auswahl] remove EtiKanaBM.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=EtiKanaBM.2AufBoden,tag=EtiKanaBM.2Auswahl,tag=!EtiKanaBM.2Shift,scores={PZKanaBM.2Schl=1..}] ["Kanalbaumaschine.2:\n",{"text":"Shiftklick == ","bold":true},{"text":"wahr","color":"green","bold":true}]
execute as @a[tag=EtiKanaBM.2AufBoden,tag=EtiKanaBM.2Auswahl,tag=EtiKanaBM.2Shift,tag=!EtiKanaBM.2Abbrechen,scores={PZKanaBM.2Schl=0,PZKanaBM.2Laen=1..}] run tellraw @s ["Kanalbaumaschine.2:\n",{"text":"Shiftklick == ","bold":true},{"text":"falsch","color":"red","bold":true},"\n",{"text":"Kanal-Länge == ","bold":true},{"score":{"name":"@s","objective":"PZKanaBM.2Laen"},"color":"dark_purple","bold":true}]
tellraw @a[tag=EtiKanaBM.2AufBoden,tag=EtiKanaBM.2Auswahl,tag=EtiKanaBM.2Shift,tag=EtiKanaBM.2Abbrechen,scores={PZKanaBM.2Schl=0}] ["Kanalbaumaschine.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=EtiKanaBM.2AufBoden,tag=EtiKanaBM.2Auswahl,tag=EtiKanaBM.2Shift,tag=!EtiKanaBM.2Abbrechen,scores={PZKanaBM.2Schl=0,PZKanaBM.2Laen=1..}] at @s rotated ~ 0 positioned ^ ^ ^1 run function kanalbaumaschine: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=EtiKanaBM.2Auswahl,tag=EtiKanaBM.2Shift,tag=EtiKanaBM.2Abbrechen,scores={PZKanaBM.2Schl=0}] remove EtiKanaBM.2Abbrechen
scoreboard players set @a[tag=EtiKanaBM.2Auswahl,tag=EtiKanaBM.2Shift,scores={PZKanaBM.2Schl=0}] PZKanaBM.2Laen 0

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

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

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

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

Variante 2: Auslöser-Funktion
Die Auslöser-Funktion zeigt dem Spieler welche Optionen für den Kanalbau hat und wie es aktuell eingestellt ist. Man kann mit der Maus auf die einzelnen Schaltflächen klicken um die Einstellungen zu ändern.

Editor Icon.png kanalbaumaschine: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=!EtiKanaBM.2Zweierspur,scores={PZKanaBM.2Ausl=1}] add EtiKanaBM.2Zweierspur
tag @s[tag=EtiKanaBM.2Zweierspur,scores={PZKanaBM.2Ausl=-1}] remove EtiKanaBM.2Zweierspur

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

# Der Spieler erhält ein Optionen-Menü in dem die spezifischen Werte angeklickt werden können, damit lassen sich die Zweierspur, der Schiffskanal und die Länge einstellen.
tellraw @s ["Kanalbaumaschine.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 PZKanaBM.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 PZKanaBM.2Ausl set -1"} }]
tellraw @s[tag=!EtiKanaBM.2Zweierspur] ["",{"text":"zweierspur == ","bold":true},{"text":"falsch","color":"red","bold":true}]
tellraw @s[tag=EtiKanaBM.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 PZKanaBM.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 PZKanaBM.2Ausl set -2"} }]
tellraw @s[tag=!EtiKanaBM.2Schiffskanal] ["",{"text":"schiffkanal == ","bold":true},{"text":"falsch","color":"red","bold":true}]
tellraw @s[tag=EtiKanaBM.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 PZKanaBM.2Ausl set 3"} },"\n",{"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 PZKanaBM.2Ausl set -3"} },"\n",{"text":"maxlänge == ","bold":true},{"score":{"name":"VarKanaBM.2Laenge","objective":"PZKanaBM.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 Erlaubnis, die Auslöser auszulösen.
scoreboard players enable @s PZKanaBM.2Ausl
scoreboard players set @s PZKanaBM.2Ausl 0

Variante 2: Ausrichtungs-Funktion
Die Ausrichtungs-Funktion richtet die Blickrichtung in eine der vier Himmelsrichtungen aus, sodass der Kanal richtig erstellt werden kann.

Editor Icon.png kanalbaumaschine: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 PZKanaBM.2Schl = @s PZKanaBM.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 kanalbaumaschine:v2kanal
execute if entity @s[y_rotation=-135..-45] rotated -90 0 run function kanalbaumaschine:v2kanal
execute if entity @s[y_rotation=-45..45] rotated 0 0 run function kanalbaumaschine:v2kanal
execute if entity @s[y_rotation=45..135] rotated 90 0 run function kanalbaumaschine:v2kanal

Variante 2: Kanal-Funktion
Die Kanal-Funktion baut genau eine Schicht des Kanals. Sie ruft sich um einen Block versetzt nochmals auf, wenn die eingestellte Kanallänge noch nicht erreicht ist. Hierbei wird der Kanal je nach Einstellung gebaut.

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

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

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

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

# 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={PZKanaBM.2Laen=1}] PZKanaBM.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=EtiKanaBM.2Zweierspur] run scoreboard players add VarKanaBM.2StrichLinie PZKanaBM.2Schl 1
execute unless score @s[tag=EtiKanaBM.2Zweierspur] PZKanaBM.2Schl = @s PZKanaBM.2Laen run setblock ~ ~1 ~ minecraft:quartz_slab[waterlogged=true] replace

execute if entity @s[tag=EtiKanaBM.2Zweierspur] if score VarKanaBM.2StrichLinie PZKanaBM.2Schl matches 3.. run setblock ~ ~1 ~ minecraft:water replace
execute if entity @s[tag=EtiKanaBM.2Zweierspur] if score VarKanaBM.2StrichLinie PZKanaBM.2Schl matches 3.. run scoreboard players set VarKanaBM.2StrichLinie PZKanaBM.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=!EtiKanaBM.2Schiffskanal] PZKanaBM.2Schl = @s PZKanaBM.2Laen run fill ^3 ^1 ^ ^-3 ^1 ^ minecraft:quartz_slab replace minecraft:water

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

execute if score @s[tag=EtiKanaBM.2Zweierspur,tag=EtiKanaBM.2Schiffskanal] PZKanaBM.2Schl = @s PZKanaBM.2Laen run fill ^15 ^1 ^ ^-15 ^3 ^ minecraft:quartz_block replace minecraft:water
execute if score @s[tag=EtiKanaBM.2Zweierspur,tag=EtiKanaBM.2Schiffskanal] PZKanaBM.2Schl = @s PZKanaBM.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 PZKanaBM.2Laen 1
execute if score @s PZKanaBM.2Laen matches 1.. positioned ^ ^ ^1 run function kanalbaumaschine:v2kanal

Variante 2: Stopp-Funktion
Die Stopp-Funktion löscht die Angel als Drop und als Gegenstand im Inventar wieder. Die Etiketten werden ebenfalls gelöscht. Die Punkte-Ziele werden gelöscht.

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

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

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

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

# Chunks werden entladen.
forceload remove ~ ~


Disambig color.svg