Automobil (Befehle)

Ein **Automobil**, kurz Auto, ist ein selbstfahrendes mobiles Gerät. Es dient zur Beförderung von Spielern. Der Spieler kann das Auto vollständig steuern, sei es durch die Bewegungstasten, die auch für das normale Gehen verwendet werden, wie auch durch eine Benutzer-Oberfläche auf der man jede Einstellung aktivieren kann. Man kann ein Auto über verschiedenste Möglichkeiten realisieren, hier wird jedoch auf objektbasierte Fahrzeuge verzichtet, da diese abhängig der Anzahl eine ziemlich große Last erzeugen, denn man soll mit vielen Autos auf der Welt herumfahren können.

## Variante 1

* Grundmodule
* Befehl
* Befehlssignal
* Grund-Element (Befehle)
* Signal-Element (Befehle)
* Signalleitung (Befehle)
* Straßenverkehrsanlagen
* Straßenstrecke (Mechanik)
 * Taktgeber (Befehle)

* 1 Redstone-Fackel
* 2 Befehlsblock
* 1 Wiederhol-Befehlsblock

Man erhält einen Rüstungsständer ins Inventar, den man platzieren kann um eine Lore zu erzeugen. Man kann sich in diese hineinsetzen und man erhält in der Schnellleiste durch die Farbe der Glasscheibe die Übersicht über das Tempo. Die Lore kann man über die Tasten W, A, S oder D steuern. Das ausgewählte Tempo sorgt, dafür, dass man beim Drücken der Tasten so viel schneller sich bewegt wie man es ausgewählt hat. Es sind bis zu acht Geschwindigkeiten möglich. Man kann nur auf einer geraden Fläche mit der Lore fahren.

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

Wiederholen
* Befehl 1.2 Gleichzeitig wird auch der Wiederhol-Befehlsblock mit der Zyklus-Funktion automobil:v1zyklus aktiv.

Ausschalten
* Befehl 1.3 der Befehlsblock löst die Funktion automobil:v1stopp aus.

```
function automobil:v1start

```

↑ 1.2:

```
function automobil:v1zyklus

```

↑ 1.3:

```
function automobil:v1stopp

```

Variante 1: **Start-Funktion**

Die Start-Funktion erstellt die Punkte-Ziele für die Geschwindigkeiten und gibt dem Spieler den Rüstungsständer für das Platzieren der Lore.

```
# Zwei Punkte-Ziele werden für das Speichern der Geschwindigkeit und dem Vergleichen erstellt.
scoreboard objectives add PZAuto.1Geschw dummy ["Automobil.1: ",{"text":"Die Geschwindigkeit des Autos","bold":true}]
scoreboard objectives add PZAuto.1Vergl dummy ["Automobil.1: ",{"text":"Die Vergleichs-Geschwindigkeit des Autos vor einem Tick","bold":true}]

# Spieler in einem Radius von 15 Metern erhalten einen Rüstungsständer, der wenn er platziert wird, ein Kart erzeugt.
give @a[distance=..15] minecraft:armor\_stand{EigAuto.1Alle:true,display:{Name:'{"text":"Kart","bold":true}',Lore:['"Platziere den Rüstungsständer"','"um das Auto dort zu erzeugen"']},EntityTag:{Small:true,CustomNameVisible:true,CustomName:'{"text":"Kart","bold":true}',Tags:["EtiAuto.1Alle","EtiAuto.1Erstellen"]} }

```

Variante 1: **Zyklus-Funktion**

Die Zyklus-Funktion prüft jeden Tick ob die Lore erstellt werden soll und sorgt durch das Laden der Anzeige- und Geschwindigkeits-Funktionen dass die Lore fährt.

```
# Wenn der Rüstungsständer platziert wurde, wird an dessen Stelle ein Rüstungsständer mit Lore erzeugt, anschließend wird der erste Rüstungsständer entfernt.
execute at @e[type=minecraft:armor\_stand,tag=EtiAuto.1Erstellen] run summon minecraft:armor\_stand ~ ~ ~ {Small:true,Invisible:true,CustomNameVisible:true,CustomName:'{"text":"Kart","bold":true}',Tags:["EtiAuto.1Alle","EtiAuto.1Auto"],Passengers:[{id:"minecraft:minecart",Tags:["EtiAuto.1Alle","EtiAuto.1Sitz"]}]}
kill @e[type=minecraft:armor\_stand,tag=EtiAuto.1Erstellen]

# Spieler die nicht mehr in dem Kart sitzen, bekommen das Etikett entfernt und alle Glasscheiben, die für die Anzeige benötigt wurden.
tag @a[tag=EtiAuto.1SitztImAuto,nbt=!{RootVehicle:{} }] remove EtiAuto.1SitztImAuto
clear @a[tag=EtiAuto.1Nachricht,tag=!EtiAuto.1SitztImAuto] #automobil:v1glasscheiben{EigAuto.1Alle:true}
scoreboard players set @a[tag=EtiAuto.1Nachricht,tag=!EtiAuto.1SitztImAuto] PZAuto.1Geschw -1
tag @a[tag=EtiAuto.1Nachricht,tag=!EtiAuto.1SitztImAuto] remove EtiAuto.1Nachricht

# Im Umkreis von einem Block vom Kart aus, wird dem Spieler ein Etikett gegeben, falls er sich in der Lore befindet.
execute at @e[type=minecraft:minecart,tag=EtiAuto.1Sitz] run tag @p[distance=..1,tag=!EtiAuto.1SitztImAuto,nbt={RootVehicle:{Entity:{Tags:["EtiAuto.1Auto"]} } }] add EtiAuto.1SitztImAuto

# Wenn der Spieler in dem Kart gerade sitzt und nicht das Etikett besitzt, werhält er die Anleitung für die Steuerung, danach erhält er das Etikett.
execute at @e[type=minecraft:minecart,tag=EtiAuto.1Sitz] run tellraw @p[distance=..1,tag=EtiAuto.1SitztImAuto,tag=!EtiAuto.1Nachricht] ["Automobil.1: ",{"text":"Der ausgewählte Slot bestimmt das Tempo und das Kart kann mit den Tasten W, A, S und D gesteuert werden.","bold":true}]
execute at @e[type=minecraft:minecart,tag=EtiAuto.1Sitz] run tag @p[distance=..1,tag=EtiAuto.1SitztImAuto,tag=!EtiAuto.1Nachricht] add EtiAuto.1Nachricht

# Jeden Tick wird der Wert vor einem Tick in einem Vergleichswert abgespeichert und anschließend wird der aktuelle Wert ausgelesen. Nur wenn der letzte Wert und der aktuelle nicht übereinstimmen, wird die Anzeige-Funktion gelasen.
execute as @a[tag=EtiAuto.1SitztImAuto] run scoreboard players operation @s PZAuto.1Vergl = @s PZAuto.1Geschw
execute as @e[type=minecraft:armor\_stand,tag=EtiAuto.1Auto] at @s store result score @s PZAuto.1Geschw as @p[distance=..2,tag=EtiAuto.1SitztImAuto] store result score @s PZAuto.1Geschw run data get entity @s SelectedItemSlot
execute as @a[tag=EtiAuto.1SitztImAuto] unless score @s PZAuto.1Geschw = @s PZAuto.1Vergl run function automobil:v1anzeige

# Die Lore wird der Blickrichtung des Spielers angepasst und falls die Geschwindigkeit mindestens bei eins liegt, wird die Geschwindigkeits-Funktion geladen.
execute as @e[type=minecraft:minecart,tag=EtiAuto.1Sitz] positioned as @s rotated as @p[distance=..1,tag=EtiAuto.1SitztImAuto] rotated ~90 0 run teleport @s ~ ~ ~ ~ ~
execute as @e[type=minecraft:armor\_stand,tag=EtiAuto.1Auto,scores={PZAuto.1Geschw=1..8}] at @s if entity @p[distance=..1,tag=EtiAuto.1SitztImAuto,scores={PZAuto.1Geschw=1..8}] run function automobil:v1geschwindigkeit

```

```
{
 "values": [
 "minecraft:white\_stained\_glass\_pane",
 "minecraft:yellow\_stained\_glass\_pane",
 "minecraft:red\_stained\_glass\_pane",
 "minecraft:purple\_stained\_glass\_pane"
 ]
}

```

Variante 1: **Anzeige-Funktion**

Die Anzeige-Funktion zeigt mit Glasscheiben und deren Farbe in der Schnellleiste dem Spieler welche Geschwindigkeit er gerade ausgewählt hat.

```
# Weiße Glasscheiben werden in der gesamten Schnellleiste eingefügt, allerdings nur dort, wo die Geschwindigkeit vom Wert her, nicht den Platz einnimmt.
replaceitem entity @s hotbar.0 minecraft:white\_stained\_glass\_pane{EigAuto.1Alle:true,display:{Name:'{"text":"Tempo == 0","color":"white","bold":true}'} }
replaceitem entity @s[scores={PZAuto.1Geschw=0}] hotbar.1 minecraft:white\_stained\_glass\_pane{EigAuto.1Alle:true,display:{Name:'{"text":""}'} }
replaceitem entity @s[scores={PZAuto.1Geschw=0..1}] hotbar.2 minecraft:white\_stained\_glass\_pane{EigAuto.1Alle:true,display:{Name:'{"text":""}'} }
replaceitem entity @s[scores={PZAuto.1Geschw=0..2}] hotbar.3 minecraft:white\_stained\_glass\_pane{EigAuto.1Alle:true,display:{Name:'{"text":""}'} }
replaceitem entity @s[scores={PZAuto.1Geschw=0..3}] hotbar.4 minecraft:white\_stained\_glass\_pane{EigAuto.1Alle:true,display:{Name:'{"text":""}'} }
replaceitem entity @s[scores={PZAuto.1Geschw=0..4}] hotbar.5 minecraft:white\_stained\_glass\_pane{EigAuto.1Alle:true,display:{Name:'{"text":""}'} }
replaceitem entity @s[scores={PZAuto.1Geschw=0..5}] hotbar.6 minecraft:white\_stained\_glass\_pane{EigAuto.1Alle:true,display:{Name:'{"text":""}'} }
replaceitem entity @s[scores={PZAuto.1Geschw=0..6}] hotbar.7 minecraft:white\_stained\_glass\_pane{EigAuto.1Alle:true,display:{Name:'{"text":""}'} }
replaceitem entity @s[scores={PZAuto.1Geschw=0..7}] hotbar.8 minecraft:white\_stained\_glass\_pane{EigAuto.1Alle:true,display:{Name:'{"text":""}'} }

# Bei Werten von eins bis drei werden die gelben Glasscheiben eingefügt.
replaceitem entity @s[scores={PZAuto.1Geschw=1..8}] hotbar.1 minecraft:yellow\_stained\_glass\_pane{EigAuto.1Alle:true,display:{Name:'{"text":"Tempo == 1","color":"yellow","bold":true}'} }
replaceitem entity @s[scores={PZAuto.1Geschw=2..8}] hotbar.2 minecraft:yellow\_stained\_glass\_pane{EigAuto.1Alle:true,display:{Name:'{"text":"Tempo == 2","color":"yellow","bold":true}'} }
replaceitem entity @s[scores={PZAuto.1Geschw=3..8}] hotbar.3 minecraft:yellow\_stained\_glass\_pane{EigAuto.1Alle:true,display:{Name:'{"text":"Tempo == 3","color":"yellow","bold":true}'} }

# Bei Werten von vier bis sechs werden rote Glasscheiben eingefügt.
replaceitem entity @s[scores={PZAuto.1Geschw=4..8}] hotbar.4 minecraft:red\_stained\_glass\_pane{EigAuto.1Alle:true,display:{Name:'{"text":"Tempo == 4","color":"red","bold":true}'} }
replaceitem entity @s[scores={PZAuto.1Geschw=5..8}] hotbar.5 minecraft:red\_stained\_glass\_pane{EigAuto.1Alle:true,display:{Name:'{"text":"Tempo == 5","color":"red","bold":true}'} }
replaceitem entity @s[scores={PZAuto.1Geschw=6..8}] hotbar.6 minecraft:red\_stained\_glass\_pane{EigAuto.1Alle:true,display:{Name:'{"text":"Tempo == 6","color":"red","bold":true}'} }

# Bei Werten von sieben bis acht, werden violette Glasscheiben eingefügt.
replaceitem entity @s[scores={PZAuto.1Geschw=7..8}] hotbar.7 minecraft:purple\_stained\_glass\_pane{EigAuto.1Alle:true,display:{Name:'{"text":"Tempo == 7","color":"blue","bold":true}'} }
replaceitem entity @s[scores={PZAuto.1Geschw=8}] hotbar.8 minecraft:purple\_stained\_glass\_pane{EigAuto.1Alle:true,display:{Name:'{"text":"Tempo == 8","color":"blue","bold":true}'} }

```

Variante 1: **Geschwindigkeit-Funktion**

Die Geschwindigkeits-Funktion holt sich den Slot-Wert der Schnellleiste vom Spieler und multipliziert diesen mit der Loren-Geschwindigkeit um so die Geschwindigkeit anzupassen.

```
# Die x-Geschwindigkeit wird mit Faktor 10.000 ausgelesen und als Wert gespeichert, dann wird dieser Wert mit der Geschwindigkeit multipliziert und anschließend wirder in zurück gespeichert. Da Kommazahlen leicht Rundungsfehler bekommen wird nicht exakt mit 1/10.000 zurück multipliziert.
execute store result score @s PZAuto.1Vergl run data get entity @p[distance=..1,tag=EtiAuto.1SitztImAuto] Motion[0] 10000
scoreboard players operation @s PZAuto.1Vergl \*= @s PZAuto.1Geschw
execute store result entity @s Motion[0] double 0.00175 run scoreboard players get @s PZAuto.1Vergl

# Die z-Geschwindigkeit wird ausgelesen, mit dem Geschwindigkeitsfakter multipliziert und wieder zurück gespeichert.
execute store result score @s PZAuto.1Vergl run data get entity @p[distance=..1,tag=EtiAuto.1SitztImAuto] Motion[2] 10000
scoreboard players operation @s PZAuto.1Vergl \*= @s PZAuto.1Geschw
execute store result entity @s Motion[2] double 0.00175 run scoreboard players get @s PZAuto.1Vergl

```

Variante 1: **Stopp-Funktion**

Die Stopp-Funktion löscht die Punkte-Ziele wieder, sowie die Gegenstände, die Objekte und die Etiketten des Spielers.

```
# Die Punkte-Ziele werden entfernt.
scoreboard objectives remove PZAuto.1Geschw
scoreboard objectives remove PZAuto.1Vergl

# Die Glasscheiben und der Rüstungsständer werden entfernt.
clear @a #automobil:v1glasscheiben{EigAuto.1Alle:true}
clear @a minecraft:armor\_stand{EigAuto.1Alle:true}

# Eventuell auf den Boden geworfene Gegenstände erhalten das Etikett und alle Objekte werden entfernt.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigAuto.1Alle:true} } }] add EtiAuto.1Alle
kill @e[tag=EtiAuto.1Alle]

# Die beiden Etiketten, die der Spieler besitzen könnte, werden entfernt.
tag @a[tag=EtiAuto.1Eingestiegen] remove EtiAuto.1Eingestiegen
tag @a[tag=EtiAuto.1SitztImAuto] remove EtiAuto.1SitztImAuto

```

## Variante 2

* Grundmodule
* Befehl
* Befehlssignal
* Grund-Element (Befehle)
* Signal-Element (Befehle)
* Signalleitung (Befehle)
* Straßenverkehrsanlagen
* Straßenstrecke (Mechanik)
 * Logikgatter (Befehle)
* Speicherzelle (Befehle)
* Taktgeber (Befehle)

* 1 Redstone-Fackel
* 2 Befehlsblock
* 1 Wiederhol-Befehlsblock

* von **CraftyFoxe**

Man erhält einen Rüstungsständer zum Platzieren eines Tesla-Autos. Ist dieser platziert, wird eine Blockkonstruktion durch einen Konstruktionsblock erstellt. Dort befindet sich an der Sitzposition eine Lore, in die man sich hineinsetzen kann. Sobald man sitzt, erhält man viele Fahroptionen im Chat, die man anklicken kann. Das Auto lässt sich gerade aus, nach links oder nach rechts bewegen. Man kann das Auto auch über ein Meter hohe Hindernisse fahren lassen, ebenso sind auch Hügel oder Berge möglich, sofern die Steigung immer nur einen Meter betragen. Das Auto kann auch Bergab fahren, sofern alles frei ist. Es lässt sich nicht in Blöcke hineinfahren, bevor das passiert wird der Fahrvorgang abgebrochen.

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

Wiederholen
* Befehl 2.2 Gleichzeitig wird auch der Wiederhol-Befehlsblock mit der Zyklus-Funktion automobil:v2zyklus aktiv.

Ausschalten
* Befehl 2.3 der Befehlsblock löst die Funktion automobil:v2stopp aus.

```
function automobil:v2start

```

↑ 2.2:

```
function automobil:v2zyklus

```

↑ 2.3:

```
function automobil:v2stopp

```

Variante 2: **Start-Funktion**

Die Start-Funktion erstellt das Auslöse-Punkte-Ziel für die Optionen im Chat, sie gibt dem Spieler den Rüstungsständer für das Auto und aktiviert den Chunk dauerhaft.

```
# Das Punkte-Ziel für das Anklicken von Chat-Nachrichten wird erstellt.
scoreboard objectives add PZAuto.2Wert trigger ["Automobil.2: ",{"text":"Wert der Variablen","bold":true}]

# Spielern in einem Umkreis von 15 Blöcken wird ein Rüstungsständer gegeben, mit dem man das Auto erzeugen kann.
give @a[distance=..15] minecraft:armor\_stand{EigAuto.2Alle:true,display:{Name:'{"text":"Tesla","color":"gold","bold":true}',Lore:['"Platziere den Rüstungsständer"','"um den Tesla dort zu erzeugen"']},EntityTag:{Small:true,NoGravity:true,Invisible:true,CustomName:'{"bold":true,"color":"green","text":"wahr"}',Tags:["EtiAuto.2Alle","EtiAuto.2Tesla","EtiAuto.2Erstellen"],Rotation:[0.0f,0.0f]} }

# Der Chunk wird aktiviert.
forceload add ~ ~

```

Variante 2: **Zyklus-Funktion**

Die Zyklus-Funktion erstellt das Auto, wenn der Rüstungsständer platziert wurde. Sie prüft ob der Spieler im Auto sitzt und ruft dann die Auslöser-Funktion auf.

```
# Hat man den Rüstungsständer platziert, wird von diesem aus ein weiterer mit zwei Passagieren erzeugt. Einer davon ist eine Lore, in die sich der Spieler rein setzen kann.
execute at @e[type=minecraft:armor\_stand,tag=EtiAuto.2Erstellen] run summon minecraft:armor\_stand ~ ~ ~ {Small:true,NoGravity:true,Invisible:true,CustomName:'{"bold":true,"color":"red","text":"falsch"}',Tags:["EtiAuto.2Alle","EtiAuto.2Aussenansicht"],Passengers:[{id:"minecraft:armor\_stand",Small:true,NoGravity:true,Invisible:true,CustomName:'{"bold":true,"color":"red","text":"falsch"}',Tags:["EtiAuto.2Alle","EtiAuto.2Tempomat"]},{id:"minecraft:minecart",Tags:["EtiAuto.2Alle","EtiAuto.2Sitz"]}]}

# Damit das Auto erzeugt wird, wird von dem gerade platzierten Rüstungsständer die Tesla-Funktion aufgerufen.
execute as @e[type=minecraft:armor\_stand,tag=EtiAuto.2Erstellen] at @s run function automobil:v2tesla

# Damit die Erstellung des Autos erledigt ist, wird das Etikett entfernt.
tag @e[type=minecraft:armor\_stand,tag=EtiAuto.2Erstellen] remove EtiAuto.2Erstellen

# Wenn der Spieler sich in die Lore gesetzt hat, erhält er ein Etikett zur Markierung. Solang er nicht im Auto sitzt aber nah genug ist, wird ihm als Vorbereitung der Wert -1 gegeben, damit er die Chat-Nachricht beim Einsteigen erhält.
execute at @e[type=minecraft:armor\_stand,tag=EtiAuto.2Tesla] run tag @p[distance=..5,nbt={RootVehicle:{Entity:{Tags:["EtiAuto.2Alle"]} } }] add EtiAuto.2ImAuto
execute at @e[type=minecraft:armor\_stand,tag=EtiAuto.2Tesla] run scoreboard players set @a[distance=..6,tag=!EtiAuto.2ImAuto] PZAuto.2Wert -1

# Wenn der Rüstungsständer, der den Wahrheitswert für den Tempomat speichert, den Namen wahr besitzt, wird dem Auto-Rüstungsständer jeden Tick der Wert um eins erhöht und bei vier wieder auf null gesetzt. Das ermöglicht dem Autofahrer, der die Option Tempomat gewählt hat, dass das Auto nur alle vier Ticks nach vorne fährt.
execute as @e[type=minecraft:armor\_stand,tag=EtiAuto.2Tesla] at @s if entity @e[distance=..5,type=minecraft:armor\_stand,tag=EtiAuto.2Tempomat,name="wahr",sort=nearest,limit=1] run scoreboard players add @s PZAuto.2Wert 1
execute as @e[type=minecraft:armor\_stand,tag=EtiAuto.2Tesla,scores={PZAuto.2Wert=4..}] at @s if entity @e[distance=..5,type=minecraft:armor\_stand,tag=EtiAuto.2Tempomat,name="wahr",sort=nearest,limit=1] run scoreboard players set @s PZAuto.2Wert 0
execute as @e[type=minecraft:armor\_stand,tag=EtiAuto.2Tesla,scores={PZAuto.2Wert=1}] at @s if entity @e[distance=..5,type=minecraft:armor\_stand,tag=EtiAuto.2Tempomat,name="wahr",sort=nearest,limit=1] run scoreboard players set @p[distance=..5,tag=EtiAuto.2ImAuto] PZAuto.2Wert 10

# Von dem Auto-Rüstungsständer wird in einem Umkreis von fünf Blöcken geprüft, ob ein Spieler in dem Auto sitzt, falls das der Fall ist, wird die Auslöser-Funktion gestartet.
execute at @e[type=minecraft:armor\_stand,tag=EtiAuto.2Tesla] as @p[distance=..5,tag=EtiAuto.2ImAuto] unless entity @s[scores={PZAuto.2Wert=0}] run function automobil:v2ausloeser

# Das Etikett wird wieder entfernt, damit der Spieler es nur besitzt, wenn er im Auto noch sitzt.
tag @a[tag=EtiAuto.2ImAuto] remove EtiAuto.2ImAuto

```

Variante 2: **Auslöser-Funktion**

Die Auslöser-Funktion zeigt dem Spieler alle möglichen Optionen für das Fahren des Autos und ruft die Fahren-Funktion auf, wenn diese Option angeklickt wurde.

```
# Hat der Spieler in der Chat-Nachricht die Richtung nach links oder rechts gewählt, wird der Auto-Rüstungsständer entsprechend rotiert.
execute if entity @s[scores={PZAuto.2Wert=1}] as @e[type=minecraft:armor\_stand,tag=EtiAuto.2Tesla,sort=nearest,limit=1] at @s run teleport @s ~ ~ ~ ~90 ~
execute if entity @s[scores={PZAuto.2Wert=2}] as @e[type=minecraft:armor\_stand,tag=EtiAuto.2Tesla,sort=nearest,limit=1] at @s run teleport @s ~ ~ ~ ~-90 ~
execute if entity @s[scores={PZAuto.2Wert=3}] as @e[type=minecraft:armor\_stand,tag=EtiAuto.2Tesla,sort=nearest,limit=1] at @s run teleport @s ~ ~ ~ ~180 ~

# In den Chat-Nachrichten können die Türen des Autos geöffnet oder geschlossen werden. Falls der Spieler mit dem Auto fährt, werden die Türen ebenfalls geschlossen.
execute if entity @s[scores={PZAuto.2Wert=4}] run data merge entity @e[type=minecraft:armor\_stand,tag=EtiAuto.2Tesla,sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"green","text":"wahr"}'}
execute if entity @s[scores={PZAuto.2Wert=5..10}] unless entity @s[scores={PZAuto.2Wert=6..9}] run data merge entity @e[type=minecraft:armor\_stand,tag=EtiAuto.2Tesla,sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"red","text":"falsch"}'}

# Wenn der Spieler die Richtung ändert oder die Türen bewegt, wird das Auto an der aktuellen Position entfernt, sodass das Auto an der neuen Position erscheinen kann, ohne Rückstände zu hinterlassen.
execute if entity @s[scores={PZAuto.2Wert=1..5}] run fill ^2 ^3 ^4 ^-2 ^ ^-4 minecraft:air replace #automobil:v2drop-bloecke
execute if entity @s[scores={PZAuto.2Wert=1..5}] run fill ^2 ^3 ^4 ^-2 ^ ^-4 minecraft:air replace

# Wenn das Auto rotiert wurde oder die Türen bewegt wurden, wird die Tesla-Funktion aufgerufen um das Auto neu zu platzieren.
execute if entity @s[scores={PZAuto.2Wert=1..5}] as @e[distance=..3,type=minecraft:armor\_stand,tag=EtiAuto.2Tesla,sort=nearest,limit=1] at @s run function automobil:v2tesla

# Der Spieler kann die Aussensicht aktivieren oder deaktivieren, dies wird dann in einem dafür vorgesehenen Rüstungsständer in seinem Namen als Wahrheitswert gespeichert.
execute if entity @s[scores={PZAuto.2Wert=6}] run data merge entity @e[distance=..5,type=minecraft:armor\_stand,tag=EtiAuto.2Aussenansicht,sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"green","text":"wahr"}'}
execute if entity @s[scores={PZAuto.2Wert=7}] run data merge entity @e[distance=..5,type=minecraft:armor\_stand,tag=EtiAuto.2Aussenansicht,sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"red","text":"falsch"}'}

# Ebenfalls lässt sich per Option der Tempomat aktivieren. Dies wird in einem weiteren Rüstungsständer gespeichert.
execute if entity @s[scores={PZAuto.2Wert=8}] run data merge entity @e[distance=..5,type=minecraft:armor\_stand,tag=EtiAuto.2Tempomat,sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"green","text":"wahr"}'}
execute if entity @s[scores={PZAuto.2Wert=9}] run data merge entity @e[distance=..5,type=minecraft:armor\_stand,tag=EtiAuto.2Tempomat,sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"red","text":"falsch"}'}

# Wenn der Spieler auf die Fahren-Option geklickt hat, wird die Fahren-Funktion durch den Auto-Rüstungsständer aufgerufen.
execute if entity @s[scores={PZAuto.2Wert=10}] as @e[distance=..3,type=minecraft:armor\_stand,tag=EtiAuto.2Tesla,sort=nearest,limit=1] run function automobil:v2fahren

# Die Nachricht, die alle Optionen des Autos anzeigt und anklickbar ist, wird dem Spieler angezeigt.
tellraw @s ["Automobil.2: ",{"text":"\nrichtung() == ","bold":true},{"text":"Nach Rechts","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show\_text","value":{"text":"Tippe für nach Rechts"} },"clickEvent":{"action":"run\_command","value":"/trigger PZAuto.2Wert set 1"} },{"text":"\nrichtung() == ","bold":true},{"text":"Nach Links","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show\_text","value":{"text":"Tippe für nach Links"} },"clickEvent":{"action":"run\_command","value":"/trigger PZAuto.2Wert set 2"} },{"text":"\nrichtung() == ","bold":true},{"text":"180° Umdrehen","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show\_text","value":{"text":"Tippe um das Auto um 180° zu drehen"} },"clickEvent":{"action":"run\_command","value":"/trigger PZAuto.2Wert set 3"} },{"text":"\noffen (","bold":true},{"text":"=wahr","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show\_text","value":{"text":"Tippe für Türen offen = wahr"} },"clickEvent":{"action":"run\_command","value":"/trigger PZAuto.2Wert set 4"} },{"text":",","bold":true},{"text":"=falsch","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show\_text","value":{"text":"Tippe für Türen offen = falsch"} },"clickEvent":{"action":"run\_command","value":"/trigger PZAuto.2Wert set 5"} },{"text":") == ","bold":true},{"entity":"@e[type=minecraft:armor\_stand,tag=EtiAuto.2Tesla,sort=nearest,limit=1]","nbt":"CustomName","interpret":true},{"text":"\naußenansicht (","bold":true},{"text":"=wahr","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show\_text","value":{"text":"Tippe für Außenansicht = wahr"} },"clickEvent":{"action":"run\_command","value":"/trigger PZAuto.2Wert set 6"} },{"text":",","bold":true},{"text":"=falsch","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show\_text","value":{"text":"Tippe für Außenansicht = falsch"} },"clickEvent":{"action":"run\_command","value":"/trigger PZAuto.2Wert set 7"} },{"text":") == ","bold":true},{"entity":"@e[distance=..5,type=minecraft:armor\_stand,tag=EtiAuto.2Aussenansicht,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 Tempomat = wahr"} },"clickEvent":{"action":"run\_command","value":"/trigger PZAuto.2Wert set 8"} },{"text":",","bold":true},{"text":"=falsch","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show\_text","value":{"text":"Tippe für Tempomat = falsch"} },"clickEvent":{"action":"run\_command","value":"/trigger PZAuto.2Wert set 9"} },{"text":") == ","bold":true},{"entity":"@e[distance=..5,type=minecraft:armor\_stand,tag=EtiAuto.2Tempomat,sort=nearest,limit=1]","nbt":"CustomName","interpret":true},{"text":"\nfahren()","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show\_text","value":{"text":"Tippe um mit dem Auto zu fahren"} },"clickEvent":{"action":"run\_command","value":"/trigger PZAuto.2Wert set 10"} } ]

# Falls der Spieler eine Option angeklickt hat wird erneut berichtigt das zu tun und sein Wert wird auf null gesetzt.
execute unless entity @s[scores={PZAuto.2Wert=0}] run scoreboard players enable @s PZAuto.2Wert
execute unless entity @s[scores={PZAuto.2Wert=0}] run scoreboard players set @s PZAuto.2Wert 0

# Wenn die Option für die Außenansicht aktiviert ist, wird der Rüstungsständer mit Lore auf das Dach des Autos teleportiert, ansonsten wird er ins Auto teleportiert.
execute at @e[distance=..3,type=minecraft:armor\_stand,tag=EtiAuto.2Tesla,sort=nearest,limit=1] run teleport @e[distance=..5,type=minecraft:armor\_stand,tag=EtiAuto.2Aussenansicht,name="wahr",sort=nearest,limit=1] ~ ~3 ~
execute at @e[distance=..3,type=minecraft:armor\_stand,tag=EtiAuto.2Tesla,sort=nearest,limit=1] run teleport @e[distance=..5,type=minecraft:armor\_stand,tag=EtiAuto.2Aussenansicht,name="falsch",sort=nearest,limit=1] ~ ~ ~

```

```
{
 "values": [
 "minecraft:redstone\_torch",
 "minecraft:redstone\_wall\_torch",
 "minecraft:stone\_button",
 "minecraft:ladder",
 "minecraft:lever",
 "minecraft:oak\_sign",
 "minecraft:oak\_wall\_sign",
 "minecraft:white\_carpet",
 "minecraft:black\_carpet"
 ]
}

```

Variante 2: **Fahren-Funktion**

Die Fahren-Funktion prüft ob die Fahrbahn für das Auto frei ist und ob es Berg auf oder ab fahren kann. Je nach dem was möglich ist, wird die Funktion dies ermöglichen. Wenn die Fahrbahn frei ist, wird die Tesla-Funktion aufgerufen.

```
# Es wird geprüft ob eine Anhöhe von einem Block Höhe frei ist, anschließend wird dem Rüstungsständer dann ein Etikett gegeben.
execute if block ^ ^ ^5 minecraft:air if block ^1 ^ ^5 minecraft:air if block ^-1 ^ ^5 minecraft:air run tag @s add EtiAuto.2BordsteinFrei

# Es wird geprüft ob der Bereich vor dem Auto frei ist und dann wird dem Rüstungsständer ein Etikett gegeben.
execute if block ^ ^1 ^5 minecraft:air if block ^1 ^1 ^5 minecraft:air if block ^2 ^1 ^5 minecraft:air if block ^-1 ^1 ^5 minecraft:air if block ^-2 ^1 ^5 minecraft:air if block ^ ^2 ^5 minecraft:air if block ^1 ^2 ^5 minecraft:air if block ^2 ^2 ^5 minecraft:air if block ^-1 ^2 ^5 minecraft:air if block ^-2 ^2 ^5 minecraft:air if block ^ ^3 ^5 minecraft:air if block ^1 ^3 ^5 minecraft:air if block ^2 ^3 ^5 minecraft:air if block ^-1 ^3 ^5 minecraft:air if block ^-2 ^3 ^5 minecraft:air run tag @s add EtiAuto.2FahrbahnFrei

# Falls das Auto auf eine freie Farhbahn fährt, wird geprüft ob das Auto unter sich noch Blöcke hat, ansonsten wird ein Etikett gegeben.
execute if entity @s[tag=EtiAuto.2BordsteinFrei,tag=EtiAuto.2FahrbahnFrei] positioned ^ ^-1 ^-1 if block ~ ~ ~ minecraft:air if block ^1 ^ ^ minecraft:air if block ^2 ^ ^ minecraft:air if block ^-1 ^ ^ minecraft:air if block ^-2 ^ ^ minecraft:air if block ^1 ^ ^-1 minecraft:air if block ^1 ^ ^-1 minecraft:air if block ^2 ^ ^-1 minecraft:air if block ^-1 ^ ^-1 minecraft:air if block ^-2 ^ ^-1 minecraft:air if block ^1 ^ ^-2 minecraft:air if block ^1 ^ ^-2 minecraft:air if block ^2 ^ ^-2 minecraft:air if block ^-1 ^ ^-2 minecraft:air if block ^-2 ^ ^-2 minecraft:air if block ^1 ^ ^1 minecraft:air if block ^1 ^ ^1 minecraft:air if block ^2 ^ ^1 minecraft:air if block ^-1 ^ ^1 minecraft:air if block ^-2 ^ ^1 minecraft:air if block ^1 ^ ^2 minecraft:air if block ^1 ^ ^2 minecraft:air if block ^2 ^ ^2 minecraft:air if block ^-1 ^ ^2 minecraft:air if block ^-2 ^ ^2 minecraft:air positioned ^ ^ ^4 if blocks ^2 ^ ^-6 ^-2 ^ ^-1 ~-3 ~ ~-2 all run tag @s add EtiAuto.2UntergrundFrei

# Falls die Fahrbahn blockiert ist, wird der Tempomat ausgeschaltet und der Spieler erhält eine Nachricht.
execute if entity @s[tag=!EtiAuto.2FahrbahnFrei] run data merge entity @e[distance=..5,type=minecraft:armor\_stand,tag=EtiAuto.2Tempomat,name="wahr",sort=nearest,limit=1] {CustomName:'{"bold":true,"color":"red","text":"falsch"}'}
execute if entity @s[tag=!EtiAuto.2FahrbahnFrei] run tellraw @p[distance=..5,tag=EtiAuto.2ImAuto] ["Automobil.2: ",{"text":"\nFahrbahn ist blockiert!","color":"red","bold":true}]

# Wenn die Fahrbahn frei ist, wird das Auto an der aktuellen Position entfernt.
execute if entity @s[tag=EtiAuto.2FahrbahnFrei] run fill ^2 ^3 ^4 ^-2 ^ ^-4 minecraft:air replace #automobil:v2drop-bloecke
execute if entity @s[tag=EtiAuto.2FahrbahnFrei] run fill ^2 ^3 ^4 ^-2 ^ ^-4 minecraft:air replace

# Je nach Fahrbahnbeschaffenheit, fährt das Auto nach vorne, nach oben oder nach unten.
teleport @s[tag=EtiAuto.2BordsteinFrei,tag=EtiAuto.2FahrbahnFrei] ^ ^ ^1
teleport @s[tag=!EtiAuto.2BordsteinFrei,tag=EtiAuto.2FahrbahnFrei] ^ ^1 ^1
teleport @s[tag=EtiAuto.2BordsteinFrei,tag=EtiAuto.2FahrbahnFrei,tag=EtiAuto.2UntergrundFrei] ^ ^-1 ^1

# Wenn die Fahrbahn frei ist, wird von der aktualisierten Position des Autos die Tesla-Funktion aufgerufen.
execute at @s[tag=EtiAuto.2FahrbahnFrei] run function automobil:v2tesla

# Durch die Fahrbahn-Prüfungen hat der Auto-Rüstungsständer mehrere Etiketten erhalten. Diese werden entfernt, in dem ihm die Standard-Etiketten gegeben werden.
data merge entity @s {Tags:["EtiAuto.2Alle","EtiAuto.2Tesla"]}

```

Variante 2: **Tesla-Funktion**

Die Tesla-Funktion sorgt dafür, dass das Tesla-Auto als Blockkonstruktion platziert wird. Hierfür wird die Richtung geprüft und ob die Flügeltüren offen oder geschlossen bleiben sollen.

```
# Der Konstruktionsblock wird platziert.
setblock ~ ~ ~ minecraft:structure\_block{mode:"LOAD"} replace

# Je nach Ausrichtung des Auto-Rüstungsständers wird in dem Konstruktionsblock die passende Rotation eingespeichert.
execute if entity @s[y\_rotation=135..-135] run data merge block ~ ~ ~ {rotation:"NONE",posX:-2,posY:0,posZ:-4}
execute if entity @s[y\_rotation=-135..-45] run data merge block ~ ~ ~ {rotation:"CLOCKWISE\_90",posX:4,posY:0,posZ:-2}
execute if entity @s[y\_rotation=-45..45] run data merge block ~ ~ ~ {rotation:"CLOCKWISE\_180",posX:2,posY:0,posZ:4}
execute if entity @s[y\_rotation=45..135] run data merge block ~ ~ ~ {rotation:"COUNTERCLOCKWISE\_90",posX:-4,posY:0,posZ:2}

# Wenn die Option für Türen offen aktiviert wurde oder deaktiviert wurde, wird in dem Konstruktionsblock die Datei gespeichert.
execute if entity @s[name="falsch"] run data merge block ~ ~ ~ {name:"automobil:v2tesla"}
execute if entity @s[name="wahr"] run data merge block ~ ~ ~ {name:"automobil:v2tesla\_tuer"}

# Es wird ein Redstone-Block platziert, der den Konstruktionsblock aktiviert und das Auto lädt.
setblock ~ ~1 ~ minecraft:redstone\_block replace

```

Variante 2: **Stopp-Funktion**

Die Stopp-Funktion löscht das Punkte-Ziel wieder, sowie die Blockkonstruktion des Autos, die Gegenstände, die Objekte und deaktiviert den Chunk wieder.

```
# Das Punkte-Ziel wird wieder entfernt.
scoreboard objectives remove PZAuto.2Wert

# Die Autos werden wieder komplett entfernt.
execute at @e[type=minecraft:armor\_stand,tag=EtiAuto.2Tesla] run fill ^2 ^3 ^4 ^-2 ^ ^-4 minecraft:air replace #automobil:v2drop-bloecke
execute at @e[type=minecraft:armor\_stand,tag=EtiAuto.2Tesla] run fill ^2 ^3 ^4 ^-2 ^ ^-4 minecraft:air replace

# Der Rüstungsständer wird wieder aus dem Inventar entfernt.
clear @a minecraft:armor\_stand{EigAuto.2Alle:true}

# Falls man den Rüstungsständer auf den Boden gedroppt hat, wird dieser mit einem Etikett ausgestattet.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigAuto.2Alle:true} } }] add EtiAuto.2Alle

# Der Chunk wird deaktiviert.
forceload remove ~ ~

```

*Luftschiff* => Befehle;
*Flugzeug* => Befehle;
***Automobil* =>** **Befehle**;
*Eisenbahn* => Befehle;
*Schwebebahn* => Befehle (erweitert);
*Straßenbahn* => Befehle;
*Schiff* => Befehle;