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.

Ein Höhlen-Sensor kann, wie der Name schon sagt, erkennen ob sich der Spieler gerade in einer Höhle befindet. Dazu muss über die Y-Koordinate getestet werden, ob sich zwischen dem Standort des Spielers und der maximalen Höhe Blöcke die keine Luft sind, befinden. Dies kann über verschiedene Wege erfolgen. So kann man von der maximalen Bauhöhe Block für Block durchtesten und ab dem ersten Nicht-Luft-Block abbrechen. Ebenfalls kann man mit dem clone-Befehl versuchen nur Luft über einen zu erfassen. Des weiteren lässt sich auch der spreadplayers-Befehl dazu verwenden. Dieser verteilt Objekte auf der Oberfläche und nicht in Höhlen, sodass erzeugte Objekte nicht beim Erzeuger sind, wenn dieser in einer Höhle ist.

Inhaltsverzeichnis

Variante 1[]

Höhlen-Sensor (Befehle) Bild 1.1.png Höhlen-Sensor (Befehle) Bild 1.2.png

Mit diesem Höhlen-Sensor kann man ziemlich exakt erkennen ob dich der Spieler in einer Höhle befindet. Wenn der Spieler sich allerdings nur unter einzelnen Blöcken aufhält kann es kurzeitig zu Falschmeldungen kommen. Der Sensor wird über einen auswählbaren Stock aktiviert. Hält man ihn, so werden vier Markierer erzeugt und anschließend so nah beim Spieler verteilt wie möglich. Dann wird die Y-Koordinate des sich am höchsten befindlichen Markierers genommen und mit der Koordinate des Spielers verglichen um festzustellen ob der Spieler in einer Höhle ist.

Einschalten
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:


Datenpaket


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

Editor Icon.png hoehlen-sensor:v1start.mcfunction
# Ein Punkte-Ziel wird erstellt, um die Werte dort zu speichern.
scoreboard objectives add PZHoehlS.1Wert dummy ["Höhlen-Sensor.1: ",{"text":"Koordinaten","bold":true}]

# Den Spielern im Umkreis von 15 Blöcken wird ein Kompass gegeben, mit dem sie die Koordinaten messen können.
give @a[distance=..15] minecraft:stick{EigHoehlS.1Alle:true,EigHoehlS.1Sensor:true,Enchantments:[{id:-1}],display:{Name:'{"text":"Höhlen-Sensor","color":"dark_purple","bold":true}',Lore:['"Wähle den Stock aus"','"um zu erfassen ob"','"man in einer Höhle ist."'] } }

# Ein Chunk wird dauerhaft geladen.
forceload add ~ ~


Variante 1: Zyklus-Funktion
Die Zyklus-Funktion ruft vom Spieler aus, die Sensor-Funktion einmal pro Sekunde auf, wenn dieser den Stock ausgewählt hat.

Editor Icon.png hoehlen-sensor:v1zyklus.mcfunction
# Wenn der Spieler den Stock ausgewählt hat, erhält er zur Erkennung ein Etikett.
tag @a[nbt={SelectedItem:{tag:{EigHoehlS.1Sensor:true} } }] add EtiHoehlS.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={PZHoehlS.1Wert=0..}] PZHoehlS.1Wert 1
tag @a[tag=EtiHoehlS.1Ausgewaehlt,tag=EtiHoehlS.1Auswahl,scores={PZHoehlS.1Wert=20..}] remove EtiHoehlS.1Auswahl
scoreboard players set @a[tag=EtiHoehlS.1Ausgewaehlt,tag=!EtiHoehlS.1Auswahl] PZHoehlS.1Wert 0

# Wenn der Wert der Spieler beim Auswählen des Stockes bei null liegt, wird das Etikett für die Höhle entfernt.
tag @a[tag=EtiHoehlS.1Ausgewaehlt,tag=EtiHoehlS.1Hoehle,scores={PZHoehlS.1Wert=0}] remove EtiHoehlS.1Hoehle

# Wenn der Spieler den stock ausgewählt hat und gerade den Wert null besitzt, wird die Sensor-Funktion geladen.
execute as @a[tag=EtiHoehlS.1Ausgewaehlt,scores={PZHoehlS.1Wert=0}] at @s align xz run function hoehlen-sensor:v1sensor

# Abhängig davon ob der Spieler das Höhlen-Etikett besitzt, erhält die entsprechende Nachricht mit Wahrheitswert.
execute as @a[tag=EtiHoehlS.1Ausgewaehlt,tag=EtiHoehlS.1Hoehle] run title @s actionbar ["",{"text":"höhle == ","bold":true},{"text":"wahr","color":"green","bold":true}]
execute as @a[tag=EtiHoehlS.1Ausgewaehlt,tag=!EtiHoehlS.1Hoehle] run title @s actionbar ["",{"text":"höhle == ","bold":true},{"text":"falsch","color":"red","bold":true}]

# Wenn der Stock nicht mehr ausgewählt wird, wird die Nachricht über der Schnellleiste geleert.
title @a[tag=!EtiHoehlS.1Ausgewaehlt,tag=EtiHoehlS.1Auswahl] actionbar [""]

# Um zu erfassen ob der Spieler gerade den Stock ausgewählt hat oder ihn nicht mehr auswählt, wird ihm ein Etikett gegeben oder entfernt.
tag @a[tag=EtiHoehlS.1Ausgewaehlt,tag=!EtiHoehlS.1Auswahl] add EtiHoehlS.1Auswahl
tag @a[tag=!EtiHoehlS.1Ausgewaehlt,tag=EtiHoehlS.1Auswahl] remove EtiHoehlS.1Auswahl

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


Variante 1: Sensor-Funktion
Die Sensor-Funktion erzeugt Markierer, die mit Hilfe des spreadplayers-Befehl auf der Oberfläche teleportiert werden. Ist nur einer von ihnen auf einer höheren Y-Koordinaten als der Spieler, wird die Höhle erkannt.

Editor Icon.png hoehlen-sensor:v1sensor.mcfunction
# Es werden vier Markierer erzeugt, die anschließend auf die Oberfläche teleportiert wird.
summon minecraft:marker ~ ~ ~ {Tags:["EtiHoehlS.1Alle","EtiHoehlS.1Sensor"]}
summon minecraft:marker ~ ~ ~ {Tags:["EtiHoehlS.1Alle","EtiHoehlS.1Sensor"]}
summon minecraft:marker ~ ~ ~ {Tags:["EtiHoehlS.1Alle","EtiHoehlS.1Sensor"]}
summon minecraft:marker ~ ~ ~ {Tags:["EtiHoehlS.1Alle","EtiHoehlS.1Sensor"]}
spreadplayers ~ ~ 0 1 false @e[type=minecraft:marker,tag=EtiHoehlS.1Sensor,sort=nearest,limit=4]

# Der Y-Wert vom Spieler wird ausgelesen und in eine Variable gespeichert.
execute store result score VarHoehlS.1Y PZHoehlS.1Wert run data get entity @s Pos[1]

# Ebenfalls wird auch der Y-Wert der Markierer ausgelesen und in ihren Punktestand gespeichert. Anschließend wird der größte Y-Wert in die Delta-Variable gespeichert.
execute store result score VarHoehlS.1DeltaY PZHoehlS.1Wert as @e[type=minecraft:marker,tag=EtiHoehlS.1Sensor,sort=nearest,limit=4] store result score @s PZHoehlS.1Wert run data get entity @s Pos[1]
scoreboard players operation VarHoehlS.1DeltaY PZHoehlS.1Wert > @e[type=minecraft:marker,tag=EtiHoehlS.1Sensor,sort=nearest,limit=4] PZHoehlS.1Wert

# Die Markierer werden wieder entfernt.
kill @e[type=minecraft:marker,tag=EtiHoehlS.1Sensor,sort=nearest,limit=4]

# Befindet sich der Markierer vom Wert her über dem des Spielers, so muss sich dieser in einer Höhle befinden und bekommt das Etikett.
execute if score VarHoehlS.1DeltaY PZHoehlS.1Wert > VarHoehlS.1Y PZHoehlS.1Wert run tag @s add EtiHoehlS.1Hoehle

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

Editor Icon.png hoehlen-sensor:v1stopp.mcfunction
# Das Punkte-Ziel wird entfernt.
scoreboard objectives remove PZHoehlS.1Wert

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

# Der Stock wird aus dem Inventar entfernt.
clear @a minecraft:stick{EigHoehlS.1Alle:true}

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

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