Objekt-Zähler (Befehle)

Aus Technik Wiki
Wechseln zu: Navigation, Suche
Gruppe: Grid Kolben.png
Vorrichtungen

Grid Roter Sand blass.png mit Mechaniken

Grid Redstone blass.png mit Redstone
                Hier:
Grid Befehlsblock.png mit Befehlen
Verfügbar in:
Wiki Redstone-Welt.png Redstone-Welt
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 Objekt-Zähler kann allgemein zählen wie viele Objekte in einer Welt oder in einem bestimmten Radius um einen Spieler sich befinden. Es lassen sich auch nur bestimmte Objekte zählen oder welche die nur in einem bestimmten Team sind. Ebenfalls lässt sich mit einem Objekt-Zähler auch die Untergrenze und Obergrenze einstelle, sodass mindestens oder maximal eine bestimmte Anzahl von Objekten vorhanden ist.

Variante 1[Bearbeiten | Quelltext bearbeiten]

Objekt-Zähler (Befehle) Bild 1.1.png Objekt-Zähler (Befehle) Bild 1.2.png

Dieser Objekt-Zähler zählt alle Hoglins, die man durch ein Spawn-Ei erzeugt hat. Das Zählen wird aktiv, wenn man den Stock mit Verzauberungsschimmer in der Schnellleiste ausgewählt hat. Die Anzahl der Hoglins wird mit einer Titel-Nachricht über der Schnellleiste angezeigt.

Einschalten
  • Befehl 1.1 Es wird ein Punkte-Ziel angelegt, dass für das Zählen der Hoglins verwendet wird.
  • Befehl 1.2 Spielern im Umkreis von 25 Blöcken, wird ein Stock mit Verzauberungsschimmer ins Inventar gelegt. Diesen kann man auswählen um den Zähler zu starten.
  • Befehl 1.3 Für die Hoglins, die man zählen lassen kann, wird jedem Spieler auch ein Hoglin-Spawn-Ei gegeben. Damit die Hoglins sich nicht Zoglins verwandeln besitzen die entsprechende Eigenschaft.
Wiederholen
  • Befehl 1.4 Wenn der Spieler den Stock ausgewählt hat, erhält er ein Etikett. Das Auswählen wird über eine spezielle Eigenschaft erfasst, die nur dieser Stock besitzt.
  • Befehl 1.5 Wenn mindestens ein Spieler den Stock ausgewählt hat, wird gesamte Anzahl aller Hoglins ausgelesen und in eine Variable für die Anzahl gespeichert.
  • Befehl 1.6 Wenn der Stock ausgewählt ist, wird mit einer Titel-Nachricht die genaue Anzahl der Hoglins über der Schnellleiste angezeigt.
  • Befehl 1.7 Hat man von einem Moment zum anderen den Stock nicht ausgewählt, so wird der Titel-Bereich wieder geräumt, da er sonst noch länger zu sehen wäre.
  • Befehl 1.8 Wenn der Spieler den Stock gerade erst ausgewählt hat, erhält er ein Etikett, dass diesen Umstand markiert.
  • Befehl 1.9 Hat der Spieler gerade erst den Stock nicht mehr ausgewählt, wird das Etikett wieder entfernt.
  • Befehl 1.10 Das Etikett zur Markierung, wenn der Spieler den Stock ausgewählt hat, wird im selben Tick wieder entfernt, sodass es nur kurzzeitig, wenn man es braucht, vorhanden ist.
Ausschalten
  • Befehl 1.11 Das Punkte-Ziel wird wieder entfernt. Somit auch die Variable für die Anzahl der Hoglins.
  • Befehl 1.12 Das Etikett, für die Auswahl könnte in manchen Fällen noch vorhanden sein, weswegen es entfernt wird.
  • Befehl 1.13 Der stock mit Verzauberungsschimmer kann anhand einer speziellen Eigenschaft von normalen Stöcken unterschieden werden und nur dieser wird entfernt.
  • Befehl 1.14 Das Hoglin-Spawn-ei besitzt wie der Stock eine zusätzliche spezielle Eigenschaft, damit nur dieses entfernt wird.
  • Befehl 1.15 Falls man die erhaltenen Gegenstände auf den Boden geworfen hat, erhalten all diese ein Etikett.
  • Befehl 1.16 Alle Objekte mit diesem Etikett, also in erster Linie die Hoglins, aber auch die auf dem Boden geworfenen Gegenstände werden entfernt.

Befehlsblöcke mit Befehlen:
scoreboard objectives add PZObjZae.1Anz dummy ["Objekt-Zähler.1: ",{"text":"Anzahl der Objekte","bold":true}]
give @a[distance=..25] minecraft:stick{EigObjZae.1Alle:true,EigObjZae.1Sensor:true,Enchantments:[{id:-1}],display:{Name:'{"text":"Objekt-Sensor","color":"dark_purple","bold":true}',Lore:['"Wähle den Stock aus"','"um die Anzahl der Objekte"','"anzuzeigen zu lassen."'] } }
give @a[distance=..25] minecraft:hoglin_spawn_egg{EigObjZae.1Alle:true,display:{Lore:['"Eine Kreatur zum"','"aufzählen"'] },EntityTag:{IsImmuneToZombification:true,Tags:["EtiObjZae.1Alle","EtiObjZae.1Objekt"],DeathLootTable:"minecraft:empty"} } 16


tag @a[nbt={SelectedItem:{tag:{EigObjZae.1Sensor:true} } }] add EtiObjZae.1Ausgewaehlt
execute if entity @p[tag=EtiObjZae.1Ausgewaehlt] store result score VarObjZae.1Anzahl PZObjZae.1Anz if entity @e[type=minecraft:hoglin,tag=EtiObjZae.1Objekt]
title @a[tag=EtiObjZae.1Ausgewaehlt] actionbar ["",{"text":"anzahl == ","color":"gray","bold":true},{"score":{"name":"VarObjZae.1Anzahl","objective":"PZObjZae.1Anz"},"color":"dark_purple","bold":true}]
title @a[tag=!EtiObjZae.1Ausgewaehlt,tag=EtiObjZae.1Auswahl] actionbar [""]
tag @a[tag=EtiObjZae.1Ausgewaehlt,tag=!EtiObjZae.1Auswahl] add EtiObjZae.1Auswahl
tag @a[tag=!EtiObjZae.1Ausgewaehlt,tag=EtiObjZae.1Auswahl] remove EtiObjZae.1Auswahl
tag @a[tag=EtiObjZae.1Ausgewaehlt] remove EtiObjZae.1Ausgewaehlt


scoreboard objectives remove PZObjZae.1Anz
tag @a[tag=EtiObjZae.1Auswahl] remove EtiObjZae.1Auswahl
clear @a minecraft:stick{EigObjZae.1Alle:true}
clear @a minecraft:hoglin_spawn_egg{EigObjZae.1Alle:true}
tag @e[type=minecraft:item,nbt={Item:{tag:{EigObjZae.1Alle:true} } }] add EtiObjZae.1Alle
kill @e[tag=EtiObjZae.1Alle]

Variante 2[Bearbeiten | Quelltext bearbeiten]

Objekt-Zähler (Befehle) Bild 2.1.png Objekt-Zähler (Befehle) Bild 2.2.png

Mit diesem Objekt-Zähler lassen sich nicht nur die Piglins zählen, sondern man kann, wenn man den Stock ausgewählt hat, auch die Mindest- und Höchst-Anzahl der Piglins einstellen. Sind zu wenige da, werden weitere erzeugt. Sind zu viele vorhanden, werden die zu vielen wieder entfernt.

Einschalten
  • Befehl 2.1 Auf dem Wiederhol-Befehlsblock befindet sich ein Hebel. Legt man ihn um, wird zuerst der Befehlsblock mit der Start-Funktion objekt-zaehler:v2start aktiviert.
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:



Variante 2: Start-Funktion
Die Start-Funktion erzeugt ein Punkte-Ziel mit zwei Variablen für den Minimal- und Maximal-Wert. Gleichzeitig erhalten die Spieler den Stock und das Piglin-Spawn-Ei.

Editor Icon.png objekt-zaehler:v2start.mcfunction
# Es wird ein Punkte-Ziel für den Auslöser erstellt.
scoreboard objectives add PZObjZae.2Ausl trigger ["Objekt-Zähler.2: ",{"text":"Auslöser","bold":true}]

# Zwei Variablen für das Minimum und das Maximum werden gesetzt.
scoreboard players set VarObjZae.2Min PZObjZae.2Ausl 0
scoreboard players set VarObjZae.2Max PZObjZae.2Ausl 10

# Spieler im Umkreis von 25 Blöcken erhalten einen Stock mit Verzauberungsschimmer.
give @a[distance=..25] minecraft:stick{EigObjZae.2Alle:true,EigObjZae.2Sensor:true,Enchantments:[{id:-1}],display:{Name:'{"text":"Objekt-Sensor","color":"dark_purple","bold":true}',Lore:['"Wähle den Stock aus"','"um die Anzahl der Objekte"','"anzuzeigen zu lassen."'] } }

# Ebenfalls erhalten die Spieler Piglin-Spawn-Eier.
give @a[distance=..25] minecraft:piglin_spawn_egg{EigObjZae.2Alle:true,display:{Lore:['"Eine Kreatur zum"','"aufzählen"'] },EntityTag:{IsImmuneToZombification:true,Tags:["EtiObjZae.2Alle","EtiObjZae.2Objekt"],ArmorItems:[{},{},{},{id:"minecraft:leather_helmet",Count:1b}],DeathLootTable:"minecraft:empty"} } 16

Variante 2: Zyklus-Funktion
Die Zyklus-Funktion lässt die Piglins zählen, wenn der Spieler den Stock ausgewählt hat und prüft ob die Anzahl der Piglins weder unterschritten noch überschritten wird.

Editor Icon.png objekt-zaehler:v2zyklus.mcfunction
# Wenn Spieler den Stock ausgewählt haben, erhalten sie ein Etikett dafür.
tag @a[nbt={SelectedItem:{tag:{EigObjZae.2Sensor:true} } }] add EtiObjZae.2Ausgewaehlt

# Nur wenn man das Etikett gerade ausgewählt hat, wird einem der Auslöser-Wert auf -99 gesetzt, damit die Funktion aufgerufen wird.
scoreboard players set @a[tag=EtiObjZae.2Ausgewaehlt,tag=!EtiObjZae.2Auswahl] PZObjZae.2Ausl -99

# Wenn man den Stock gerade ausgewählt hat, erhält man ein weiteres Etikett, wenn man ihn nicht mehr ausgewählt hat, wird einem das Etikett wieder entfernt.
tag @a[tag=EtiObjZae.2Ausgewaehlt,tag=!EtiObjZae.2Auswahl] add EtiObjZae.2Auswahl
tag @a[tag=!EtiObjZae.2Ausgewaehlt,tag=EtiObjZae.2Auswahl] remove EtiObjZae.2Auswahl

# Wenn man den Stock ausgewählt hat und nicht den Wert null besitzt, wird die Auslöser-Funktion geladen.
execute as @a[tag=EtiObjZae.2Ausgewaehlt] unless entity @s[scores={PZObjZae.2Ausl=0}] run function objekt-zaehler:v2ausloeser

# Wenn man den Stock ausgewählt hat, wird die Anzahl der Piglins die man erzeugt hat, ermittelt.
execute if entity @p[tag=EtiObjZae.2Ausgewaehlt] store result score VarObjZae.2Anzahl PZObjZae.2Ausl if entity @e[type=minecraft:piglin,tag=EtiObjZae.2Objekt]

# Wenn die maximale Anzahl nicht bei null liegt, wird diese als Obergrenze für die Piglins verwendet.
execute unless score VarObjZae.2Max PZObjZae.2Ausl matches 0 run title @a[tag=EtiObjZae.2Ausgewaehlt] actionbar ["",{"text":"min(","color":"gray","bold":true},{"score":{"name":"VarObjZae.2Min","objective":"PZObjZae.2Ausl"},"color":"gold","bold":true},{"text":") <= ","color":"gray","bold":true},{"score":{"name":"VarObjZae.2Anzahl","objective":"PZObjZae.2Ausl"},"color":"dark_purple","bold":true},{"text":" <= max(","color":"gray","bold":true},{"score":{"name":"VarObjZae.2Max","objective":"PZObjZae.2Ausl"},"color":"dark_red","bold":true},{"text":")","color":"gray","bold":true}]

# Wenn die maximale Anzahl bei null liegt, wird keine Obergrenze für die gezählten Piglins angenommen.
execute if score VarObjZae.2Max PZObjZae.2Ausl matches 0 run title @a[tag=EtiObjZae.2Ausgewaehlt] actionbar ["",{"text":"min(","color":"gray","bold":true},{"score":{"name":"VarObjZae.2Min","objective":"PZObjZae.2Ausl"},"color":"gold","bold":true},{"text":") <= ","color":"gray","bold":true},{"score":{"name":"VarObjZae.2Anzahl","objective":"PZObjZae.2Ausl"},"color":"dark_purple","bold":true},{"text":" <= max(","color":"gray","bold":true},{"text":"∞","color":"dark_red","bold":true},{"text":")","color":"gray","bold":true}]

# Wenn die Anzahl der Piglins größer ist, als der Maximalwert, so wird eine Nachricht ausgegeben.
execute unless score VarObjZae.2Max PZObjZae.2Ausl matches 0 if score VarObjZae.2Anzahl PZObjZae.2Ausl > VarObjZae.2Max PZObjZae.2Ausl run tellraw @a[tag=EtiObjZae.2Ausgewaehlt,tag=!EtiObjZae.2Grenze] ["Objekt-Zähler.2:\n",{"text":"(anzahl <= max) == ","color":"gray","bold":true},{"text":"falsch","color":"red","bold":true} ]

# Spieler erhalten ein Etikett, wenn die Obergrenze überschritten wird und es wird erst wieder entfernt, wenn die Obergrenze unterschritten wird. Das Etikett sorgt dafür, dass die Nachricht nur einmal angezeigt wird, auch wenn die Obergrenze über mherere Ticks überschritten wird.
execute unless score VarObjZae.2Max PZObjZae.2Ausl matches 0 if score VarObjZae.2Anzahl PZObjZae.2Ausl > VarObjZae.2Max PZObjZae.2Ausl run tag @a[tag=EtiObjZae.2Ausgewaehlt,tag=!EtiObjZae.2Grenze] add EtiObjZae.2Grenze
execute unless score VarObjZae.2Max PZObjZae.2Ausl matches 0 if score VarObjZae.2Anzahl PZObjZae.2Ausl <= VarObjZae.2Max PZObjZae.2Ausl run tag @a[tag=EtiObjZae.2Ausgewaehlt,tag=EtiObjZae.2Grenze] remove EtiObjZae.2Grenze

# Wenn die Obergrenze überschritten wird, wird jeden Tick ein Piglin entfernt, solange bis die Obergrenze nicht mehr überschritten wird.
execute unless score VarObjZae.2Max PZObjZae.2Ausl matches 0 if score VarObjZae.2Anzahl PZObjZae.2Ausl > VarObjZae.2Max PZObjZae.2Ausl at @p[tag=EtiObjZae.2Ausgewaehlt] run kill @e[type=minecraft:piglin,tag=EtiObjZae.2Objekt,sort=nearest,limit=1]

# Wenn die Anzahl der Piglins kleiner ist, als die eingestellte Mindest-Anzahl, so wird jeden Tick an einem zufälligen Spieler ein neuer Piglin erzeugt.
execute if score VarObjZae.2Anzahl PZObjZae.2Ausl < VarObjZae.2Min PZObjZae.2Ausl run tellraw @a[tag=EtiObjZae.2Ausgewaehlt] ["Objekt-Zähler.2:\n",{"text":"(anzahl < min) == ","color":"gray","bold":true},{"text":"wahr","color":"green","bold":true} ]
execute if score VarObjZae.2Anzahl PZObjZae.2Ausl < VarObjZae.2Min PZObjZae.2Ausl at @r[tag=EtiObjZae.2Ausgewaehlt] run summon minecraft:piglin ~ ~ ~ {IsImmuneToZombification:true,Tags:["EtiObjZae.2Alle","EtiObjZae.2Objekt"],ArmorItems:[{},{},{},{id:"minecraft:leather_helmet",Count:1b} ] }

# Damit die Spieler nur dann das Etikett besitzen, wenn sie den Stock ausgewählt haben, wird ihnen das Etikett entfernt.
tag @a[tag=EtiObjZae.2Ausgewaehlt] remove EtiObjZae.2Ausgewaehlt

Variante 2: Auslöser-Funktion
Die Auslöser-Funktion gibt den Spielern die Möglichkeit den Minimal- und Maximal-Wert der Piglins einzustellen und das über eine Text-Nachricht.

Editor Icon.png objekt-zaehler:v2ausloeser.mcfunction
# Wenn der Spieler den Minimalwert um eins erhöhen oder ernidrigen will, so wird vorher überprüft ob dabei dieser nicht über den Maximalwert kommt oder kleiner null wird.
execute if entity @s[scores={PZObjZae.2Ausl=1}] if score VarObjZae.2Min PZObjZae.2Ausl < VarObjZae.2Max PZObjZae.2Ausl run scoreboard players add VarObjZae.2Min PZObjZae.2Ausl 1
execute if entity @s[scores={PZObjZae.2Ausl=-1}] if score VarObjZae.2Min PZObjZae.2Ausl matches 1.. run scoreboard players remove VarObjZae.2Min PZObjZae.2Ausl 1

# Wenn der Spieler den Maximalwert um eins erhöhen oder erniedrigen möchte, so wird beim verringern geschaut ob der Wert nicht kleiner als der Minimalwert wird.
execute if entity @s[scores={PZObjZae.2Ausl=2}] run scoreboard players add VarObjZae.2Max PZObjZae.2Ausl 1
execute if entity @s[scores={PZObjZae.2Ausl=-2}] if score VarObjZae.2Max PZObjZae.2Ausl > VarObjZae.2Min PZObjZae.2Ausl run scoreboard players remove VarObjZae.2Max PZObjZae.2Ausl 1

# Der Spieler erhält eine Nachricht, in der die Optionen bestehen, die Minimal- und Maximalwerte einzustellen und man sieht die aktuellen werte dieser.
tellraw @s ["Objekt-Zähler.2: ",{"text":"\nmin = ","bold":true},{"text":"min + 1","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für Minimum + 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZObjZae.2Ausl set 1"} },{"text":"\nmin = ","bold":true},{"text":"min - 1","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für Minimum - 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZObjZae.2Ausl set -1"} },{"text":"\nmin == ","bold":true},{"score":{"name":"VarObjZae.2Min","objective":"PZObjZae.2Ausl"},"color":"gold","bold":true},{"text":"\nmax = ","bold":true},{"text":"max + 1","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für Maximum + 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZObjZae.2Ausl set 2"} },{"text":"\nmax = ","bold":true},{"text":"max - 1","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für Maximum - 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZObjZae.2Ausl set -2"} },{"text":"\nmax == ","bold":true},{"score":{"name":"VarObjZae.2Max","objective":"PZObjZae.2Ausl"},"color":"dark_red","bold":true}]

# Anschließend wird dem Spieler die Berechtigung eingeräumt erneut den Auslöser zu aktivieren und sein Wert wird auf null gesetzt.
scoreboard players enable @s PZObjZae.2Ausl
scoreboard players set @s PZObjZae.2Ausl 0

Variante 2: Stopp-Funktion
Die Stopp-Funktion löscht das Punkte-Ziel und die Gegenstände in der Hand und die Objekte in der Welt.

Editor Icon.png objekt-zaehler:v2stopp.mcfunction
# Das Punkte-Ziel wird entfernt und somit auch alle Variablen.
scoreboard objectives remove PZObjZae.2Ausl

# Das Etikett das der Spieler beim Auswählen des Stocks bekommen hatte, wird entfernt.
tag @a[tag=EtiObjZae.2Auswahl] remove EtiObjZae.2Auswahl

# Die Gegenstände die der Spieler bekommen hatte, werden aus dem Inventar wieder entfernt.
clear @a minecraft:stick{EigObjZae.2Alle:true}
clear @a minecraft:piglin_spawn_egg{EigObjZae.2Alle:true}

# Falls die Gegenstände gedroppt wurde, erhalten sie ein bestimmtes Etikett, das alle Objekte besitzen und diese werden entfernt.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigObjZae.2Alle:true} } }] add EtiObjZae.2Alle
kill @e[tag=EtiObjZae.2Alle]

Variante 3[Bearbeiten | Quelltext bearbeiten]

Objekt-Zähler (Befehle) Bild 3.1.png Objekt-Zähler (Befehle) Bild 3.2.png

Dieser Objekt-Zähler ermöglicht drei Arten des Zählens der Piglins, die man mit einem Spawn-Ei erzeugen kann. Zum einen kann die Gesamtzahl gezählt werden zum anderen kann die Anzahl der Piglins innerhalb von Zonen gezählt werden und speziell für Teams kann gezählt werden, wie viele Piglins in einem der zwei Teams sind. Um den Zählvorgang zu starten muss man einen Stock mit Verzauberungsschimmer ausgewählt haben oder man stellt sich in eine Zone hinein.

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

Befehlsblöcke mit Befehlen:



Variante 3: Start-Funktion
Die Start-Funktion erzeugt ein Punkte-Ziel und zwei verschieden farbige Teams für die Piglins. Gleichzeitig erhalten die Spieler den Stock und zwei verschiedene Piglin-Spawn-Eier.

Editor Icon.png objekt-zaehler:v3start.mcfunction
# Es wird ein Auslöser-Punkte-Ziel erstellt, mit dem man Optionen einstellen kann.
scoreboard objectives add PZObjZae.3Anz trigger ["Objekt-Zähler.3: ",{"text":"Auslöser","bold":true}]

# Es werden zwei Teams erstellt.
team add TMObjZae.3Team1 ["Objekt-Zähler.3: ",{"text":"Team1","color":"red","bold":true}]
team add TMObjZae.3Team2 ["Objekt-Zähler.3: ",{"text":"Team2","color":"blue","bold":true}]

# Für die beiden Teams wird eine jeweilige Farbe festgelegt.
team modify TMObjZae.3Team1 color red
team modify TMObjZae.3Team2 color blue

# Spieler im Umkreis von 15 Blöcken erhalten einen Stock mit Verzauberungsschimmer.
give @a[distance=..15] minecraft:stick{EigObjZae.3Alle:true,EigObjZae.3Sensor:true,Enchantments:[{id:-1}],display:{Name:'{"text":"Objekt-Sensor","color":"dark_purple","bold":true}',Lore:['"Wähle den Stock aus"','"um die Anzahl der Objekte"','"anzuzeigen zu lassen."'] } }

# Ein Piglin-Spawn-Ei das einen Piglin mit roten Helm erzeugen kann.
give @a[distance=..15] minecraft:piglin_spawn_egg{EigObjZae.3Alle:true,display:{Name:'{"text":"Team1","color":"red","bold":true}',Lore:['"Eine Kreatur zum"','"aufzählen"'] },EntityTag:{IsImmuneToZombification:true,Team:"TMObjZae.3Team1",Tags:["EtiObjZae.3Alle","EtiObjZae.3Objekt"],ArmorItems:[{},{},{},{id:"minecraft:leather_helmet",Count:1b,tag:{display:{color:16711680} } } ],DeathLootTable:"minecraft:empty"} } 16

# Ein Piglin-Spawn-Ei das einen Piglin mit blauen Helm erzeugen kann.
give @a[distance=..15] minecraft:piglin_spawn_egg{EigObjZae.3Alle:true,display:{Name:'{"text":"Team2","color":"blue","bold":true}',Lore:['"Eine Kreatur zum"','"aufzählen"'] },EntityTag:{IsImmuneToZombification:true,Team:"TMObjZae.3Team2",Tags:["EtiObjZae.3Alle","EtiObjZae.3Objekt"],ArmorItems:[{},{},{},{id:"minecraft:leather_helmet",Count:1b,tag:{display:{color:255} } } ],DeathLootTable:"minecraft:empty"} } 16

# Ein Rüstungsständer der Kugel-Zonen erzeugen kann.
give @a[distance=..15] minecraft:armor_stand{EigObjZae.3Alle:true,display:{Name:'{"text":"Kugel","color":"green","bold":true}',Lore:['"Platziere den Rüstungsständer"','"um eine Zone zu erstellen"']},EntityTag:{Small:true,Marker:true,Invisible:true,CustomNameVisible:true,CustomName:'{"text":"Kugel","color":"green","bold":true}',Tags:["EtiObjZae.3Alle","EtiObjZae.3Zone","EtiObjZae.3Kugel"]} }

# Ein Rüstungsständer der Kubus-Zonen erzeugen kann.
give @a[distance=..15] minecraft:armor_stand{EigObjZae.3Alle:true,display:{Name:'{"text":"Kubus","color":"green","bold":true}',Lore:['"Platziere den Rüstungsständer"','"um eine Zone zu erstellen"']},EntityTag:{Small:true,Marker:true,Invisible:true,CustomNameVisible:true,CustomName:'{"text":"Kubus","color":"green","bold":true}',Tags:["EtiObjZae.3Alle","EtiObjZae.3Zone","EtiObjZae.3Kubus"],Rotation:[0.0f,0.0f]} }


Variante 3: Zyklus-Funktion
Die Zyklus-Funktion lässt die Piglins zählen, werden die Piglins auf zwei verschiedenen Wegen gezählt einmal die Gesamtzahl und dann für jede Zone speziell. Die Zählen-Funktion wird nur dann aufgerufen, wenn der spieler den stock ausgewählt hat und in der Zone steht.

Editor Icon.png objekt-zaehler:v3zyklus.mcfunction
# Die Kugel-Zonen werden um fünf Grad gedreht und erzeugt dabei Partikel.
execute as @e[type=minecraft:armor_stand,tag=EtiObjZae.3Kugel] at @s run teleport @s ~ ~ ~ ~5 0
execute at @e[type=minecraft:armor_stand,tag=EtiObjZae.3Kugel] run particle minecraft:totem_of_undying ^ ^0.5 ^5 0 0 0 0.1 10 force @a[distance=..25]

# Die Kubus-Zonen werden jeweils um 90° gedreht und erzeugen dabei in einer längs gezogenen Bahn Partikel.
execute as @e[type=minecraft:armor_stand,tag=EtiObjZae.3Kubus] at @s run teleport @s ~ ~ ~ ~90 0
execute as @e[type=minecraft:armor_stand,tag=EtiObjZae.3Kubus,y_rotation=-135..135] unless entity @s[y_rotation=-45..45] at @s run particle minecraft:totem_of_undying ^ ^0.5 ^5.5 0 0 2 0.1 10 force @a[distance=..25]
execute as @e[type=minecraft:armor_stand,tag=EtiObjZae.3Kubus,y_rotation=135..45] unless entity @s[y_rotation=-135..-45] at @s run particle minecraft:totem_of_undying ^ ^0.5 ^5.5 2 0 0 0.1 10 force @a[distance=..25]

# Von der Position von Kugel-Zonen wird die Anzahl der Objekte in einem Radius von fünf Blöcken von der Mitte aus gezählt.
execute as @e[type=minecraft:armor_stand,tag=EtiObjZae.3Kugel] at @s store result score @s PZObjZae.3Anz if entity @e[distance=..5,tag=!EtiObjZae.3Zone]

# Von der Position von Kubus-Zonen wird die Anzahl der Objekte in einem Kubus-Bereich ermittelt.
execute as @e[type=minecraft:armor_stand,tag=EtiObjZae.3Kubus] at @s positioned ~-5 ~ ~-5 store result score @s PZObjZae.3Anz if entity @e[dx=10,dy=5,dz=10,tag=!EtiObjZae.3Zone]

# Wenn Spieler den Stock ausgewählt haben, wird ein Etikett vergeben.
tag @a[nbt={SelectedItem:{tag:{EigObjZae.3Sensor:true} } }] add EtiObjZae.3Ausgewaehlt

# Wenn mindestens ein Spieler den Stock ausgewählt hat, wird die Gesamtzahl der Piglins ermittelt.
execute if entity @p[tag=EtiObjZae.3Ausgewaehlt] store result score VarObjZae.3Anzahl PZObjZae.3Anz if entity @e[type=minecraft:piglin,tag=EtiObjZae.3Objekt]

# Befindet sich ein Spieler der den Stock ausgewählt hat, in keiner Zone, so wird die Gesamtzahl der Piglins in einer Titel-Nachricht über der Schnellleiste angezeigt.
execute as @a[tag=EtiObjZae.3Ausgewaehlt] at @s unless entity @e[distance=..5,type=minecraft:armor_stand,tag=EtiObjZae.3Kugel] positioned ~-5 ~ ~-5 unless entity @e[dx=10,dy=5,dz=10,type=minecraft:armor_stand,tag=EtiObjZae.3Kubus] run title @s actionbar ["",{"text":"anzahl == ","color":"gray","bold":true},{"score":{"name":"VarObjZae.3Anzahl","objective":"PZObjZae.3Anz"},"color":"dark_purple","bold":true}]

# Befinden sich Spieler in einer Kugel-Zone, so wird die Anzahl der Objekte innerhalb der Kugel-Zone in einer Titel-Nachricht angezeigt.
execute as @e[type=minecraft:armor_stand,tag=EtiObjZae.3Kugel] at @s run title @a[distance=..5,tag=!EtiObjZae.3Ausgewaehlt] actionbar ["",{"text":"in zone == ","bold":true},{"score":{"name":"@s","objective":"PZObjZae.3Anz"},"color":"dark_purple","bold":true}]

# Befinden sich Spieler in einer Kubus-Zone, so wird die Anzahl der Objekte innerhalb der Kubus-Zone in einer Titel-Nachricht angezeigt.
execute as @e[type=minecraft:armor_stand,tag=EtiObjZae.3Kubus] at @s positioned ~-5 ~ ~-5 run title @a[dx=10,dy=5,dz=10,tag=!EtiObjZae.3Ausgewaehlt] actionbar ["",{"text":"in zone == ","bold":true},{"score":{"name":"@s","objective":"PZObjZae.3Anz"},"color":"dark_purple","bold":true}]

# Haben die Spieler den Stock ausgewählt und befinden sich in einer Zone, so wird die Zählen-Funktion durch sie aufgerufen.
execute as @a[tag=EtiObjZae.3Ausgewaehlt] at @s if entity @e[distance=..15,type=minecraft:armor_stand,tag=EtiObjZae.3Zone] run function objekt-zaehler:v3zaehlen

# Wenn man gerade den Stock nicht mehr ausgewählt hat, wird die Titel-Nachricht geräumt.
title @a[tag=!EtiObjZae.3Ausgewaehlt,tag=EtiObjZae.3Auswahl] actionbar [""]

# Wählt man den Stock gerade erst aus, so erhält man ein Etikett, das auch erst dann wieder entfernt wird, wenn man dne Stock gerade nicht mehr auswählt.
tag @a[tag=EtiObjZae.3Ausgewaehlt,tag=!EtiObjZae.3Auswahl] add EtiObjZae.3Auswahl
tag @a[tag=!EtiObjZae.3Ausgewaehlt,tag=EtiObjZae.3Auswahl] remove EtiObjZae.3Auswahl

# Das Etikett wird wieder entfernt.
tag @a[tag=EtiObjZae.3Ausgewaehlt] remove EtiObjZae.3Ausgewaehlt

Variante 3: Zählen-Funktion
Die Zählen-Funktion speichert die Anzahl der Piglins, die in zwei Teams sein können in dafür vorgesehenen Variablen und gibt diese dann als Titel-Nachricht aus.

Editor Icon.png objekt-zaehler:v3zaehlen.mcfunction
# Von der Position in der Nähe gelegenen Kugel-Zonen, wird die Anzahl der Piglins in den zwei Teams ermittelt.
execute at @e[distance=..5,type=minecraft:armor_stand,tag=EtiObjZae.3Kugel,sort=nearest,limit=1] store result score VarObjZae.3Team1 PZObjZae.3Anz if entity @e[distance=..5,team=TMObjZae.3Team1]
execute at @e[distance=..5,type=minecraft:armor_stand,tag=EtiObjZae.3Kugel,sort=nearest,limit=1] store result score VarObjZae.3Team2 PZObjZae.3Anz if entity @e[distance=..5,team=TMObjZae.3Team2]

# Von der Position in der Nähe gelegenen Kubus-Zonen, wird die Anzahl der Piglins in den zwei Teams ermittelt.
execute positioned ~-5 ~ ~-5 at @e[dx=10,dy=5,dz=10,type=minecraft:armor_stand,tag=EtiObjZae.3Kubus,sort=nearest,limit=1] positioned ~-5 ~ ~-5 store result score VarObjZae.3Team1 PZObjZae.3Anz if entity @e[dx=10,dy=5,dz=10,team=TMObjZae.3Team1]
execute positioned ~-5 ~ ~-5 at @e[dx=10,dy=5,dz=10,type=minecraft:armor_stand,tag=EtiObjZae.3Kubus,sort=nearest,limit=1] positioned ~-5 ~ ~-5 store result score VarObjZae.3Team2 PZObjZae.3Anz if entity @e[dx=10,dy=5,dz=10,team=TMObjZae.3Team2]

# Der Spieler erhält eine Titel-Nachricht über der Schnellleiste, die die Anzahl der Piglins von den zwei Teams anzeigt.
title @s actionbar ["",{"text":"team1 == ","color":"gray","bold":true},{"score":{"name":"VarObjZae.3Team1","objective":"PZObjZae.3Anz"},"color":"red","bold":true},{"text":", team2 == ","color":"gray","bold":true},{"score":{"name":"VarObjZae.3Team2","objective":"PZObjZae.3Anz"},"color":"blue","bold":true}]

Variante 3: Stopp-Funktion
Die Stopp-Funktion löscht das Punkte-Ziel, die Teams und die Gegenstände in der Hand und die Objekte in der Welt.

Editor Icon.png objekt-zaehler:v3stopp.mcfunction
# Das Punkte-Ziel wird entfernt.
scoreboard objectives remove PZObjZae.3Anz

# Die beiden Teams werden entfernt.
team remove TMObjZae.3Team1
team remove TMObjZae.3Team2

# Das Etikett für die Auswahl des Stockes, das eventuell noch vorhanden sein kann, wird entfernt.
tag @a[tag=EtiObjZae.3Auswahl] remove EtiObjZae.3Auswahl

# Die Gegenstände die im Inventar vorhanden sind, werden entfernt.
clear @a minecraft:stick{EigObjZae.3Alle:true}
clear @a minecraft:armor_stand{EigObjZae.3Alle:true}
clear @a minecraft:piglin_spawn_egg{EigObjZae.3Alle:true}

# Falls Gegenstände auf den Boden geworfen wurden, werden sie markiert und anschließend werden alle Objekte mit dem Etikett entfernt.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigObjZae.3Alle:true} } }] add EtiObjZae.3Alle
kill @e[tag=EtiObjZae.3Alle]

Variante 4[Bearbeiten | Quelltext bearbeiten]

Objekt-Zähler (Befehle) Bild 4.1.png Objekt-Zähler (Befehle) Bild 4.2.png

Mit Hilfe dieses Objekt-Zählers, kann man sämtliche Objekte in einer Liste aufgezählt bekommen, inklusiver Anzahl dieser. Man muss lediglich einen Stock mit Verzauberungsschimmer auswählen um in diesem Moment den Zählvorgang einzuleiten. Das Sammeln und Zählen der Objekte funktioniert über einen NBT-Speicher, der von allen Objekten, deren Namen und Anzahl speichert und anschließend wieder ausgibt. Einziger Nachteil, der momentan nicht besser gelöst werden kann ist, dass die Gleichheit von Objekten über die Zeichenlänge des Namens geschlussfolgert werden muss, da man von sämtlichen Objekte den Namen nur über Umwege und mit einer integrierten UUID erhalten kann, welche bekanntlich bei jedem Objekt unterschiedlich ist.

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

Befehlsblöcke mit Befehlen:



Variante 4: Start-Funktion
Die Start-Funktion erzeugt ein Punkte-Ziel und einen NBT-Speicher, der die Zählliste führt. Gleichzeitig erhalten die Spieler den Stock und sechs verschiedene Spawn-Eier.

Editor Icon.png objekt-zaehler:v4start.mcfunction
# Ein Punkte-Ziel wird erstellt.
scoreboard objectives add PZObjZae.4Anz dummy ["Objekt-Zähler.4: ",{"text":"Anzahl der Objekte","bold":true}]

# Ein NBT-Speicher wird angelegt.
data merge storage objekt-zaehler:v4daten {EigObjZae.4Felder:[]}

# Jedem Spieler im Umkreis von 25 Blöcken wird ein Stock mit Verzauberungsschimmer gegeben.
give @a[distance=..25] minecraft:stick{EigObjZae.4Alle:true,EigObjZae.4Sensor:true,Enchantments:[{id:-1}],display:{Name:'{"text":"Objekt-Sensor","color":"dark_purple","bold":true}',Lore:['"Wähle den Stock aus"','"um die Anzahl der Objekte"','"anzuzeigen zu lassen."'] } }

# Die Spieler erhalten darüber hinaus sechs verschiedene Spawn-Eier mit denen lassen sich verschiedene Kreaturen erzeugen, um sie zu zählen.
give @a[distance=..25] minecraft:piglin_spawn_egg{EigObjZae.4Alle:true,display:{Lore:['"Eine Kreatur zum"','"aufzählen"'] },EntityTag:{IsImmuneToZombification:true,Tags:["EtiObjZae.4Alle"],DeathLootTable:"minecraft:empty"} }
give @a[distance=..25] minecraft:hoglin_spawn_egg{EigObjZae.4Alle:true,display:{Lore:['"Eine Kreatur zum"','"aufzählen"'] },EntityTag:{IsImmuneToZombification:true,Tags:["EtiObjZae.4Alle"],DeathLootTable:"minecraft:empty"} }
give @a[distance=..25] minecraft:strider_spawn_egg{EigObjZae.4Alle:true,display:{Lore:['"Eine Kreatur zum"','"aufzählen"'] },EntityTag:{Passengers:[{}],Tags:["EtiObjZae.4Alle"],DeathLootTable:"minecraft:empty"} }
give @a[distance=..25] minecraft:zombified_piglin_spawn_egg{EigObjZae.4Alle:true,display:{Lore:['"Eine Kreatur zum"','"aufzählen"'] },EntityTag:{Tags:["EtiObjZae.4Alle"],DeathLootTable:"minecraft:empty"} }
give @a[distance=..25] minecraft:zoglin_spawn_egg{EigObjZae.4Alle:true,display:{Lore:['"Eine Kreatur zum"','"aufzählen"'] },EntityTag:{Tags:["EtiObjZae.4Alle"],DeathLootTable:"minecraft:empty"} }
give @a[distance=..25] minecraft:piglin_brute_spawn_egg{EigObjZae.4Alle:true,display:{Lore:['"Eine Kreatur zum"','"aufzählen"'] },EntityTag:{IsImmuneToZombification:true,Tags:["EtiObjZae.4Alle"],DeathLootTable:"minecraft:empty"} }

# Um die Namen der Kreaturen anzuzeigen, wird ein Schild benötigt. Dieses wird an der Position der erzeugten Partikelwolke platziert.
summon minecraft:area_effect_cloud ~ ~1 ~ {Duration:-1,Age:-2147483648,WaitTime:-2147483648,Particle:"minecraft:block minecraft:air",Tags:["EtiObjZae.4Alle","EtiObjZae.4Schild"]}
execute at @e[tag=EtiObjZae.4Schild] run setblock ~ ~ ~ minecraft:oak_sign[rotation=12] replace


Variante 4: Zyklus-Funktion
Die Zyklus-Funktion prüft ob der Spieler den Stock ausgewählt hat und lässt dann die Sensor-Funktion laden.

Editor Icon.png objekt-zaehler:v4zyklus.mcfunction
# Wenn Spieler den Stock ausgewählt haben, erhalten sie ein Etikett.
tag @a[nbt={SelectedItem:{tag:{EigObjZae.4Sensor:true} } }] add EtiObjZae.4Ausgewaehlt

# Wenn Spieler den Stock gerade erst ausgewählt haben, wird die Sensor-Funktion geladen.
execute as @a[tag=EtiObjZae.4Ausgewaehlt,tag=!EtiObjZae.4Auswahl] at @s run function objekt-zaehler:v4sensor

# Wenn Spieler gerade erst den Stock auswählen erhalten sie ein weiteres Etikett, das erst dann wieder entfernt wird, wenn sie den Stock gerade nicht mehr ausgewählt haben.
tag @a[tag=EtiObjZae.4Ausgewaehlt,tag=!EtiObjZae.4Auswahl] add EtiObjZae.4Auswahl
tag @a[tag=!EtiObjZae.4Ausgewaehlt,tag=EtiObjZae.4Auswahl] remove EtiObjZae.4Auswahl

# Das Etikett wird wieder entfernt, sodass nur dann vorhanden ist, wenn der Stock ausgewählt wurde.
tag @a[tag=EtiObjZae.4Ausgewaehlt] remove EtiObjZae.4Ausgewaehlt

Variante 4: Sensor-Funktion
Die Sensor-Funktion markiert in einem bestimmten Umkreis um den jeweiligen Spieler alle Objekte die mit in die Zählliste aufgenommen werden und lässt sie später auflisten.

Editor Icon.png objekt-zaehler:v4sensor.mcfunction
# Von der Position des Spielers werden in einem Radius von 50 Blöcken alle Objekte mit einem Etikett ausgestattet, die nachher gezählt werden.
execute store result score @s PZObjZae.4Anz run tag @e[distance=..50,tag=!EtiObjZae.4Ausgewaehlt,sort=nearest] add EtiObjZae.4Zaehlen

# Befindet sich minestens ein Objekt beim Spieler, so wird die Zählen-Funktion geladen.
execute if entity @s[scores={PZObjZae.4Anz=1..}] run function objekt-zaehler:v4zaehlen

# Dem Spieler wird eine Nachricht ausgegeben, in der die Anzahl der Objekte steht.
tellraw @s ["Objekt-Zähler.4: ",{"text":"\nAnzahl Objekte == ","bold":true},{"score":{"name":"@s","objective":"PZObjZae.4Anz"},"color":"dark_purple","bold":true}]

# Falls mindestens ein Objekt gezählt wurde, wird die Anzeigen-Funktion geladen.
execute if entity @s[scores={PZObjZae.4Anz=1..}] run function objekt-zaehler:v4anzeigen

Variante 4: Zählen-Funktion
Die Zählen-Funktion greift sich bei jedem Selbstaufruf ein weiteres Objekt und schreibt dessen Namen auf ein Schild und lässt dann die Felder-Funktion darüber laufen.

Editor Icon.png objekt-zaehler:v4zaehlen.mcfunction
# Dem nächst gelgenen Objekt wird ein Etikett gegeben.
tag @e[distance=..50,tag=EtiObjZae.4Zaehlen,sort=nearest,limit=1] add EtiObjZae.4Gezaehlt

# An der Position der Partikelwolke, dort wo das Schild steht, wird im Schild der Name des gerade etikettierten Objekts gespeichert.
execute at @e[tag=EtiObjZae.4Schild,sort=nearest,limit=1] run data merge block ~ ~ ~ {Text1:'[{"selector":"@e[tag=EtiObjZae.4Gezaehlt,sort=nearest,limit=1]","color":"gold","bold":true}]'}

# Danach werden beide Etiketten vom gerade markierten Objekt entfernt.
tag @e[tag=EtiObjZae.4Gezaehlt] remove EtiObjZae.4Zaehlen
tag @e[tag=EtiObjZae.4Gezaehlt] remove EtiObjZae.4Gezaehlt

# Die Partikelwolke speichert die Länge des Namens des Objektes und ruft dann von sich die Felder-Funktion auf.
execute as @e[tag=EtiObjZae.4Schild,sort=nearest,limit=1] at @s store result score @s PZObjZae.4Anz run data get block ~ ~ ~ Text1
execute as @e[tag=EtiObjZae.4Schild,sort=nearest,limit=1] at @s run function objekt-zaehler:v4felder

# Gibt es mindestens ein Objekt, das noch gezählt werden muss, so wird diese Funktion sich selbst nochmal aufrufen.
execute if entity @e[distance=..50,tag=EtiObjZae.4Zaehlen,sort=nearest,limit=1] run function objekt-zaehler:v4zaehlen

Variante 4: Felder-Funktion
Die Felder-Funktion lässt durch die Feld-Funktion prüfen ob das Objekt bereits in der Liste ist, falls das nicht der Fall ist, sorgt die Felder-Funktion dafür dass das Objekt in die Liste eingetragen wird.

Editor Icon.png objekt-zaehler:v4felder.mcfunction
# Die Anzahl der gespeicherten Namen wird ausgelesen und in eine Schleifen-Variable gespeichert. Nur wenn dessen Wert mindestens eins ist, wird die Feld-Funktion aufgerufen.
execute store result score VarObjZae.4Schleife PZObjZae.4Anz run data get storage objekt-zaehler:v4daten "EigObjZae.4Felder"
execute if score VarObjZae.4Schleife PZObjZae.4Anz matches 1.. run function objekt-zaehler:v4feld

# Wenn der Name auf dem Schild nicht gefunden wurde, wird im NBT-Speicher dieser Name neu hinzugefügt.
execute if entity @s[tag=!EtiObjZae.4Gefunden] run data modify storage objekt-zaehler:v4daten "EigObjZae.4Felder" prepend value {EigObjZae.4Typ:"",EigObjZae.4Anzahl:1}

# Der Name wird aus dem Schild in den NBT-Speicher kopiert.
execute if entity @s[tag=!EtiObjZae.4Gefunden] run data modify storage objekt-zaehler:v4daten "EigObjZae.4Felder"[0]."EigObjZae.4Typ" set from block ~ ~ ~ Text1

# Falls der Name gefunden wurde, wird das Etikett wieder entfernt.
tag @s[tag=EtiObjZae.4Gefunden] remove EtiObjZae.4Gefunden

Variante 4: Feld-Funktion
Die Feld-Funktion ruft sich solange selbst auf, bis sie durch die gesamte Liste hindurch gelaufen ist und prüft jedesmal dabei ob das zu zählende Objekt dort auftaucht.

Editor Icon.png objekt-zaehler:v4feld.mcfunction
# Die Länge des Namens wird ermittelt und in eine Längen-Variable gespeichert. Diese wird mit der Länge des neuen Namens verglichen und das Ergebnis der Gleichheit wird in eine separaten variable gespeichert.
execute store result score VarObjZae.4Laenge PZObjZae.4Anz run data get storage objekt-zaehler:v4daten "EigObjZae.4Felder"[0]."EigObjZae.4Typ"
execute store success score VarObjZae.4Gleich PZObjZae.4Anz if score @s PZObjZae.4Anz = VarObjZae.4Laenge PZObjZae.4Anz

# Wenn der neue Name bisher noch nicht gefunden wurde, er aber gleich ist, so wird die Anzahl ausgelesen und in einer Variable gespeichert. Anschließend wird die Variable um eins erhöht und wieder zurück im NBT-Speicher geschrieben.
execute if entity @s[tag=!EtiObjZae.4Gefunden] if score VarObjZae.4Gleich PZObjZae.4Anz matches 1 store result score VarObjZae.4Anzahl PZObjZae.4Anz run data get storage objekt-zaehler:v4daten "EigObjZae.4Felder"[0]."EigObjZae.4Anzahl"
execute if entity @s[tag=!EtiObjZae.4Gefunden] if score VarObjZae.4Gleich PZObjZae.4Anz matches 1 store result storage objekt-zaehler:v4daten "EigObjZae.4Felder"[0]."EigObjZae.4Anzahl" int 1 run scoreboard players add VarObjZae.4Anzahl PZObjZae.4Anz 1

# Wenn der neue Name gleich dem Namen im NBT-Speicher ist, wird das Etikett vergeben.
execute if score VarObjZae.4Gleich PZObjZae.4Anz matches 1 run tag @s[tag=!EtiObjZae.4Gefunden] add EtiObjZae.4Gefunden

# Das aktuelle Feld im NBT-Speicher wird nach ganz hinten verschoben, sodass das nachfolgende Feld an die Reihe kommen kann.
data modify storage objekt-zaehler:v4daten "EigObjZae.4Felder" append from storage objekt-zaehler:v4daten "EigObjZae.4Felder"[0]
data remove storage objekt-zaehler:v4daten "EigObjZae.4Felder"[0]

# Die Schleifen-Variable wird um eins reduziert und solange diese nicht bei null ist, wird die Feld-Funktion selbst nochmal aufgerufen.
scoreboard players remove VarObjZae.4Schleife PZObjZae.4Anz 1
execute if score VarObjZae.4Schleife PZObjZae.4Anz matches 1.. run function objekt-zaehler:v4feld

Variante 4: Anzeigen-Funktion
Die Anzeigen-Funktion ruft sich solange selbst auf, bis die gesamte Liste durchgelaufen ist und gibt durch eine Chat-Nachricht, jeden Eintrag jeweils aus.

Editor Icon.png objekt-zaehler:v4anzeigen.mcfunction
# Die Anzahl der Objekte wird aus dem NBT-Speicher in eine Variable gespeichert.
execute store result score VarObjZae.4Anzahl PZObjZae.4Anz run data get storage objekt-zaehler:v4daten "EigObjZae.4Felder"[0]."EigObjZae.4Anzahl"

# Dem Spieler wird in einer Chat-Nachricht der Objekt-Name und die Anzahl angezeigt.
tellraw @s ["",{"text":"Objekt == ","bold":true},{"storage":"objekt-zaehler:v4daten","nbt":"\"EigObjZae.4Felder\"[0].\"EigObjZae.4Typ\"","interpret":true},{"text":", Anzahl == ","bold":true},{"score":{"name":"VarObjZae.4Anzahl","objective":"PZObjZae.4Anz"},"color":"dark_purple","bold":true}]

# Das aktuelle Feld im NBT-Speicher wird entfernt.
data remove storage objekt-zaehler:v4daten "EigObjZae.4Felder"[0]

# Solange der NBT-Speicher noch nicht leer ist, wird die Anzeigen-Funktion erneut aufgerufen.
execute if data storage objekt-zaehler:v4daten {EigObjZae.4Felder:[{}]} run function objekt-zaehler:v4anzeigen

Variante 4: Stopp-Funktion
Die Stopp-Funktion löscht das Punkte-Ziel und der NBT-Speicher wird geleert. Die Gegenstände in der Hand und die Objekte in der Welt werden ebenfalls entfernt.

Editor Icon.png objekt-zaehler:v4stopp.mcfunction
# Das Punkte-Ziel wird entfernt.
scoreboard objectives remove PZObjZae.4Anz

# Der Inhalt des NBT-Speichers wird entfernt.
data remove storage objekt-zaehler:v4daten "EigObjZae.4Felder"

# Das eventuell noch vorhandene Etikett wird entfernt.
tag @a[tag=EtiObjZae.4Auswahl] remove EtiObjZae.4Auswahl

# Alle Gegenstände mit der speziellen Eigenschaft werden entfernt.
clear @a minecraft:stick{EigObjZae.4Alle:true}
clear @a minecraft:piglin_spawn_egg{EigObjZae.4Alle:true}
clear @a minecraft:hoglin_spawn_egg{EigObjZae.4Alle:true}
clear @a minecraft:strider_spawn_egg{EigObjZae.4Alle:true}
clear @a minecraft:zombified_piglin_spawn_egg{EigObjZae.4Alle:true}
clear @a minecraft:zoglin_spawn_egg{EigObjZae.4Alle:true}
clear @a minecraft:piglin_brute_spawn_egg{EigObjZae.4Alle:true}

# Das Schild an der Position der Partikelwolke wird entfernt.
execute at @e[tag=EtiObjZae.4Schild] run setblock ~ ~ ~ minecraft:air replace

# Falls manche Kreaturen beim erzeugen mit einem Spoawn-Ei Reiter mitgeliefert haben, werden diese in die Leere teleportiert.
execute as @e[tag=EtiObjZae.4Alle,nbt={Passengers:[{}]}] at @s run teleport @s ~ -256 ~

# Die gedroppten Gegenstände erhalten ein Etikett und alle Objekte mit dem Etikett werden entfernt.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigObjZae.4Alle:true} } }] add EtiObjZae.4Alle
kill @e[tag=EtiObjZae.4Alle]