Technik Wiki
Registrieren
Advertisement
Gruppe: Grid Sattel
Straßenverkehrsanlagen

Grid Roter Sand blass mit Mechaniken

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

Die Straßenbaumaschine nimmt einem viel Arbeit ab, wenn man Straßen über längere Distanzen errichten möchte. Mit der Baumaschine können gerade Straßen in alle vier Himmelsrichtungen errichtet werden. Je nach Variante muss man das Baumaterial der Straßen bereits vor Ort im Inventar bei sich tragen um diese automatisch errichten zu können. Die Straßen können einspurig sein, aber es lassen sich auch beliebig spurige Straßen erzeugen. Die Baumaschine ist für gut passierbares Gelände gedacht, für Berge oder Täler ist die Straßenbrücken- und -tunnelbaumaschine zu verwenden. Die so platzierten Straßen können für Reittiere, Automobile benutzt werden oder einfach für die Verzierung.

Variante 1[]

Straßenbaumaschine (Befehle) Bild 1.1 Straßenbaumaschine (Befehle) Bild 1.2 Straßenbaumaschine (Befehle) Bild 1.3 Straßenbaumaschine (Befehle) Bild 1.4

Mit dieser Straßenbaumaschine lassen sich einspurige und zweispurige Straßen errichten. Das Material dafür muss man im Inventar tragen. Beim Einschalten, erhält man die Straßenbaumaschine in Form eines Rüstungsständers ins Inventar. Platziert man diesen, wird die Baumaschine erzeugt, die aus mehreren Teilen besteht und man erhält eine besondere Angel. So befindet in der Mitte eine Lore in die man einsteigen kann und hinter dieser deuten kleine schwebende Blöcke an, wo die Straße platziert wird. Steigt man in die Lore ein und wählt die Angel in der Schnellleiste aus, öffnet sich im Chat-Bereich ein Menü. Dort lässt sich die Baumaschine wie man es wünscht umstellen. Dort gibt es auch eine Option die Baumaschine zu fahren, sobald sie losfährt, beginnt sie die Straße zu platzieren. Wenn man kein Material mehr bei sich hat, wird sie nicht mehr weiter fahren können. Wirft man den Angel-Köder auf die Baumaschine, so wird sie entfernt, dabei erhält man den Rüstungsständer für das Platzieren dieser wieder zurück.

Einschalten
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:


Datenpaket


Variante 1: Start-Funktion
Die Start-Funktion erstellt das Punkte-Ziel das für das Rechnen verwendet wird. Sie gibt dem Spieler die Baumaschine ins Inventar und ein gewisses Startmaterial, damit man damit Straßen bauen kann.

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

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

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

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

# Der Chunk wird aktiviert.
forceload add ~ ~

Variante 1: Zyklus-Funktion
Die Zyklus-Funktion sorgt dafür, dass die Baumaschine erstellt oder gelöscht werden kann. sie sorgt dafür, dass die Auslöser-Funktion geladen wird, die das Chat-Menü ermöglicht und lässt die Baumaschine automatisch weiter fahren, wenn man diese Option gewählt hat.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Variante 1: Erstellen-Funktion
Die Erstellen-Funktion gibt dem Spieler die Angelrute und erzeugt die Baumaschine, die aus einer Lore und vielen unsichtbaren Rüstungsständern besteht die den entsprechenden Straßenblock im Kopfslot tragen.

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

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

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

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

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

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

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

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

Variante 1: Entfernen-Funktion
Die Entfernen-Funktion löscht die gesamte Baumaschine wieder und gibt dem Spieler den Rüstungsständer zurück, mit der eine Baumaschine erzeugen kann.

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

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

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

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

Variante 1: Auslöser-Funktion
Die Auslöser-Funktion gibt dem Spieler alle Optionen für die Baumaschine in Form eines Chat-Menüs. In welchen man die Neigung einstellen kann, ob die Baumaschine gerade aus fahren soll oder schräg nach oben oder unten. ebenso gibt es auch die Option Automatisch die Neigung festzulegen. Diese sorgt dafür dass die Baumaschine anhand des Geländes sich die Neigung selbst aussucht. Daneben gibt es die Option für das Raster, dies hat zur Folge ob die Baumaschine nur in die vier Himmelsrichtungen ausrichtbar ist, oder ob sie beliebige Winkel akzeptiert. Darunter gibt es die Option für einen Tempomat, der die Baumaschine automatisch nach vorne fahren lässt. Danach gibt es noch eine Option, die Straße auf zwei Spuren zu erweitern und als letztes gibt es die Möglichkeit die Baumaschine genau einen Block nach vorne zu fahren.

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

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

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

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

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

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

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

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

Variante 1: Material-Funktion
Die Material-Funktion zeiht aus dem Inventar des Spielers die Materialen raus und ruft nur, wenn es erfolgreich war, die Spur-Funktion auf.

Editor Icon strassenbaumaschine:v1material.mcfunction
# Die Baumaterialien werden abgefragt und deren Werte werden in Variablen gespeichert.
execute store result score VarStraBM.1Beton PZStraBM.1Wert run clear @s minecraft:gray_concrete 0
execute store result score VarStraBM.1Quarz PZStraBM.1Wert run clear @s minecraft:quartz_block 0
execute store result score VarStraBM.1Stufe PZStraBM.1Wert run clear @s minecraft:stone_brick_slab 0

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

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

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

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

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

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

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

Variante 1: Spur-Funktion
Die Spur-Funktion platziert, abhängig ob man eine Spur oder zwei Spuren ausgewählt hat, die entsprechende Spur.

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

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

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

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

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

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

# Die restliche Spur wird platziert.
execute positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiStraBM.1SpurRand,sort=nearest,limit=2] run setblock ~ ~ ~ minecraft:quartz_block replace
execute positioned as @e[distance=..10,type=minecraft:armor_stand,tag=EtiStraBM.1GehSteig,sort=nearest,limit=4] run setblock ~ ~ ~ minecraft:stone_brick_slab replace

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

Variante 1: Ausrichtungs-Funktion
Die Ausrichtungs-Funktion lässt den Markierer der Baumaschine nur in die vier Himmelsrichtungen schauen, falls die Option nicht anders ausgewählt ist.

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

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

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

Variante 1: Ausrichtungs-Spur-Funktion
Die Ausrichtungs-Spur-Funktion richtet die komplette Baumaschine nach der Rotation des Markierers aus.

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

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

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

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

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

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

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

Variante 1: Stopp-Funktion
Die Stopp-Funktion löscht das Punkte-Ziel wieder und alle Gegenstände aus dem Inventar und auf dem Boden werden gelöscht. Ebenso wird auch das eventuell noch vorhandene Etikett entfernt.

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

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

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

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

# Der Chunk wird deaktiviert.
forceload remove ~ ~

Variante 2[]

Straßenbaumaschine (Befehle) Bild 2.1 Straßenbaumaschine (Befehle) Bild 2.2 Straßenbaumaschine (Befehle) Bild 2.3 Straßenbaumaschine (Befehle) Bild 2.4

Diese Straßenbaumaschine gibt Spielern die Möglichkeit über eine Angelrute die sie in der Schnellleiste auswählen müssen die Möglichkeit Straßen mit beliebig vielen Spuren zu platzieren. Dabei wird kein Material des Spielers benötigt. Beim Einschalten, erhält der Spieler die Angelrute und wenn er sie in der Schnellleiste auswählt, öffnet sich im Chat ein Menü. In diesem werden ihm mehrere Optionen für die Straßen angezeigt. Solange er schleicht und dabei die Angelrute ausgewählt hat, läuft ein Zähler hoch. Diese Zahl entspricht der Länge der Straße in Blöcken. Lässt er die Schleichen-Taste los, wird die Straße in die Richtung in die der Spieler zu diesem Zeitpunkt schaut, platziert. Möchte man mittendrin den Vorgang abbrechen, so wirft man einfach den Angelköder aus, damit wird keine Straße platziert.

Einschalten
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:



Datenpaket


Variante 2: Start-Funktion
Die Start-Funktion erstellt drei Punkte-Ziele die für das Rechnen benötigt werden. Ebenso erhalten die Spieler die Angelrute um damit die Straßen zu bauen.

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

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

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

# Eine kurze Anleitung, wie die Straßenbaumaschine aktiviert werden kann.
tellraw @a[distance=..15] ["Straßenbaumaschine.2:\n",{"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 ruft die Auslöser-Funktion auf, die dem Spieler im Chat die Optionen anzeigt, ebenso wird hierdurch die Köder-Abbrechen-Möglichkeit realisiert und wenn der Spieler beim Schleichen loslässt wird die Ausrichtungs-Funktion aufgerufen die im weiteren verlauf für den Bau der Straße verwendet wird.

Editor Icon strassenbaumaschine:v2zyklus.mcfunction
# Wenn der Spieler die Angel mit der gleichnamigen Eigenschaft ausgewählt hat, erhält er zur Erkennung ein Etikett.
tag @a[gamemode=!spectator,nbt={SelectedItem:{tag:{EigStraBM.2Angel:true} } }] add EtiStraBM.2Ausgewaehlt

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

# Wenn die Angel nicht mehr ausgewählt wird, wird die Nachricht über der Schnellleiste geleert.
title @a[tag=!EtiStraBM.2Ausgewaehlt,tag=EtiStraBM.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 Straßenbau abzubrechen.
tag @a[tag=!EtiStraBM.2Ausgewaehlt,tag=EtiStraBM.2Auswahl,tag=EtiStraBM.2Shift] add EtiStraBM.2Abbrechen
execute as @a[tag=EtiStraBM.2Auswahl,tag=EtiStraBM.2Shift] at @s if entity @e[distance=..5,type=minecraft:fishing_bobber] run tag @s add EtiStraBM.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=EtiStraBM.2Ausgewaehlt,tag=!EtiStraBM.2Auswahl] add EtiStraBM.2Auswahl
tag @a[tag=!EtiStraBM.2Ausgewaehlt,tag=EtiStraBM.2Auswahl] remove EtiStraBM.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=EtiStraBM.2AufBoden,tag=EtiStraBM.2Auswahl,tag=!EtiStraBM.2Shift,scores={PZStraBM.2Schl=1..}] ["Straßenbaumaschine.2:\n",{"text":"Shiftklick == ","bold":true},{"text":"wahr","color":"green","bold":true}]
execute as @a[tag=EtiStraBM.2AufBoden,tag=EtiStraBM.2Auswahl,tag=EtiStraBM.2Shift,tag=!EtiStraBM.2Abbrechen,scores={PZStraBM.2Schl=0,PZStraBM.2Laen=1..}] run tellraw @s ["Straßenbaumaschine.2:\n",{"text":"Shiftklick == ","bold":true},{"text":"falsch","color":"red","bold":true},"\n",{"text":"Spur-Länge == ","bold":true},{"score":{"name":"@s","objective":"PZStraBM.2Laen"},"color":"dark_purple","bold":true}]
tellraw @a[tag=EtiStraBM.2AufBoden,tag=EtiStraBM.2Auswahl,tag=EtiStraBM.2Shift,tag=EtiStraBM.2Abbrechen,scores={PZStraBM.2Schl=0}] ["Straßenbaumaschine.2:\n",{"text":"Shiftklick == ","bold":true},{"text":"undefiniert","color":"yellow","bold":true},"\n",{"text":"Spur-Länge == ","bold":true},{"text":"0","color":"dark_purple","bold":true}]

# Wenn man auf dem Boden steht, die Angel ausgewählt hat, geschlichen ist und gerade losgelassen hat, so wird die Ausrichtungs-Funktion vom Spieler aus vor ihm zwei Blöcke versetzt aufgerufen.
execute as @a[tag=EtiStraBM.2AufBoden,tag=EtiStraBM.2Auswahl,tag=EtiStraBM.2Shift,tag=!EtiStraBM.2Abbrechen,scores={PZStraBM.2Schl=0,PZStraBM.2Laen=1..}] at @s run function strassenbaumaschine: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=EtiStraBM.2Auswahl,tag=EtiStraBM.2Shift,tag=EtiStraBM.2Abbrechen,scores={PZStraBM.2Schl=0}] remove EtiStraBM.2Abbrechen
scoreboard players set @a[tag=EtiStraBM.2Auswahl,tag=EtiStraBM.2Shift,scores={PZStraBM.2Schl=0}] PZStraBM.2Laen 0

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

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

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

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

Variante 2: Auslöser-Funktion
Die Auslöser-Funktion gibt im Chat dem Spieler die Möglichkeit die Anzahl der Spuren fest zu legen, ob ein Straßenbahngleis dort eingebettet sein soll und wie lang die Straße maximal sein soll.

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

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

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

# Der Spieler erhält ein Optionen-Menü in dem die spezifischen Werte angeklickt werden können, damit lassen sich die Zweierspur, das Straßenbahngleis und die Länge einstellen.
tellraw @s ["Straßenbaumaschine.2:\n",{"text":"spuren = ","bold":true},{"text":"spuren + 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Spuren + 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZStraBM.2Ausl set 1"} },"\n",{"text":"spuren = ","bold":true},{"text":"spuren - 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Spuren - 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZStraBM.2Ausl set -1"} },"\n",{"text":"spuren == ","bold":true},{"score":{"name":"VarStraBM.2Spuren","objective":"PZStraBM.2Laen"},"color":"dark_purple","bold":true},"\n",{"text":"strassengleis = ","bold":true},{"text":"wahr","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Wert wahr"} },"clickEvent":{"action":"run_command","value":"/trigger PZStraBM.2Ausl set 2"} },"\n",{"text":"strassengleis = ","bold":true},{"text":"falsch","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Wert falsch"} },"clickEvent":{"action":"run_command","value":"/trigger PZStraBM.2Ausl set -2"} }]
tellraw @s[tag=!EtiStraBM.2Bahngleis] ["",{"text":"strassengleis == ","bold":true},{"text":"falsch","color":"red","bold":true}]
tellraw @s[tag=EtiStraBM.2Bahngleis] ["",{"text":"strassengleis == ","bold":true},{"text":"wahr","color":"green","bold":true}]

tellraw @s ["",{"text":"maxlänge = ","bold":true},{"text":"maxlänge + 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Länge + 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZStraBM.2Ausl set 3"} },"\n",{"text":"maxlänge = ","bold":true},{"text":"maxlänge - 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Länge - 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZStraBM.2Ausl set -3"} },"\n",{"text":"maxlänge == ","bold":true},{"score":{"name":"VarStraBM.2Laenge","objective":"PZStraBM.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 PZStraBM.2Ausl
scoreboard players set @s PZStraBM.2Ausl 0

Variante 2: Ausrichtung-Funktion
Die Ausrichtung-Funktion sorgt dafür, dass die Straße nur in eine der vier Himmelsrichtungen entlang läuft.

Editor Icon strassenbaumaschine:v2ausrichtung.mcfunction
# Die Variable für die aktuelle Spur wird auf null gesetzt.
scoreboard players set VarStraBM.2Spur PZStraBM.2Laen 0

# Die Blickrichtung des Spielers wird ausgerichtet.
teleport @s[y_rotation=-45.0..44.9] ~ ~ ~ 0 0
teleport @s[y_rotation=45.0..134.9] ~ ~ ~ 90 0
teleport @s[y_rotation=135.0..-134.9] ~ ~ ~ 180 0
teleport @s[y_rotation=-135.0..-44.9] ~ ~ ~ 270 0

# Die Funktion wird von der angepassten Blickrichtung ausgeführt.
execute at @s align xyz positioned ~0.5 ~ ~0.5 positioned ^ ^ ^1 run function strassenbaumaschine:v2spuren

# Der Spieler wird von der Blickrichtung ín den Ursprungszustand zurück versetzt.
teleport @s ~ ~ ~ ~ ~

Variante 2: Spuren-Funktion
Die Spuren-Funktion ruft in bestimmten Abständen die Spur-Funktion auf, so werden auch mehrere Spuren erzeugt.

Editor Icon strassenbaumaschine:v2spuren.mcfunction
# Vor dem Aufruf der Spur-Funktion werden die Variablen vorbereitet.
scoreboard players add VarStraBM.2Spur PZStraBM.2Laen 1
scoreboard players set VarStraBM.2StrichLinie PZStraBM.2Laen 0
scoreboard players operation VarStraBM.2Weite PZStraBM.2Laen = @s PZStraBM.2Laen
function strassenbaumaschine:v2spur

# Falls noch nicht alle Spuren platziert wurden, wird neben der letzten Spur eine weitere platziert.
execute if score VarStraBM.2Spur PZStraBM.2Laen < VarStraBM.2Spuren PZStraBM.2Laen positioned ^-4 ^ ^ run function strassenbaumaschine:v2spuren

Variante 2: Spur-Funktion
Die Spur-Funktion erzeugt eine spur gerade aus, so lange wie die Länge eingestellt wurde.

Editor Icon strassenbaumaschine:v2spur.mcfunction
# Straße wird mit oder ohne Straßenbahngleisen errichtet.
fill ^5 ^1 ^ ^-5 ^9 ^1 minecraft:glass replace #strassenbaumaschine:v2umwelt
fill ^2 ^ ^ ^-2 ^ ^ minecraft:quartz_block replace
fill ^1 ^ ^ ^-1 ^ ^ minecraft:gray_concrete replace
execute if score VarStraBM.2Spur PZStraBM.2Laen matches 1 if entity @s[tag=EtiStraBM.2Bahngleis,y_rotation=-135..135] unless entity @s[y_rotation=-45..45] run setblock ~ ~ ~1 minecraft:stone_brick_stairs[facing=south] replace
execute if score VarStraBM.2Spur PZStraBM.2Laen matches 1 if entity @s[tag=EtiStraBM.2Bahngleis,y_rotation=135..45] unless entity @s[y_rotation=-135..-45] run setblock ~1 ~ ~ minecraft:stone_brick_stairs[facing=east] replace
execute if score VarStraBM.2Spur PZStraBM.2Laen matches 1 if entity @s[tag=EtiStraBM.2Bahngleis,y_rotation=-135..135] unless entity @s[y_rotation=-45..45] run setblock ~ ~ ~-1 minecraft:stone_brick_stairs[facing=north] replace
execute if score VarStraBM.2Spur PZStraBM.2Laen matches 1 if entity @s[tag=EtiStraBM.2Bahngleis,y_rotation=135..45] unless entity @s[y_rotation=-135..-45] run setblock ~-1 ~ ~ minecraft:stone_brick_stairs[facing=west] replace
fill ^4 ^1 ^ ^-4 ^1 ^ minecraft:stone_brick_slab replace
execute if score VarStraBM.2Spur PZStraBM.2Laen matches 2.. run fill ^4 ^1 ^ ^3 ^1 ^ minecraft:air replace
fill ^2 ^1 ^ ^-2 ^1 ^ minecraft:air replace
fill ^4 ^2 ^ ^-4 ^8 ^ minecraft:air replace

# 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 score VarStraBM.2Spur PZStraBM.2Laen matches 2.. run scoreboard players add VarStraBM.2StrichLinie PZStraBM.2Laen 1
execute if score VarStraBM.2Spur PZStraBM.2Laen matches 2.. if score VarStraBM.2StrichLinie PZStraBM.2Laen matches 3.. run setblock ^2 ^ ^ minecraft:gray_concrete replace
execute if score VarStraBM.2Spur PZStraBM.2Laen matches 2.. if score VarStraBM.2StrichLinie PZStraBM.2Laen matches 3.. run scoreboard players set VarStraBM.2StrichLinie PZStraBM.2Laen 0

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

Variante 2: Stopp-Funktion
Die Stopp-Funktion löscht die drei Punkte-Ziele wieder und alle Gegenstände die im Inventar oder auf dem Boden liegen. Alle Etiketten die der Spieler bis jetzt noch besitzen kann, werden entfernt.

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

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

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

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

# Chunks werden entladen.
forceload remove ~ ~


Disambig color
Advertisement