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 Chunk-Sensor zeigt einem die Grenzen 16x16 des Chunks an, in dem man sich gerade befindet und er wird dazu genutzt um die Chunk-Koordinaten auslesen zu können. Die Chunk-Koordinaten bestehen aus X- und Z-Koordinaten und können berechnet werden, in dem man die Koordinaten eines Objektes oder Spielers nimmt und sie mit 16 ganzzahlig dividiert.

Variante 1[]

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

Dieser Chunk-Sensor zeigt dem Spieler der den magischen Kompass ausgewählt hat, die Chunk-Grenzen mit Hilfe von Partikeln an und gibt die Chunk-Koordinaten über der Schnellleiste aus. Hierbei werden vier Markierer erzeugt, die die berechneten Chunk-Ecken zugewiesen bekommen, sodass diese sichtbar gemacht werden können. Ein Titel-Befehl gibt dann die errechneten Koordinaten aus.

Einschalten

Wird der Hebel umgelegt, startet der Befehlsblock und führt die Start-Funktion aus.

Wiederholen

Mit dem Wiederhol-Befehlsblock wird jeden Tick die Zyklus-Funktion ausgeführt.

Ausschalten

Sobald der Hebel wieder in Ausgangsstellung zurück gelegt wurde, wird die Stopp-Funktion aktiviert.


Befehlsblöcke mit Befehlen:


Datenpaket


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

Editor Icon chunk-sensor:v1start.mcfunction
# Ein Punkte-Ziel wird angelegt um die Koordinaten zu speichern.
scoreboard objectives add PZChunkS.1Wert dummy ["Chunk-Sensor.1: ",{"text":"Chunk-Koordinaten","bold":true}]

# Eine Konstante die den Wert 16 besitzt wird festgelegt.
scoreboard players set KonstChunkS.1Chunk PZChunkS.1Wert 16

# Den Spielern im Umkreis von 15 Blöcken wird ein Kompass gegeben, mit dem sie die Chunk-Koordinaten messen können.
give @a[distance=..15] minecraft:compass{EigChunkS.1Alle:true,EigChunkS.1Sensor:true,Enchantments:[{id:-1}],display:{Name:'{"text":"Chunk-Sensor","color":"dark_purple","bold":true}',Lore:['"Wähle den Kompass aus"','"um die Chunk-Koordinaten"','"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 auf, wenn dieser den Kompass ausgewählt hat.

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

# Spieler die das Etikett besitzen laden von sich aus die Sensor-Funktion.
execute as @a[tag=EtiChunkS.1Ausgewaehlt] at @s run function chunk-sensor:v1sensor

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

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


Variante 1: Sensor-Funktion
Die Sensor-Funktion ließt die zwei Koordinaten des Spielers aus und berechnet daraus die Chunk-Koordinaten und visualisiert die Chunk-Grenzen.

Editor Icon chunk-sensor:v1sensor.mcfunction
# Die zwei Koordinaten X und Z werden in jeweils zwei Variablen gespeichert und dabei wird die Koordinate von einer Kommazahl in eine Ganzzahl umgewandelt.
execute store result score VarChunkS.1X PZChunkS.1Wert store result score VarChunkS.1XSektion PZChunkS.1Wert run data get entity @s Pos[0]
execute store result score VarChunkS.1Z PZChunkS.1Wert store result score VarChunkS.1ZSektion PZChunkS.1Wert run data get entity @s Pos[2]

# Ein Markierer wird erzeugt, um später die Ecke des Chunks zu markieren.
summon minecraft:marker ~ ~ ~ {Tags:["EtiChunkS.1Alle","EtiChunkS.1Sensor"]}

# Um die Chunk-Koordinaten zu erhalten, werden die Koordinaten durch 16 ganzahlig geteilt und anschließend werden die beiden Werte in die Positionswerte des Markierers gespeichert. Dabei werden die Werte mal 16 genommen.
execute store result entity @e[type=minecraft:marker,tag=EtiChunkS.1Sensor,sort=nearest,limit=1] Pos[0] double 16 run scoreboard players operation VarChunkS.1X PZChunkS.1Wert /= KonstChunkS.1Chunk PZChunkS.1Wert
execute store result entity @e[type=minecraft:marker,tag=EtiChunkS.1Sensor,sort=nearest,limit=1] Pos[2] double 16 run scoreboard players operation VarChunkS.1Z PZChunkS.1Wert /= KonstChunkS.1Chunk PZChunkS.1Wert

# Um die Sektions-Koordinaten zu erhalten, werden die Koordinaten modulo 16 gerechnet.
scoreboard players operation VarChunkS.1XSektion PZChunkS.1Wert %= KonstChunkS.1Chunk PZChunkS.1Wert
scoreboard players operation VarChunkS.1ZSektion PZChunkS.1Wert %= KonstChunkS.1Chunk PZChunkS.1Wert

# Um alle vier Ecken anzuzeigen, werden drei weitere Markierer erzeugt.
execute at @e[type=minecraft:marker,tag=EtiChunkS.1Sensor,sort=nearest,limit=1] run summon minecraft:marker ~ ~ ~16 {Tags:["EtiChunkS.1Alle","EtiChunkS.1Sensor"]}
execute at @e[type=minecraft:marker,tag=EtiChunkS.1Sensor,sort=nearest,limit=2] run summon minecraft:marker ~16 ~ ~ {Tags:["EtiChunkS.1Alle","EtiChunkS.1Sensor"]}

# An der Position der vier Markierer werden Partikel erzeugt. Diese kann nur der Spieler selbst sehen.
execute at @e[type=minecraft:marker,tag=EtiChunkS.1Sensor,sort=nearest,limit=4] run particle minecraft:totem_of_undying ~ ~ ~ 0 5 0 0.1 10 force @s[distance=..20]

# Die Markierer werden wieder entfernt, damit sie immer nur an den Ecken des aktuellen Chunks auftreten.
kill @e[distance=..23,type=minecraft:marker,tag=EtiChunkS.1Sensor,sort=nearest,limit=4]

# Die zwei Chunk-Koordinaten und die zwei Sektions-Koordinaten werden mit Hilfe der Variablen angezeigt.
title @s actionbar ["",{"text":"Chunk[","color":"gray","bold":true},{"score":{"name":"VarChunkS.1X","objective":"PZChunkS.1Wert"},"color":"dark_purple","bold":true},{"text":"][","color":"gray","bold":true},{"score":{"name":"VarChunkS.1Z","objective":"PZChunkS.1Wert"},"color":"dark_purple","bold":true},{"text":"] == [","color":"gray","bold":true},{"score":{"name":"VarChunkS.1XSektion","objective":"PZChunkS.1Wert"},"color":"red","bold":true},{"text":"][","color":"gray","bold":true},{"score":{"name":"VarChunkS.1ZSektion","objective":"PZChunkS.1Wert"},"color":"blue","bold":true},{"text":"]","color":"gray","bold":true}]

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 chunk-sensor:v1stopp.mcfunction
# Das Punkte-Ziel wird entfernt.
scoreboard objectives remove PZChunkS.1Wert

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

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

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

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