Das offizielle Minecraft Wiki twittert hier: Wiki-Twitter  –  Chatte im Wiki-Discord  – Noch keinen Server gefunden? Es gibt einen Wiki-Server
Das Technik Wiki besitzt nun eine brasilianisch-portugiesische Übersetzung.

Maschinen/Kontrollpunkt-System (Befehle)

Aus Technik Wiki
Wechseln zu: Navigation, Suche
Gruppe: Grid Trichter.png
Maschinen

Grid Roter Sand blass.png mit Mechaniken

Grid Redstone blass.png mit Redstone
                Hier:
Grid Befehlsblock.png mit Befehlen

Die vorgestellte Technik kann in der Mechanik-Welt angesehen werden.

Parcours können sehr vielfältig sein, das nur die eigene Kreativität des Erbauers ihm die Grenzen setzt. So kann es sein, dass diese immer länger, größer, weiter ausfallen und kein Ende mehr nehmen. Wenn man dann auch noch beim Parcours häufiger scheitert und dann erneut von ganz vorne anfangen muss ist das sehr ärgerlich, für denjenigen der den Parcours komplett absolvieren möchte. Dafür gibt es dann sogenannte Kontrollpunkte (engl. Checkpoints) die den letzten Kontrollpunkt, den der Spieler durchschritten hat, speichern. Jedoch unterscheidet man zwischen "Einzelspieler"- und "Mehrspieler"-Kontrollpunkten da die Kontrollpunkt-Systeme für den Mehrspieler sehr viel schwieriger zu konstruieren sind.

Variante 1[Bearbeiten | Quelltext bearbeiten]

Maschinen Kontrollpunkt-System (Befehle) Bild 1.1.png

Um das besagte Kontrollpunkt-System für den Einzelspieler zu erstellen, werden nur zwei Befehlsblöcke, ein Wiederhol-Befehlsblock sowie drei Ketten-Befehlsblöcke benötigt. Legt man den Hebel um, so wird der Befehlsblock mit dem BefehlBefehl 1.1 aktiviert. Dieser beschwört einen Rüstungsständer mit dem Namen "Kontrollpunkt1". Er ist schwerelos und klein. Der danach geschaltete Ketten-Befehlsblock gibt den Spieler ein EtikettBefehl 1.2, damit andere Spieler nicht die Kontrollpunkte beeinflussen können. Der Wiederhol-Befehlsblock trägt den BefehlBefehl 1.3 in sich. Der /execute-Befehl testet alle Spieler die in einem Radius von 25 Metern um den Wiederhol-Befehlsblock sind. Findet er welche, so testet er ob unter ihnen ein Goldblock ist. Ist das der Fall wird der Rüstungsständer zu dem Spieler teleportiert. Verlässt der Spieler den Goldblock bleibt der Rüstungsständer dort stehen, bis der Spieler wieder den Goldblock betritt. Dabei spielt es keine Rolle ob der Spieler auf einen anderen in der Nähe befindlichen Goldblock stößt, auch dort würde der Rüstungsständer zum Spieler teleportiert werden. Der Ketten-Befehlsblock hat den BefehlBefehl 1.4 inne. Dieser sucht auch wieder Spieler in einem Radius von 25 Metern um sich selbst. Hier prüft er ob der Spieler unter sich einen Diamantblock hat. Wenn das der Fall sein sollte, so wird der Spieler zum letzten Kontrollpunkt teleportiert. Dadurch hat man nun ein funktionierendes Kontrollpunkt-System. Wenn man es wieder abschaltet wird, der BefehlBefehl 1.5 aktiviert, der den Rüstungsständer löscht. Der dahinter liegende Ketten-Befehlsblock löscht das Etikett des SpielersBefehl 1.6.


Befehlsblöcke mit Befehlen:
summon armor_stand ~ ~3 ~ {CustomName:Kontrollpunkt1,NoGravity:1b,Small:1}
scoreboard players tag @p add Kontrollpunkt1


execute @a[tag=Kontrollpunkt1,r=25] ~ ~ ~ detect ~ ~-1 ~ gold_block 0 /tp @e[name=Kontrollpunkt1] @p[tag=Kontrollpunkt1]
execute @a[tag=Kontrollpunkt1,r=25] ~ ~ ~ detect ~ ~-1 ~ diamond_block 0 /tp @p[tag=Kontrollpunkt1] @e[name=Kontrollpunkt1]


kill @e[type=armor_stand,name=Kontrollpunkt1]
scoreboard players tag @a[tag=Kontrollpunkt1] remove Kontrollpunkt1

Variante 2[Bearbeiten | Quelltext bearbeiten]

Maschinen Kontrollpunkt-System (Befehle) Bild 2.1.png

Auch dieses Kontrollpunkt-System ist für den Einzelspieler und basiert auf der Variante 1. Der Unterschied liegt darin, dass an dem Kontrollpunkt ein Diamantblock mit Partikeln erscheint, der sich rotiert. Mit Hilfe dieses Effektes, kann der Spieler schneller erkennen wo sein letzte Kontrollpunkt ist, gleichzeitig wird aber sicher gestellt, dass der Spieler genau in der Blickrichtung starten kann, wie er sie zu letzt verlassen hat (Die Rotation des Diamantblockes spielt dabei keine Rolle). Wird also der Hebel umgelegt, so wird der Befehlsblock mit dem BefehlBefehl 2.1 ausgeführt, der zwei unsichtbare Rüstungsständer erzeugt, die aufeinander gestapelt sind. Der zweite Rüstungsständer besitzt einen Diamantblock in dem Kopfslot, wodurch dieser sichtbar ist. Der nachfolgende Ketten-Befehlsblock gibt dem Spieler ein EtikettBefehl 2.2. Der Wiederhol-Befehlsblock der vom Hebel ebenfalls angesteuert wird, löst nun permanent den BefehlBefehl 2.3 aus. Dieser testet ob sich ein Spieler in einem Radius von 30 Metern auf einem Goldblock befindet, trifft dies zu, so wird der erste Rüstungsständer zu diesen teleportiert. Der Wiederhol-Befehlsblock löst eine Kette von Ketten-Befehlsblöcken aus, davon besitzt der erste den BefehlBefehl 2.4 der prüft ob der Spieler auf einem Diamantblock ist, wenn ja, so wird der Spieler zum ersten Rüstungsständer teleportiert. Der nächste Ketten-Befehlsblock mit dem BefehlBefehl 2.5 prüft ob der erste Rüstungsständer auf einem Goldblock ist, ist das der Fall, so prüft er ob der zweite Rüstungsständer mindestens 5 Meter von ihm entfernt ist, ist dies der Fall wird der zweite Rüstungsständer zum Spieler teleportiert. Dadurch wird der zweite Rsütungsständer mit dem Diamantblock nur einmal teleportiert und nicht immer wieder. Der nächste Ketten-Befehlsblock mit dem BefehlBefehl 2.6 rotiert den zweiten Rüstungsständer, wodurch dieser sich dreht. Der vorletzte Ketten-Befehlsblock mit dem BefehlBefehl 2.7 erzeugt an der Postion des zweiten Rüstungsständer einige Partikel. Der letzte Ketten-Befehlsblock löst den BefehlBefehl 2.8 aus, der prüft ob der zweite Rüstungsständer in der Luft ist, ist das der Fall, so wird er um 0.7 Meter nach unten teleportiert, damit der Diamantblock fast auf dem Boden ist. Damit ist der Funktionsbereich abgeschlossen, will man nun das Kontrollpunkt-System wieder ausschalten so legt man den Hebel wieder um und die beiden Befehlsblöcke mit dem BefehlBefehl 2.9 und dem BefehlBefehl 2.10 töten die beiden Rüstungsständer. In dem Bild kann man unten rechts beide Rüstungsständer sehen, diese wurde ohne die Eigenschaft Invisible:1b erzeugt.


Befehlsblöcke mit Befehlen:
summon armor_stand ~ ~5 ~ {CustomName:Kontrollpunkt2a,NoGravity:1b,Small:1,ArmorItems:[{},{},{},{id:diamond_block}],Invulnerable:1b,Invisible:1b,Tags:[Kontrollpunkt2],Passengers:[{id:armor_stand,CustomName:Kontrollpunkt2,NoGravity:1b,Small:1,Invulnerable:1b,Invisible:1b,Tags:[Kontrollpunkt2] } ] }
scoreboard players tag @p add Kontrollpunkt2


execute @a[tag=Kontrollpunkt2,r=30] ~ ~ ~ detect ~ ~-1 ~ gold_block 0 /tp @e[name=Kontrollpunkt2] @p[tag=Kontrollpunkt2]
execute @a[tag=Kontrollpunkt2,r=30] ~ ~ ~ detect ~ ~-1 ~ diamond_block 0 /tp @p[tag=Kontrollpunkt2] @e[name=Kontrollpunkt2]
execute @e[type=armor_stand,name=Kontrollpunkt2] ~ ~ ~ detect ~ ~-1 ~ gold_block 0 /execute @e[type=armor_stand,name=Kontrollpunkt2a,rm=5] ~ ~ ~ /tp @e[name=Kontrollpunkt2a] @p[tag=Kontrollpunkt2]
tp @e[type=armor_stand,name=Kontrollpunkt2a] ~ ~ ~ ~10 ~
execute @e[type=armor_stand,name=Kontrollpunkt2a] ~ ~ ~ /particle spell ~ ~0.5 ~ 0 0 0 1 10
execute @e[type=armor_stand,name=Kontrollpunkt2a] ~ ~ ~ detect ~ ~ ~ air 0 /tp @e[name=Kontrollpunkt2a] ~ ~-0.7 ~


kill @e[type=armor_stand,tag=Kontrollpunkt2]
scoreboard players tag @a[tag=Kontrollpunkt2] remove Kontrollpunkt2

Variante 3[Bearbeiten | Quelltext bearbeiten]

Maschinen Kontrollpunkt-System (Befehle) Bild 3.1.png

Bei diesem Kontrollpunkt-System handelt es sich um ein Mehrspieler-taugliches System, d.h. mehrere Spieler können dieses eine System nutzen. Hier werden zwei Teams gebildet und das jeweilige Team befördert den Kontrollpunkt immer weiter nach vorne. Wenn man den Hebel umlegt, so wird ein BefehlsblockBefehl 3.1 mit einer Reihe an Ketten-BefehlsblöckenBefehl 3.2Befehl 3.3Befehl 3.4Befehl 3.5Befehl 3.6 aktiviert. Diese erstellen die beiden Teams "Kontrollpunkt3a und 3b", erstellen das Punktestand-Ziel "Wiederkehr" und geben den Spielern eine Karottenrute. Die erste Reihe des wiederhol-Befehlsblockes mit Ketten-Befehlsblöcken, sorgt nun dafür, dass das Kontrollpunkt-System nun für beide Teams funktioniert. Dabei löst der erste Wiederhol-Befehlsblock folgenden BefehlBefehl 3.7 aus. Dieser sorgt erstmal nur, dass ein eventuell schon vorhandener Rüstungsständer der als Kontrollpunkt für das Team "Kontrollpunkt3a" dient gelöscht wird, sobald ein Spieler dessen Teams auf dem Goldblock steht. Der nachfolgende Ketten-BefehlsblockBefehl 3.8 sorgt nun dafür, dass genau bei solchen Spielern ein neuer Rüstungsständer gespawnt wird. Der nachfolgende Ketten-BefehlsblockBefehl 3.9 sucht Spieler die auf einem Goldblock sind und teleportiert den Rüstungsständer dann zu ihm hin. Nun muss noch eine weitere Befehlsblock-Säule mit Wiederhol-Befehlsblock den Klick-Mechanismus abdecken. Denn wenn der Spieler nicht auf die Diamantplattformen landet, wo er direkt zurück gesetzt wird, muss er dies selbst tun. Dazu sorgt der Wiederhol-Befehlsblock, dass der Spieler immer den Punktestand von eins hatBefehl 3.10, wenn er sich auf Diamant befindet. Nun sorgen die nachfolgenden Ketten-Befehlsblöcke dafür, dass der Spieler immer zum letzten Kontrollpunkt zurück teleportiert wirdBefehl 3.11Befehl 3.12. Anschließend setzt der letzte Ketten-Befehlsblock den Punktestand wieder zurückBefehl 3.13.


Befehlsblöcke mit Befehlen:
scoreboard teams add Kontrollpunkt3a
scoreboard teams add Kontrollpunkt3b
scoreboard teams join Kontrollpunkt3a @r[team=,r=25]
scoreboard teams join Kontrollpunkt3a @r[team=,r=25]
scoreboard objectives add Wiederkehr stat.useItem.minecraft.carrot_on_a_stick
give @a[r=25] minecraft:carrot_on_a_stick 1


execute @a[team=Kontrollpunkt3a] ~ ~ ~ detect ~ ~-1 ~ gold_block 0 /kill @e[type=armor_stand,name=Wiederkehr,tag=Kontrollpunkt3a]
execute @a[team=Kontrollpunkt3a] ~ ~ ~ detect ~ ~-1 ~ gold_block 0 /summon armor_stand ~ ~-3 ~ {NoGravity:1b,Invisible:0b,Marker:1b,CustomName:Wiederkehr,Tags:["Kontrollpunkt3a"] }
execute @a[team=Kontrollpunkt3a] ~ ~ ~ detect ~ ~-1 ~ gold_block 0 /tp @e[type=armor_stand,name=Wiederkehr,tag=Kontrollpunkt3a] @p[r=25]


execute @a[r=25] ~ ~ ~ detect ~ ~-1 ~ diamond_block 0 /scoreboard players set @p[r=25] Wiederkehr 1
tp @a[team=Kontrollpunkt3a,score_Wiederkehr_min=1] @e[type=armor_stand,name=Wiederkehr,tag=Kontrollpunkt3a]
tp @a[team=Kontrollpunkt3b,score_Wiederkehr_min=1] @e[type=armor_stand,name=Wiederkehr,tag=Kontrollpunkt3b]
scoreboard players reset @a[score_Wiederkehr_min=1] Wiederkehr

Variante 4[Bearbeiten | Quelltext bearbeiten]

Maschinen Kontrollpunkt-System (Befehle) Bild 4.1.png

Dieses Kontrollpunkt-System ist für den Mehrspieler geeignet. Es setzt für jeden einzelnen Spieler, unabhängig, einen Kontrollpunkt fest. Dabei ist es egal wie viele Spieler dem System beitreten. Zuerst werden zwei Punktestand-Ziele benötigtBefehl 4.1Befehl 4.2, welche für das Zählen der Spieler-Nummer sowie für das Vergleichen zuständig sind. Nun beginnt die Wiederhol-Befehlsblockkette anzulaufen. zuerst wird dafür gesorgt, das alle Spieler die noch keine Spieler-Nummer haben eine bekommenBefehl 4.3Befehl 4.4Befehl 4.5. Dazu wird die Spieler-Nummer-Variable um eins erhöht, für jeden Spieler der noch keine Nummer besitzt und anschließend bekommt der neue Spieler die Spieler-Nummer. Damit er sie nur einmal bekommt, erhält er anschließend ein Etikett. Beim Start der Maschine befindet sich noch kein Rüstungsständer auf Kontrollpunkten, daher werden erst nach dem erstmaligen Betreten der Kontrollpunkte (Goldblöcke) Rüstungsständer vorhanden sein. Wenn diese vorhanden sind, wird nun geprüft ob ein Spieler auf einem Goldblock sich gerade befindet und wenn das der Fall ist, wird durch eine Vergleichsberechnung der Rüstungsständer, dem der Spieler gehört ermitteltBefehl 4.6Befehl 4.7. Der zugehörige Rüstungsständer wird so ermittelt: Man nimmt die Nummer des Spielers und die des Rüstungsständers und zieht sie voneinander ab, wenn das Ergebnis auf einer extra gespeicherten Vergleichs-Punktestand-Ziel gleich null ist, dann handelt es sich um den eigenen, sonst nicht. Anschließend wird der eigene Rüstungsständer an die aktuelle Blickrichtung des Spielers angepasst, damit Zurücksetzen des Spielers, dieser die gleichen Ausgangsbedingungen hatBefehl 4.8. Damit man aber überhaupt einen Rüstungsständer neu als Kontrollpunkt erzeugen kann, muss man erstmal wissen ob sich einer auf der aktuellen Position befindet, dazu bekommen zuerst einmal alle Spieler ein EtikettBefehl 4.9 und nur dann wenn sich bereits ein Kontrollpunkt an der aktuellen Position (Goldblock) befindet, dann wird dieses Etikett wieder entferntBefehl 4.10 und löst damit nicht die weiteren Ketten-Befehlsblöcke aus, die nach genau diesem Etikett ausschau halten. Falls sich kein Rüstungsständer als Kontrollpunkt an der aktuellen Position befindet, wird zuerst dafür gesorgt das eventuell wo anders befindliche Kontrollpunkte des Spielers gelöscht werdenBefehl 4.11. Erst dann wird ein neuer an der aktuellen Position erzeugtBefehl 4.12. Nun bekommt der Rüstungsständer noch die Nummer des SpielersBefehl 4.13, um seine Zugehörigkeit zu ermitteln und es erscheint eine Titel-NachrichtBefehl 4.14. Anschließend wird sein Etikett entfernt, welches nur für die Spieler-Nummer-Übertragung benötigt wurdeBefehl 4.15. Nun folgt die Abfrage von Bereichen, die den Spieler wieder zum aktuellen Kontrollpunkt zurück schicken soll. Dazu wird ebenfalls eine Vergleichsrechnung gestartet, sobald der Spieler auf einen Diamantblock läuftBefehl 4.16Befehl 4.17 und wenn der Vergleichswert null ist, wird der Spieler zu diesem Rüstungsständer zurück teleportiertBefehl 4.18. Schaltet man die Maschine aus, so müssen nicht nur die Punktestand-Ziele gelöscht werdenBefehl 4.19Befehl 4.20, sondern auch die KontrollpunkteBefehl 4.21 wie auch das Etikett für die Spieler-NummerBefehl 4.22.


Befehlsblöcke mit Befehlen:
scoreboard objectives add PZKont:4Nr dummy
scoreboard objectives add PZKont:4Vergl dummy


execute @p[tag=!EtiKont:4Nummer] ~ ~ ~ /scoreboard players add #VarKont:4SpielerNummer PZKont:4Nr 1
scoreboard players operation @p[tag=!EtiKont:4Nummer] PZKont:4Nr = #VarKont:4SpielerNummer PZKont:4Nr
scoreboard players tag @p[tag=!EtiKont:4Nummer] add EtiKont:4Nummer
execute @a ~ ~ ~ detect ~ ~-1 ~ minecraft:gold_block 0 /execute @e[type=minecraft:armor_stand,score_PZKont:4Nr_min=1] ~ ~ ~ /scoreboard players operation @e[type=minecraft:armor_stand,score_PZKont:4Nr_min=1,c=1] PZKont:4Vergl = @e[type=minecraft:armor_stand,score_PZKont:4Nr_min=1,c=1] PZKont:4Nr
execute @a ~ ~ ~ detect ~ ~-1 ~ minecraft:gold_block 0 /scoreboard players operation @e[type=minecraft:armor_stand,score_PZKont:4Vergl_min=1] PZKont:4Vergl -= @p[r=2] PZKont:4Nr
execute @a ~ ~ ~ detect ~ ~-1 ~ minecraft:gold_block 0 /tp @e[type=minecraft:armor_stand,score_PZKont:4Vergl_min=0,score_PZKont:4Vergl=0,r=2] @p
scoreboard players tag @a[tag=!EtiKont:4Kontrollpunkt] add EtiKont:4Kontrollpunkt
execute @a ~ ~ ~ detect ~ ~-1 ~ minecraft:gold_block 0 /execute @e[type=minecraft:armor_stand,score_PZKont:4Vergl=0,score_PZKont:4Vergl_min=0,r=2] ~ ~ ~ /scoreboard players tag @a[r=2,tag=EtiKont:4Kontrollpunkt] remove EtiKont:4Kontrollpunkt
execute @a[tag=EtiKont:4Kontrollpunkt] ~ ~ ~ detect ~ ~-1 ~ minecraft:gold_block 0 /kill @e[type=minecraft:armor_stand,score_PZKont:4Vergl=0,score_PZKont:4Vergl_min=0]
execute @a[tag=EtiKont:4Kontrollpunkt] ~ ~ ~ detect ~ ~-1 ~ minecraft:gold_block 0 /summon armor_stand ~ ~ ~ {Invisible:0b,NoGravity:1,Invulnerable:1,Tags:["EtiKont:4Nummer","EtiKont:4Alle"] }
execute @a[tag=EtiKont:4Kontrollpunkt] ~ ~ ~ detect ~ ~-1 ~ minecraft:gold_block 0 /scoreboard players operation @e[type=minecraft:armor_stand,tag=EtiKont:4Nummer,r=2,c=1] PZKont:4Nr = @p PZKont:4Nr
execute @a[tag=EtiKont:4Kontrollpunkt] ~ ~ ~ detect ~ ~-1 ~ minecraft:gold_block 0 /title @a[r=2] title {"text":"Kontrollpunkt gesetzt!","bold":"true"}
scoreboard players tag @e[type=minecraft:armor_stand,tag=EtiKont:4Nummer] remove EtiKont:4Nummer
execute @a ~ ~ ~ detect ~ ~-1 ~ minecraft:diamond_block 0 /execute @e[type=minecraft:armor_stand,score_PZKont:4Nr_min=1] ~ ~ ~ /scoreboard players operation @e[type=minecraft:armor_stand,score_PZKont:4Nr_min=1,c=1] PZKont:4Vergl = @e[type=minecraft:armor_stand,score_PZKont:4Nr_min=1,c=1] PZKont:4Nr
execute @a ~ ~ ~ detect ~ ~-1 ~ minecraft:diamond_block 0 /scoreboard players operation @e[type=minecraft:armor_stand,score_PZKont:4Vergl_min=1] PZKont:4Vergl -= @p[r=2] PZKont:4Nr
execute @a ~ ~ ~ detect ~ ~-1 ~ minecraft:diamond_block 0 /tp @p @e[type=minecraft:armor_stand,score_PZKont:4Vergl=0,score_PZKont:4Vergl_min=0,c=1]


scoreboard objectives remove PZKont:4Nr
scoreboard objectives remove PZKont:4Vergl
kill @e[type=minecraft:armor_stand,tag=EtiKont:4Alle]
scoreboard players tag @p[tag=EtiKont:4Nummer] remove EtiKont:4Nummer