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 Höhlen-Sensor kann erkennen ob sich der Spieler gerade in einer Höhle oder auf der Oberfläche befindet. Dazu wird die Y-Koordinate der Oberfläche verwendet, solange diese den selben Wert oder sogar niedriger ist, als die des Spielers, so befindet er sich auf der Oberfläche oder weiter in der Höhe. Ist sie dagegen höher als der Y-Wert des Spielers, so befindet sich dieser im Untergrund, also in einer Höhle. Um die Position der Oberfläche zu erhalten kann man den Befehl /execute positioned over verwenden.

Variante 1[]

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

Mit diesem Höhlen-Sensor kann man erfassen, ob sich der Spieler in einer Höhle befindet. Der Sensor wird über einen magischen Stock, den man in der Schnellleiste auswählen kann, aktiviert. Dadurch wird über der Schnellleiste angezeigt ob man sich in einer Höhle befindet oder nicht und der dazugehörige Delta-Y-Wert, der anzeigt auf welcher Höhe sich die Oberfläche befindet.

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 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":"Ticks und Y-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 und zeigt eine Meldung über der Schnellleiste an.

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

# Jede Sekunde wird bei allen Spielern der Punktestand wieder auf null gesetzt, ebenso die Tick-Variable.
execute if score VarHoehlS.1Tick PZHoehlS.1Wert matches ..19 run scoreboard players add VarHoehlS.1Tick PZHoehlS.1Wert 1
execute if score VarHoehlS.1Tick PZHoehlS.1Wert matches 20.. run tag @a[tag=EtiHoehlS.1Ausgewaehlt,tag=EtiHoehlS.1Auswahl] remove EtiHoehlS.1Auswahl
execute as @a[tag=EtiHoehlS.1Ausgewaehlt,tag=!EtiHoehlS.1Auswahl] store result score @s PZHoehlS.1Wert run scoreboard players set VarHoehlS.1Tick PZHoehlS.1Wert 0

# Jede Sekunde wird geprüft ob der Spieler den Stock ausgewählt hat, nur dann wird die Sensor-Funktion geladen.
execute if score VarHoehlS.1Tick PZHoehlS.1Wert matches 0 as @a[tag=EtiHoehlS.1Ausgewaehlt] at @s run function hoehlen-sensor:v1sensor

# Abhängig davon ob der Spieler sich an der Oberfläche oder in einer Höhle befindet, erhält die entsprechende Meldung mit Wahrheitswert und Delta-Y.
execute as @a[tag=EtiHoehlS.1Ausgewaehlt,scores={PZHoehlS.1Wert=1..}] run title @s actionbar ["",{"text":"Höhle == ","bold":true},{"text":"wahr","color":"green","bold":true}," ",{"text":"Delta-Y == ","bold":true},{"score":{"name":"@s","objective":"PZHoehlS.1Wert"},"color":"blue","bold":true}]
execute as @a[tag=EtiHoehlS.1Ausgewaehlt,scores={PZHoehlS.1Wert=..0}] run title @s actionbar ["",{"text":"Höhle == ","bold":true},{"text":"falsch","color":"red","bold":true}," ",{"text":"Delta-Y == ","bold":true},{"score":{"name":"@s","objective":"PZHoehlS.1Wert"},"color":"blue","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 einen Markierer, der direkt auf der Oberfläche positioniert wird. Von diesem wird der Y-Wert ausgelesen und anhand dessen erkannt ob sich der Spieler in einer Höhle oder an der Oberfläche befindet.

Editor Icon hoehlen-sensor:v1sensor.mcfunction
# 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]

# Es wird ein Markierer auf der Oberfläche erzeugt. Anschließend wird sein Y-Wert in den Punktestand des Spielers gespeichert.
execute positioned over world_surface run summon minecraft:marker ~ ~ ~ {Tags:["EtiHoehlS.1Alle","EtiHoehlS.1Sensor"]}
execute store result score @s PZHoehlS.1Wert run data get entity @e[type=minecraft:marker,tag=EtiHoehlS.1Sensor,sort=nearest,limit=1] Pos[1]

# Um Delta-Y auszurechnen, wird der Y-Wert der Oberfläche minus den Y-Wert des Spielers gerechnet.
scoreboard players operation @s PZHoehlS.1Wert -= VarHoehlS.1Y PZHoehlS.1Wert

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

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