Diese Seite stammt ursprünglich aus de.minecraft.wiki und wurde von der Quelle abweichend verändert.
|
Gruppe: Vorrichtungen |
mit Mechaniken |
mit Redstone |
Hier: mit Befehlen |
Verfügbar in: Redstone-Welt |
Der Entfernungs-Sensor kann die Distanz zu einem anderen Spieler erfassen und ausgeben. Grundsätzlich kann man die Entfernung mit Hilfe des Satz des Pythagoras berechnen, man kann dies aber auch durch Rekursion (Selbstaufruf) einer Funktion, die sich um einen Meter Richtung des Spielers bewegt, erreichen.
Variante 1[]
Folgende Voraussetzungen werden benötigt: | ||
---|---|---|
|
Folgende Materialien werden benötigt: | |
---|---|
|
Mit diesem Entfernungs-Sensor lässt sich die Entfernung des nächst gelegenen Spielers erfassen. Mit Hilfe einer Rekursion wird die Entfernung berechnet. Der Spieler-Name wird mit der Entfernung und dem Y-Unterschied angezeigt. Dazu wählt man den Kompass aus und erhält die Informationen per Titel-Befehl über der Schnellleiste.
- Einschalten
- Befehl 1.1 Die Funktion entfernungs-sensor:v1start wird hierbei aktiviert.
- Wiederholen
- Befehl 1.2 die Funktion entfernungs-sensor:v1zyklus wird ständig aufgerufen.
- Ausschalten
- Befehl 1.3 Die Funktion entfernungs-sensor:v1stopp wird geladen.
Befehlsblöcke mit Befehlen: |
|
Datenpaket |
|
Variante 1: Start-Funktion
Die Start-Funktion erstellt das Punkte-Ziel und Spieler erhalten den magischen Kompass.
entfernungs-sensor:v1start.mcfunction
|
# Ein Punkte-Ziel wird angelegt um die Entfernung zu speichern. scoreboard objectives add PZEntfS.1Wert dummy ["Entfernungs-Sensor.1: ",{"text":"Entfernung","bold":true}] # Den Spielern im Umkreis von 15 Blöcken wird ein Kompass gegeben, mit dem sie die Entfernung messen können. give @a[distance=..15] minecraft:compass{EigEntfS.1Alle:true,EigEntfS.1Sensor:true,Enchantments:[{id:-1}],display:{Name:'{"text":"Entfernungs-Sensor","color":"dark_purple","bold":true}',Lore:['"Wähle den Kompass aus"','"um die Entferung"','"und das Delta-Y"','"anzuzeigen zu lassen."'] } } # Der Chunk wird aktiv, damit der Sensor auch weit ab noch funktioniert. forceload add ~ ~ |
Variante 1: Zyklus-Funktion
Die Zyklus-Funktion ruft vom Spieler die Sensor-Funktion auf, wenn dieser den Kompass ausgewählt hat.
entfernungs-sensor:v1zyklus.mcfunction
|
# Wenn der Spieler den Kompass ausgewählt hat, erhält er zur Erkennung ein Etikett. tag @a[nbt={SelectedItem:{tag:{EigEntfS.1Sensor:true} } }] add EtiEntfS.1Ausgewaehlt # Spieler die das Etikett besitzen, laden von ihrer Position aus die Sensor-Funktion. execute as @a[tag=EtiEntfS.1Ausgewaehlt] at @s run function entfernungs-sensor:v1sensor # Wenn der Kompass nicht mehr ausgewählt wird, wird die Nachricht über der Schnellleiste geleert. title @a[tag=!EtiEntfS.1Ausgewaehlt,tag=EtiEntfS.1Auswahl] actionbar [""] # Um zu erfassen ob der Spieler gerade den Kompass ausgewählt hat oder ihn nicht mehr auswählt, wird ihm ein Etikett gegeben oder entfernt. tag @a[tag=EtiEntfS.1Ausgewaehlt,tag=!EtiEntfS.1Auswahl] add EtiEntfS.1Auswahl tag @a[tag=!EtiEntfS.1Ausgewaehlt,tag=EtiEntfS.1Auswahl] remove EtiEntfS.1Auswahl # Das Etikett wird wieder entfernt. tag @a[tag=EtiEntfS.1Ausgewaehlt] remove EtiEntfS.1Ausgewaehlt |
Variante 1: Sensor-Funktion
Die Sensor-Funktion prüft zuerst ob ein Spieler überhaupt zu erfassen ist und nur dann wird die Entfernungs-Funktion aufgerufen. Sie zeigt anschließend den Namen, die Entfernung und den Y-Unterschied an.
entfernungs-sensor:v1sensor.mcfunction
|
# Der ausführende Spieler und der in einem Radius von 100 Metern befindliche Spieler erhalten ein Etikett zur Markierung. tag @s add EtiEntfS.1Selbst tag @p[distance=..100,tag=!EtiEntfS.1Selbst] add EtiEntfS.1Spieler # Die Entfernungs-Variable wird auf null gesetzt und anschließend wird die Entfernungs-Funktion geladen, sofern ein Spieler sich in der Nähe befindet. scoreboard players set VarEntfS.1Entfernung PZEntfS.1Wert 0 execute facing entity @p[tag=EtiEntfS.1Spieler] feet run function entfernungs-sensor:v1entfernung # Der Y-Wert der beiden Spieler wird ausgelesen und anschließend voneinander abgezogen. execute store result score VarEntfS.1Hoehe PZEntfS.1Wert run data get entity @s Pos[1] execute store result score VarEntfS.1SpielerHoehe PZEntfS.1Wert run data get entity @p[tag=EtiEntfS.1Spieler] Pos[1] scoreboard players operation VarEntfS.1SpielerHoehe PZEntfS.1Wert -= VarEntfS.1Hoehe PZEntfS.1Wert # Der Name, die Entfernung und der Delta-Y-Abstand werden per Titel-Befehl ausgegeben. execute if entity @p[tag=EtiEntfS.1Spieler] run title @s actionbar ["",{"selector":"@p[tag=EtiEntfS.1Spieler]","color":"gold","bold":true},{"text":" Entfernung == ","color":"gray","bold":true},{"score":{"name":"VarEntfS.1Entfernung","objective":"PZEntfS.1Wert"},"color":"red","bold":true},{"text":" Delta-Y == ","color":"gray","bold":true},{"score":{"name":"VarEntfS.1SpielerHoehe","objective":"PZEntfS.1Wert"},"color":"dark_green","bold":true} ] # Falls kein Spieler in der Nähe ist, wird eine andere Titel-Nachricht ausgegeben. execute unless entity @p[tag=EtiEntfS.1Spieler] run title @s actionbar ["",{"text":" Spieler in Nähe == ","color":"gray","bold":true},{"text":"falsch","color":"red","bold":true} ] # Die beiden Etikette werden wieder entfernt. tag @p[tag=EtiEntfS.1Spieler] remove EtiEntfS.1Spieler tag @s remove EtiEntfS.1Selbst |
Variante 1: Entfernungs-Funktion
Die Entfernungs-Funktion ruft sich um einen Block vorwärts solange selber auf, bis sie den Spieler gefunden hat. Dabei wird eine Variable hochgezählt die die Entfernung speichert.
entfernungs-sensor:v1entfernung.mcfunction
|
# Die Entfernungs-Variable wird um eins erhöht und sofern der Spieler nicht erreicht wurde, wird in Blickrichtung einen Meter vorwärts die Entfernungs-Funktion erneut aufgerufen. scoreboard players add VarEntfS.1Entfernung PZEntfS.1Wert 1 execute unless entity @p[distance=..0.6,tag=EtiEntfS.1Spieler] positioned ^ ^ ^1 run function entfernungs-sensor:v1entfernung |
Variante 1: Stopp-Funktion
Die Stopp-Funktion löscht das Punkte-Ziel wieder, entfernt das Etikett und löscht den Kompass mit Verzauberungsschimmer.
entfernungs-sensor:v1stopp.mcfunction
|
# Das Punkte-Ziel wird entfernt. scoreboard objectives remove PZEntfS.1Wert # Das Etikett zur Auswahl des Kompasses, wird wieder entfernt, falls es noch vorhanden war. tag @a[tag=EtiEntfS.1Auswahl] remove EtiEntfS.1Auswahl # Der Kompass wird aus dem Inventar entfernt. clear @a minecraft:compass{EigEntfS.1Alle:true} # Falls der Kompass auf dem Boden geworfen wurde, wird der Drop entfernt. kill @e[type=minecraft:item,nbt={Item:{tag:{EigEntfS.1Alle:true} } }] # Der aktive Chunk wird wieder entladen. forceload remove ~ ~ |
Kolben-Verlängerung => Redstone (erweitert); Blockupdate-Sensor => Redstone (erweitert); Block-Sensor => Befehle; Drop-Sensor => Befehle; Inventar-Sensor => Redstone, Befehle; Slot-Sensor => Befehle; Mülleimer => Mechanik, Redstone, Befehle; Objekt-Zähler => Befehle; Standort-Sensor => Befehle; Biom-Sensor => Befehle; Dimensions-Sensor => Befehle; Chunk-Sensor => Befehle; Höhlen-Sensor => Befehle; Licht-Sensor => Befehle; Shiftklick-Sensor => Befehle; Bewegungssensor => Befehle (erweitert); Koordinaten-Sensor => Befehle; Blickwinkel-Sensor => Befehle; Sichtweiten-Sensor => Befehle; Entfernungs-Sensor => Befehle; Uhrzeit-Sensor => Befehle; Sprachen-Sensor => Befehle; Versionen-Sensor => Befehle; Spielbeitritt-Sensor => Befehle; Server-Sensor => Befehle; Dropgenerator => Mechanik, Befehle; Kugelgenerator => Befehle;
|
|