Technik Wiki
Registrieren
Advertisement
Gruppe: Grid Kolben
Vorrichtungen

Grid Roter Sand blass mit Mechaniken

Grid Redstone blass mit Redstone
                Hier:
Grid Befehlsblock mit Befehlen
Verfügbar in:
Wiki Redstone-Welt 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[]

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

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

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