Technik Wiki
Advertisement
Technik Wiki
Gruppe: Grid Kolben.png
Vorrichtungen

Grid Roter Sand blass.png mit Mechaniken

Grid Redstone blass.png mit Redstone
                Hier:
Grid Befehlsblock.png mit Befehlen
Noch in keiner
Download-Welt enthalten.
Wiki Redstone-Welt.png
Alle neuen oder überarbeiteten Techniken auf dieser Seite sind noch nicht in der aktuellen Redstone-Welt vorhanden.
In einem der nächsten Updates werden sie dort hinzugefügt werden.

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.

Inhaltsverzeichnis

Variante 1[]

Entfernungs-Sensor (Befehle) Bild 1.1.png Entfernungs-Sensor (Befehle) Bild 1.2.png

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
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:


Datenpaket


Variante 1: Start-Funktion
Die Start-Funktion erstellt das Punkte-Ziel und Spieler erhalten den magischen Kompass.

Editor Icon.png entfernungs-sensor:v1start.mcfunction
# Ein Punkte-Ziel wird angelegt um die Entfernung zu speichern.
scoreboard objectives add PZEntfS.1Wert dummy ["Koordinaten-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.

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

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

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

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