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

Ein Sichtweiten-Sensor misst die Sichtweite eines Spielers im Einzelspieler oder im Mehrspieler auf einem Server. Das sind geladene Chunks die der Spieler beim umherwandern sehen kann. Dabei gibt es die Sichtweite des Spielers wie er sie selbst unter den Grafikeinstellungen festgelegt hat und die Sichtweiten-Einstellung die auf einem Minecraft-Server herrscht.

Variante 1[]

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

Dieser Sichtweiten-Sensor misst in die vier Himmelsrichtungen die Sichtweite und nimmt den kleinsten der vier Werte. Dadurch ist er zu einem gewissen Grad auch im Mehrspieler sehr zuverlässig was die Sichtweiten-Angabe betrifft. Um sich die Sichtweite anzeigen zu lassen, wählt man den Kompass aus. Über der Schnellleiste erscheint dann die Zahl die für die Anzahl der Chunks steht, wie weit man schauen kann. Stellt man die Sichtweite in dem Moment höher, kann es einige Sekunden dauern, bis der richtige neue Wert angezeigt wird. Wenn man dagegen die Sichtweite verringert, wird der Wert sofort richtig sein.

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 sichtweiten-sensor:v1start.mcfunction
# Ein Punkte-Ziel wird angelegt um die Sichtweite als Punktestände zu speichern.
scoreboard objectives add PZSichtWS.1Wert dummy ["Sichtweiten-Sensor.1: ",{"text":"Wert der Weite","bold":true}]

# Den Spielern im Umkreis von 15 Blöcken wird ein Kompass gegeben, mit dem sie die Sichtweite messen können.
give @a[distance=..15] minecraft:compass{EigSichtWS.1Alle:true,EigSichtWS.1Sensor:true,Enchantments:[{id:-1}],display:{Name:'{"text":"Sichtweiten-Sensor","color":"dark_purple","bold":true}',Lore:['"Wähle den Kompass aus"','"um die Sichtweite"','"anzuzeigen zu lassen."'] } }

# Der Chunk wird aktiv, damit der Sensor auch weit ab vom Spieler noch funktioniert.
forceload add ~ ~


Variante 1: Zyklus-Funktion
Die Zyklus-Funktion ruft vom Spieler aus, die Sensor-Funktion einmal pro Sekunde auf, wenn dieser den magischen Kompass ausgewählt hat. Dadurch wird die Sichtweite über der Schnellleiste angezeigt.

Editor Icon sichtweiten-sensor:v1zyklus.mcfunction
# Wenn der Spieler den Kompass ausgewählt hat, erhält er zur Erkennung ein Etikett.
tag @a[nbt={SelectedItem:{tag:{EigSichtWS.1Sensor:true} } }] add EtiSichtWS.1Ausgewaehlt

# Die Tick-Variable wird hochgezählt und bei einer Sekunde wird sie wieder auf null gesetzt. Dabei wird dem Spieler jedesmal der wert auch auf null gesetzt, damit dieser in der aufrufenden Sensor-Funktion benutzt werden kann.
execute if score VarSichtWS.1Tick PZSichtWS.1Wert matches ..19 run scoreboard players add VarSichtWS.1Tick PZSichtWS.1Wert 1
execute if score VarSichtWS.1Tick PZSichtWS.1Wert matches 20.. run tag @a[tag=EtiSichtWS.1Ausgewaehlt,tag=EtiSichtWS.1Auswahl] remove EtiSichtWS.1Auswahl
execute as @a[tag=EtiSichtWS.1Ausgewaehlt,tag=!EtiSichtWS.1Auswahl] store result score @s PZSichtWS.1Wert run scoreboard players set VarSichtWS.1Tick PZSichtWS.1Wert 0

# Wenn die Tick-Variable auf null ist und die Spieler den Kompass ausgewählt haben, wird die Sensor-Funktion aufgerufen.
execute if score VarSichtWS.1Tick PZSichtWS.1Wert matches 0 as @a[tag=EtiSichtWS.1Ausgewaehlt] at @s rotated 0 0 run function sichtweiten-sensor:v1sensor

# Die Sichtweite wird mit Hilfe des Wertes des Spielers angezeigt.
execute as @a[tag=EtiSichtWS.1Ausgewaehlt] run title @s actionbar ["",{"text":"Sichtweite == ","color":"gray","bold":true},{"score":{"name":"@s","objective":"PZSichtWS.1Wert"},"color":"dark_purple","bold":true}]

# Wenn der Kompass nicht mehr ausgewählt ist, wird die Nachricht über der Schnellleiste geleert.
title @a[tag=!EtiSichtWS.1Ausgewaehlt,tag=EtiSichtWS.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=EtiSichtWS.1Ausgewaehlt,tag=!EtiSichtWS.1Auswahl] add EtiSichtWS.1Auswahl
tag @a[tag=!EtiSichtWS.1Ausgewaehlt,tag=EtiSichtWS.1Auswahl] remove EtiSichtWS.1Auswahl

# Das Etikett wird wieder entfernt.
tag @a[tag=EtiSichtWS.1Ausgewaehlt] remove EtiSichtWS.1Ausgewaehlt


Variante 1: Sensor-Funktion
Die Sensor-Funktion ruft in erster Linie die Weiten-Funktion auf die in einer Variable die Sichtweite speichert. Danach wird von den vier Richtungen der kleinste Wert übernommen und im Spieler gespeichert.

Editor Icon sichtweiten-sensor:v1sensor.mcfunction
# Die Weiten-Variable wird zunächst auf den Wert null gesetzt und im Anschluss wird sie in der Weiten-Funktion erhöht.
scoreboard players set VarSichtWS.1Weite PZSichtWS.1Wert 0
execute rotated ~ 0 positioned ^ ^ ^16 run function sichtweiten-sensor:v1weite

# Der niedrigste Weiten-Wert wird gespeichert, da es vorkommen kann, dass durch geladene Chunks oder andere Spieler die Weite abweichen kann.
scoreboard players operation @s[scores={PZSichtWS.1Wert=0}] PZSichtWS.1Wert = VarSichtWS.1Weite PZSichtWS.1Wert
scoreboard players operation @s PZSichtWS.1Wert < VarSichtWS.1Weite PZSichtWS.1Wert

# Die Variable wird um eins erhöht und solange sie kleiner vier ist, wird die Sensor-Funktion um 90° gedreht erneut selbst aufgerufen.
scoreboard players add VarSichtWS.1Richtung PZSichtWS.1Wert 1
execute if score VarSichtWS.1Richtung PZSichtWS.1Wert matches 1..3 rotated ~90 0 run function sichtweiten-sensor:v1sensor
scoreboard players set VarSichtWS.1Richtung PZSichtWS.1Wert 0


Variante 1: Weiten-Funktion
Die Weiten-Funktion ermittelt die Sichtweite in dem sie sich selbst immer wieder um einen Chunk versetzt aufruft und dabei die Anzahl der Aufrufe speichert.

Editor Icon sichtweiten-sensor:v1weite.mcfunction
# Die Weiten-Variable wird hochgezählt und nur wenn der nächste Chunk geladen ist, wird die Funktion versetzt erneut aufgerufen.
scoreboard players add VarSichtWS.1Weite PZSichtWS.1Wert 1
execute positioned ^ ^ ^16 if loaded ~ ~ ~ run function sichtweiten-sensor:v1weite


Variante 1: Stopp-Funktion
Die Stopp-Funktion löscht das Punkte-Ziel wieder, entfernt das Etikett und löscht den magischen Kompass.

Editor Icon sichtweiten-sensor:v1stopp.mcfunction
# Das Punkte-Ziel wird entfernt.
scoreboard objectives remove PZSichtWS.1Wert

# Das Etikett zur Auswahl des Kompasses, wird wieder entfernt, falls es noch vorhanden war.
tag @a[tag=EtiSichtWS.1Auswahl] remove EtiSichtWS.1Auswahl

# Der magische Kompass wird aus dem Inventar entfernt.
clear @a minecraft:compass{EigSichtWS.1Alle:true}

# Falls der Kompass auf dem Boden geworfen wurde, wird der Drop entfernt.
kill @e[type=minecraft:item,nbt={Item:{tag:{EigSichtWS.1Alle:true} } }]

# Der aktive Chunk wird wieder entladen.
forceload remove ~ ~
Advertisement