Bewegungssensor (Befehle, erweitert)

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

Grid Befehlsblock.png mit Befehlen
Verfügbar in:
Wiki Redstone-Welt.png Redstone-Welt
                Hier:
Grid Wiederhol-Befehlsblock.png mehr Befehle
Wiki Redstone-Welt.png
Diese neue oder überarbeitete Technik ist noch nicht in der aktuellen Redstone-Welt vorhanden.
In einem der nächsten Updates wird sie dort hinzugefügt werden.

Der erweiterte Bewegungssensor kann feststellen ob der Spieler sich vorwärts, rückwärts oder seitwärts bewegt. Man kann sich mit den Tasten W, A, S und D entsprechend bewegen, jedoch sind die Pfeiltasten auch möglich. Über Prädikate können spezielle Bewegungen wie Schleichen, Sprinten oder Schwimmen abgefragt werden.

Inhaltsverzeichnis

Variante 1[Bearbeiten | Quelltext bearbeiten]

Bewegungssensor (Befehle, erweitert) Bild 1.1.png Bewegungssensor (Befehle, erweitert) Bild 1.2.png

Mit diesem Bewegungssensor lassen sich die Bewegungen nach vorne, hinten oder zur Seite erfassen. Ebenfalls kann damit erfasst werden ob der Spieler springt, schleicht, sprintet oder schwimmt. Dazu muss der Spieler einen speziellen Stock auswählen und dann die Bewegung durchführen.


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 gibt Spielern im Umkreis einen speziellen Stock mit Verzauberungsschimmer. Wenn man diesen auswählt, wird der Sensor aktiv.

Editor Icon.png bewegungssensor:vp1start.mcfunction
# Spielern im Umkreis von 15 Blöcken wird ein Stock mit Verzauberungsschimmer gegeben.
give @a[distance=..15] minecraft:stick{EigBewS.p1Alle:true,EigBewS.p1Sensor:true,Enchantments:[{id:-1}],display:{Name:'{"text":"Bewegungssensor","color":"dark_purple","bold":true}',Lore:['"Wähle den Stock aus"','"um nach der Bewegung"','"zu testen."'] } }


Variante 1: Zyklus-Funktion
Die Zyklus-Funktion prüft ob der Spieler den Stock mit Verzauberungsschimmer ausgewählt hat und ruft dann die Erfassen-Funktion auf. Ebenfalls sorgt sie dafür, dass die Titel-Nachricht sofort verschwindet, wenn der Stock nicht mehr ausgewählt ist.

Editor Icon.png bewegungssensor:vp1zyklus.mcfunction
# Spielern im Umkreis von 25 Blöcken wird ein Etikett gegeben, wenn sie den Stock ausgewählt haben.
tag @a[distance=..25,nbt={SelectedItem:{tag:{EigBewS.p1Sensor:true} } }] add EtiBewS.p1Sensor

# Wenn der Spieler den Stock nicht mehr ausgewählt hat und zuvor eine Titel-Nachricht erschien wird diese geräumt.
title @a[tag=!EtiBewS.p1Sensor,tag=EtiBewS.p1Titel] actionbar [""]
tag @a[tag=EtiBewS.p1Sensor,tag=!EtiBewS.p1Titel] add EtiBewS.p1Titel
tag @a[tag=!EtiBewS.p1Sensor,tag=EtiBewS.p1Titel] remove EtiBewS.p1Titel

# Wenn der Spieler den Stock ausgewählt hat, wird von diesem die Erfassen-Funktion aufgerufen, dabei wird die Neigung auf gerade aus gestellt.
execute as @a[tag=EtiBewS.p1Sensor] at @s rotated ~ 0 run function bewegungssensor:vp1erfassen

# Das Etikett für das Auswählen des Stockes wird wieder entfernt.
tag @a[tag=EtiBewS.p1Sensor] remove EtiBewS.p1Sensor


Variante 1: Erfassen-Funktion
Die Erfassen-Funktion erstellt für jede Richtung aus Sicht des Spielers eine Partikelwolke. Jede Partikelwolke erfasst eine andere Bewegung des Spielers und sie existieren auch nur einen Tick. Mit Hilfe der Prädikate werden spezielle Bewegungen erfasst.

Editor Icon.png bewegungssensor:vp1erfassen.mcfunction
# Es wird für jede Richtung eine Partikelwolek erzeugt, die genau einen Tick lang existiert.
execute positioned ^ ^ ^0.2 unless entity @s[distance=..0.1] run summon minecraft:area_effect_cloud ~ ~ ~ {Duration:2,Tags:["EtiBewS.p1Alle","EtiBewS.p1Vorwaerts"]}
execute positioned ^ ^ ^-0.2 unless entity @s[distance=..0.1] run summon minecraft:area_effect_cloud ~ ~ ~ {Duration:2,Tags:["EtiBewS.p1Alle","EtiBewS.p1Rueckwaerts"]}
execute positioned ^0.2 ^ ^ unless entity @s[distance=..0.1] run summon minecraft:area_effect_cloud ~ ~ ~ {Duration:2,Tags:["EtiBewS.p1Alle","EtiBewS.p1Links"]}
execute positioned ^-0.2 ^ ^ unless entity @s[distance=..0.1] run summon minecraft:area_effect_cloud ~ ~ ~ {Duration:2,Tags:["EtiBewS.p1Alle","EtiBewS.p1Rechts"]}

# Für die Ecken werden ebenfalls vier Partikelwolken erzeugt, die einen Tick lang existieren.
execute positioned ^0.2 ^ ^0.2 unless entity @s[distance=..0.1] run summon minecraft:area_effect_cloud ~ ~ ~ {Duration:2,Tags:["EtiBewS.p1Alle","EtiBewS.p1Vorwaerts"]}
execute positioned ^0.2 ^ ^-0.2 unless entity @s[distance=..0.1] run summon minecraft:area_effect_cloud ~ ~ ~ {Duration:2,Tags:["EtiBewS.p1Alle","EtiBewS.p1Rueckwaerts"]}
execute positioned ^-0.2 ^ ^0.2 unless entity @s[distance=..0.1] run summon minecraft:area_effect_cloud ~ ~ ~ {Duration:2,Tags:["EtiBewS.p1Alle","EtiBewS.p1Vorwaerts"]}
execute positioned ^-0.2 ^ ^-0.2 unless entity @s[distance=..0.1] run summon minecraft:area_effect_cloud ~ ~ ~ {Duration:2,Tags:["EtiBewS.p1Alle","EtiBewS.p1Rueckwaerts"]}

# Für nach oben wird eine extra Partikelwolke erzeugt.
execute positioned ~ ~0.9 ~ unless entity @s[distance=..0.1] run summon minecraft:area_effect_cloud ~ ~ ~ {Duration:2,Tags:["EtiBewS.p1Alle","EtiBewS.p1Oben"]}

# Damit die Titel-Nachricht für die Bewegungen nur solange erscheint wie eine Bewegung stattfindet, wird sie vorher immer geräumt.
title @s actionbar [""]

# Wenn der Spieler springt oder nach oben läuft, so wird er von der Partikelwolke mit einem Etikett markiert, das er erst verliert wenn er wieder auf dem Boden ist.
execute at @e[type=minecraft:area_effect_cloud,tag=EtiBewS.p1Oben,sort=nearest,limit=1] run tag @s[distance=..0.5] add EtiBewS.p1Oben
title @s[tag=EtiBewS.p1Oben] actionbar [{"text":"oben","color":"red","bold":true}]
tag @s[tag=EtiBewS.p1Oben,nbt={OnGround:true}] remove EtiBewS.p1Oben

# Mit Hilfe von Prädikaten wird das Schleichen, das Sprinten oder das Schmimmen des Spielers erfasst.
title @s[predicate=bewegungssensor:vp1schleichen] actionbar [{"text":"unten","color":"red","bold":true}]
title @s[predicate=bewegungssensor:vp1sprinten] actionbar [{"text":"sprinten","color":"red","bold":true}]
title @s[predicate=bewegungssensor:vp1schwimmen] actionbar [{"text":"schwimmen","color":"red","bold":true}]

# Nur wenn eine Partikelwolke nah genug beim Spieler ist, wird die Bewegung in eine bestimmte Richtung erfasst und als Titel-Nachricht ausgegeben.
execute at @e[type=minecraft:area_effect_cloud,tag=EtiBewS.p1Vorwaerts,sort=nearest,limit=3] run title @s[distance=..0.1] actionbar [{"text":"vorwärts","color":"red","bold":true}]
execute at @e[type=minecraft:area_effect_cloud,tag=EtiBewS.p1Rueckwaerts,sort=nearest,limit=3] run title @s[distance=..0.1] actionbar [{"text":"rückwärts","color":"red","bold":true}]
execute at @e[type=minecraft:area_effect_cloud,tag=EtiBewS.p1Links,sort=nearest,limit=1] run title @s[distance=..0.1] actionbar [{"text":"links","color":"red","bold":true}]
execute at @e[type=minecraft:area_effect_cloud,tag=EtiBewS.p1Rechts,sort=nearest,limit=1] run title @s[distance=..0.1] actionbar [{"text":"rechts","color":"red","bold":true}]
JSON Icon.png bewegungssensor:vp1schleichen.json
{
  "condition": "minecraft:entity_properties",
  "entity": "this",
  "predicate": {
    "flags": {
      "is_sneaking": true
    }
  }
}
JSON Icon.png bewegungssensor:vp1sprinten.json
{
  "condition": "minecraft:entity_properties",
  "entity": "this",
  "predicate": {
    "flags": {
      "is_sprinting": true
    }
  }
}
JSON Icon.png bewegungssensor:vp1schwimmen.json
{
  "condition": "minecraft:entity_properties",
  "entity": "this",
  "predicate": {
    "flags": {
      "is_swimming": true
    }
  }
}

Variante 1: Stopp-Funktion
Die Stopp-Funktion löscht den Stock mit Verzauberungsschimmer aus dem Inventar und falls auf den Boden geworfen auch als Drop in der Welt.

Editor Icon.png bewegungssensor:vp1stopp.mcfunction
# Der Stock wird aus dem Inventar und auf dem Boden entfernt.
clear @a minecraft:stick{EigBewS.p1Alle:true}
kill @e[type=minecraft:item,nbt={Item:{id:"minecraft:stick",tag:{EigBewS.p1Alle:true} } }]


Disambig color.svg