Das offizielle Minecraft Wiki twittert hier: Wiki-Twitter  –  Chatte im Wiki-Discord  – Noch keinen Server gefunden? Es gibt einen Wiki-Server

Vorrichtungen/Bewegungssensor (Befehle)

Aus Technik Wiki
Wechseln zu: Navigation, Suche
Gruppe: Grid Kolben.png
Vorrichtungen

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 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]

Redstone-Schaltkreise Symbol.png
Diese Technik ist noch nicht in der aktuellen Redstone-Welt vorhanden.
In einem der nächsten Updates wird sie dort hinzugefügt werden.

Vorrichtungen Bewegungssensor (Befehle) Bild 1.1.png

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

Wiederholen

Mit dem Wiederhol-Befehlsblock führt jeden Tick die Zyklus-Funktion aus

Ausschalten

Sobald der Hebel wieder in Ausgangsstellung zurück gelegt wurde, wird die Stopp-Funktion aktiviert


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.

Editor Icon.png 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 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].
Editor Icon.png 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
Editor Icon.png 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]

Redstone-Schaltkreise Symbol.png
Diese Technik ist noch nicht in der aktuellen Redstone-Welt vorhanden.
In einem der nächsten Updates wird sie dort hinzugefügt werden.

Vorrichtungen Bewegungssensor (Befehle) Bild 2.1.png

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

Wiederholen

Mit dem Wiederhol-Befehlsblock führt jeden Tick die Zyklus-Funktion aus

Ausschalten

Sobald der Hebel wieder in Ausgangsstellung zurück gelegt wurde, wird die Stopp-Funktion aktiviert


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.

Editor Icon.png 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.
Editor Icon.png 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
Editor Icon.png 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


Disambig color.svg