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

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 Einstellung festgelegt hat und die Sichtweiten-Einstellung die auf einem Server herrscht.

Inhaltsverzeichnis

Variante 1

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

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

Einschalten
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:


Datenpaket


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

Editor Icon.png sichtweiten-sensor:v1start.mcfunction
# Zwei Punkte-Ziele werden angelegt um die Entfernung und die Taktzeit zu speichern.
scoreboard objectives add PZSichtWS.1Wert dummy ["Sichtweiten-Sensor.1: ",{"text":"Wert der Entfernung","bold":true}]
scoreboard objectives add PZSichtWS.1Zeit dummy ["Sichtweiten-Sensor.1: ",{"text":"Zeit für Takt","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 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 Kompass ausgewählt hat.

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

# Jeden Tick wird der Wert der Spieler um eins erhöht und bei Erreichen des Wertes von 20 wird dieser wieder auf null gesetzt.
scoreboard players add @a[scores={PZSichtWS.1Zeit=0..}] PZSichtWS.1Zeit 1
tag @a[tag=EtiSichtWS.1Ausgewaehlt,tag=EtiSichtWS.1Auswahl,scores={PZSichtWS.1Zeit=20..}] remove EtiSichtWS.1Auswahl
scoreboard players set @a[tag=EtiSichtWS.1Ausgewaehlt,tag=!EtiSichtWS.1Auswahl] PZSichtWS.1Zeit 0

# Spieler die das Etikett besitzen und den Wert null besitzen, laden von ihrer Position aus die Sensor-Funktion.
execute as @a[tag=EtiSichtWS.1Ausgewaehlt,scores={PZSichtWS.1Zeit=0}] at @s 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.png sichtweiten-sensor:v1sensor.mcfunction
# Die Weiten-Funktion wird exakt ausgerichtet und geladen und die Variable wird auf null gesetzt.
scoreboard players set VarSichtWS.1Zahl PZSichtWS.1Wert 0
execute rotated 0 0 run function sichtweiten-sensor:v1weite

# Die Weiten-Variable besitzt den vierten Wert für die Sichtweite. Dadurch wird nun durch eine Rechen-Operation dafür gesorgt, dass die kleinste Entfernung in diese Variable gespeichert wird und anschließend wird das Ergebnis in den Punktestand des Spielers gespeichert.
execute store result score @s PZSichtWS.1Wert run scoreboard players operation VarSichtWS.1Weite PZSichtWS.1Wert < @e[type=minecraft:marker,tag=EtiSichtWS.1Richtung,sort=nearest,limit=4] PZSichtWS.1Wert

# Danach werden die Markierer nicht mehr benötigt und entfernt.
kill @e[type=minecraft:marker,tag=EtiSichtWS.1Richtung,sort=nearest,limit=4]


Variante 1: Weiten-Funktion
Die Weiten-Funktion ruft sich insgesamt viermal auf, um in jede Himmelsrichtung einmal die Entfernungs-Funktion zu laden.

Editor Icon.png sichtweiten-sensor:v1weite.mcfunction
# Es wird ein Markierer erzeugt, der speichert für die jeweilige Himmelsrichtung den Wert der Sichtweite.
summon minecraft:marker ~ ~ ~ {Tags:["EtiSichtWS.1Alle","EtiSichtWS.1Richtung"]}

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

# Der aktuelle Wert der Sichtweite wird in einen der vier Markierer gespeichert, der noch kein Weiten-Etikett besitzt.
scoreboard players operation @e[type=minecraft:marker,tag=EtiSichtWS.1Richtung,tag=!EtiSichtWS.1Weite,sort=nearest,limit=1] PZSichtWS.1Wert = VarSichtWS.1Weite PZSichtWS.1Wert
tag @e[type=minecraft:marker,tag=EtiSichtWS.1Richtung,tag=!EtiSichtWS.1Weite,sort=nearest,limit=1] add EtiSichtWS.1Weite

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

Variante 1: Entfernungs-Funktion
Die Entfernungs-Funktion prüft ob Luft an einem bestimmten Ort zugleich existent und nicht existent ist. Nur wenn beides zugleich einen Fehler ergibt ist der Chunk nicht geladen und der Selbstaufruf stoppt.

Editor Icon.png sichtweiten-sensor:v1entfernung.mcfunction
# Es wird zugleich geprüft ob Luft vorhanden und nicht vorhanden ist. Nur wenn der Chunk nicht geladen ist, sind beide Ergebnisse gleich.
execute store success score VarSichtWS.1Geladen1 PZSichtWS.1Wert if block ~ ~ ~ minecraft:air
execute store success score VarSichtWS.1Geladen2 PZSichtWS.1Wert unless block ~ ~ ~ minecraft:air

# Nur wenn beide Variablen den gleichen Wert haben, wird die Weiten-Variable um eins erhöht und die Entfernungs-Funktion wird erneut um 16 Blöcke in Blickrichtung aufgerufen.
execute unless score VarSichtWS.1Geladen1 PZSichtWS.1Wert = VarSichtWS.1Geladen2 PZSichtWS.1Wert run scoreboard players add VarSichtWS.1Weite PZSichtWS.1Wert 1
execute unless score VarSichtWS.1Geladen1 PZSichtWS.1Wert = VarSichtWS.1Geladen2 PZSichtWS.1Wert positioned ^ ^ ^16 run function sichtweiten-sensor:v1entfernung


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

Editor Icon.png sichtweiten-sensor:v1stopp.mcfunction
# Die Punkte-Ziele werden entfernt.
scoreboard objectives remove PZSichtWS.1Wert
scoreboard objectives remove PZSichtWS.1Zeit

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

# Der 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 ~ ~
Nutzung von Community-Inhalten gemäß CC BY-NC-SA 3.0, sofern nicht anders angegeben.