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

Der Slot-Sensor erfasst den ausgewählten Gegenstand wie auch den ausgewählten Slot selbst, des Spielers. Man kann damit bestimmte Gegenstände erfassen lassen, es sind aber auch beliebige Gegenstände möglich, die der Sensor erfassen soll. Ebenfalls kann nicht nur der ausgewählte Slot erfasst werden, sondern auch die Anzahl der belegten Slots die ein Gegenstand im Inventar insgesamt einnimmt. Man kann das Erfassen des ausgewählten Slots auch dazu nutzen um abzufragen, ob der Spieler das Mausrad bewegt und in welche Richtung.

Variante 1[]

Slot-Sensor (Befehle) Bild 1.1 Slot-Sensor (Befehle) Animation 1.1.1 Slot-Sensor (Befehle) Animation 1.1.2

Dieser Slot-Sensor erkennt die Richtung in die das Mausrad gedreht wurde. Das macht der Sensor in dem er sich die letzte Position des ausgewählten Slot in der aus neun Slots bestehenden Schnellzugriffsleiste merkt und diesen mit der aktuellen Slot-Position vergleicht. Ist die Differenz zwischen den beiden Slot-Positionen negativ, so muss das Mausrad nach rechts bewegt worden sein, ist die Differenz positiv muss das Mausrad nach links bewegt worden sein. Es gibt allerdings eine Ausnahme, wenn die letzte Slot-Position die erste (ganz linke) oder die letzte (ganz rechte) Slot-Position war und nun zum jeweils anderen ersten oder letzen Slot wechselt, würde der Sensor die verkehrtherum liegende Richtung erfassen. Dies muss berücksichtigt werden um eine immer korrekte Erfassung zu erhalten.

Einschalten

Wenn man den Mausrad-Sensor einschaltet, werden zwei Punktestand-Ziele erstellt.

  • Befehl 1.1 Das Slot-Ziel ist dazu gemacht immer die aktuelle Position des ausgewählten Slots zu speichern,
  • Befehl 1.2 Und das Vergleichs-Ziel immer für die letzte Position zu speichern.
Wiederholen

Gleichzeitig wird auch die Befehlsblock-Säule mit dem Wiederhol-Befehlsblock aktiv.

  • Befehl 1.3 Dort beginnt die Speicherung der letzten Slot-Position, in dem der Punktestand von Slot-Ziel in den des Vergleichs-Ziel, vom Spieler der 25 Blöcke maximal entfernt sein darf, übertragen wird. Beim ersten Durchlauf besitzt natürlich das Slot-Ziel noch keinen Wert, daher wird beim Vergleichs-Ziel einfach der Wert null übertragen. Erst bei weiteren Durchläufen wird dann immer die letzte Position als Punktestand übertragen.
  • Befehl 1.4 Um die Slot-Position abzufragen und in einen Punktestand zu speichern, wird zuerst ein Spieler im Umkreis von 25 Blöcken als Ausführer ausgewählt und dann als Speicher-Ziel markiert. In dem Fall wird das Resultat des data-Befehls in das Slot-Ziel des Spielers gespeichert. Der data-Befehl fragt hierbei die aktuelle Slot-Position ab und übergibt es dem store-result-Unterbefehl.
  • Befehl 1.5 Um nun einen Vergleichswert zu erhalten, sodass man entweder einen positiven oder einen negativen Wert erhält, wird vom Vergleichs-Punktestand des Spielers der Slot-Punktestand abgezogen und im Vergleichs-Punktestand gespeichert. Mit diesem Wert kann nun geschlussfolgert werden in welche Richtung das Mausrad bewegt wurde.
  • Befehl 1.6 Der weiter oben genannte Ausnahmefall erfordert eine interessante Unterbefehls-Kombination des execute-Befehls. Um sicherzustellen, dass nur Spieler angesprochen werden die von diesem Sensor erfasst werden sollen, wird zuerst der Radius von 25 Blöcken abgefragt, allerdings auch noch ob der Spieler einen Vergleichs-Punktestand besitzt, der zwischen den minimalen und maximalen Vergleichswerten liegt. Um nun abfragen zu können, ob der Spieler für das nach links bewegen des Mausrades, den Wert von eins bis sieben und den Wert minus acht besitzt, wurde das Ausschlussverfahren angewendet. Wenn der ausgewählte Spieler weder den Wert minus sieben bis null hat noch den Wert acht, dann muss er einen der Werte für das nach links bewegen besitzen. So wird anschließend mit dem title-Befehl die Richtung des Mausrades über der Schnellzugriffsleiste angezeigt.
  • Befehl 1.7 Das gleiche Verfahren wird dann auch für die rechte Bewegung verwendet, um diese dann anzeigen zu lassen.
Ausschalten

Wenn man den Sensor wieder ausschaltet, werden die beiden Punktestand-Ziele entfernt

  • Befehl 1.8 Das Ziel für die Slot-Position wird gelöscht.
  • Befehl 1.9 Sowie das Ziel der der letzten Position.

Befehlsblöcke mit Befehlen:
scoreboard objectives add PZSlotS.1Slot dummy ["Slot-Sensor.1: ",{"text":"Slotnummer","bold":true}]
scoreboard objectives add PZSlotS.1Vergl dummy ["Slot-Sensor.1: ",{"text":"Vergleichsnummer","bold":true}]


execute as @a[distance=..25] run scoreboard players operation @s PZSlotS.1Vergl = @s PZSlotS.1Slot
execute as @a[distance=..25] store result score @s PZSlotS.1Slot run data get entity @s SelectedItemSlot
execute as @a[distance=..25] run scoreboard players operation @s PZSlotS.1Vergl -= @s PZSlotS.1Slot
execute as @a[distance=..25,scores={PZSlotS.1Vergl=-8..8}] unless entity @s[scores={PZSlotS.1Vergl=-7..0}] unless entity @s[scores={PZSlotS.1Vergl=8}] run title @s actionbar ["",{"text":"[ ","color":"gold","bold":true},{"text":"←","color":"dark_green","bold":true},{"text":" ]","color":"gold","bold":true} ]
execute as @a[distance=..25,scores={PZSlotS.1Vergl=-8..8}] unless entity @s[scores={PZSlotS.1Vergl=0..7}] unless entity @s[scores={PZSlotS.1Vergl=-8}] run title @s actionbar ["",{"text":"[ ","color":"gold","bold":true},{"text":"→","color":"dark_red","bold":true},{"text":" ]","color":"gold","bold":true} ]


scoreboard objectives remove PZSlotS.1Slot
scoreboard objectives remove PZSlotS.1Vergl

Variante 2[]

Slot-Sensor (Befehle) Bild 2.1 Slot-Sensor (Befehle) Bild 2.2

Mit diesem Slot-Sensor kann man testen ob der Spieler einen bestimmten Gegenstand ausgewählt hat. In diesem Fall ob der Spieler eine Diamantspitzhacke auswählt.

Einschalten
  • Befehl 2.1 Allen Spielern im Umkreis von zehn Blöcken um die Befehlsquelle wird eine Spitzhacke gegeben, die einen Beschreibungstext besitzt, den man sehen kann wenn man das Inventar mit E öffnet und mit der Maus über diesen Gegenstand fährt.
Wiederholen
  • Befehl 2.2 Wenn der Spieler im Umkreis von 25 Blöcken die Spitzhacke ausgewählt hat, bekommt er ein Etikett zugewiesen.
  • Befehl 2.3 Anhand dieses Etiketts, wird geprüft ob der Spieler die Spitzhacke besitzt, wenn er sie ausgewählt hat, bekommt er eine Titel-Nachricht mit dem entsprechenden positiven Ergebnis.
  • Befehl 2.4 Ansonsten bekommt er die Titel-Nachricht mit einem negativen Ergebnis.
  • Befehl 2.5 Das Etikett wird wieder entfernt, damit beim Wiederholen erneut das Etikett nur dann beim Spieler vorhanden ist, wenn er die Spitzhacke noch ausgewählt hat.
Ausschalten
  • Befehl 2.6 Die Spitzhacke mit der speziellen Eigenschaft wird aus allen Spieler-Inventaren entfernt.
  • Befehl 2.7 Falls die Spitzhacke gedroppt wurde, wird sie ebenfalls an der speziellen Eigenschaft erkannt und gelöscht.
  • Befehl 2.8 Falls der Spieler noch das Etikett für die Überprüfung der Spitzhacke besitzt, so wird dieses entfernt.

Befehlsblöcke mit Befehlen:
give @a[distance=..10] minecraft:diamond_pickaxe{EigSlotS.2Alle:true,display:{Lore:['"Dieser Gegenstand wird"','"erfasst, wenn du ihn in der"','"Schnellleiste auswählst"'] } }


tag @a[distance=..25,nbt={SelectedItem:{id:"minecraft:diamond_pickaxe"} }] add EtiSlotS.2Spitzhacke
title @a[distance=..25,tag=EtiSlotS.2Spitzhacke] actionbar ["",{"text":"Diamantspitzhacke ausgewählt == ","color":"gray","bold":true},{"text":"wahr","color":"green","bold":true}]
title @a[distance=..25,tag=!EtiSlotS.2Spitzhacke] actionbar ["",{"text":"Diamantspitzhacke ausgewählt == ","color":"gray","bold":true},{"text":"falsch","color":"red","bold":true}]
tag @a[tag=EtiSlotS.2Spitzhacke] remove EtiSlotS.2Spitzhacke


clear @a minecraft:diamond_pickaxe{EigSlotS.2Alle:true}
kill @e[type=minecraft:item,nbt={Item:{tag:{EigSlotS.2Alle:true} } }]
tag @a[tag=EtiSlotS.2Spitzhacke] remove EtiSlotS.2Spitzhacke

Variante 3[]

Slot-Sensor (Befehle) Bild 3.1 Slot-Sensor (Befehle) Bild 3.2

Dieser Slot-Sensor erfasst in der Schnellleiste den ausgewählten Gegenstand und den Slot in dem er sich befindet. Dies wird durch eine Titel-Nachricht ausgegeben. Falls der Spieler Gegenstände innerhalb der Schnellleiste bewegt, wird dies ebenfalls erfasst.

Einschalten
  • Befehl 3.1 Auf dem Wiederhol-Befehlsblock befindet sich ein Hebel. Legt man ihn um, wird zuerst der Befehlsblock mit der Start-Funktion slot-sensor:v3start aktiviert.
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:



Variante 3: Start-Funktion
Die Start-Funktion erstellt ein Punkte-Ziel und gibt den Spielern ein paar Gegenstände zu erfassen.

Editor Icon slot-sensor:v3start.mcfunction
# Ein Punkte-Ziel wird erstellt, dass für die Anzahl der Slots verwendet wird.
scoreboard objectives add PZSlotS.3Slot dummy ["Slot-Sensor.3: ",{"text":"Anzahl der Slots","bold":true}]

# Spielern im Umkreis von zehn Blöcken, werden verschiedene Gegenstände gegeben.
give @a[distance=..10] minecraft:observer{EigSlotS.3Alle:true,display:{Lore:['"Gegenstände in der Schnellleiste"','"auswählen um sie zu erfassen."','"Belegte Schnellleisten-Slots"','"werden erfasst."'] } } 16
give @a[distance=..10] minecraft:redstone{EigSlotS.3Alle:true,display:{Lore:['"Gegenstände in der Schnellleiste"','"auswählen um sie zu erfassen."','"Belegte Schnellleisten-Slots"','"werden erfasst."'] } } 32
give @a[distance=..10] minecraft:glass{EigSlotS.3Alle:true,display:{Lore:['"Gegenstände in der Schnellleiste"','"auswählen um sie zu erfassen."','"Belegte Schnellleisten-Slots"','"werden erfasst."'] } } 8
give @a[distance=..10] minecraft:quartz_slab{EigSlotS.3Alle:true,display:{Lore:['"Gegenstände in der Schnellleiste"','"auswählen um sie zu erfassen."','"Belegte Schnellleisten-Slots"','"werden erfasst."'] } } 12


Variante 3: Zyklus-Funktion
Die Zyklus-Funktion gibt den ausgewählten Slot aus und ruft die Schnellleisten-Funktion auf.

Editor Icon slot-sensor:v3zyklus.mcfunction
# Den Slot den Spieler im Umkreis von 25 Blöcken auswählen, wird in der Titel-Nachricht angezeigt. Dort werden die ID und der aktuelle Slot gezeigt.
execute as @a[distance=..25] run title @s actionbar ["",{"text":"ID == ","color":"gray","bold":true},{"entity":"@s","nbt":"SelectedItem.id","color":"dark_purple","bold":true},{"text":" Slot == ","color":"gray","bold":true},{"entity":"@s","nbt":"SelectedItemSlot","color":"dark_purple","bold":true}]

# Alle Spieler im Umkreis von 25 Blöcken rufen die Schnellleisten-Funktion auf.
execute as @a[distance=..25] run function slot-sensor:v3schnellleiste


Variante 3: Schnellleisten-Funktion
Die Schnellleisten-Funktion berechnet wie viele Slots belegt sind und vergleicht es mit der Anzahl vor einem Tick und gibt eine Nachricht aus, falls die beiden Werte sich unterscheiden.

Editor Icon slot-sensor:v3schnellleiste.mcfunction
# Die Anzahl der Slot vor einem Tick wird zwischengespeichert.
scoreboard players operation VarSlotS.3Slots PZSlotS.3Slot = @s PZSlotS.3Slot

# Damit der Wert der Slots überschrieben wird, wird zuerst geprüft ob der erste Slot existiert, egal ob er existert oder nicht, der Wert wird überschrieben. Danach bekommt der Spieler den Wert jeweils um eins erhöht, für jeden Slot der belegt ist.
execute store success score @s PZSlotS.3Slot if entity @s[nbt={Inventory:[{Slot:0b}]}]
scoreboard players add @s[nbt={Inventory:[{Slot:1b}]}] PZSlotS.3Slot 1
scoreboard players add @s[nbt={Inventory:[{Slot:2b}]}] PZSlotS.3Slot 1
scoreboard players add @s[nbt={Inventory:[{Slot:3b}]}] PZSlotS.3Slot 1
scoreboard players add @s[nbt={Inventory:[{Slot:4b}]}] PZSlotS.3Slot 1
scoreboard players add @s[nbt={Inventory:[{Slot:5b}]}] PZSlotS.3Slot 1
scoreboard players add @s[nbt={Inventory:[{Slot:6b}]}] PZSlotS.3Slot 1
scoreboard players add @s[nbt={Inventory:[{Slot:7b}]}] PZSlotS.3Slot 1
scoreboard players add @s[nbt={Inventory:[{Slot:8b}]}] PZSlotS.3Slot 1

# Wenn der alte und neue Wert der Slot-Anzahl nicht übereinstimmt, wird eine entsprechende Nachricht ausgegeben.
execute unless score VarSlotS.3Slots PZSlotS.3Slot = @s PZSlotS.3Slot run tellraw @s ["Slot-Sensor.3:\n",{"text":"Schnellleiste geändert == ","color":"gray","bold":true},{"text":"wahr","color":"green","bold":true},{"text":"\nAlte Anzahl == ","color":"gray","bold":true},{"score":{"name":"VarSlotS.3Slots","objective":"PZSlotS.3Slot"},"color":"dark_purple","bold":true},{"text":"\nAktuelle Anzahl == ","color":"gray","bold":true},{"score":{"name":"@s","objective":"PZSlotS.3Slot"},"color":"dark_purple","bold":true}]


Variante 3: Stopp-Funktion
Die Stopp-Funktion löscht das Punkte-Ziel wieder und auch alle Gegenstände.

Editor Icon slot-sensor:v3stopp.mcfunction
# Das Punkte-Ziel wird gelöscht.
scoreboard objectives remove PZSlotS.3Slot

# Die Gegenstände mit der speziellen Eigenschaft werden gelöscht.
clear @a minecraft:observer{EigSlotS.3Alle:true}
clear @a minecraft:redstone{EigSlotS.3Alle:true}
clear @a minecraft:glass{EigSlotS.3Alle:true}
clear @a minecraft:quartz_slab{EigSlotS.3Alle:true}

# Falls die Gegenstände gedroppt wurden, werden sie ebenfalls gelöscht.
kill @e[type=minecraft:item,nbt={Item:{tag:{EigSlotS.3Alle:true} } }]

Variante 4[]

Slot-Sensor (Befehle) Bild 4.1 Slot-Sensor (Befehle) Bild 4.2

Man kann mit diesem Slot-Sensor erfassen, wie viele Slots ein ausgewählter Gegenstand im gesamten Inventar einnimmt. Wählt man einen Gegenstand aus, so wird dessen ID angezeigt und die Anzahl der belegten Slots. Das alles wird über eine Titel-Nachricht präsentiert.

Einschalten
  • Befehl 4.1 Auf dem Wiederhol-Befehlsblock befindet sich ein Hebel. Legt man ihn um, wird zuerst der Befehlsblock mit der Start-Funktion slot-sensor:v4start aktiviert.
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:



Variante 4: Start-Funktion
Die Start-Funktion erstellt ein Punkte-Ziel einen NBT-Speicher und gibt den Spielern einige Gegenstände zu erfassen.

Editor Icon slot-sensor:v4start.mcfunction
# Ein Punkte-Ziel wird erstellt, dass die Anzahl der Slots speichern kann.
scoreboard objectives add PZSlotS.4Slots dummy ["Slot-Sensor.4: ",{"text":"Anzahl der belegten Slots","bold":true}]

# Ein NBT-Speicher wird angelegt, der das Inventar und den Slot zwischenspeichern kann.
data merge storage slot-sensor:v4daten {EigSlotS.4Inventar:[],EigSlotS.4Slot:""}

# Es werden in einem Radius von 15 Blöcken verschiedene Gegenstände gegeben, die für das Überprüfen der Schnellleiste benutzt werden können.
give @a[distance=..15] minecraft:ink_sac{EigSlotS.4Alle:true} 64
give @a[distance=..15] minecraft:green_dye{EigSlotS.4Alle:true} 128
give @a[distance=..15] minecraft:egg{EigSlotS.4Alle:true} 32
give @a[distance=..15] minecraft:glowstone_dust{EigSlotS.4Alle:true} 192
give @a[distance=..15] minecraft:lava_bucket{EigSlotS.4Alle:true} 8


Variante 4: Zyklus-Funktion
Die Zyklus-Funktion prüft, ob der Spieler Gegenstände ausgewählt hat und ruft daraufhin die Inventar-Funktion auf.

Editor Icon slot-sensor:v4zyklus.mcfunction
# Nur wenn der Spieler einen Gegenstand in der Schnellleiste ausgewählt hat, bekommt er das Etikett dafür.
tag @a[distance=..25,nbt={SelectedItem:{} }] add EtiSlotS.4Ausgewaehlt

# Wenn der Spieler das Etikett besitzt, wird von ihm aus die Inventar-Funktion geladen.
execute as @a[distance=..25,tag=EtiSlotS.4Ausgewaehlt] run function slot-sensor:v4inventar

# Spieler die etwas ausgewählt haben, bekommen die Anzahl der Slots als Wert in ihren jeweiligen Punktestand. Wenn die Anzahl mindestens bei eins liegt, wird ihnen die Anzahl der belegten Slots als Titel-Nachricht ausgegeben.
execute as @a[distance=..25,tag=!EtiSlotS.4Ausgewaehlt] store result score @s PZSlotS.4Slots run data get entity @s Inventory
execute as @a[distance=..25,tag=!EtiSlotS.4Ausgewaehlt,scores={PZSlotS.4Slots=1..}] run title @s actionbar ["",{"text":"Belegte Slots == ","color":"gray","bold":true},{"score":{"name":"@s","objective":"PZSlotS.4Slots"},"color":"dark_purple","bold":true}]

# Falls die Spieler nichts im Inventar haben, wird in der Titel-Nachricht angezeigt, dass das Inventar leer ist.
execute as @a[distance=..25,tag=!EtiSlotS.4Ausgewaehlt,scores={PZSlotS.4Slots=0}] run title @s actionbar ["",{"text":"Inventar belegt == ","color":"gray","bold":true},{"text":"falsch","color":"red","bold":true}]

# Das Etikett wird wieder entfernt, sofern es vorhanden war.
tag @a[tag=EtiSlotS.4Ausgewaehlt] remove EtiSlotS.4Ausgewaehlt


Variante 4: Inventar-Funktion
Die Inventar-Funktion speichert das Inventar des Spielers zwischen um darauf basierend und mit Hilfe der aufgerufenen Slot-Funktion, die Slot-Anzahl zu berechnen.

Editor Icon slot-sensor:v4inventar.mcfunction
# Die Slot-Anzahl wird zurückgesetzt und das Inventar vom Spieler wird in den NBT-Speicher kopiert.
scoreboard players set @s PZSlotS.4Slots 0
data modify storage slot-sensor:v4daten "EigSlotS.4Inventar" set from entity @s Inventory

# Die Slot-Funktion wird aufgerufen.
function slot-sensor:v4slots

# Dem Spieler wird die ID des ausgewählten Gegenstands wie auch die Anzahl der Slots, die dieser Gegenstand einnimmt in einer Titel-Nachricht angezeigt.
title @s actionbar ["",{"text":"ID == ","color":"gray","bold":true},{"entity":"@s","nbt":"SelectedItem.id","color":"dark_purple","bold":true},{"text":" belegt Slots == ","color":"gray","bold":true},{"score":{"name":"@s","objective":"PZSlotS.4Slots"},"color":"dark_purple","bold":true}]


Variante 4: Slot-Funktion
Die Slot-Funktion vergleicht immer einen Slot des Inventars mit dem ausgewählten Slot des Spielers und ruft sich selbst solange erneut auf wie Slots noch im Inventar liegen.

Editor Icon slot-sensor:v4slots.mcfunction
# Die ID des ersten Inventar-Slots wird kopiert und anschließend wird der erste Slot des Inventars gelöscht, sodass alle anderen aufrücken.
data modify storage slot-sensor:v4daten "EigSlotS.4Slot" set from storage slot-sensor:v4daten "EigSlotS.4Inventar"[0].id
data remove storage slot-sensor:v4daten "EigSlotS.4Inventar"[0]

# Der ausgewählte Gegenstand vom Spieler wird mit dem aktuell kopierten Slot verglichen, in dem er in diesen kopiert wird, falls das gelingt, war es ein anderer Gegenstand, ansonsten ist es der gesuchte. Dies wird in einer Variable gespeichert.
execute store success score PZSlotS.4Ungleich PZSlotS.4Slots run data modify storage slot-sensor:v4daten "EigSlotS.4Slot" set from entity @s SelectedItem.id

# Wenn der Gegenstand der gesuchte ist, dann wird die Anzahl der Slots, die dieser Gegenstand belegt um eins erhöht.
execute unless score PZSlotS.4Ungleich PZSlotS.4Slots matches 1 run scoreboard players add @s PZSlotS.4Slots 1

# Solange das Inventar nicht leer ist, wird die Slot-Funktion erneut aufgerufen.
execute if data storage slot-sensor:v4daten {EigSlotS.4Inventar:[{}]} run function slot-sensor:v4slots


Variante 4: Stopp-Funktion
Die Stopp-Funktion löscht das Punkte-Ziel, den NBT-Speicher und alle Gegenstände.

Editor Icon slot-sensor:v4stopp.mcfunction
# Das Punkte-Ziel wird wieder entfernt.
scoreboard objectives remove PZSlotS.4Slots

# Die Eigenschaften des NBT-Speichers werden gelöscht.
data remove storage slot-sensor:v4daten "EigSlotS.4Inventar"
data remove storage slot-sensor:v4daten "EigSlotS.4Slot"

# Alle Gegenstände mit der entsprechenden Eigenschaft werden gelöscht.
clear @a minecraft:ink_sac{EigSlotS.4Alle:true}
clear @a minecraft:green_dye{EigSlotS.4Alle:true}
clear @a minecraft:egg{EigSlotS.4Alle:true}
clear @a minecraft:glowstone_dust{EigSlotS.4Alle:true}
clear @a minecraft:lava_bucket{EigSlotS.4Alle:true}

# Falls die Gegenstände gedroppt wurden, werden sie ebenfalls gelöscht.
kill @e[type=minecraft:item,nbt={Item:{tag:{EigSlotS.4Alle:true} } }]


Disambig color
Grid Grasblock
Auch im Minecraft Wiki wird das Thema dieser Technik behandelt:
Inventar#Inventarslot-IDs
Advertisement