|
Bewegungssensor (Befehle)
Gruppe: ![]() Vorrichtungen |
![]() |
![]() |
Hier:![]() |
Die vorgestellte Technik kann in der Redstone-Welt angesehen werden. |
![]() |
Ein Bewegungssensor erkennt wie der Name schon sagt, ob sich Spieler in einem bestimmten Bereich bewegen. Solange die Spieler still stehen kann er sie nicht entdecken, es sei denn er wurde auch dafür ausgelegt. Um Bewegungen des Spielers zu erfassen, werden Punktestand-Ziele benötigt, die diese Eigenschaften des Spielers erkennen, diese lesen die Statistikdaten aus.
Inhaltsverzeichnis
Variante 1[Bearbeiten | Quelltext bearbeiten]
![]() | ||
---|---|---|
|
![]() | |
---|---|
|
Dieser Bewegungssensor durch mehrere Statistiken die Bewegung des Spielers. Sobald eine Statistik ausschlägt, wird das erkannt und dem Spieler wird eine Nachricht in dem Aktionsleistentitel angezeigt. Sobald der Spieler still steht verschwindet auch sofort diese Nachricht.
- Einschalten
Wird der Hebel umgelegt, startet der Befehlsblock und führt die Start-Funktion aus
- Befehl 1.1 Die Funktion technik_wiki:bewegungssensor/v1start wird hierbei aktiviert
- Wiederholen
Mit dem Wiederhol-Befehlsblock führt jeden Tick die Zyklus-Funktion aus
- Befehl 1.2 die Funktion technik_wiki:bewegungssensor/v1zyklus wird ständig aufgerufen.
- Ausschalten
Sobald der Hebel wieder in Ausgangsstellung zurück gelegt wurde, wird die Stopp-Funktion aktiviert
- Befehl 1.3 Die Funktion technik_wiki:bewegungssensor/v1stopp wird geladen
Befehlsblöcke mit Befehlen: |
|
Variante 1: Start-Funktion
Die Start-Funktion erstellt und verknüpft alle Punktestand-Ziele mit den entsprechenden Statistiken, die dann von alleine auslösen, wenn der Spieler eine der Tätigkeiten ausübt.
![]() technik_wiki:bewegungssensor/v1start.mcfunction
|
# Punktestand-Ziele für jede Bewegungsform wird erstellt scoreboard objectives add PZBewS.1Gehen minecraft.custom:minecraft.walk_one_cm ["Bewegungssensor.1: ",{"text":"Die gegangenen Zentimeter auf Land","bold":true}] scoreboard objectives add PZBewS.1Plansch minecraft.custom:minecraft.walk_on_water_one_cm ["Bewegungssensor.1: ",{"text":"Die gegangenen Zentimeter im Wasser","bold":true}] scoreboard objectives add PZBewS.1Schwim minecraft.custom:minecraft.walk_under_water_one_cm ["Bewegungssensor.1: ",{"text":"Die geschwommenen Zentimeter","bold":true}] scoreboard objectives add PZBewS.1Sprint minecraft.custom:minecraft.sprint_one_cm ["Bewegungssensor.1: ",{"text":"Die gelaufenen Zentimeter","bold":true}] scoreboard objectives add PZBewS.1Schl minecraft.custom:minecraft.crouch_one_cm ["Bewegungssensor.1: ",{"text":"Die geschlichenen Zentimeter","bold":true}] scoreboard objectives add PZBewS.1Sprung minecraft.custom:minecraft.jump ["Bewegungssensor.1: ",{"text":"Springen","bold":true}] |
Variante 1: Zyklus-Funktion
Die Zyklus-Funktion erfasst die einzelnen Statistiken und gibt dem Spieler eine Nachricht aus, falls er sich bewegt hat.
- Zeile 2 Der Spieler besitzt vom letzten Tick noch ein Etikett, falls er sich bewegt hat und dies wird hier erfasst und sein Aktionsleistentitel wird geleert
- Zeile 3 Das Etikett wird anschließend entfernt, damit es erst dann wieder gegeben wird, wenn der Spieler sich weiterhin bewegt
- Zeile 6 Wenn der Spieler geht,
- Zeile 7 planscht,
- Zeile 8 schwimmt,
- Zeile 9 sprintet,
- Zeile 10 schleicht oder
- Zeile 11 springt, wird ihm ein Etikett gegeben
- Zeile 14 Wenn der Spieler das Etikett für die Bewegung besitzt, wird ihm jetzt in dem Aktionsleistentitel die Nachricht ausgegeben
- Zeile 17 Anschließend wird nach der Bewegung der entsprechende Statistikwert des Spielers zurückgesetzt, so fürs gehen, planschen[Z18], schwimmen[Z19], sprinten[Z20], schleichen[Z21] und springen[Z22].
![]() technik_wiki:bewegungssensor/v1zyklus.mcfunction
|
# Nachdem eine Bewegung erfasst wurde, wird der Aktionsleistentitel frei gemacht und das Etikett entfernt title @a[distance=..15,tag=EtiBewS.1BewegungErfasst] actionbar [""] tag @a[tag=EtiBewS.1BewegungErfasst] remove EtiBewS.1BewegungErfasst # Bei jeglischer Form der Bewegung erhält der Spieler das gleiche Etikett tag @a[distance=..15,scores={PZBewS.1Gehen=1..}] add EtiBewS.1BewegungErfasst tag @a[distance=..15,scores={PZBewS.1Plansch=1..}] add EtiBewS.1BewegungErfasst tag @a[distance=..15,scores={PZBewS.1Schwim=1..}] add EtiBewS.1BewegungErfasst tag @a[distance=..15,scores={PZBewS.1Sprint=1..}] add EtiBewS.1BewegungErfasst tag @a[distance=..15,scores={PZBewS.1Schl=1..}] add EtiBewS.1BewegungErfasst tag @a[distance=..15,scores={PZBewS.1Sprung=1..}] add EtiBewS.1BewegungErfasst # Wenn der Spieler sich bewegt hat, besitzt er ein Etikett, welches abgefragt wird um ihm dann eine Nachricht auszugeben title @a[distance=..15,tag=EtiBewS.1BewegungErfasst] actionbar ["",{"text":"Deine Bewegung wurde erfasst!","color":"dark_purple","bold":true} ] # Anschließend wird dem Spieler sein Punktestand wieder zurückgesetzt scoreboard players reset @a[distance=..15,scores={PZBewS.1Gehen=1..}] PZBewS.1Gehen scoreboard players reset @a[distance=..15,scores={PZBewS.1Plansch=1..}] PZBewS.1Plansch scoreboard players reset @a[distance=..15,scores={PZBewS.1Schwim=1..}] PZBewS.1Schwim scoreboard players reset @a[distance=..15,scores={PZBewS.1Sprint=1..}] PZBewS.1Sprint scoreboard players reset @a[distance=..15,scores={PZBewS.1Schl=1..}] PZBewS.1Schl scoreboard players reset @a[distance=..15,scores={PZBewS.1Sprung=1..}] PZBewS.1Sprung |
Variante 1: Stopp-Funktion
Die Stopp-Funktion löscht alle Punktestand-Ziele wieder und entfernt das Etikett
- Zeile 10 Das Etikett, das für die Bewegungen benutzt wird, wird entfernt, falls es noch nicht wieder entfernt wurde
![]() technik_wiki:bewegungssensor/v1stopp.mcfunction
|
# Die Punktestand-Ziele für jede Form der Bewegung werden entfernt scoreboard objectives remove PZBewS.1Gehen scoreboard objectives remove PZBewS.1Plansch scoreboard objectives remove PZBewS.1Schwim scoreboard objectives remove PZBewS.1Sprint scoreboard objectives remove PZBewS.1Schl scoreboard objectives remove PZBewS.1Sprung # Das Etikett wird entfernt, falls es noch vorhanden ist tag @a[tag=EtiBewS.1BewegungErfasst] remove EtiBewS.1BewegungErfasst |
Variante 2[Bearbeiten | Quelltext bearbeiten]
![]() | ||
---|---|---|
|
![]() | |
---|---|
|
Bei diesem Bewegungssensor ist es irrelevant wie sich der Spieler bewegt, es wird immer erfasst. Dazu werden vom Spieler die Koordinaten sowie die Blickwinkel abgefragt. Ändert sich nur ein kleinwenig die Position oder der Blickwinkel, so wird das erfasst und als Nachricht ausgegeben.
- Einschalten
Wird der Hebel umgelegt, startet der Befehlsblock und führt die Start-Funktion aus
- Befehl 2.1 Die Funktion technik_wiki:bewegungssensor/v2start wird hierbei aktiviert
- Wiederholen
Mit dem Wiederhol-Befehlsblock führt jeden Tick die Zyklus-Funktion aus
- Befehl 2.2 die Funktion technik_wiki:bewegungssensor/v2zyklus wird ständig aufgerufen.
- Ausschalten
Sobald der Hebel wieder in Ausgangsstellung zurück gelegt wurde, wird die Stopp-Funktion aktiviert
- Befehl 2.3 Die Funktion technik_wiki:bewegungssensor/v2stopp wird geladen
Befehlsblöcke mit Befehlen: |
|
Variante 2: Start-Funktion
Die Start-Funktion erstellt für alle Koordinaten und Blickwinkel Punktestand-Ziele. Damit der Unterschied gemessen werden kann, werden zusätzlich zu allen Punktestand-Zielen auch Vergleichs-Punktestände erstellt.
![]() technik_wiki:bewegungssensor/v2start.mcfunction
|
# Die Punktestand-Ziele für x, y und z Koordinaten, sowie für die Rotationen werden erstellt scoreboard objectives add PZBewS.2X dummy ["Bewegungssensor.2: ",{"text":"Die X-Koordinate","bold":true}] scoreboard objectives add PZBewS.2Y dummy ["Bewegungssensor.2: ",{"text":"Die Y-Koordinate","bold":true}] scoreboard objectives add PZBewS.2Z dummy ["Bewegungssensor.2: ",{"text":"Die Z-Koordinate","bold":true}] scoreboard objectives add PZBewS.2XVergl dummy ["Bewegungssensor.2: ",{"text":"Die letzte X-Koordinate","bold":true}] scoreboard objectives add PZBewS.2YVergl dummy ["Bewegungssensor.2: ",{"text":"Die letzte Y-Koordinate","bold":true}] scoreboard objectives add PZBewS.2ZVergl dummy ["Bewegungssensor.2: ",{"text":"Die letzte Z-Koordinate","bold":true}] scoreboard objectives add PZBewS.2Ric dummy ["Bewegungssensor.2: ",{"text":"Die Richtung","bold":true}] scoreboard objectives add PZBewS.2RicVergl dummy ["Bewegungssensor.2: ",{"text":"Die letzte Richtung","bold":true}] scoreboard objectives add PZBewS.2Nei dummy ["Bewegungssensor.2: ",{"text":"Die Neigung","bold":true}] scoreboard objectives add PZBewS.2NeiVergl dummy ["Bewegungssensor.2: ",{"text":"Die letzte Neigung","bold":true}] |
Variante 2: Zyklus-Funktion
Die Zyklus-Funktion speichert die letzte Position und Blickwinkel des Spielers und vergleicht diese mit der aktuellen Position und Blickwinkel, wenn es dort Unterschiede gibt, wurde eine Bewegung festgestellt
- Zeile 2 Die x-Position wird in ein Vergleichs-Punktestand gespeichert, sowie für y[Z3], z[Z4], Richtung[Z5] und Neigung[Z6].
- Zeile 9 Anschließend werden die aktuellen Koordinaten in x, y[Z10], z[Z11], Richtung[Z12] und Neigung[Z13] gespeichert, indem die entsprechende Position ausgelesen wird, mal 1000 gerechnet wird (das sorgt für höhere Genauigkeit) und dann an den Punktestand weitergereicht wird.
- Zeile 16 Falls eine Bewegung vor einem Tick erfasst wurde, besitzt der Spieler das Etikett dafür. Wenn er es besitzt wird sein Aktionsleistentitel entfernt, damit nur dann eine Nachricht zu sehen ist, wenn eine Bewegung stattfindet.
- Zeile 19 Hatte der Spieler ein Etikett für die Bewegung, so wird es jetzt entfernt, damit er es nur dann wieder bekommt, wenn er sich erneut bewegt hat.
- Zeile 20 Wenn die x-Koordinate nicht mit der x-Vergleichskoordinate übereinstimmt, dann hat er sich bewegt und erhält ein Etikett, diese wird dann auch für y[Z21], z[Z22], Richtung[Z23] und Neigung[Z24] durchgeführt.
- Zeile 27 Nur wenn der Spieler sich bewegt hat und so mit ein Etikett besitzt, erhält er die Nachricht, dass er scih bewegt hat.
![]() technik_wiki:bewegungssensor/v2zyklus.mcfunction
|
# Die letzten Koordinaten und Rotationen werden in die Vergleichspunktestände gespeichert execute as @a[distance=..25] run scoreboard players operation @s PZBewS.2XVergl = @s PZBewS.2X execute as @a[distance=..25] run scoreboard players operation @s PZBewS.2YVergl = @s PZBewS.2Y execute as @a[distance=..25] run scoreboard players operation @s PZBewS.2ZVergl = @s PZBewS.2Z execute as @a[distance=..25] run scoreboard players operation @s PZBewS.2RicVergl = @s PZBewS.2Ric execute as @a[distance=..25] run scoreboard players operation @s PZBewS.2NeiVergl = @s PZBewS.2Nei # Anschließend werden die aktuellen Koordinaten und Rotationen der Spieler gespeichert execute as @a[distance=..25] store result score @s PZBewS.2X run data get entity @s Pos[0] 1000 execute as @a[distance=..25] store result score @s PZBewS.2Y run data get entity @s Pos[1] 1000 execute as @a[distance=..25] store result score @s PZBewS.2Z run data get entity @s Pos[2] 1000 execute as @a[distance=..25] store result score @s PZBewS.2Ric run data get entity @s Rotation[0] 1000 execute as @a[distance=..25] store result score @s PZBewS.2Nei run data get entity @s Rotation[1] 1000 # Eine Nachricht wird ausgegeben, wenn die Bewegung des Spielers erfasst wurde title @a[distance=..15,tag=EtiBewS.2BewegungErfasst] actionbar [""] # Wenn sich die Koordinaten und Rotationen verändert haben, ist die letzte und die aktuelle Position, sowie die letzte und aktuelle Rotation ungleich und dann bekommt der Spieler ein Etikett, was jedoch zuvor entfernt wird, um jeden Tick erneut dies zu prüfen tag @a[distance=..25,tag=EtiBewS.2BewegungErfasst] remove EtiBewS.2BewegungErfasst execute as @a[distance=..25] unless score @s PZBewS.2XVergl = @s PZBewS.2X run tag @s[tag=!EtiBewS.2BewegungErfasst] add EtiBewS.2BewegungErfasst execute as @a[distance=..25] unless score @s PZBewS.2YVergl = @s PZBewS.2Y run tag @s[tag=!EtiBewS.2BewegungErfasst] add EtiBewS.2BewegungErfasst execute as @a[distance=..25] unless score @s PZBewS.2ZVergl = @s PZBewS.2Z run tag @s[tag=!EtiBewS.2BewegungErfasst] add EtiBewS.2BewegungErfasst execute as @a[distance=..25] unless score @s PZBewS.2RicVergl = @s PZBewS.2Ric run tag @s[tag=!EtiBewS.2BewegungErfasst] add EtiBewS.2BewegungErfasst execute as @a[distance=..25] unless score @s PZBewS.2NeiVergl = @s PZBewS.2Nei run tag @s[tag=!EtiBewS.2BewegungErfasst] add EtiBewS.2BewegungErfasst # Wenn der Spieler sich bewegt hat, erhält eine Nachricht title @a[distance=..15,tag=EtiBewS.2BewegungErfasst] actionbar ["",{"text":"Deine Bewegung wurde erfasst!","color":"dark_purple","bold":true} ] |
Variante 2: Stopp-Funktion
Die Stopp-Funktion löscht alle Punktestand-Ziele und das Etikett
- Zeile 14 Das Etikett für die Bewegung wird entfernt, falls es noch nicht entfernt wurde
![]() technik_wiki:bewegungssensor/v2stopp.mcfunction
|
# Die Punktestand-Ziele für x, y und z Koordinaten, sowie für die Rotationen werden entfernt scoreboard objectives remove PZBewS.2X scoreboard objectives remove PZBewS.2Y scoreboard objectives remove PZBewS.2Z scoreboard objectives remove PZBewS.2XVergl scoreboard objectives remove PZBewS.2YVergl scoreboard objectives remove PZBewS.2ZVergl scoreboard objectives remove PZBewS.2Ric scoreboard objectives remove PZBewS.2RicVergl scoreboard objectives remove PZBewS.2Nei scoreboard objectives remove PZBewS.2NeiVergl # Das Etikett wird entfernt, falls noch nicht geschehen tag @a[tag=EtiBewS.2BewegungErfasst] remove EtiBewS.2BewegungErfasst |
|
![]() |
Kolben-Verlängerung => Redstone (erweitert); Blockupdate-Sensor => Redstone (erweitert); Block-Sensor => Befehle; Drop-Sensor => Befehle; Inventar-Sensor => Redstone, Befehle; Mülleimer => Mechanik, Redstone, Befehle; Objekt-Zähler => Befehle; Standort-Sensor => Befehle; Bewegungssensor => Befehle (erweitert); Blickwinkel-Sensor => Befehle; Slot-Sensor => Befehle; Sprachen-Sensor => Befehle; Versionen-Sensor => Befehle; Server-Sensor => Befehle; Dropgenerator => Mechanik, Befehle; Kugelgenerator => Befehle; |
---|
![]() |
|
---|