Technik Wiki
Registrieren
Advertisement
Gruppe: Grid Redstone-Verstärker
Schaltnetze

Grid Roter Sand blass mit Mechaniken

Grid Redstone mit Redstone

Grid Befehlsblock mit Befehlen
Verfügbar in:
Wiki Redstone-Welt Redstone-Welt
                Hier:
Grid Wiederhol-Befehlsblock mehr Befehle

Erweiterte Direktzugriffsspeicher ermöglichen das Speichern sowie das erneute Auslesen von Zahlenwerten in Objekten. Die zu speichernden Werte werden in sogenannte Felder (engl. Arrays) hinterlegt. Hierbei werden alle Werte die ein Feld speichert auch äußerlich angezeigt. Man kann die Felder in Form von Objekten sehen und welchen Wert sie gerade beinhalten.

Variante 1[]

Direktzugriffsspeicher (Befehle, erweitert) Bild 1.1 Direktzugriffsspeicher (Befehle, erweitert) Bild 1.2

Dieser Speicher ist als eine einfache Felderreihe ausgelegt. Mit Hilfe einer Güterlore lässt sich die Anzahl der Felder dieser Felderreihe einstellen, man kann die aktuelle Feldposition steuern, sowie den Zahlenwert eines Feldes. Man kann dabei die Werte erhöhen oder verringern. Zu jeder Zeit lässt sich auch die Felderreihenlänge, die aktuelle Feldposition oder der aktuell gespeicherte Zahlenwert eines Feldes auslesen. Möchte man alle Werte der Felderreiche löschen, wählt man in der Güterlore den entsprechenden Slot aus. Auch kann man sich alle Felder mit Zahlenwert auf einmal ausgeben lassen um so eine Gesamtübersicht zu erhalten. Die Ausgaben erfolgen über Chat-Nachrichten.

Einschalten

Man legt einfach den Hebel auf dem Wiederhol-Befehlsblock um und der Speicher wird eingeschaltet.

Wiederholen

Mit dem Wiederhol-Befehlsblock wird die Zyklus-Funktion ständig am laufen gehalten.

Ausschalten

Wenn der Hebel wieder in Ausgangsstellung gelegt wird, aktiviert eine Redstone-Fackel den Befehlsblock, der die Stopp-Funktion aufruft.


Befehlsblöcke mit Befehlen:


Variante 1: Start-Funktion
Wenn die Start-Funktion geladen wird, werden die Punkte-Ziele und das Start-Feld erzeugt, welche für die Felderreihen von tragender Bedeutung sind.

Editor Icon direktzugriffsspeicher:vp1start.mcfunction
# Punkte-Ziele werden erstellt.
scoreboard objectives add PZDiZS.p1Wert dummy ["Direktzugriffsspeicher.erweitert.1: ",{"text":"Feldwert","bold":true}]
scoreboard objectives add PZDiZS.p1Pos dummy ["Direktzugriffsspeicher.erweitert.1: ",{"text":"Feldposition","bold":true}]

# Eine Güterlore (Benutzeroberfläche) mit einer grünen Shulkerkiste wird als Startposition für die Felder gespawnt.
summon minecraft:armor_stand ~ ~2 ~ {NoGravity:true,Small:true,Invisible:true,Marker:true,Tags:["EtiDiZS.p1Alle"],Passengers:[{id:"minecraft:chest_minecart",NoGravity:true,Invulnerable:true,CustomDisplayTile:true,DisplayOffset:6,DisplayState:{Name:"minecraft:lime_shulker_box"},CustomName:'{"text":"Optionen","color":"dark_purple","bold":true}',Tags:["EtiDiZS.p1Alle","EtiDiZS.p1GUI"]},{id:"minecraft:armor_stand",NoGravity:true,Small:true,Invisible:true,Tags:["EtiDiZS.p1Alle"],CustomNameVisible:true,CustomName:'{"text":"Optionen","color":"dark_purple","bold":true}'}]}

# Der Güterlore werden die Punktestandswerte null gegeben, damit diese in den Funktionen abgefragt werden können.
scoreboard players set @e[type=minecraft:chest_minecart,tag=EtiDiZS.p1GUI] PZDiZS.p1Pos 0
scoreboard players set @e[type=minecraft:chest_minecart,tag=EtiDiZS.p1GUI] PZDiZS.p1Wert 0

# Es wird eine Partikelwolke erzeugt, an deren Position ein Schild platziert wird, um den Wert der Felder in deren Anzeige-Namen speichern zu können.
summon minecraft:area_effect_cloud ~ ~1 ~ {Duration:-1,Age:-2147483648,WaitTime:-2147483648,Particle:"minecraft:block minecraft:air",Tags:["EtiDiZS.p1Alle","EtiDiZS.p1Schild"]}
execute at @e[type=minecraft:area_effect_cloud,tag=EtiDiZS.p1Schild] run setblock ~ ~ ~ minecraft:oak_sign[rotation=8] replace


Variante 1: Zyklus-Funktion
Die Zyklus-Funktion hält die Felderreihe am laufen, in dem jeden Tick überprüft wurde, ob man in dem Auswahl-Menü eine bestimmte Option angeklickt hat. Darüberhinaus sorgt die Funktion dafür, dass das aktuell ausgewählte Feld seinen weißen Leuchteffekt sowie den Partikeleffekt erhält.

Editor Icon direktzugriffsspeicher:vp1zyklus.mcfunction
# Falls die Option Felder erzeugen angeklickt wurde, besitzt die Variable einen Wert ab eins oder höher, wenn dass der Fall ist, wird von der Güterlore der Gegenstand fürs "Feld hinzufügen" entfernt, sodass diese Option aktiviert wird. Damit der Spieler dies angezeigt bekommt, wird sein Wert auf eins gesetzt.
execute if score #VarDiZS.p1FelderErzeugen PZDiZS.p1Wert matches 1.. as @e[type=minecraft:chest_minecart,tag=EtiDiZS.p1GUI,sort=nearest,limit=1] at @s store result score @p[distance=..5] PZDiZS.p1Pos run data remove entity @s Items[{Slot:3b}]

# Die Anzahl der belegten Slots, in der schwebende Güterlore mit Shulkerkiste, wird ausgelesen und nur wenn sie nicht übereinstimmt, wird die Funktion geladen.
execute as @e[type=minecraft:chest_minecart,tag=EtiDiZS.p1GUI,sort=nearest,limit=1] store result score @s PZDiZS.p1Wert run data get entity @s Items
execute as @e[type=minecraft:chest_minecart,tag=EtiDiZS.p1GUI,sort=nearest,limit=1] unless entity @s[scores={PZDiZS.p1Wert=11}] at @s run function direktzugriffsspeicher:vp1menu

# Das ausgewählte Feld erhält Leucht- und Partikeleffekte, um es sofort ausfindig machen zu können.
execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p1Inhalt] unless score @s PZDiZS.p1Pos = #VarDiZS.p1AktuellePosition PZDiZS.p1Pos run effect clear @s minecraft:glowing
execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p1Inhalt] if score @s PZDiZS.p1Pos = #VarDiZS.p1AktuellePosition PZDiZS.p1Pos run effect give @s minecraft:glowing 1 1
execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p1Inhalt] if score @s PZDiZS.p1Pos = #VarDiZS.p1AktuellePosition PZDiZS.p1Pos at @s run particle minecraft:block minecraft:lime_concrete ~ ~1.1 ~ 0 0 0 0.1 1 normal @a[distance=..25]


Variante 1: Menü-Funktion
Die Menü-Funktion kann erkennen welcher Gegenstand fehlt, also welche Schaltfläche angeklickt wurde und ruft dann die entsprechende Funktion auf, die die Option beinhaltet.

Editor Icon direktzugriffsspeicher:vp1menu.mcfunction
# Wenn der Spieler Gegenstände im Inventar hat, die vom Menü der Güterlore stammen, werden sie entfernt und der Spieler erhält den Wert eins dafür. Falls der Spieler stattdessen den Gegenstand mit der Taste Q aus der Güterlore herausbefördert hat, wird der gedroppte Gegenstand gelöscht und der Spieler erhält dafür den Wert eins. Falls er durch die Zyklus-Funktion den Positions-Wert eins besitzt, so wird dieser auf null gesetzt und der andere Wert wird dadurch auf eins gesetzt.
execute as @a[distance=..5] store result score @s PZDiZS.p1Wert run clear @s #direktzugriffsspeicher:vp1menu{EigDiZS.p1Alle:true}
execute as @a[distance=..5,scores={PZDiZS.p1Wert=0}] store success score @s PZDiZS.p1Wert run kill @e[distance=..5,type=minecraft:item,nbt={Item:{tag:{EigDiZS.p1Alle:true} } }]
execute as @a[distance=..5,scores={PZDiZS.p1Wert=0,PZDiZS.p1Pos=1}] store success score @s PZDiZS.p1Wert run scoreboard players set @s PZDiZS.p1Pos 0

# Wenn der Gegenstand für das Neuerzeugen aller Felder angeklickt wurde, wird die Felder-Erzeugen-Funktion geladen.
execute if entity @p[distance=..5,scores={PZDiZS.p1Wert=1}] if entity @s[nbt=!{Items:[{Slot:11b,Count:1b}]}] run function direktzugriffsspeicher:vp1menu_felder_erzeugen

# Wenn einer der Gegenstände für die Feldanzahl angeklickt wurde, so erhält die Güterlore ein Etikett, wodurch die Feldanzahl-Option-Funktion geladen wird.
tag @s[nbt=!{Items:[{Slot:3b,Count:1b}]}] add EtiDiZS.p1FeldAnzahlAnheben
tag @s[nbt=!{Items:[{Slot:12b,Count:1b}]}] add EtiDiZS.p1FeldAnzahlAusgeben
tag @s[nbt=!{Items:[{Slot:21b,Count:1b}]}] add EtiDiZS.p1FeldAnzahlVerringern
execute if entity @p[distance=..5,scores={PZDiZS.p1Wert=1}] unless entity @s[tag=!EtiDiZS.p1FeldAnzahlAnheben,tag=!EtiDiZS.p1FeldAnzahlAusgeben,tag=!EtiDiZS.p1FeldAnzahlVerringern] run function direktzugriffsspeicher:vp1menu_felder

# Wenn einer der Gegenstände für die Position angeklickt wurde, so erhält die Güterlore ein Etikett, wodurch die Position-Option-Funktion geladen wird.
tag @s[nbt=!{Items:[{Slot:4b,Count:1b}]}] add EtiDiZS.p1PositionAufsteigen
tag @s[nbt=!{Items:[{Slot:13b,Count:1b}]}] add EtiDiZS.p1PositionAusgeben
tag @s[nbt=!{Items:[{Slot:22b,Count:1b}]}] add EtiDiZS.p1PositionAbsteigen
execute if entity @p[distance=..5,scores={PZDiZS.p1Wert=1}] unless entity @s[tag=!EtiDiZS.p1PositionAufsteigen,tag=!EtiDiZS.p1PositionAusgeben,tag=!EtiDiZS.p1PositionAbsteigen] run function direktzugriffsspeicher:vp1menu_position

# Wenn einer der Gegenstände für die Wertangabe angeklickt wurde, so erhält die Güterlore ein Etikett, wodurch die Wert-Option-Funktion geladen wird.
tag @s[nbt=!{Items:[{Slot:5b,Count:1b}]}] add EtiDiZS.p1WertAnheben
tag @s[nbt=!{Items:[{Slot:14b,Count:1b}]}] add EtiDiZS.p1WertAusgeben
tag @s[nbt=!{Items:[{Slot:23b,Count:1b}]}] add EtiDiZS.p1WertVerringern
execute if entity @p[distance=..5,scores={PZDiZS.p1Wert=1}] unless entity @s[tag=!EtiDiZS.p1WertAnheben,tag=!EtiDiZS.p1WertAusgeben,tag=!EtiDiZS.p1WertVerringern] run function direktzugriffsspeicher:vp1menu_wert

# Wenn der Gegenstand für das Ausgeben aller Werte der Felder angeklickt wurde, wird die Werte-Funktion geladen.
execute if entity @p[distance=..5,scores={PZDiZS.p1Wert=1}] if entity @s[scores={PZDiZS.p1Pos=1..},nbt=!{Items:[{Slot:15b,Count:1b}]}] run function direktzugriffsspeicher:vp1menu_werte

# Die Güterlore wird dann vom Menü her mit all ihren Gegenständen wieder zurückgesetzt und sie bekommt alle Etiketten gelöscht, in dem die Etikette neu gesetzt werden.
data merge entity @s {Tags:["EtiDiZS.p1Alle","EtiDiZS.p1GUI"],Items:[{Slot:3b,id:"minecraft:lime_concrete_powder",Count:1b,tag:{EigDiZS.p1Alle:true,display:{Name:'{"text":"Anzahl erhöhen","color":"green","bold":true}'} } },{Slot:4b,id:"minecraft:lime_concrete_powder",Count:1b,tag:{EigDiZS.p1Alle:true,display:{Name:'{"text":"Zur höheren Position","color":"green","bold":true}'} } },{Slot:5b,id:"minecraft:lime_concrete_powder",Count:1b,tag:{EigDiZS.p1Alle:true,display:{Name:'{"text":"Wert erhöhen","color":"green","bold":true}'} } },{Slot:11b,id:"minecraft:lime_shulker_box",Count:1b,tag:{EigDiZS.p1Alle:true,display:{Name:'{"text":"Felder löschen und neu erzeugen","color":"dark_purple","bold":true}'} } },{Slot:12b,id:"minecraft:chest",Count:1b,tag:{EigDiZS.p1Alle:true,display:{Name:'{"text":"Aktuelle Feldanzahl ausgeben","color":"gold","bold":true}'} } },{Slot:13b,id:"minecraft:daylight_detector",Count:1b,tag:{EigDiZS.p1Alle:true,display:{Name:'{"text":"Aktuelle Position ausgeben","color":"gold","bold":true}'} } },{Slot:14b,id:"minecraft:book",Count:1b,tag:{EigDiZS.p1Alle:true,display:{Name:'{"text":"Aktuellen Wert ausgeben","color":"gold","bold":true}'} } },{Slot:15b,id:"minecraft:bookshelf",Count:1b,tag:{EigDiZS.p1Alle:true,display:{Name:'{"text":"Werte aller Felder ausgeben","color":"dark_purple","bold":true}'} } },{Slot:21b,id:"minecraft:red_concrete_powder",Count:1b,tag:{EigDiZS.p1Alle:true,display:{Name:'{"text":"Anzahl verringern","color":"red","bold":true}'} } },{Slot:22b,id:"minecraft:red_concrete_powder",Count:1b,tag:{EigDiZS.p1Alle:true,display:{Name:'{"text":"Zur niedrigeren Position","color":"red","bold":true}'} } },{Slot:23b,id:"minecraft:red_concrete_powder",Count:1b,tag:{EigDiZS.p1Alle:true,display:{Name:'{"text":"Wert verringern","color":"red","bold":true}'} } } ]}


Variante 1: Menü-Felder-Funktion
Die Menü-Felder-Funktion wird dafür eingesetzt, die eigentlichen Felder zu erzeugen. Hierbei kann man die Anzahl festlegen und zu jeder Zeit sich auch anzeigen lassen, wie viele Felder man angelegt hat.

Editor Icon direktzugriffsspeicher:vp1menu_felder.mcfunction
# Alle vorhandenen Felder werden um einen Block nach oben teleportiert, falls es nicht über 127 Felder sind.
execute if entity @s[tag=EtiDiZS.p1FeldAnzahlAnheben,scores={PZDiZS.p1Pos=..63}] as @e[type=minecraft:armor_stand,tag=EtiDiZS.p1Inhalt] at @s run teleport @s ~ ~1 ~

# Ein neues Feld in Form eines Rüstungsständer mit einer Shulkerkiste wird über dem Hauptfeld gespawnt und alle Felder bekommen ihre Position um eins erhöht.
execute if entity @s[tag=EtiDiZS.p1FeldAnzahlAnheben,scores={PZDiZS.p1Pos=..63}] run summon minecraft:armor_stand ~ ~1.5 ~ {NoGravity:true,Small:true,Invisible:true,Marker:true,CustomNameVisible:true,CustomName:'{"text":"0","color":"dark_purple","bold":true}',Tags:["EtiDiZS.p1Alle","EtiDiZS.p1Inhalt"],ArmorItems:[{},{},{},{id:"minecraft:chest",Count:1b} ] }
scoreboard players add @e[type=minecraft:armor_stand,tag=EtiDiZS.p1Inhalt] PZDiZS.p1Wert 0
execute if entity @s[tag=EtiDiZS.p1FeldAnzahlAnheben,scores={PZDiZS.p1Pos=..63}] run scoreboard players add @e[type=minecraft:armor_stand,tag=EtiDiZS.p1Inhalt] PZDiZS.p1Pos 1

# Danach wird die neue Anzahl der Felder als Wert in der Güterlore gespeichert, welche somit immer die aktuelle Anzahl ihrer Felder gespeichert hat.
execute if entity @s[tag=EtiDiZS.p1FeldAnzahlAnheben] store result score @s PZDiZS.p1Pos if entity @e[type=minecraft:armor_stand,tag=EtiDiZS.p1Inhalt]
execute if entity @s[tag=EtiDiZS.p1FeldAnzahlAnheben,scores={PZDiZS.p1Pos=..63}] unless score #VarDiZS.p1FelderErzeugen PZDiZS.p1Wert matches 1.. run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.1:\n",{"text":"Feld.Länge + 1 = neues Feld[","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p1Pos"},"bold":true,"color":"green"},{"text":"]","bold":true} ]

# Die aktuelle Position wird um eins erhöht.
execute if entity @s[tag=EtiDiZS.p1FeldAnzahlAnheben,scores={PZDiZS.p1Pos=..63}] unless score #VarDiZS.p1FelderErzeugen PZDiZS.p1Wert matches 1.. run scoreboard players add #VarDiZS.p1AktuellePosition PZDiZS.p1Pos 1

# Verringert den Wert der Variable um eins, falls sie mindestens noch den Wert eins hat.
execute if entity @s[tag=EtiDiZS.p1FeldAnzahlAnheben,scores={PZDiZS.p1Pos=..63}] if score #VarDiZS.p1FelderErzeugen PZDiZS.p1Wert matches 1.. run scoreboard players remove #VarDiZS.p1FelderErzeugen PZDiZS.p1Wert 1

# Die aktuelle Feldanzahl wird ausgegeben.
execute if entity @s[tag=EtiDiZS.p1FeldAnzahlAusgeben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.1:\n",{"text":"Feld.Länge == ","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p1Pos"},"bold":true,"color":"green"} ]

# Das oberste Feld wird gelöscht.
execute if entity @s[tag=EtiDiZS.p1FeldAnzahlVerringern,scores={PZDiZS.p1Pos=1..}] run kill @e[type=minecraft:armor_stand,tag=EtiDiZS.p1Inhalt,sort=furthest,limit=1]

# Danach wird die neue Anzahl Felder als Punktestand in der Güterlore gespeichert, welche somit immer die aktuelle Anzahl ihrer Felder gespeichert hat.
execute if entity @s[tag=EtiDiZS.p1FeldAnzahlVerringern] store result score @s PZDiZS.p1Pos if entity @e[type=minecraft:armor_stand,tag=EtiDiZS.p1Inhalt]
execute if entity @s[tag=EtiDiZS.p1FeldAnzahlVerringern] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.1:\n",{"text":"Feld.Länge - 1 = neues Feld[","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p1Pos"},"bold":true,"color":"green"},{"text":"]","bold":true} ]

# Falls die aktuelle ausgewählte Position das gelöschte Feld war, wird die aktuelle Position auf das nächst niedrigere Feld gesetzt.
execute if entity @s[tag=EtiDiZS.p1FeldAnzahlVerringern] if score #VarDiZS.p1AktuellePosition PZDiZS.p1Pos > @s PZDiZS.p1Pos run scoreboard players remove #VarDiZS.p1AktuellePosition PZDiZS.p1Pos 1


Variante 1: Menü-Felder-Erzeugen-Funktion
Die Menü-Felder-Funktion ist dafür gedacht, alle vorhandenen Felder zu löschen und nochmal neu zu erzeugen. Das ist nur dafür gedacht um alle Felder auf einmal erscheinen zu lassen und um alle Werte der Felder auf null zurück zu setzen.

Editor Icon direktzugriffsspeicher:vp1menu_felder_erzeugen.mcfunction
# Alle Felder werden gelöscht und die Variable erhält den Wert der aktuellen Felder.
kill @e[type=minecraft:armor_stand,tag=EtiDiZS.p1Inhalt,tag=EtiDiZS.p1Alle]
scoreboard players operation #VarDiZS.p1FelderErzeugen PZDiZS.p1Wert = @s PZDiZS.p1Pos
tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.1:\n",{"text":"Feld = neues Feld[","bold":true},{"score":{"name":"#VarDiZS.p1FelderErzeugen","objective":"PZDiZS.p1Wert"},"bold":true,"color":"green"},{"text":"]","bold":true} ]


Variante 1: Menü-Position-Funktion
Die Menü-Position-Funktion speichert die Position des Zeigers. Jedes Feld muss angesteuert werden bevor man den Wert ändern kann, dazu wird der Zeiger benutzt, der immer das aktuelle Feld markiert, das gerade angesteuert wurde. Wenn man eine Positionsoption angeklickt hat, wird die Güterlore für die jeweilige Option ein Etikett besitzen.

Editor Icon direktzugriffsspeicher:vp1menu_position.mcfunction
# Gibt die neue erhöhte Position aus.
execute if entity @s[tag=EtiDiZS.p1PositionAufsteigen] run scoreboard players add #VarDiZS.p1AktuellePosition PZDiZS.p1Pos 1
execute if entity @s[tag=EtiDiZS.p1PositionAufsteigen] if score #VarDiZS.p1AktuellePosition PZDiZS.p1Pos > @s PZDiZS.p1Pos run scoreboard players set #VarDiZS.p1AktuellePosition PZDiZS.p1Pos 1
execute if entity @s[tag=EtiDiZS.p1PositionAufsteigen] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.1:\n",{"text":"Feld.Position + 1 = ","bold":true},{"score":{"name":"#VarDiZS.p1AktuellePosition","objective":"PZDiZS.p1Pos"},"bold":true,"color":"green"} ]

# Gibt die aktuelle Position aus.
execute if entity @s[tag=EtiDiZS.p1PositionAusgeben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.1:\n",{"text":"Feld.Position == ","bold":true},{"score":{"name":"#VarDiZS.p1AktuellePosition","objective":"PZDiZS.p1Pos"},"bold":true,"color":"green"} ]

# Gibt die neue verringerte Position aus.
execute if entity @s[tag=EtiDiZS.p1PositionAbsteigen] run scoreboard players remove #VarDiZS.p1AktuellePosition PZDiZS.p1Pos 1
execute if entity @s[tag=EtiDiZS.p1PositionAbsteigen] if score #VarDiZS.p1AktuellePosition PZDiZS.p1Pos matches ..0 run scoreboard players operation #VarDiZS.p1AktuellePosition PZDiZS.p1Pos = @s PZDiZS.p1Pos
execute if entity @s[tag=EtiDiZS.p1PositionAbsteigen] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.1:\n",{"text":"Feld.Position - 1 = ","bold":true},{"score":{"name":"#VarDiZS.p1AktuellePosition","objective":"PZDiZS.p1Pos"},"bold":true,"color":"green"} ]


Variante 1: Menü-Wert-Funktion
Die Menü-Wert-Funktion ermöglicht es einem Feld einen Wert zuzuweisen und auch auszulesen.

Editor Icon direktzugriffsspeicher:vp1menu_wert.mcfunction
# Das Feld an der aktuellen Position wird ausgewählt und erhält zur Erkennung ein Etikett.
execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p1Inhalt] if score @s PZDiZS.p1Pos = #VarDiZS.p1AktuellePosition PZDiZS.p1Pos run tag @s add EtiDiZS.p1Auswahl

# Erhöht den Wert des aktuellen Feldes um eins.
execute if entity @s[tag=EtiDiZS.p1WertAnheben] run scoreboard players add @e[type=minecraft:armor_stand,tag=EtiDiZS.p1Auswahl,sort=nearest,limit=1] PZDiZS.p1Wert 1
execute if entity @s[tag=EtiDiZS.p1WertAnheben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.1:\n",{"text":"Feld[","bold":true},{"score":{"name":"#VarDiZS.p1AktuellePosition","objective":"PZDiZS.p1Pos"},"bold":true,"color":"green"},{"text":"] + 1 = ","bold":true},{"score":{"name":"@e[type=minecraft:armor_stand,tag=EtiDiZS.p1Auswahl,sort=nearest,limit=1]","objective":"PZDiZS.p1Wert"},"bold":true,"color":"dark_purple"} ]

# Gibt den Wert des aktuellen Feldes aus.
execute if entity @s[tag=EtiDiZS.p1WertAusgeben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.1:\n",{"text":"Feld[","bold":true},{"score":{"name":"#VarDiZS.p1AktuellePosition","objective":"PZDiZS.p1Pos"},"bold":true,"color":"green"},{"text":"] == ","bold":true},{"score":{"name":"@e[type=minecraft:armor_stand,tag=EtiDiZS.p1Auswahl,sort=nearest,limit=1]","objective":"PZDiZS.p1Wert"},"bold":true,"color":"dark_purple"} ]

# Verringert den Wert des aktuellen Feldes.
execute if entity @s[tag=EtiDiZS.p1WertVerringern] run scoreboard players remove @e[type=minecraft:armor_stand,tag=EtiDiZS.p1Auswahl,sort=nearest,limit=1] PZDiZS.p1Wert 1
execute if entity @s[tag=EtiDiZS.p1WertVerringern] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.1:\n",{"text":"Feld[","bold":true},{"score":{"name":"#VarDiZS.p1AktuellePosition","objective":"PZDiZS.p1Pos"},"bold":true,"color":"green"},{"text":"] - 1 = ","bold":true},{"score":{"name":"@e[type=minecraft:armor_stand,tag=EtiDiZS.p1Auswahl,sort=nearest,limit=1]","objective":"PZDiZS.p1Wert"},"bold":true,"color":"dark_purple"} ]

# Wenn der Wert des Feldes geändert wurde, wird der Name des Feldes aktualisiert.
execute at @e[type=minecraft:area_effect_cloud,tag=EtiDiZS.p1Schild] run data merge block ~ ~ ~ {Text1:'{"score":{"name":"@e[type=minecraft:armor_stand,tag=EtiDiZS.p1Auswahl,sort=nearest,limit=1]","objective":"PZDiZS.p1Wert"},"color":"dark_purple","bold":true}'}
execute at @e[type=minecraft:area_effect_cloud,tag=EtiDiZS.p1Schild] run data modify entity @e[type=minecraft:armor_stand,tag=EtiDiZS.p1Auswahl,sort=nearest,limit=1] CustomName set from block ~ ~ ~ Text1

# Das Etikett zur Erkennung wird wieder entfernt.
tag @e[type=minecraft:armor_stand,tag=EtiDiZS.p1Auswahl,sort=nearest,limit=1] remove EtiDiZS.p1Auswahl


Variante 1: Menü-Werte-Funktion
Die Menü-Werte-Funktion arbeitet mit der Menü-Werte-Felder-Funktion zusammen und sorgt dafür, dass alle Felderwerte in einem Rutsch ausgegeben werden können.

Editor Icon direktzugriffsspeicher:vp1menu_werte.mcfunction
# Eine Startpositions-Variable wird auf eins festgelegt und der Kopfteil der tellraw-Nachricht wird ausgegeben. Anschließend wird die Menü-Werte-Felder-Funktion geladen.
scoreboard players set #VarDiZS.p1PositionAusgeben PZDiZS.p1Pos 1
tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.1:"]
function direktzugriffsspeicher:vp1menu_werte_felder


Variante 1: Menü-Werte-Felder-Funktion
Die Menü-Werte-Felder-Funktion gibt pro Aufruf in dem aktuell ausgewählten Feld den gespeicherten Wert aus. Hierbei ruft sich die Funktion selbst solange auf, bis sie alle Werte der Felderreihe ausgegeben hat.

Editor Icon direktzugriffsspeicher:vp1menu_werte_felder.mcfunction
# Es wird nach dem Feld mit der entsprechenden Position gesucht und dann wird dessen Wert in einer tellraw-Nachricht ausgegeben.
execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p1Inhalt] if score @s PZDiZS.p1Pos = #VarDiZS.p1PositionAusgeben PZDiZS.p1Pos run tellraw @a[distance=..25] ["",{"text":"Feld[","bold":true},{"score":{"name":"#VarDiZS.p1PositionAusgeben","objective":"PZDiZS.p1Pos"},"bold":true,"color":"green"},{"text":"] == ","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p1Wert"},"bold":true,"color":"dark_purple"} ]

# Die Position wird um eins erhöht und wenn sie kleiner gleich der maximalen Länge des Feldes ist, wird diese Funktion selbst nochmal mit der neuen Position aufgerufen.
scoreboard players add #VarDiZS.p1PositionAusgeben PZDiZS.p1Pos 1
execute if score #VarDiZS.p1PositionAusgeben PZDiZS.p1Pos <= @s PZDiZS.p1Pos run function direktzugriffsspeicher:vp1menu_werte_felder


Variante 1: Stopp-Funktion
Die Stopp-Funktion beendet alles, in dem sie die Punkte-Ziele löscht und alle Felder entfernt.

Editor Icon direktzugriffsspeicher:vp1stopp.mcfunction
# Die Punkte-Ziele werden wieder entfernt.
scoreboard objectives remove PZDiZS.p1Wert
scoreboard objectives remove PZDiZS.p1Pos

# Die Menü-Gegenstände werden aus dem Inventar aller Spieler entfernt.
clear @a #direktzugriffsspeicher:vp1menu{EigDiZS.p1Alle:true}

# Das Schild an der Position der Partikelwolke wird wieder entfernt.
execute at @e[type=minecraft:area_effect_cloud,tag=EtiDiZS.p1Schild] run setblock ~ ~ ~ minecraft:air replace

# Damit die Güterlore nichts droppt, wird sie geleert.
data remove entity @e[type=minecraft:chest_minecart,tag=EtiDiZS.p1GUI,sort=nearest,limit=1] Items

# Alle bisher erzeugten Felder werden gelöscht.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigDiZS.p1Alle:true} } }] add EtiDiZS.p1Alle
kill @e[tag=EtiDiZS.p1Alle]

Variante 2[]

Direktzugriffsspeicher (Befehle, erweitert) Bild 2.1 Direktzugriffsspeicher (Befehle, erweitert) Bild 2.2

Mit diesem erweiterten Direktzugriffsspeicher werden zweidimensionale Felderreihen erstellt. Eine schwebende Güterlore gibt einen Menü-Einstellungen, über die man die Größe der Felderreihe bestimmen kann. Jedes einzelne Feld kann einen Wert speichern und man kann dessen Wert abfragen, sowie dessen Position. Zudem ist es auch möglich alle Werte der gesamten Felderreihe auf einmal zu erhalten.

Einschalten

Wenn man den Hebel auf dem Wiederhol-Befehlsblock umlegt wird auch der Befehlsblock aktiviert, welcher die Start-Funktion auslöst.

Wiederholen

Der Wiederhol-Befehlsblock aktiviert die Zyklus-Funktion jeden Tick, sodass sie ständig ausgeführt wird.

Ausschalten

Legt man den Hebel wieder um, so wird die Stopp-Funktion durch den Befehlsblock ausgelöst.



Befehlsblöcke mit Befehlen:



Variante 2: Start-Funktion
Wenn die Start-Funktion geladen wird, werden die Punkte-Ziele und die Güterlore erstellt.

Editor Icon direktzugriffsspeicher:vp2start.mcfunction
# Punkte-Ziele werden erstellt.
scoreboard objectives add PZDiZS.p2Wert dummy ["Direktzugriffsspeicher.erweitert.2: ",{"text":"Feldwert","bold":true}]
scoreboard objectives add PZDiZS.p2Pos dummy ["Direktzugriffsspeicher.erweitert.2: ",{"text":"Feld-Position","bold":true}]
scoreboard objectives add PZDiZS.p2Felder dummy ["Direktzugriffsspeicher.erweitert.2: ",{"text":"Felder eines Feldes","bold":true}]

# Eine Güterlore mit einer grünen Shulkerkiste wird als Startposition für die Felder gespawnt.
summon minecraft:armor_stand ~ ~2 ~ {NoGravity:true,Small:true,Invisible:true,Marker:true,Tags:["EtiDiZS.p2Alle"],Passengers:[{id:"minecraft:chest_minecart",NoGravity:true,Invulnerable:true,CustomDisplayTile:true,DisplayOffset:6,DisplayState:{Name:"minecraft:lime_shulker_box"},CustomName:'{"text":"Optionen","color":"dark_purple","bold":true}',Tags:["EtiDiZS.p2Alle","EtiDiZS.p2GUI"]},{id:"minecraft:armor_stand",NoGravity:true,Small:true,Invisible:true,Tags:["EtiDiZS.p2Alle"],CustomNameVisible:true,CustomName:'{"text":"Optionen","color":"dark_purple","bold":true}'}]}

# Der Güterlore werden die Punktestandswerte gegeben, damit diese in den Funktionen abgefragt werden können.
scoreboard players set @e[type=minecraft:chest_minecart,tag=EtiDiZS.p2GUI] PZDiZS.p2Felder 0
scoreboard players set @e[type=minecraft:chest_minecart,tag=EtiDiZS.p2GUI] PZDiZS.p2Wert 0

# Es wird eine Partikelwolke erzeugt, an deren Position ein Schild platziert wird, um den Wert der Felder in deren Anzeige-Namen speichern zu können.
summon minecraft:area_effect_cloud ~ ~1 ~ {Duration:-1,Age:-2147483648,WaitTime:-2147483648,Particle:"minecraft:block minecraft:air",Tags:["EtiDiZS.p2Alle","EtiDiZS.p2Schild"]}
execute at @e[type=minecraft:area_effect_cloud,tag=EtiDiZS.p2Schild] run setblock ~ ~ ~ minecraft:oak_sign[rotation=8] replace


Variante 2: Zyklus-Funktion
Die Zyklus-Funktion prüft ob in der Güterlore (Menü) Gegenstände entnommen wurden und startet daraufhin dann die Menü-Funktion. Gleichzeitig werden auch alle Felder mit dem Leucht- und Partikeleffekt ausgestattet, die gerade durch das Menü ausgewählt wurden.

Editor Icon direktzugriffsspeicher:vp2zyklus.mcfunction
# Falls die Option Felder erzeugen angeklickt wurde, besitzt die Variable einen Wert ab eins oder höher, wenn dass der Fall ist, wird von der Güterlore der Gegenstand fürs "Feld hinzufügen" entfernt, sodass diese Option aktiviert wird. Damit der Spieler dies angezeigt bekommt, wird sein Wert auf eins gesetzt.
execute if score #VarDiZS.p2FelderErzeugen PZDiZS.p2Felder matches 1.. as @e[type=minecraft:chest_minecart,tag=EtiDiZS.p2GUI,sort=nearest,limit=1] at @s store result score @p[distance=..5] PZDiZS.p2Pos run data remove entity @s Items[{Slot:2b}]

# Die Anzahl der belegten Slots, in der schwebende Güterlore mit Shulkerkiste, wird ausgelesen und nur wenn sie nicht übereinstimmt, wird die Funktion geladen.
execute as @e[type=minecraft:chest_minecart,tag=EtiDiZS.p2GUI,sort=nearest,limit=1] store result score @s PZDiZS.p2Wert run data get entity @s Items
execute as @e[type=minecraft:chest_minecart,tag=EtiDiZS.p2GUI,sort=nearest,limit=1] unless entity @s[scores={PZDiZS.p2Wert=14}] at @s run function direktzugriffsspeicher:vp2menu

# Von der Güterlore aus, werden in einem Radius von maximal 128 Blöcken, alle Felder der ersten Dimension ausgewählt und geprüft ob sie noch Felder beantragen, falls ja wird die Funktion für die zweite Dimension aufgerufen.
execute at @e[type=minecraft:chest_minecart,tag=EtiDiZS.p2GUI,sort=nearest,limit=1] as @e[distance=..128,sort=nearest,type=minecraft:armor_stand,tag=EtiDiZS.p2FeldDimension1,tag=EtiDiZS.p2Dimensionen] unless score @s PZDiZS.p2Felder matches 0 at @s run function direktzugriffsspeicher:vp2dimension_2

# Alle Felder bekommen den Leuchteffekt entfernt.
effect clear @e[tag=EtiDiZS.p2Dimensionen] minecraft:glowing

# Das ausgewählte Feld der ersten Dimension erhält Leucht- und Partikeleffekte, um es sofort ausfindig machen zu können.
execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p2FeldDimension1] if score @s PZDiZS.p2Pos = #VarDiZS.p2AktuellePositionDimension1 PZDiZS.p2Pos run effect give @s minecraft:glowing 1 1
execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p2FeldDimension1] if score @s PZDiZS.p2Pos = #VarDiZS.p2AktuellePositionDimension1 PZDiZS.p2Pos at @s run particle minecraft:block minecraft:lime_concrete ~ ~1.1 ~ 0 0 0 0.1 1 normal @a[distance=..25]

# Das ausgewählte Feld der zweiten Dimension erhält Leucht- und Partikeleffekte, um es sofort ausfindig machen zu können.
execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p2FeldDimension1] if score @s PZDiZS.p2Pos = #VarDiZS.p2AktuellePositionDimension1 PZDiZS.p2Pos at @s align xyz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p2Inhalt] if score @s PZDiZS.p2Pos = #VarDiZS.p2AktuellePositionDimension2 PZDiZS.p2Pos run effect give @s minecraft:glowing 1 1
execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p2FeldDimension1] if score @s PZDiZS.p2Pos = #VarDiZS.p2AktuellePositionDimension1 PZDiZS.p2Pos at @s align xyz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p2Inhalt] if score @s PZDiZS.p2Pos = #VarDiZS.p2AktuellePositionDimension2 PZDiZS.p2Pos at @s run particle minecraft:block minecraft:red_concrete ~ ~1.1 ~ 0 0 0 0.1 1 normal @a[distance=..25]


Variante 2: Menü-Funktion
Die Menü-Funktion schaut nach welcher Gegenstand aus dem Inventar der Güterlore genommen wurde und ruft daraufhin dann die entsprechenden Options-Funktionen auf und löscht vom Spieler diese entnommenen Gegenstände.

Editor Icon direktzugriffsspeicher:vp2menu.mcfunction
# Wenn der Spieler Gegenstände im Inventar hat, die vom Menü der Güterlore stammen, werden sie entfernt und der Spieler erhält den Wert eins dafür. Falls der Spieler stattdessen den Gegenstand mit der Taste Q aus der Güterlore herausbefördert hat, wird der gedroppte Gegenstand gelöscht und der Spieler erhält dafür den Wert eins. Falls er durch die Zyklus-Funktion den Positions-Wert eins besitzt, so wird dieser auf null gesetzt und der andere Wert wird dadurch auf eins gesetzt.
execute as @a[distance=..5] store result score @s PZDiZS.p2Wert run clear @s #direktzugriffsspeicher:vp2menu{EigDiZS.p2Alle:true}
execute as @a[distance=..5,scores={PZDiZS.p2Wert=0}] store success score @s PZDiZS.p2Wert run kill @e[distance=..5,type=minecraft:item,nbt={Item:{tag:{EigDiZS.p2Alle:true} } }]
execute as @a[distance=..5,scores={PZDiZS.p2Wert=0,PZDiZS.p2Pos=1}] store success score @s PZDiZS.p2Wert run scoreboard players set @s PZDiZS.p2Pos 0

# Wenn der Gegenstand für das Neuerzeugen aller Felder angeklickt wurde, wird die Felder-Erzeugen-Funktion geladen.
execute if entity @p[distance=..5,scores={PZDiZS.p2Wert=1}] if entity @s[nbt=!{Items:[{Slot:10b,Count:1b}]}] run function direktzugriffsspeicher:vp2menu_felder_erzeugen

# Wenn einer der Gegenstände für die Feldanzahl angeklickt wurde, so erhält die Güterlore ein Etikett, wodurch die Feldanzahl-Option-Funktion geladen wird.
tag @s[nbt=!{Items:[{Slot:2b,Count:1b}]}] add EtiDiZS.p2FeldAnzahlDimension1Anheben
tag @s[nbt=!{Items:[{Slot:11b,Count:1b}]}] add EtiDiZS.p2FeldAnzahlDimension1Ausgeben
tag @s[nbt=!{Items:[{Slot:20b,Count:1b}]}] add EtiDiZS.p2FeldAnzahlDimension1Verringern
execute if entity @p[distance=..5,scores={PZDiZS.p2Wert=1}] unless entity @s[tag=!EtiDiZS.p2FeldAnzahlDimension1Anheben,tag=!EtiDiZS.p2FeldAnzahlDimension1Ausgeben,tag=!EtiDiZS.p2FeldAnzahlDimension1Verringern] run function direktzugriffsspeicher:vp2menu_feld_dimension_1

# Wenn einer der Gegenstände für die Feldanzahl angeklickt wurde, so erhält die Güterlore ein Etikett, wodurch die Feldanzahl-Option-Funktion geladen wird.
tag @s[nbt=!{Items:[{Slot:3b,Count:1b}]}] add EtiDiZS.p2FeldAnzahlDimension2Anheben
tag @s[nbt=!{Items:[{Slot:12b,Count:1b}]}] add EtiDiZS.p2FeldAnzahlDimension2Ausgeben
tag @s[nbt=!{Items:[{Slot:21b,Count:1b}]}] add EtiDiZS.p2FeldAnzahlDimension2Verringern
execute if entity @p[distance=..5,scores={PZDiZS.p2Wert=1}] unless entity @s[tag=!EtiDiZS.p2FeldAnzahlDimension2Anheben,tag=!EtiDiZS.p2FeldAnzahlDimension2Ausgeben,tag=!EtiDiZS.p2FeldAnzahlDimension2Verringern] run function direktzugriffsspeicher:vp2menu_feld_dimension_2

# Wenn einer der Gegenstände für die Position angeklickt wurde, so erhält die Güterlore ein Etikett, wodurch die Position-Option-Funktion geladen wird.
tag @s[nbt=!{Items:[{Slot:4b,Count:1b}]}] add EtiDiZS.p2PositionAufsteigen
tag @s[nbt=!{Items:[{Slot:13b,Count:1b}]}] add EtiDiZS.p2PositionAusgeben
tag @s[nbt=!{Items:[{Slot:22b,Count:1b}]}] add EtiDiZS.p2PositionAbsteigen
execute if entity @p[distance=..5,scores={PZDiZS.p2Wert=1}] unless entity @s[tag=!EtiDiZS.p2PositionAufsteigen,tag=!EtiDiZS.p2PositionAusgeben,tag=!EtiDiZS.p2PositionAbsteigen] run function direktzugriffsspeicher:vp2menu_position

# Wenn einer der Gegenstände für die Wertangabe angeklickt wurde, so erhält die Güterlore ein Etikett, wodurch die Wert-Option-Funktion geladen wird.
tag @s[nbt=!{Items:[{Slot:5b,Count:1b}]}] add EtiDiZS.p2WertAnheben
tag @s[nbt=!{Items:[{Slot:14b,Count:1b}]}] add EtiDiZS.p2WertAusgeben
tag @s[nbt=!{Items:[{Slot:23b,Count:1b}]}] add EtiDiZS.p2WertVerringern
execute if entity @p[distance=..5,scores={PZDiZS.p2Wert=1}] unless entity @s[tag=!EtiDiZS.p2WertAnheben,tag=!EtiDiZS.p2WertAusgeben,tag=!EtiDiZS.p2WertVerringern] run function direktzugriffsspeicher:vp2menu_wert

# Wenn der Gegenstand für das Ausgeben aller Werte der Felder angeklickt wurde, wird die Werte-Funktion geladen.
execute if entity @p[distance=..5,scores={PZDiZS.p2Wert=1}] if entity @s[scores={PZDiZS.p2Felder=1..},nbt=!{Items:[{Slot:15b,Count:1b}]}] run function direktzugriffsspeicher:vp2menu_werte

# Die Güterlore wird dann vom Menü her mit all ihren Gegenständen wieder zurückgesetzt und sie bekommt alle Etiketten gelöscht, in dem die Etikette neu gesetzt werden.
data merge entity @s {Tags:["EtiDiZS.p2Alle","EtiDiZS.p2GUI"],Items:[{Slot:2b,id:"minecraft:lime_concrete_powder",Count:1b,tag:{EigDiZS.p2Alle:true,display:{Name:'{"text":"Anzahl erhöhen (1. D)","color":"green","bold":true}'} } },{Slot:3b,id:"minecraft:lime_concrete_powder",Count:1b,tag:{EigDiZS.p2Alle:true,display:{Name:'{"text":"Anzahl erhöhen (2. D)","color":"green","bold":true}'} } },{Slot:4b,id:"minecraft:lime_concrete_powder",Count:1b,tag:{EigDiZS.p2Alle:true,display:{Name:'{"text":"Zur höheren Position","color":"green","bold":true}'} } },{Slot:5b,id:"minecraft:lime_concrete_powder",Count:1b,tag:{EigDiZS.p2Alle:true,display:{Name:'{"text":"Wert erhöhen","color":"green","bold":true}'} } },{Slot:10b,id:"minecraft:lime_shulker_box",Count:1b,tag:{EigDiZS.p2Alle:true,display:{Name:'{"text":"Felder löschen und neu erzeugen","color":"dark_purple","bold":true}'} } },{Slot:11b,id:"minecraft:red_shulker_box",Count:1b,tag:{EigDiZS.p2Alle:true,display:{Name:'{"text":"Aktuelle Feldanzahl ausgeben (1. D)","color":"gold","bold":true}'} } },{Slot:12b,id:"minecraft:chest",Count:1b,tag:{EigDiZS.p2Alle:true,display:{Name:'{"text":"Aktuelle Feldanzahl ausgeben (2. D)","color":"gold","bold":true}'} } },{Slot:13b,id:"minecraft:daylight_detector",Count:1b,tag:{EigDiZS.p2Alle:true,display:{Name:'{"text":"Aktuelle Position ausgeben","color":"gold","bold":true}'} } },{Slot:14b,id:"minecraft:book",Count:1b,tag:{EigDiZS.p2Alle:true,display:{Name:'{"text":"Aktuellen Wert ausgeben","color":"gold","bold":true}'} } },{Slot:15b,id:"minecraft:bookshelf",Count:1b,tag:{EigDiZS.p2Alle:true,display:{Name:'{"text":"Werte aller Felder ausgeben","color":"dark_purple","bold":true}'} } },{Slot:20b,id:"minecraft:red_concrete_powder",Count:1b,tag:{EigDiZS.p2Alle:true,display:{Name:'{"text":"Anzahl verringern (1. D)","color":"red","bold":true}'} } },{Slot:21b,id:"minecraft:red_concrete_powder",Count:1b,tag:{EigDiZS.p2Alle:true,display:{Name:'{"text":"Anzahl verringern (2. D)","color":"red","bold":true}'} } },{Slot:22b,id:"minecraft:red_concrete_powder",Count:1b,tag:{EigDiZS.p2Alle:true,display:{Name:'{"text":"Zur niedrigeren Position","color":"red","bold":true}'} } },{Slot:23b,id:"minecraft:red_concrete_powder",Count:1b,tag:{EigDiZS.p2Alle:true,display:{Name:'{"text":"Wert verringern","color":"red","bold":true}'} } } ]}


Variante 2: Menü-Feld-Dimension-1-Funktion
Die Menü-Feld-Dimension-1-Funktion sorgt dafür, dass neue Felder der ersten Dimension erzeugt werden, dass die Feldanzahl ausgegeben wird oder dass die Feldanzahl verringert wird.

Editor Icon direktzugriffsspeicher:vp2menu_feld_dimension_1.mcfunction
# Alle vorhandenen Felder werden um einen Block nach oben teleportiert.
execute if entity @s[tag=EtiDiZS.p2FeldAnzahlDimension1Anheben,scores={PZDiZS.p2Felder=..63}] as @e[type=minecraft:armor_stand,tag=EtiDiZS.p2Alle,tag=EtiDiZS.p2Dimensionen] at @s run teleport @s ~ ~1 ~

# Ein neues Feld in Form eines Rüstungsständer mit einer Shulkerkiste wird über dem Hauptfeld gespawnt und alle Felder bekommen ihre Position um eins erhöht.
execute if entity @s[tag=EtiDiZS.p2FeldAnzahlDimension1Anheben,scores={PZDiZS.p2Felder=..63}] run summon minecraft:armor_stand ~ ~1.5 ~ {NoGravity:true,Small:true,Invisible:true,Marker:true,Tags:["EtiDiZS.p2Alle","EtiDiZS.p2FeldDimension1","EtiDiZS.p2Dimensionen","EtiDiZS.p2Dimension2Erhalten"],ArmorItems:[{},{},{},{id:"minecraft:red_shulker_box",Count:1b} ] }
execute if entity @s[tag=EtiDiZS.p2FeldAnzahlDimension1Anheben,scores={PZDiZS.p2Felder=..63}] run scoreboard players add @e[type=minecraft:armor_stand,tag=EtiDiZS.p2FeldDimension1] PZDiZS.p2Pos 1
execute if entity @s[tag=EtiDiZS.p2FeldAnzahlDimension1Anheben,scores={PZDiZS.p2Felder=..63}] run scoreboard players operation @e[type=minecraft:armor_stand,tag=EtiDiZS.p2FeldDimension1,tag=EtiDiZS.p2Dimension2Erhalten] PZDiZS.p2Felder = #VarDiZS.p2Dimension2 PZDiZS.p2Felder
tag @e[type=minecraft:armor_stand,tag=EtiDiZS.p2FeldDimension1,tag=EtiDiZS.p2Dimension2Erhalten] remove EtiDiZS.p2Dimension2Erhalten

# Danach wird die neue Anzahl der Felder als Wert in der Güterlore gespeichert, welche somit immer die aktuelle Anzahl ihrer Felder gespeichert hat.
execute if entity @s[tag=EtiDiZS.p2FeldAnzahlDimension1Anheben] align xz positioned ~-0.2 ~-0.5 ~-0.2 store result score @s PZDiZS.p2Felder if entity @e[dx=0.4,dy=64,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p2FeldDimension1]
execute if entity @s[tag=EtiDiZS.p2FeldAnzahlDimension1Anheben,scores={PZDiZS.p2Felder=..63}] unless score #VarDiZS.p2FelderErzeugen PZDiZS.p2Felder matches 1.. run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.2:\n",{"text":"Feld.Länge + 1 = neues Feld[","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p2Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p2Dimension2","objective":"PZDiZS.p2Felder"},"bold":true,"color":"red"},{"text":"]","bold":true} ]

# Die aktuelle Position wird um eins erhöht.
execute if entity @s[tag=EtiDiZS.p2FeldAnzahlDimension1Anheben,scores={PZDiZS.p2Felder=..63}] unless score #VarDiZS.p2FelderErzeugen PZDiZS.p2Felder matches 1.. run scoreboard players add #VarDiZS.p2AktuellePositionDimension1 PZDiZS.p2Pos 1

# Verringert den Wert der Variable um eins, falls sie mindestens noch den Wert eins hat.
execute if entity @s[tag=EtiDiZS.p2FeldAnzahlDimension1Anheben,scores={PZDiZS.p2Felder=..63}] if score #VarDiZS.p2FelderErzeugen PZDiZS.p2Felder matches 1.. run scoreboard players remove #VarDiZS.p2FelderErzeugen PZDiZS.p2Felder 1

# Die aktuelle Feldanzahl wird ausgegeben.
execute if entity @s[tag=EtiDiZS.p2FeldAnzahlDimension1Ausgeben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.2:\n",{"text":"Feld.Länge == ","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p2Felder"},"bold":true,"color":"green"} ]

# Das oberste Feld mit seinen Feldern wird zusammen gelöscht.
execute if entity @s[tag=EtiDiZS.p2FeldAnzahlDimension1Verringern,scores={PZDiZS.p2Felder=1..}] at @e[type=minecraft:armor_stand,tag=EtiDiZS.p2FeldDimension1,sort=furthest,limit=1] align xyz positioned ~-0.2 ~-0.2 ~-0.2 run kill @e[dx=64,dy=0.4,dz=0.4,tag=EtiDiZS.p2Inhalt,tag=EtiDiZS.p2Alle,tag=EtiDiZS.p2Dimensionen]
execute if entity @s[tag=EtiDiZS.p2FeldAnzahlDimension1Verringern,scores={PZDiZS.p2Felder=1..}] run kill @e[type=minecraft:armor_stand,tag=EtiDiZS.p2FeldDimension1,sort=furthest,limit=1]

# Danach wird die neue Anzahl Felder als Punktestand in der Güterlore gespeichert, welche somit immer die aktuelle Anzahl ihrer Felder gespeichert hat.
execute if entity @s[tag=EtiDiZS.p2FeldAnzahlDimension1Verringern] store result score @s PZDiZS.p2Felder if entity @e[type=minecraft:armor_stand,tag=EtiDiZS.p2FeldDimension1]
execute if entity @s[tag=EtiDiZS.p2FeldAnzahlDimension1Verringern] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.2:\n",{"text":"Feld.Länge - 1 = neues Feld[","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p2Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p2Dimension2","objective":"PZDiZS.p2Felder"},"bold":true,"color":"red"},{"text":"]","bold":true} ]

# Falls die aktuelle ausgewählte Position das gelöschte Feld war, wird die aktuelle Position auf das nächst niedrigere Feld gesetzt.
execute if entity @s[tag=EtiDiZS.p2FeldAnzahlDimension1Verringern] if score #VarDiZS.p2AktuellePositionDimension1 PZDiZS.p2Pos > @s PZDiZS.p2Felder run scoreboard players remove #VarDiZS.p2AktuellePositionDimension1 PZDiZS.p2Pos 1


Variante 2: Menü-Feld-Dimension-2-Funktion
Die Menü-Feld-Dimension-2-Funktion sorgt dafür, dass neue Felder der zweiten Dimension erzeugt werden, die Feldanzahl ausgegeben wird oder dass die feldanzahl verringert wird.

Editor Icon direktzugriffsspeicher:vp2menu_feld_dimension_2.mcfunction
# Allen Rüstungsständern der 1. Dimension wird der Punktestand für die 2. Dimension um eins erhöht, um für diese die Rüstungsständer später zu spawnen.
execute if entity @s[tag=EtiDiZS.p2FeldAnzahlDimension2Anheben] if score #VarDiZS.p2Dimension2 PZDiZS.p2Felder matches ..63 run scoreboard players add @e[type=minecraft:armor_stand,tag=EtiDiZS.p2FeldDimension1,tag=EtiDiZS.p2Alle,tag=EtiDiZS.p2Dimensionen] PZDiZS.p2Felder 1
execute if entity @s[tag=EtiDiZS.p2FeldAnzahlDimension2Anheben] if score #VarDiZS.p2Dimension2 PZDiZS.p2Felder matches ..63 run scoreboard players add #VarDiZS.p2Dimension2 PZDiZS.p2Felder 1
execute if entity @s[tag=EtiDiZS.p2FeldAnzahlDimension2Anheben] if score #VarDiZS.p2Dimension2 PZDiZS.p2Felder matches ..63 run scoreboard players add #VarDiZS.p2AktuellePositionDimension2 PZDiZS.p2Pos 1

execute if entity @s[tag=EtiDiZS.p2FeldAnzahlDimension2Anheben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.2:\n",{"text":"Feld[","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p2Felder"},"bold":true,"color":"green"},{"text":"].Länge + 1 = neues Feld[","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p2Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p2Dimension2","objective":"PZDiZS.p2Felder"},"bold":true,"color":"red"},{"text":"]","bold":true} ]

# Die aktuelle Feldanzahl wird ausgegeben.
execute if entity @s[tag=EtiDiZS.p2FeldAnzahlDimension2Ausgeben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.2:\n",{"text":"Feld[","bold":true},{"score":{"name":"#VarDiZS.p2AktuellePositionDimension1","objective":"PZDiZS.p2Pos"},"bold":true,"color":"green"},{"text":"].Länge == ","bold":true},{"score":{"name":"#VarDiZS.p2Dimension2","objective":"PZDiZS.p2Felder"},"bold":true,"color":"red"} ]

# Allen Feldern der 1. Dimension wird der Punktestand für die 2. Dimension um eins erniedrigt, solange der Wert über eins ist.
execute if entity @s[tag=EtiDiZS.p2FeldAnzahlDimension2Verringern] if score #VarDiZS.p2Dimension2 PZDiZS.p2Felder matches 1.. run scoreboard players remove @e[type=minecraft:armor_stand,tag=EtiDiZS.p2FeldDimension1,tag=EtiDiZS.p2Alle,tag=EtiDiZS.p2Dimensionen] PZDiZS.p2Felder 1
execute if entity @s[tag=EtiDiZS.p2FeldAnzahlDimension2Verringern] if score #VarDiZS.p2Dimension2 PZDiZS.p2Felder matches 1.. run scoreboard players remove #VarDiZS.p2Dimension2 PZDiZS.p2Felder 1

execute if entity @s[tag=EtiDiZS.p2FeldAnzahlDimension2Verringern] if score #VarDiZS.p2AktuellePositionDimension2 PZDiZS.p2Pos > #VarDiZS.p2Dimension2 PZDiZS.p2Felder run scoreboard players remove #VarDiZS.p2AktuellePositionDimension2 PZDiZS.p2Pos 1

execute if entity @s[tag=EtiDiZS.p2FeldAnzahlDimension2Verringern] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.2:\n",{"text":"Feld.Länge - 1 = neues Feld[","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p2Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p2Dimension2","objective":"PZDiZS.p2Felder"},"bold":true,"color":"red"},{"text":"]","bold":true} ]


Variante 2: Menü-Felder-Erzeugen-Funktion
Die Menü-Felder-Erzeugen-Funktion löscht alle vorhandenen Felder, um sie dann wieder erneut zu erzeugen. Dabei wird der Punktestand der Güterlore in die Variable für die Anzahl der zu erzeugenden Felder gespeichert.

Editor Icon direktzugriffsspeicher:vp2menu_felder_erzeugen.mcfunction
# Alle Felder werden gelöscht und die Variable erhält den Wert der aktuellen Felder.
kill @e[type=minecraft:armor_stand,tag=EtiDiZS.p2Dimensionen]
scoreboard players operation #VarDiZS.p2FelderErzeugen PZDiZS.p2Felder = @s PZDiZS.p2Felder
tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.2:\n",{"text":"Feld = neues Feld[","bold":true},{"score":{"name":"#VarDiZS.p2FelderErzeugen","objective":"PZDiZS.p2Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p2Dimension2","objective":"PZDiZS.p2Felder"},"bold":true,"color":"red"},{"text":"]","bold":true} ]


Variante 2: Menü-Position-Funktion
Die Menü-Position-Funktion erlaubt es die aktuelle Position um eins zu erhöhen, die aktuelle Position auszulesen oder die aktuelle Position um eins zu verringern.

Editor Icon direktzugriffsspeicher:vp2menu_position.mcfunction
# Erhöht die aktuelle Position der zweiten Dimension um eins und falls die aktuelle Position der zweiten Dimension über dem Maximum ist, wird sie wieder auf eins zurückgesetzt.
execute if entity @s[tag=EtiDiZS.p2PositionAufsteigen] run scoreboard players add #VarDiZS.p2AktuellePositionDimension2 PZDiZS.p2Pos 1
execute if entity @s[tag=EtiDiZS.p2PositionAufsteigen] if score #VarDiZS.p2AktuellePositionDimension2 PZDiZS.p2Pos > #VarDiZS.p2Dimension2 PZDiZS.p2Felder run scoreboard players set #VarDiZS.p2AktuellePositionDimension2 PZDiZS.p2Pos 1

# Falls die Position der zweiten Dimension aktuell auf eins gesetzt wurde, wird die Position der zweiten Dimension um eins erhöht und anschließend geprüft ob sie über das Maximum gelangt ist, dann wird sie auch auf eins zurük gesetzt.
execute if entity @s[tag=EtiDiZS.p2PositionAufsteigen] if score #VarDiZS.p2AktuellePositionDimension2 PZDiZS.p2Pos matches 1 run scoreboard players add #VarDiZS.p2AktuellePositionDimension1 PZDiZS.p2Pos 1
execute if entity @s[tag=EtiDiZS.p2PositionAufsteigen] if score #VarDiZS.p2AktuellePositionDimension2 PZDiZS.p2Pos matches 1 if score #VarDiZS.p2AktuellePositionDimension1 PZDiZS.p2Pos > @s PZDiZS.p2Felder run scoreboard players set #VarDiZS.p2AktuellePositionDimension1 PZDiZS.p2Pos 1

# Gibt die veränderten Positionen als tellraw-Nachrichten aus.
execute if entity @s[tag=EtiDiZS.p2PositionAufsteigen] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.2:"]
execute if entity @s[tag=EtiDiZS.p2PositionAufsteigen] if score #VarDiZS.p2AktuellePositionDimension2 PZDiZS.p2Pos matches 1 run tellraw @a[distance=..25] ["",{"text":"Feld.Position + 1 = ","bold":true},{"score":{"name":"#VarDiZS.p2AktuellePositionDimension1","objective":"PZDiZS.p2Pos"},"bold":true,"color":"green"}]
execute if entity @s[tag=EtiDiZS.p2PositionAufsteigen] run tellraw @a[distance=..25] ["",{"text":"Feld[","bold":true},{"score":{"name":"#VarDiZS.p2AktuellePositionDimension1","objective":"PZDiZS.p2Pos"},"bold":true,"color":"green"},{"text":"].Position + 1 = ","bold":true},{"score":{"name":"#VarDiZS.p2AktuellePositionDimension2","objective":"PZDiZS.p2Pos"},"bold":true,"color":"red"} ]

# Gibt die aktuelle Position aus.
execute if entity @s[tag=EtiDiZS.p2PositionAusgeben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.2:\n",{"text":"Feld[","bold":true},{"score":{"name":"#VarDiZS.p2AktuellePositionDimension1","objective":"PZDiZS.p2Pos"},"bold":true,"color":"green"},{"text":"].Position == ","bold":true},{"score":{"name":"#VarDiZS.p2AktuellePositionDimension2","objective":"PZDiZS.p2Pos"},"bold":true,"color":"red"} ]

# Gibt die neue verringerte Position der zweiten Dimension aus.
execute if entity @s[tag=EtiDiZS.p2PositionAbsteigen] run scoreboard players remove #VarDiZS.p2AktuellePositionDimension2 PZDiZS.p2Pos 1
execute if entity @s[tag=EtiDiZS.p2PositionAbsteigen] if score #VarDiZS.p2AktuellePositionDimension2 PZDiZS.p2Pos matches ..0 run scoreboard players operation #VarDiZS.p2AktuellePositionDimension2 PZDiZS.p2Pos = #VarDiZS.p2Dimension2 PZDiZS.p2Felder

# Falls Position der zweiten Dimension wieder beim Ende ist, wird die Position der ersten Dimension um eins verringert, falls sie dann auch unter eins sein sollte, wird sie wieder auf das Ende gesetzt.
execute if entity @s[tag=EtiDiZS.p2PositionAbsteigen] if score #VarDiZS.p2AktuellePositionDimension2 PZDiZS.p2Pos = #VarDiZS.p2Dimension2 PZDiZS.p2Felder run scoreboard players remove #VarDiZS.p2AktuellePositionDimension1 PZDiZS.p2Pos 1
execute if entity @s[tag=EtiDiZS.p2PositionAbsteigen] if score #VarDiZS.p2AktuellePositionDimension2 PZDiZS.p2Pos = #VarDiZS.p2Dimension2 PZDiZS.p2Felder if score #VarDiZS.p2AktuellePositionDimension1 PZDiZS.p2Pos matches ..0 run scoreboard players operation #VarDiZS.p2AktuellePositionDimension1 PZDiZS.p2Pos = @s PZDiZS.p2Felder

# Gibt die veränderten Positionen als tellraw-Nachrichten aus.
execute if entity @s[tag=EtiDiZS.p2PositionAbsteigen] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.2:"]
execute if entity @s[tag=EtiDiZS.p2PositionAbsteigen] if score #VarDiZS.p2AktuellePositionDimension2 PZDiZS.p2Pos = #VarDiZS.p2Dimension2 PZDiZS.p2Felder run tellraw @a[distance=..25] ["",{"text":"Feld.Position - 1 = ","bold":true},{"score":{"name":"#VarDiZS.p2AktuellePositionDimension1","objective":"PZDiZS.p2Pos"},"bold":true,"color":"green"}]
execute if entity @s[tag=EtiDiZS.p2PositionAbsteigen] run tellraw @a[distance=..25] ["",{"text":"Feld[","bold":true},{"score":{"name":"#VarDiZS.p2AktuellePositionDimension1","objective":"PZDiZS.p2Pos"},"bold":true,"color":"green"},{"text":"].Position - 1 = ","bold":true},{"score":{"name":"#VarDiZS.p2AktuellePositionDimension2","objective":"PZDiZS.p2Pos"},"bold":true,"color":"red"} ]


Variante 2: Menü-Wert-Funktion
Die Menü-Wert-Funktion sorgt dafür, dass man den Wert an der aktuellen Position um eins erhöhen kann, den Wert auslesen kann oder den Wert um eins an der aktuellen Position verringern kann.

Editor Icon direktzugriffsspeicher:vp2menu_wert.mcfunction
# Das Feld an der aktuellen Position wird ausgewählt und erhält zur Erkennung ein Etikett.
execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p2FeldDimension1] if score @s PZDiZS.p2Pos = #VarDiZS.p2AktuellePositionDimension1 PZDiZS.p2Pos at @s align xyz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p2Inhalt] if score @s PZDiZS.p2Pos = #VarDiZS.p2AktuellePositionDimension2 PZDiZS.p2Pos run tag @s add EtiDiZS.p2Auswahl

# Erhöht den Wert des aktuellen Feldes um eins und speichert ihn zusätzlich in eine Variable um ihn in der tellraw-Nachricht nutzen zu können.
execute if entity @s[tag=EtiDiZS.p2WertAnheben] run scoreboard players add @e[type=minecraft:armor_stand,tag=EtiDiZS.p2Auswahl,sort=nearest,limit=1] PZDiZS.p2Wert 1
execute if entity @s[tag=EtiDiZS.p2WertAnheben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.2:\n",{"text":"Feld[","bold":true},{"score":{"name":"#VarDiZS.p2AktuellePositionDimension1","objective":"PZDiZS.p2Pos"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p2AktuellePositionDimension2","objective":"PZDiZS.p2Pos"},"bold":true,"color":"red"},{"text":"] + 1 = ","bold":true},{"score":{"name":"@e[type=minecraft:armor_stand,tag=EtiDiZS.p2Auswahl,sort=nearest,limit=1]","objective":"PZDiZS.p2Wert"},"bold":true,"color":"dark_purple"} ]

# Gibt den Wert des aktuellen Feldes aus.
execute if entity @s[tag=EtiDiZS.p2WertAusgeben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.2:\n",{"text":"Feld[","bold":true},{"score":{"name":"#VarDiZS.p2AktuellePositionDimension1","objective":"PZDiZS.p2Pos"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p2AktuellePositionDimension2","objective":"PZDiZS.p2Pos"},"bold":true,"color":"red"},{"text":"] == ","bold":true},{"score":{"name":"@e[type=minecraft:armor_stand,tag=EtiDiZS.p2Auswahl,sort=nearest,limit=1]","objective":"PZDiZS.p2Wert"},"bold":true,"color":"dark_purple"} ]

# Verringert den Wert des aktuellen Feldes.
execute if entity @s[tag=EtiDiZS.p2WertVerringern] run scoreboard players remove @e[type=minecraft:armor_stand,tag=EtiDiZS.p2Auswahl,sort=nearest,limit=1] PZDiZS.p2Wert 1
execute if entity @s[tag=EtiDiZS.p2WertVerringern] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.2:\n",{"text":"Feld[","bold":true},{"score":{"name":"#VarDiZS.p2AktuellePositionDimension1","objective":"PZDiZS.p2Pos"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p2AktuellePositionDimension2","objective":"PZDiZS.p2Pos"},"bold":true,"color":"red"},{"text":"] - 1 = ","bold":true},{"score":{"name":"@e[type=minecraft:armor_stand,tag=EtiDiZS.p2Auswahl,sort=nearest,limit=1]","objective":"PZDiZS.p2Wert"},"bold":true,"color":"dark_purple"} ]

# Wenn der Wert des Feldes geändert wurde, wird der Name des Feldes aktualisiert.
execute at @e[type=minecraft:area_effect_cloud,tag=EtiDiZS.p2Schild] run data merge block ~ ~ ~ {Text1:'{"score":{"name":"@e[type=minecraft:armor_stand,tag=EtiDiZS.p2Auswahl,sort=nearest,limit=1]","objective":"PZDiZS.p2Wert"},"color":"dark_purple","bold":true}'}
execute at @e[type=minecraft:area_effect_cloud,tag=EtiDiZS.p2Schild] run data modify entity @e[type=minecraft:armor_stand,tag=EtiDiZS.p2Auswahl,sort=nearest,limit=1] CustomName set from block ~ ~ ~ Text1

# Das Etikett zur Erkennung wird wieder entfernt.
tag @e[type=minecraft:armor_stand,tag=EtiDiZS.p2Auswahl,sort=nearest,limit=1] remove EtiDiZS.p2Auswahl


Variante 2: Menü-Werte-Funktion
Die Menü-Werte-Funktion erlaubt es, alle Werte aller Felder auszugeben, in dem sie mit Selbstaufrufen die Menü-Werte-Dimension-1-Funktion aufruft.

Editor Icon direktzugriffsspeicher:vp2menu_werte.mcfunction
# Die aktuelle Position wird zwischengespeichert und der Kopfteil der tellraw-Nachricht wird ausgegeben.
tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.2:"]
scoreboard players set #VarDiZS.p2PositionAusgebenDimension1 PZDiZS.p2Pos 0
function direktzugriffsspeicher:vp2menu_werte_dimension_1


Variante 2: Menü-Werte-Dimension-1-Funktion
Die Menü-Werte-Dimension-1-Funktion ruft die Menü-Werte-Dimension-2-Funktion wie sich selbst auf und erhöht dabei die Position der ersten Dimension um eins.

Editor Icon direktzugriffsspeicher:vp2menu_werte_dimension_1.mcfunction
# Die aktuelle Position wird zwischengespeichert und der Kopfteil der tellraw-Nachricht wird ausgegeben.
scoreboard players add #VarDiZS.p2PositionAusgebenDimension1 PZDiZS.p2Pos 1
scoreboard players set #VarDiZS.p2PositionAusgebenDimension2 PZDiZS.p2Pos 1
execute if score #VarDiZS.p2PositionAusgebenDimension1 PZDiZS.p2Pos <= @s PZDiZS.p2Felder run function direktzugriffsspeicher:vp2menu_werte_dimension_2
execute if score #VarDiZS.p2PositionAusgebenDimension1 PZDiZS.p2Pos <= @s PZDiZS.p2Felder run function direktzugriffsspeicher:vp2menu_werte_dimension_1


Variante 2: Menü-Werte-Dimension-2-Funktion
Die Menü-Werte-Dimension-2-Funktion macht die gesamte Arbeit und gibt einen Wert pro Aufruf aus, wobei sie sich selbst um eine Position erhöht aufruft, solange sie nicht am Ende angelangt ist.

Editor Icon direktzugriffsspeicher:vp2menu_werte_dimension_2.mcfunction
# Es wird nach dem Feld mit der entsprechenden Position gesucht und dann wird dessen Wert in einer tellraw-Nachricht ausgegeben.
execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p2FeldDimension1,tag=EtiDiZS.p2Alle] if score @s PZDiZS.p2Pos = #VarDiZS.p2PositionAusgebenDimension1 PZDiZS.p2Pos at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p2Alle,tag=EtiDiZS.p2Inhalt] if score @s PZDiZS.p2Pos = #VarDiZS.p2PositionAusgebenDimension2 PZDiZS.p2Pos at @e[type=minecraft:chest_minecart,tag=EtiDiZS.p2GUI,sort=nearest,limit=1] run tellraw @a[distance=..25] ["",{"text":"Feld[","bold":true},{"score":{"name":"#VarDiZS.p2PositionAusgebenDimension1","objective":"PZDiZS.p2Pos"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p2PositionAusgebenDimension2","objective":"PZDiZS.p2Pos"},"bold":true,"color":"red"},{"text":"] == ","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p2Wert"},"bold":true,"color":"dark_purple"} ]

# Die Position wird um eins erhöht und wenn sie kleiner gleich der maximalen Länge des Feldes ist, wird diese Funktion selbst nochmal mit der neuen Position aufgerufen.
scoreboard players add #VarDiZS.p2PositionAusgebenDimension2 PZDiZS.p2Pos 1
execute if score #VarDiZS.p2PositionAusgebenDimension2 PZDiZS.p2Pos <= #VarDiZS.p2Dimension2 PZDiZS.p2Felder run function direktzugriffsspeicher:vp2menu_werte_dimension_2


Variante 2: Dimension-2-Funktion
Die Dimension-2-Funktion erzeugt eine neues Feld, wenn der Wert eins oder höher ist und es wird ein Feld der zweiten Dimension gelöscht, wenn der Wert minus eins oder kleiner ist.

Editor Icon direktzugriffsspeicher:vp2dimension_2.mcfunction
# Alle vorhandenen Felder werden um einen Block nach oben teleportiert.
execute if entity @s[scores={PZDiZS.p2Felder=1..}] align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p2Alle,tag=EtiDiZS.p2Inhalt] at @s run teleport @s ^1 ^ ^

# Ein neues Feld in Form eines Rüstungsständer mit einer Shulkerkiste wird über dem Hauptfeld gespawnt und alle Felder bekommen ihre Position um eins erhöht.
execute if entity @s[scores={PZDiZS.p2Felder=1..}] run summon minecraft:armor_stand ^1 ^ ^ {NoGravity:true,Small:true,Invisible:true,Marker:true,CustomNameVisible:true,CustomName:'{"text":"0","color":"dark_purple","bold":true}',Tags:["EtiDiZS.p2Alle","EtiDiZS.p2Inhalt","EtiDiZS.p2Dimensionen"],ArmorItems:[{},{},{},{id:"minecraft:chest",Count:1b} ] }
scoreboard players add @e[type=minecraft:armor_stand,tag=EtiDiZS.p2Inhalt] PZDiZS.p2Wert 0
execute if entity @s[scores={PZDiZS.p2Felder=1..}] align xz positioned ~-0.2 ~-0.5 ~-0.2 run scoreboard players add @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p2Inhalt] PZDiZS.p2Pos 1
execute if entity @s[scores={PZDiZS.p2Felder=1..}] run scoreboard players remove @s PZDiZS.p2Felder 1

# Von dem Feld der 2. Dimension aus, wird ganz am Ende das letzte Feld der 1. Dimension gelöscht.
execute if entity @s[scores={PZDiZS.p2Felder=..-1}] align xz positioned ~-0.2 ~-0.5 ~-0.2 run kill @e[dx=64,dy=0.4,dz=0.4,sort=furthest,limit=1,type=minecraft:armor_stand,tag=EtiDiZS.p2Alle,tag=EtiDiZS.p2Inhalt]
execute if entity @s[scores={PZDiZS.p2Felder=..-1}] run scoreboard players add @s PZDiZS.p2Felder 1


Variante 2: Stopp-Funktion
Die Stopp-Funktion löscht alle Punkte-Ziele, sowie alle Felder und die Güterlore.

Editor Icon direktzugriffsspeicher:vp2stopp.mcfunction
# Die Punkte-Ziele werden wieder entfernt.
scoreboard objectives remove PZDiZS.p2Wert
scoreboard objectives remove PZDiZS.p2Pos
scoreboard objectives remove PZDiZS.p2Felder

# Die Menü-Gegenstände werden aus dem Inventar aller Spieler entfernt.
clear @a #direktzugriffsspeicher:vp2menu{EigDiZS.p2Alle:true}

# Das Schild an der Position der Partikelwolke wird wieder entfernt.
execute at @e[type=minecraft:area_effect_cloud,tag=EtiDiZS.p2Schild] run setblock ~ ~ ~ minecraft:air replace

# Damit die Güterlore nichts droppt, wird sie geleert.
data remove entity @e[type=minecraft:chest_minecart,tag=EtiDiZS.p2GUI,sort=nearest,limit=1] Items

# Alle bisher erzeugten Felder werden gelöscht.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigDiZS.p2Alle:true} } }] add EtiDiZS.p2Alle
kill @e[tag=EtiDiZS.p2Alle]

Variante 3[]

Direktzugriffsspeicher (Befehle, erweitert) Bild 3.1 Direktzugriffsspeicher (Befehle, erweitert) Bild 3.2

Mit diesem erweiterten Direktzugriffsspeicher werden dreidimensionale Felderreihen erstellt. Mit der schwebenden Güterlore als Menü, kann man die Feld-Anzahl, die aktuelle Position und alle Werte festlegen. Die verschiedenen Optionen ermöglichen sämtliche Einstellungen vorzunehmen und man kann sich auch alle gespeicherten Werte der dreidimensionalen Felder ausgeben lassen.

Einschalten

Wenn man den Hebel auf dem Wiederhol-Befehlsblock umlegt wird auch der Befehlsblock aktiviert, welcher die Start-Funktion auslöst.

Wiederholen

Der Wiederhol-Befehlsblock aktiviert die Zyklus-Funktion jeden Tick, sodass sie ständig ausgeführt wird.

Ausschalten

Legt man den Hebel wieder um, so wird die Stopp-Funktion durch den Befehlsblock ausgelöst.


Befehlsblöcke mit Befehlen:



Variante 3: Start-Funktion
Die Start-Funktion erstellt alle Punkte-Ziele für die Werte, die Position und die Feldanzahl der jeweiligen Dimension, sowie die Güterlore die als Menü funktioniert.

Editor Icon direktzugriffsspeicher:vp3start.mcfunction
# Punkte-Ziele werden erstellt.
scoreboard objectives add PZDiZS.p3Wert dummy ["Direktzugriffsspeicher.erweitert.3: ",{"text":"Feldwert","bold":true}]
scoreboard objectives add PZDiZS.p3Pos dummy ["Direktzugriffsspeicher.erweitert.3: ",{"text":"Feld-Position","bold":true}]
scoreboard objectives add PZDiZS.p3Felder dummy ["Direktzugriffsspeicher.erweitert.3: ",{"text":"Felder eines Feldes","bold":true}]

# Eine Güterlore mit einer grünen Shulkerkiste wird als Startposition für die Felder gespawnt.
summon minecraft:armor_stand ~ ~2 ~ {NoGravity:true,Small:true,Invisible:true,Marker:true,Tags:["EtiDiZS.p3Alle"],Passengers:[{id:"minecraft:chest_minecart",NoGravity:true,Invulnerable:true,CustomDisplayTile:true,DisplayOffset:6,DisplayState:{Name:"minecraft:lime_shulker_box"},CustomName:'{"text":"Optionen","color":"dark_purple","bold":true}',Tags:["EtiDiZS.p3Alle","EtiDiZS.p3GUI"]},{id:"minecraft:armor_stand",NoGravity:true,Small:true,Invisible:true,Tags:["EtiDiZS.p3Alle"],CustomNameVisible:true,CustomName:'{"text":"Optionen","color":"dark_purple","bold":true}'}]}

# Der Güterlore werden die Punktestandswerte gegeben, damit diese in den Funktionen abgefragt werden können.
scoreboard players set @e[type=minecraft:chest_minecart,tag=EtiDiZS.p3GUI] PZDiZS.p3Felder 0
scoreboard players set @e[type=minecraft:chest_minecart,tag=EtiDiZS.p3GUI] PZDiZS.p3Wert 0

# Es wird eine Partikelwolke erzeugt, an deren Position ein Schild platziert wird, um den Wert der Felder in deren Anzeige-Namen speichern zu können.
summon minecraft:area_effect_cloud ~ ~1 ~ {Duration:-1,Age:-2147483648,WaitTime:-2147483648,Particle:"minecraft:block minecraft:air",Tags:["EtiDiZS.p3Alle","EtiDiZS.p3Schild"]}
execute at @e[type=minecraft:area_effect_cloud,tag=EtiDiZS.p3Schild] run setblock ~ ~ ~ minecraft:oak_sign[rotation=8] replace


Variante 3: Zyklus-Funktion
Die Zyklus-Funktion prüft ob in der Güterlore Gegenstände rausgenommen wurden, welche dann die Menü-Funktion auslöst um genau die Option aufzurufen die mit dem fehlenden Gegenstand ausgelöst wurde. Es werden auch Leucht- und Partikeleffekte durch diese Funktion gesteuert.

Editor Icon direktzugriffsspeicher:vp3zyklus.mcfunction
# Falls die Option Felder erzeugen angeklickt wurde, besitzt die Variable einen Wert ab eins oder höher, wenn dass der Fall ist, wird von der Güterlore der Gegenstand fürs "Feld hinzufügen" entfernt, sodass diese Option aktiviert wird. Damit der Spieler dies angezeigt bekommt, wird sein Wert auf eins gesetzt.
execute if score #VarDiZS.p3FelderErzeugen PZDiZS.p3Felder matches 1.. as @e[type=minecraft:chest_minecart,tag=EtiDiZS.p3GUI,sort=nearest,limit=1] at @s store result score @p[distance=..5] PZDiZS.p3Pos run data remove entity @s Items[{Slot:2b}]

# Die Anzahl der belegten Slots, in der schwebende Güterlore mit Shulkerkiste, wird ausgelesen und nur wenn sie nicht übereinstimmt, wird die Funktion geladen.
execute as @e[type=minecraft:chest_minecart,tag=EtiDiZS.p3GUI,sort=nearest,limit=1] store result score @s PZDiZS.p3Wert run data get entity @s Items
execute as @e[type=minecraft:chest_minecart,tag=EtiDiZS.p3GUI,sort=nearest,limit=1] unless entity @s[scores={PZDiZS.p3Wert=17}] at @s run function direktzugriffsspeicher:vp3menu

# Von der Güterlore aus, werden in einem Radius von maximal 128 Blöcken, alle Felder der ersten Dimension ausgewählt und geprüft ob sie noch Felder beantragen, falls ja wird die Funktion für die zweite und dritten Dimension aufgerufen.
execute at @e[type=minecraft:chest_minecart,tag=EtiDiZS.p3GUI,sort=nearest,limit=1] as @e[distance=..128,sort=nearest,type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1,tag=EtiDiZS.p3Dimensionen] unless score @s PZDiZS.p3Felder matches 0 at @s run function direktzugriffsspeicher:vp3dimension_2

execute at @e[type=minecraft:chest_minecart,tag=EtiDiZS.p3GUI,sort=nearest,limit=1] as @e[distance=..128,sort=nearest,type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension2,tag=EtiDiZS.p3Dimensionen] unless score @s PZDiZS.p3Felder matches 0 at @s run function direktzugriffsspeicher:vp3dimension_3

# Alle Felder bekommen den Leuchteffekt entfernt.
effect clear @e[tag=EtiDiZS.p3Dimensionen] minecraft:glowing

# Das ausgewählte Feld der ersten Dimension erhält Leucht- und Partikeleffekte, um es sofort ausfindig machen zu können.
execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension1 PZDiZS.p3Pos run effect give @s minecraft:glowing 1 1
execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension1 PZDiZS.p3Pos at @s run particle minecraft:block minecraft:lime_concrete ~ ~1.1 ~ 0 0 0 0.1 1 normal @a[distance=..25]

# Das ausgewählte Feld der zweiten Dimension erhält Leucht- und Partikeleffekte, um es sofort ausfindig machen zu können.
execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension1 PZDiZS.p3Pos at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension2] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension2 PZDiZS.p3Pos run effect give @s minecraft:glowing 1 1
execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension1 PZDiZS.p3Pos at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension2] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension2 PZDiZS.p3Pos at @s run particle minecraft:block minecraft:red_concrete ~ ~1.1 ~ 0 0 0 0.1 1 normal @a[distance=..25]

# Das ausgewählte Feld der dritten Dimension erhält Leucht- und Partikeleffekte, um es sofort ausfindig machen zu können.
execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension1 PZDiZS.p3Pos at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension2] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension2 PZDiZS.p3Pos at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=0.4,dy=0.4,dz=64,type=minecraft:armor_stand,tag=EtiDiZS.p3Inhalt] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos run effect give @s minecraft:glowing 1 1
execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension1 PZDiZS.p3Pos at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension2] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension2 PZDiZS.p3Pos at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=0.4,dy=0.4,dz=64,type=minecraft:armor_stand,tag=EtiDiZS.p3Inhalt] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos at @s run particle minecraft:block minecraft:blue_concrete ~ ~1.1 ~ 0 0 0 0.1 1 normal @a[distance=..25]


Variante 3: Menü-Funktion
Die Menü-Funktion entfernt alle Gegenstände aus dem Inventar des Spielers die als Options-Gegenstand in der Güterlore vorhanden sind und prüft nach welcher spezielle Gegenstand genau heruasgenommen wurde. Je nach Gegenstand wird dann die entsprechende Menü-Funktion aufgerufen.

Editor Icon direktzugriffsspeicher:vp3menu.mcfunction
# Wenn der Spieler Gegenstände im Inventar hat, die vom Menü der Güterlore stammen, werden sie entfernt und der Spieler erhält den Wert eins dafür. Falls der Spieler stattdessen den Gegenstand mit der Taste Q aus der Güterlore herausbefördert hat, wird der gedroppte Gegenstand gelöscht und der Spieler erhält dafür den Wert eins. Falls er durch die Zyklus-Funktion den Positions-Wert eins besitzt, so wird dieser auf null gesetzt und der andere Wert wird dadurch auf eins gesetzt.
execute as @a[distance=..5] store result score @s PZDiZS.p3Wert run clear @s #direktzugriffsspeicher:vp3menu{EigDiZS.p3Alle:true}
execute as @a[distance=..5,scores={PZDiZS.p3Wert=0}] store success score @s PZDiZS.p3Wert run kill @e[distance=..5,type=minecraft:item,nbt={Item:{tag:{EigDiZS.p3Alle:true} } }]
execute as @a[distance=..5,scores={PZDiZS.p3Wert=0,PZDiZS.p3Pos=1}] store success score @s PZDiZS.p3Wert run scoreboard players set @s PZDiZS.p3Pos 0

# Wenn der Gegenstand für das Neuerzeugen aller Felder angeklickt wurde, wird die Felder-Erzeugen-Funktion geladen.
execute if entity @p[distance=..5,scores={PZDiZS.p3Wert=1}] if entity @s[nbt=!{Items:[{Slot:10b,Count:1b}]}] run function direktzugriffsspeicher:vp3menu_felder_erzeugen

# Wenn einer der Gegenstände für die Feldanzahl angeklickt wurde, so erhält die Güterlore ein Etikett, wodurch die Feldanzahl-Option-Funktion geladen wird.
tag @s[nbt=!{Items:[{Slot:2b,Count:1b}]}] add EtiDiZS.p3FeldAnzahlDimension1Anheben
tag @s[nbt=!{Items:[{Slot:11b,Count:1b}]}] add EtiDiZS.p3FeldAnzahlDimension1Ausgeben
tag @s[nbt=!{Items:[{Slot:20b,Count:1b}]}] add EtiDiZS.p3FeldAnzahlDimension1Verringern
execute if entity @p[distance=..5,scores={PZDiZS.p3Wert=1}] unless entity @s[tag=!EtiDiZS.p3FeldAnzahlDimension1Anheben,tag=!EtiDiZS.p3FeldAnzahlDimension1Ausgeben,tag=!EtiDiZS.p3FeldAnzahlDimension1Verringern] run function direktzugriffsspeicher:vp3menu_feld_dimension_1

# Wenn einer der Gegenstände für die Feldanzahl angeklickt wurde, so erhält die Güterlore ein Etikett, wodurch die Feldanzahl-Option-Funktion geladen wird.
tag @s[nbt=!{Items:[{Slot:3b,Count:1b}]}] add EtiDiZS.p3FeldAnzahlDimension2Anheben
tag @s[nbt=!{Items:[{Slot:12b,Count:1b}]}] add EtiDiZS.p3FeldAnzahlDimension2Ausgeben
tag @s[nbt=!{Items:[{Slot:21b,Count:1b}]}] add EtiDiZS.p3FeldAnzahlDimension2Verringern
execute if entity @p[distance=..5,scores={PZDiZS.p3Wert=1}] unless entity @s[tag=!EtiDiZS.p3FeldAnzahlDimension2Anheben,tag=!EtiDiZS.p3FeldAnzahlDimension2Ausgeben,tag=!EtiDiZS.p3FeldAnzahlDimension2Verringern] run function direktzugriffsspeicher:vp3menu_feld_dimension_2

# Wenn einer der Gegenstände für die Feldanzahl angeklickt wurde, so erhält die Güterlore ein Etikett, wodurch die Feldanzahl-Option-Funktion geladen wird.
tag @s[nbt=!{Items:[{Slot:4b,Count:1b}]}] add EtiDiZS.p3FeldAnzahlDimension3Anheben
tag @s[nbt=!{Items:[{Slot:13b,Count:1b}]}] add EtiDiZS.p3FeldAnzahlDimension3Ausgeben
tag @s[nbt=!{Items:[{Slot:22b,Count:1b}]}] add EtiDiZS.p3FeldAnzahlDimension3Verringern
execute if entity @p[distance=..5,scores={PZDiZS.p3Wert=1}] unless entity @s[tag=!EtiDiZS.p3FeldAnzahlDimension3Anheben,tag=!EtiDiZS.p3FeldAnzahlDimension3Ausgeben,tag=!EtiDiZS.p3FeldAnzahlDimension3Verringern] run function direktzugriffsspeicher:vp3menu_feld_dimension_3

# Wenn einer der Gegenstände für die Position angeklickt wurde, so erhält die Güterlore ein Etikett, wodurch die Position-Option-Funktion geladen wird.
tag @s[nbt=!{Items:[{Slot:5b,Count:1b}]}] add EtiDiZS.p3PositionAufsteigen
tag @s[nbt=!{Items:[{Slot:14b,Count:1b}]}] add EtiDiZS.p3PositionAusgeben
tag @s[nbt=!{Items:[{Slot:23b,Count:1b}]}] add EtiDiZS.p3PositionAbsteigen
execute if entity @p[distance=..5,scores={PZDiZS.p3Wert=1}] unless entity @s[tag=!EtiDiZS.p3PositionAufsteigen,tag=!EtiDiZS.p3PositionAusgeben,tag=!EtiDiZS.p3PositionAbsteigen] run function direktzugriffsspeicher:vp3menu_position

# Wenn einer der Gegenstände für die Wertangabe angeklickt wurde, so erhält die Güterlore ein Etikett, wodurch die Wert-Option-Funktion geladen wird.
tag @s[nbt=!{Items:[{Slot:6b,Count:1b}]}] add EtiDiZS.p3WertAnheben
tag @s[nbt=!{Items:[{Slot:15b,Count:1b}]}] add EtiDiZS.p3WertAusgeben
tag @s[nbt=!{Items:[{Slot:24b,Count:1b}]}] add EtiDiZS.p3WertVerringern
execute if entity @p[distance=..5,scores={PZDiZS.p3Wert=1}] unless entity @s[tag=!EtiDiZS.p3WertAnheben,tag=!EtiDiZS.p3WertAusgeben,tag=!EtiDiZS.p3WertVerringern] run function direktzugriffsspeicher:vp3menu_wert

# Wenn der Gegenstand für das Ausgeben aller Werte der Felder angeklickt wurde, wird die Werte-Funktion geladen.
execute if entity @p[distance=..5,scores={PZDiZS.p3Wert=1}] if entity @s[scores={PZDiZS.p3Felder=1..},nbt=!{Items:[{Slot:16b,Count:1b}]}] run function direktzugriffsspeicher:vp3menu_werte

# Die Güterlore wird dann vom Menü her mit all ihren Gegenständen wieder zurückgesetzt und sie bekommt alle Etiketten gelöscht, in dem die Etikette neu gesetzt werden.
data merge entity @s {Tags:["EtiDiZS.p3Alle","EtiDiZS.p3GUI"],Items:[{Slot:2b,id:"minecraft:lime_concrete_powder",Count:1b,tag:{EigDiZS.p3Alle:true,display:{Name:'{"text":"Anzahl erhöhen (1. D)","color":"green","bold":true}'} } },{Slot:3b,id:"minecraft:lime_concrete_powder",Count:1b,tag:{EigDiZS.p3Alle:true,display:{Name:'{"text":"Anzahl erhöhen (2. D)","color":"green","bold":true}'} } },{Slot:4b,id:"minecraft:lime_concrete_powder",Count:1b,tag:{EigDiZS.p3Alle:true,display:{Name:'{"text":"Anzahl erhöhen (3. D)","color":"green","bold":true}'} } },{Slot:5b,id:"minecraft:lime_concrete_powder",Count:1b,tag:{EigDiZS.p3Alle:true,display:{Name:'{"text":"Zur höheren Position","color":"green","bold":true}'} } },{Slot:6b,id:"minecraft:lime_concrete_powder",Count:1b,tag:{EigDiZS.p3Alle:true,display:{Name:'{"text":"Wert erhöhen","color":"green","bold":true}'} } },{Slot:10b,id:"minecraft:lime_shulker_box",Count:1b,tag:{EigDiZS.p3Alle:true,display:{Name:'{"text":"Felder löschen und neu erzeugen","color":"dark_purple","bold":true}'} } },{Slot:11b,id:"minecraft:red_shulker_box",Count:1b,tag:{EigDiZS.p3Alle:true,display:{Name:'{"text":"Aktuelle Feldanzahl ausgeben (1. D)","color":"gold","bold":true}'} } },{Slot:12b,id:"minecraft:blue_shulker_box",Count:1b,tag:{EigDiZS.p3Alle:true,display:{Name:'{"text":"Aktuelle Feldanzahl ausgeben (2. D)","color":"gold","bold":true}'} } },{Slot:13b,id:"minecraft:chest",Count:1b,tag:{EigDiZS.p3Alle:true,display:{Name:'{"text":"Aktuelle Feldanzahl ausgeben (3. D)","color":"gold","bold":true}'} } },{Slot:14b,id:"minecraft:daylight_detector",Count:1b,tag:{EigDiZS.p3Alle:true,display:{Name:'{"text":"Aktuelle Position ausgeben","color":"gold","bold":true}'} } },{Slot:15b,id:"minecraft:book",Count:1b,tag:{EigDiZS.p3Alle:true,display:{Name:'{"text":"Aktuellen Wert ausgeben","color":"gold","bold":true}'} } },{Slot:16b,id:"minecraft:bookshelf",Count:1b,tag:{EigDiZS.p3Alle:true,display:{Name:'{"text":"Werte aller Felder ausgeben","color":"dark_purple","bold":true}'} } },{Slot:20b,id:"minecraft:red_concrete_powder",Count:1b,tag:{EigDiZS.p3Alle:true,display:{Name:'{"text":"Anzahl verringern (1. D)","color":"red","bold":true}'} } },{Slot:21b,id:"minecraft:red_concrete_powder",Count:1b,tag:{EigDiZS.p3Alle:true,display:{Name:'{"text":"Anzahl verringern (2. D)","color":"red","bold":true}'} } },{Slot:22b,id:"minecraft:red_concrete_powder",Count:1b,tag:{EigDiZS.p3Alle:true,display:{Name:'{"text":"Anzahl verringern (3. D)","color":"red","bold":true}'} } },{Slot:23b,id:"minecraft:red_concrete_powder",Count:1b,tag:{EigDiZS.p3Alle:true,display:{Name:'{"text":"Zur niedrigeren Position","color":"red","bold":true}'} } },{Slot:24b,id:"minecraft:red_concrete_powder",Count:1b,tag:{EigDiZS.p3Alle:true,display:{Name:'{"text":"Wert verringern","color":"red","bold":true}'} } } ]}


Variante 3: Menü-Feld-Dimension-1-Funktion
Die Menü-Feld-Dimension-1-Funktion erzeugt neue Felder, gibt die aktuelle Feldanzahl aus oder löscht ein Feld wieder.

Editor Icon direktzugriffsspeicher:vp3menü_feld_dimension_1.mcfunction
# Alle vorhandenen Felder werden um einen Block nach oben teleportiert.
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Anheben,scores={PZDiZS.p3Felder=..63}] as @e[type=minecraft:armor_stand,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3Dimensionen] at @s run teleport @s ~ ~1 ~

# Ein neues Feld in Form eines Rüstungsständer mit einer Shulkerkiste wird über dem Hauptfeld gespawnt und alle Felder bekommen ihre Position um eins erhöht.
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Anheben,scores={PZDiZS.p3Felder=..63}] run summon minecraft:armor_stand ~ ~1.5 ~ {NoGravity:true,Small:true,Invisible:true,Marker:true,Tags:["EtiDiZS.p3Alle","EtiDiZS.p3Dimensionen","EtiDiZS.p3FeldDimension1","EtiDiZS.p3Dimension2Erhalten"],ArmorItems:[{},{},{},{id:"minecraft:red_shulker_box",Count:1b} ] }
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Anheben,scores={PZDiZS.p3Felder=..63}] run scoreboard players add @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1] PZDiZS.p3Pos 1
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Anheben,scores={PZDiZS.p3Felder=..63}] run scoreboard players operation @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1,tag=EtiDiZS.p3Dimension2Erhalten] PZDiZS.p3Felder = #VarDiZS.p3Dimension2 PZDiZS.p3Felder
tag @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1,tag=EtiDiZS.p3Dimension2Erhalten] remove EtiDiZS.p3Dimension2Erhalten

# Danach wird die neue Anzahl der Felder als Wert in der Güterlore gespeichert, welche somit immer die aktuelle Anzahl ihrer Felder gespeichert hat.
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Anheben] at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 store result score @s PZDiZS.p3Felder if entity @e[dx=0.4,dy=64,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1]
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Anheben,scores={PZDiZS.p3Felder=..63}] unless score #VarDiZS.p3FelderErzeugen PZDiZS.p3Felder matches 1.. run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.3:\n",{"text":"Feld.Länge + 1 = neues Feld[","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p3Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3Dimension2","objective":"PZDiZS.p3Felder"},"bold":true,"color":"red"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3Dimension3","objective":"PZDiZS.p3Felder"},"bold":true,"color":"blue"},{"text":"]","bold":true} ]

# Die aktuelle Position wird um eins erhöht.
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Anheben,scores={PZDiZS.p3Felder=..63}] unless score #VarDiZS.p3FelderErzeugen PZDiZS.p3Felder matches 1.. run scoreboard players add #VarDiZS.p3AktuellePositionDimension1 PZDiZS.p3Pos 1

# Verringert den Wert der Variable um eins, falls sie mindestens noch den Wert eins hat.
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Anheben,scores={PZDiZS.p3Felder=..63}] if score #VarDiZS.p3FelderErzeugen PZDiZS.p3Felder matches 1.. run scoreboard players remove #VarDiZS.p3FelderErzeugen PZDiZS.p3Felder 1

# Die aktuelle Feldanzahl wird ausgegeben.
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Ausgeben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.3:\n",{"text":"Feld.Länge == ","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p3Felder"},"bold":true,"color":"green"} ]

# Das oberste Feld mit seinen Feldern wird zusammen gelöscht.
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Verringern,scores={PZDiZS.p3Felder=1..}] as @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1,sort=furthest,limit=1] at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,tag=EtiDiZS.p3FeldDimension2,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3Dimensionen] at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 run kill @e[dx=0.4,dy=0.4,dz=64,type=minecraft:armor_stand,tag=EtiDiZS.p3Inhalt]

execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Verringern,scores={PZDiZS.p3Felder=1..}] as @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1,sort=furthest,limit=1] at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 run kill @e[dx=64,dy=0.4,dz=0.4,tag=EtiDiZS.p3FeldDimension2,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3Dimensionen]
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Verringern,scores={PZDiZS.p3Felder=1..}] run kill @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1,sort=furthest,limit=1]

# Danach wird die neue Anzahl Felder als Punktestand in der Güterlore gespeichert, welche somit immer die aktuelle Anzahl ihrer Felder gespeichert hat.
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Verringern] store result score @s PZDiZS.p3Felder if entity @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1]
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Verringern] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.3:\n",{"text":"Feld.Länge - 1 = neues Feld[","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p3Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3Dimension2","objective":"PZDiZS.p3Felder"},"bold":true,"color":"red"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3Dimension3","objective":"PZDiZS.p3Felder"},"bold":true,"color":"blue"},{"text":"]","bold":true} ]

# Falls die aktuelle ausgewählte Position das gelöschte Feld war, wird die aktuelle Position auf das nächst niedrigere Feld gesetzt.
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Verringern] if score #VarDiZS.p3AktuellePositionDimension1 PZDiZS.p3Pos > @s PZDiZS.p3Felder run scoreboard players remove #VarDiZS.p3AktuellePositionDimension1 PZDiZS.p3Pos 1


Variante 3: Menü-Felder-Erzeugen-Funktion
Die Menü-Felder-Erzeugen-Funktion löscht erst alle Felder und anschließend wird der Wert der zu erzeugenden Felder aus der Güterlore in die entsprechende Variable gespeichert.

Editor Icon direktzugriffsspeicher:vp3menu_felder_erzeugen.mcfunction
# Alle Felder werden gelöscht und die Variable erhält den Wert der aktuellen Felder.
kill @e[type=minecraft:armor_stand,tag=EtiDiZS.p3Dimensionen]
scoreboard players operation #VarDiZS.p3FelderErzeugen PZDiZS.p3Felder = @s PZDiZS.p3Felder
execute at @s run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.3:\n",{"text":"Feld = neues Feld[","bold":true},{"score":{"name":"#VarDiZS.p3FelderErzeugen","objective":"PZDiZS.p3Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3Dimension2","objective":"PZDiZS.p3Felder"},"bold":true,"color":"red"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3Dimension3","objective":"PZDiZS.p3Felder"},"bold":true,"color":"blue"},{"text":"]","bold":true} ]


Variante 3: Menü-Feld-Dimension-2-Funktion
Die Menü-Feld-Dimension-2-Funktion erhöht den Punktestand der Feldanzahl der ersten Dimension um eins, sodass eine andere Funktion ein Feld für die zweite Dimension erstellt. Sie kann auch die aktuelle Feldanzahl der zweiten Dimension ausgeben oder auch verringern.

Editor Icon direktzugriffsspeicher:vp3menu_feld_dimension_2.mcfunction
# Allen Rüstungsständern der 1. Dimension wird der Punktestand für die 2. Dimension um eins erhöht, um für diese die Rüstungsständer später zu spawnen.
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension2Anheben] if score #VarDiZS.p3Dimension2 PZDiZS.p3Felder matches ..63 run scoreboard players add @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3Dimensionen] PZDiZS.p3Felder 1
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension2Anheben] if score #VarDiZS.p3Dimension2 PZDiZS.p3Felder matches ..63 run scoreboard players add #VarDiZS.p3Dimension2 PZDiZS.p3Felder 1
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension2Anheben] if score #VarDiZS.p3Dimension2 PZDiZS.p3Felder matches ..63 run scoreboard players add #VarDiZS.p3AktuellePositionDimension2 PZDiZS.p3Pos 1

execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension2Anheben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.3:\n",{"text":"Feld[","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p3Felder"},"bold":true,"color":"green"},{"text":"].Länge + 1 = neues Feld[","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p3Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3Dimension2","objective":"PZDiZS.p3Felder"},"bold":true,"color":"red"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3Dimension3","objective":"PZDiZS.p3Felder"},"bold":true,"color":"blue"},{"text":"]","bold":true} ]

# Die aktuelle Feldanzahl wird ausgegeben.
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension2Ausgeben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.3:\n",{"text":"Feld[","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension1","objective":"PZDiZS.p3Pos"},"bold":true,"color":"green"},{"text":"].Länge == ","bold":true},{"score":{"name":"#VarDiZS.p3Dimension2","objective":"PZDiZS.p3Felder"},"bold":true,"color":"red"} ]

# Allen Feldern der 1. Dimension wird der Punktestand für die 2. Dimension um eins erniedrigt, solange der Wert über eins ist.
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension2Verringern] if score #VarDiZS.p3Dimension2 PZDiZS.p3Felder matches 1.. run scoreboard players remove @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3Dimensionen] PZDiZS.p3Felder 1
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension2Verringern] if score #VarDiZS.p3Dimension2 PZDiZS.p3Felder matches 1.. run scoreboard players remove #VarDiZS.p3Dimension2 PZDiZS.p3Felder 1

execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension2Verringern] if score #VarDiZS.p3AktuellePositionDimension2 PZDiZS.p3Pos > #VarDiZS.p3Dimension2 PZDiZS.p3Felder run scoreboard players remove #VarDiZS.p3AktuellePositionDimension2 PZDiZS.p3Pos 1

execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension2Verringern] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.3:\n",{"text":"Feld[","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p3Felder"},"bold":true,"color":"green"},{"text":"].Länge - 1 = neues Feld[","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p3Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3Dimension2","objective":"PZDiZS.p3Felder"},"bold":true,"color":"red"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3Dimension3","objective":"PZDiZS.p3Felder"},"bold":true,"color":"blue"},{"text":"]","bold":true} ]


Variante 3: Menü-Feld-Dimension-3-Funktion
Die Menü-Feld-Dimension-3-Funktion erhöht die Feldanzahl der dritten Dimension, in dem der Feldanzahl-Wert in das Feld der zweiten Dimension gespeichert wird und dann wird eine andere Funktion aufgerufen um die Felder zu erzeugen. Es kann auch die aktuelle Feldanzahl der dritten Dimension ausgegeben werden oder auch verringert werden.

Editor Icon direktzugriffsspeicher:vp3menu_feld_dimension_3.mcfunction
# Allen Rüstungsständern der 1. Dimension wird der Punktestand für die 2. Dimension um eins erhöht, um für diese die Rüstungsständer später zu spawnen.
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension3Anheben] if score #VarDiZS.p3Dimension3 PZDiZS.p3Felder matches ..63 run scoreboard players add @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension2,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3Dimensionen] PZDiZS.p3Felder 1
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension3Anheben] if score #VarDiZS.p3Dimension3 PZDiZS.p3Felder matches ..63 run scoreboard players add #VarDiZS.p3Dimension3 PZDiZS.p3Felder 1
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension3Anheben] if score #VarDiZS.p3Dimension3 PZDiZS.p3Felder matches ..63 run scoreboard players add #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos 1

execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension3Anheben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.3:\n",{"text":"Feld[","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p3Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3Dimension2","objective":"PZDiZS.p3Felder"},"bold":true,"color":"red"},{"text":"].Länge + 1 = neues Feld[","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p3Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3Dimension2","objective":"PZDiZS.p3Felder"},"bold":true,"color":"red"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3Dimension3","objective":"PZDiZS.p3Felder"},"bold":true,"color":"blue"},{"text":"]","bold":true} ]

# Die aktuelle Feldanzahl wird ausgegeben.
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension3Ausgeben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.3:\n",{"text":"Feld[","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension1","objective":"PZDiZS.p3Pos"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension2","objective":"PZDiZS.p3Pos"},"bold":true,"color":"red"},{"text":"].Länge == ","bold":true},{"score":{"name":"#VarDiZS.p3Dimension3","objective":"PZDiZS.p3Felder"},"bold":true,"color":"blue"} ]

# Allen Feldern der 1. Dimension wird der Punktestand für die 2. Dimension um eins erniedrigt, solange der Wert über eins ist.
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension3Verringern] if score #VarDiZS.p3Dimension3 PZDiZS.p3Felder matches 1.. run scoreboard players remove @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension2,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3Dimensionen] PZDiZS.p3Felder 1
execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension3Verringern] if score #VarDiZS.p3Dimension3 PZDiZS.p3Felder matches 1.. run scoreboard players remove #VarDiZS.p3Dimension3 PZDiZS.p3Felder 1

execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension3Verringern] if score #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos > #VarDiZS.p3Dimension3 PZDiZS.p3Felder run scoreboard players remove #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos 1

execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension3Verringern] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.3:\n",{"text":"Feld[","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p3Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3Dimension2","objective":"PZDiZS.p3Felder"},"bold":true,"color":"red"},{"text":"].Länge - 1 = neues Feld[","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p3Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3Dimension2","objective":"PZDiZS.p3Felder"},"bold":true,"color":"red"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3Dimension3","objective":"PZDiZS.p3Felder"},"bold":true,"color":"blue"},{"text":"]","bold":true} ]


Variante 3: Menü-Position-Funktion
Die Menü-Position-Funktion erhöht die aktuelle Position, gibt sie aus oder verringert sie. Falls man über die maximale Anzahl der Felder gelangt, fängt es wieder bei ersten Feld von vorne an und umgekehrt, wenn man tiefer als das erste Feld gehen möchte geht es beim letzten Feld weiter.

Editor Icon direktzugriffsspeicher:vp3menu_position.mcfunction
# Erhöht die aktuelle Position der dritten Dimension um eins und falls die aktuelle Position der dritten Dimension über dem Maximum ist, wird sie wieder auf eins zurückgesetzt.
execute if entity @s[tag=EtiDiZS.p3PositionAufsteigen] run scoreboard players add #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos 1
execute if entity @s[tag=EtiDiZS.p3PositionAufsteigen] if score #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos > #VarDiZS.p3Dimension3 PZDiZS.p3Felder run scoreboard players set #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos 1

# Erhöht die aktuelle Position der zweiten Dimension um eins und falls die aktuelle Position der zweiten Dimension über dem Maximum ist, wird sie wieder auf eins zurückgesetzt.
execute if entity @s[tag=EtiDiZS.p3PositionAufsteigen] if score #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos matches 1 run scoreboard players add #VarDiZS.p3AktuellePositionDimension2 PZDiZS.p3Pos 1
execute if entity @s[tag=EtiDiZS.p3PositionAufsteigen] if score #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos matches 1 if score #VarDiZS.p3AktuellePositionDimension2 PZDiZS.p3Pos > #VarDiZS.p3Dimension2 PZDiZS.p3Felder run scoreboard players set #VarDiZS.p3AktuellePositionDimension2 PZDiZS.p3Pos 1

# Falls die Position der zweiten Dimension aktuell auf eins gesetzt wurde, wird die Position der zweiten Dimension um eins erhöht und anschließend geprüft ob sie über das Maximum gelangt ist, dann wird sie auch auf eins zurükgesetzt.
execute if entity @s[tag=EtiDiZS.p3PositionAufsteigen] if score #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos matches 1 if score #VarDiZS.p3AktuellePositionDimension2 PZDiZS.p3Pos matches 1 run scoreboard players add #VarDiZS.p3AktuellePositionDimension1 PZDiZS.p3Pos 1
execute if entity @s[tag=EtiDiZS.p3PositionAufsteigen] if score #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos matches 1 if score #VarDiZS.p3AktuellePositionDimension2 PZDiZS.p3Pos matches 1 if score #VarDiZS.p3AktuellePositionDimension1 PZDiZS.p3Pos > @s PZDiZS.p3Felder run scoreboard players set #VarDiZS.p3AktuellePositionDimension1 PZDiZS.p3Pos 1

# Gibt die veränderten Positionen als tellraw-Nachrichten aus.
execute if entity @s[tag=EtiDiZS.p3PositionAufsteigen] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.3:"]
execute if entity @s[tag=EtiDiZS.p3PositionAufsteigen] if score #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos matches 1 if score #VarDiZS.p3AktuellePositionDimension2 PZDiZS.p3Pos matches 1 run tellraw @a[distance=..25] ["",{"text":"Feld.Position + 1 = ","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension1","objective":"PZDiZS.p3Pos"},"bold":true,"color":"green"}]
execute if entity @s[tag=EtiDiZS.p3PositionAufsteigen] if score #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos matches 1 run tellraw @a[distance=..25] ["",{"text":"Feld[","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension1","objective":"PZDiZS.p3Pos"},"bold":true,"color":"green"},{"text":"].Position + 1 = ","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension2","objective":"PZDiZS.p3Pos"},"bold":true,"color":"red"} ]
execute if entity @s[tag=EtiDiZS.p3PositionAufsteigen] run tellraw @a[distance=..25] ["",{"text":"Feld[","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension1","objective":"PZDiZS.p3Pos"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension2","objective":"PZDiZS.p3Pos"},"bold":true,"color":"red"},{"text":"].Position + 1 = ","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension3","objective":"PZDiZS.p3Pos"},"bold":true,"color":"blue"} ]

# Gibt die aktuelle Position aus.
execute if entity @s[tag=EtiDiZS.p3PositionAusgeben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.3:\n",{"text":"Feld[","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension1","objective":"PZDiZS.p3Pos"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension2","objective":"PZDiZS.p3Pos"},"bold":true,"color":"red"},{"text":"].Position == ","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension3","objective":"PZDiZS.p3Pos"},"bold":true,"color":"blue"} ]

# Gibt die neue verringerte Position der zweiten Dimension aus.
execute if entity @s[tag=EtiDiZS.p3PositionAbsteigen] run scoreboard players remove #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos 1
execute if entity @s[tag=EtiDiZS.p3PositionAbsteigen] if score #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos matches ..0 run scoreboard players operation #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos = #VarDiZS.p3Dimension3 PZDiZS.p3Felder

# Gibt die neue verringerte Position der zweiten Dimension aus.
execute if entity @s[tag=EtiDiZS.p3PositionAbsteigen] if score #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos = #VarDiZS.p3Dimension3 PZDiZS.p3Felder run scoreboard players remove #VarDiZS.p3AktuellePositionDimension2 PZDiZS.p3Pos 1
execute if entity @s[tag=EtiDiZS.p3PositionAbsteigen] if score #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos = #VarDiZS.p3Dimension3 PZDiZS.p3Felder if score #VarDiZS.p3AktuellePositionDimension2 PZDiZS.p3Pos matches ..0 run scoreboard players operation #VarDiZS.p3AktuellePositionDimension2 PZDiZS.p3Pos = #VarDiZS.p3Dimension2 PZDiZS.p3Felder

# Falls Position der zweiten Dimension wieder beim Ende ist, wird die Position der ersten Dimension um eins verringert, falls sie dann auch unter eins sein sollte, wird sie wieder auf das Ende gesetzt.
execute if entity @s[tag=EtiDiZS.p3PositionAbsteigen] if score #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos = #VarDiZS.p3Dimension3 PZDiZS.p3Felder if score #VarDiZS.p3AktuellePositionDimension2 PZDiZS.p3Pos = #VarDiZS.p3Dimension2 PZDiZS.p3Felder run scoreboard players remove #VarDiZS.p3AktuellePositionDimension1 PZDiZS.p3Pos 1
execute if entity @s[tag=EtiDiZS.p3PositionAbsteigen] if score #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos = #VarDiZS.p3Dimension3 PZDiZS.p3Felder if score #VarDiZS.p3AktuellePositionDimension2 PZDiZS.p3Pos = #VarDiZS.p3Dimension2 PZDiZS.p3Felder if score #VarDiZS.p3AktuellePositionDimension1 PZDiZS.p3Pos matches ..0 run scoreboard players operation #VarDiZS.p3AktuellePositionDimension1 PZDiZS.p3Pos = @s PZDiZS.p3Felder

# Gibt die veränderten Positionen als tellraw-Nachrichten aus.
execute if entity @s[tag=EtiDiZS.p3PositionAbsteigen] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.3:"]
execute if entity @s[tag=EtiDiZS.p3PositionAbsteigen] if score #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos = #VarDiZS.p3Dimension3 PZDiZS.p3Felder if score #VarDiZS.p3AktuellePositionDimension2 PZDiZS.p3Pos = #VarDiZS.p3Dimension2 PZDiZS.p3Felder run tellraw @a[distance=..25] ["",{"text":"Feld.Position - 1 = ","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension1","objective":"PZDiZS.p3Pos"},"bold":true,"color":"green"}]
execute if entity @s[tag=EtiDiZS.p3PositionAbsteigen] if score #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos = #VarDiZS.p3Dimension3 PZDiZS.p3Felder run tellraw @a[distance=..25] ["",{"text":"Feld[","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension1","objective":"PZDiZS.p3Pos"},"bold":true,"color":"green"},{"text":"].Position - 1 = ","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension2","objective":"PZDiZS.p3Pos"},"bold":true,"color":"red"} ]
execute if entity @s[tag=EtiDiZS.p3PositionAbsteigen] run tellraw @a[distance=..25] ["",{"text":"Feld[","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension1","objective":"PZDiZS.p3Pos"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension2","objective":"PZDiZS.p3Pos"},"bold":true,"color":"red"},{"text":"].Position - 1 = ","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension3","objective":"PZDiZS.p3Pos"},"bold":true,"color":"blue"} ]


Variante 3: Menü-Wert-Funktion
Die Menü-Wert-Funktion erhöht den Wert des Feldes an der aktuellen Position, gibt ihn aus oder verringert ihn um eins.

Editor Icon direktzugriffsspeicher:vp3menu_wert.mcfunction
# Das Feld an der aktuellen Position wird ausgewählt und erhält zur Erkennung ein Etikett.
execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1,tag=EtiDiZS.p3Alle,sort=nearest] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension1 PZDiZS.p3Pos at @s positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.2,dz=0.2,type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension2] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension2 PZDiZS.p3Pos at @s positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=0.2,dy=0.2,dz=64,type=minecraft:armor_stand,tag=EtiDiZS.p3Inhalt] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos run tag @s add EtiDiZS.p3Auswahl

# Erhöht den Wert des aktuellen Feldes um eins und speichert ihn zusätzlich in eine Variable um ihn in der tellraw-Nachricht nutzen zu können.
execute if entity @s[tag=EtiDiZS.p3WertAnheben] run scoreboard players add @e[type=minecraft:armor_stand,tag=EtiDiZS.p3Auswahl,sort=nearest,limit=1] PZDiZS.p3Wert 1
execute if entity @s[tag=EtiDiZS.p3WertAnheben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.3:\n",{"text":"Feld[","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension1","objective":"PZDiZS.p3Pos"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension2","objective":"PZDiZS.p3Pos"},"bold":true,"color":"red"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension3","objective":"PZDiZS.p3Pos"},"bold":true,"color":"blue"},{"text":"] + 1 = ","bold":true},{"score":{"name":"@e[type=minecraft:armor_stand,tag=EtiDiZS.p3Auswahl,sort=nearest,limit=1]","objective":"PZDiZS.p3Wert"},"bold":true,"color":"dark_purple"} ]

# Gibt den Wert des aktuellen Feldes aus.
execute if entity @s[tag=EtiDiZS.p3WertAusgeben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.3:\n",{"text":"Feld[","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension1","objective":"PZDiZS.p3Pos"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension2","objective":"PZDiZS.p3Pos"},"bold":true,"color":"red"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension3","objective":"PZDiZS.p3Pos"},"bold":true,"color":"blue"},{"text":"] == ","bold":true},{"score":{"name":"@e[type=minecraft:armor_stand,tag=EtiDiZS.p3Auswahl,sort=nearest,limit=1]","objective":"PZDiZS.p3Wert"},"bold":true,"color":"dark_purple"} ]

# Verringert den Wert des aktuellen Feldes.
execute if entity @s[tag=EtiDiZS.p3WertVerringern] run scoreboard players remove @e[type=minecraft:armor_stand,tag=EtiDiZS.p3Auswahl,sort=nearest,limit=1] PZDiZS.p3Wert 1
execute if entity @s[tag=EtiDiZS.p3WertVerringern] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.3:\n",{"text":"Feld[","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension1","objective":"PZDiZS.p3Pos"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension2","objective":"PZDiZS.p3Pos"},"bold":true,"color":"red"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3AktuellePositionDimension3","objective":"PZDiZS.p3Pos"},"bold":true,"color":"blue"},{"text":"] - 1 = ","bold":true},{"score":{"name":"@e[type=minecraft:armor_stand,tag=EtiDiZS.p3Auswahl,sort=nearest,limit=1]","objective":"PZDiZS.p3Wert"},"bold":true,"color":"dark_purple"} ]

# Wenn der Wert des Feldes geändert wurde, wird der Name des Feldes aktualisiert.
execute at @e[type=minecraft:area_effect_cloud,tag=EtiDiZS.p3Schild] run data merge block ~ ~ ~ {Text1:'{"score":{"name":"@e[type=minecraft:armor_stand,tag=EtiDiZS.p3Auswahl,sort=nearest,limit=1]","objective":"PZDiZS.p3Wert"},"color":"dark_purple","bold":true}'}
execute at @e[type=minecraft:area_effect_cloud,tag=EtiDiZS.p3Schild] run data modify entity @e[type=minecraft:armor_stand,tag=EtiDiZS.p3Auswahl,sort=nearest,limit=1] CustomName set from block ~ ~ ~ Text1

# Das Etikett zur Erkennung wird wieder entfernt.
tag @e[type=minecraft:armor_stand,tag=EtiDiZS.p3Auswahl,sort=nearest,limit=1] remove EtiDiZS.p3Auswahl


Variante 3: Menü-Werte-Funktion
Die Menü-werte-Funktion gibt am Ende alle Werte aller Felder aus. Dabei setzt diese die Start-Position auf null und ruft dann die Menü-Werte-Dimension-1-Funktion auf, welche wiederum die der zweiten und dritten Dimension aufruft, welche dann jeweils die Feldwerte ausgeben.

Editor Icon direktzugriffsspeicher:vp3menu_werte.mcfunction
# Die aktuelle Position wird zwischengespeichert und der Kopfteil der tellraw-Nachricht wird ausgegeben.
execute at @s run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.3:"]
scoreboard players set #VarDiZS.p3PositionAusgebenDimension1 PZDiZS.p3Pos 0
function direktzugriffsspeicher:vp3menu_werte_dimension_1


Variante 3: Menü-Werte-Dimension-1-Funktion
Die Menü-Werte-Dimension-1-Funktion erhöht die aktuelle Position der ersten Dimension um eins und ruft dann die Menü-Werte-Dimension-2-Funktion für die zweite Dimension auf und ruft anschließend sich selbst auf.

Editor Icon direktzugriffsspeicher:vp3menu_werte_dimension_1.mcfunction
# Die aktuelle Position wird zwischengespeichert und der Kopfteil der tellraw-Nachricht wird ausgegeben.
scoreboard players add #VarDiZS.p3PositionAusgebenDimension1 PZDiZS.p3Pos 1
scoreboard players set #VarDiZS.p3PositionAusgebenDimension2 PZDiZS.p3Pos 0
execute if score #VarDiZS.p3PositionAusgebenDimension1 PZDiZS.p3Pos <= @s PZDiZS.p3Felder run function direktzugriffsspeicher:vp3menu_werte_dimension_2
execute if score #VarDiZS.p3PositionAusgebenDimension1 PZDiZS.p3Pos <= @s PZDiZS.p3Felder run function direktzugriffsspeicher:vp3menu_werte_dimension_1


Variante 3: Menü-Werte-Dimension-2-Funktion
Die Menü-Werte-Dimension-2-Funktion erhöht die aktuelle Position der zweiten Dimension um eins und ruft anschließend die Menü-Werte-Dimension-3-Funktion für die dritte Dimension auf, die die gesamte Arbeit macht und jedes einzelne Feld ausgibt, anschließend ruft sie sich selbst auf, solange sie noch nicht am Ende angekommen ist.

Editor Icon direktzugriffsspeicher:vp3menu_werte_dimension_2.mcfunction
# Die aktuelle Position wird zwischengespeichert und der Kopfteil der tellraw-Nachricht wird ausgegeben.
scoreboard players add #VarDiZS.p3PositionAusgebenDimension2 PZDiZS.p3Pos 1
scoreboard players set #VarDiZS.p3PositionAusgebenDimension3 PZDiZS.p3Pos 1
execute if score #VarDiZS.p3PositionAusgebenDimension2 PZDiZS.p3Pos <= #VarDiZS.p3Dimension2 PZDiZS.p3Felder run function direktzugriffsspeicher:vp3menu_werte_dimension_3
execute if score #VarDiZS.p3PositionAusgebenDimension2 PZDiZS.p3Pos <= #VarDiZS.p3Dimension2 PZDiZS.p3Felder run function direktzugriffsspeicher:vp3menu_werte_dimension_2


Variante 3: Menü-Werte-Dimension-3-Funktion
Die Menü-Werte-Dimension-3-Funktion gibt an der aktuellen Position den Feldwert aus und erhöht anschließend die aktuelle Position der dritten Dimension um anschließend sich selbst aufzurufen, solange nicht die letzte Position überschritten ist.

Editor Icon direktzugriffsspeicher:vp3menu_werte_dimension_3.mcfunction
# Es wird nach dem Feld mit der entsprechenden Position gesucht und dann wird dessen Wert in einer tellraw-Nachricht ausgegeben.
execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1,tag=EtiDiZS.p3Alle] if score @s PZDiZS.p3Pos = #VarDiZS.p3PositionAusgebenDimension1 PZDiZS.p3Pos at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3FeldDimension2] if score @s PZDiZS.p3Pos = #VarDiZS.p3PositionAusgebenDimension2 PZDiZS.p3Pos at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=0.4,dy=0.4,dz=64,type=minecraft:armor_stand,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3Inhalt] if score @s PZDiZS.p3Pos = #VarDiZS.p3PositionAusgebenDimension3 PZDiZS.p3Pos at @e[type=minecraft:chest_minecart,tag=EtiDiZS.p3GUI,sort=nearest,limit=1] run tellraw @a[distance=..25] ["",{"text":"Feld[","bold":true},{"score":{"name":"#VarDiZS.p3PositionAusgebenDimension1","objective":"PZDiZS.p3Pos"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3PositionAusgebenDimension2","objective":"PZDiZS.p3Pos"},"bold":true,"color":"red"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3PositionAusgebenDimension3","objective":"PZDiZS.p3Pos"},"bold":true,"color":"blue"},{"text":"] == ","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p3Wert"},"bold":true,"color":"dark_purple"} ]

# Die Position wird um eins erhöht und wenn sie kleiner gleich der maximalen Länge des Feldes ist, wird diese Funktion selbst nochmal mit der neuen Position aufgerufen.
scoreboard players add #VarDiZS.p3PositionAusgebenDimension3 PZDiZS.p3Pos 1
execute if score #VarDiZS.p3PositionAusgebenDimension3 PZDiZS.p3Pos <= #VarDiZS.p3Dimension3 PZDiZS.p3Felder run function direktzugriffsspeicher:vp3menu_werte_dimension_3


Variante 3: Dimension-2-Funktion
Die Dimension-2-Funktion erzeugt neue Felder wenn der Felder-Wert eins oder größer ist und löscht Felder, wenn der wert minus eins oder kleiner ist.

Editor Icon direktzugriffsspeicher:vp3dimension_2.mcfunction
# Alle vorhandenen Felder werden um einen Block nach oben teleportiert.
execute if entity @s[scores={PZDiZS.p3Felder=1..}] align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3FeldDimension2] at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=0.4,dy=0.4,dz=64,type=minecraft:armor_stand,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3Inhalt] at @s run teleport @s ^1 ^ ^
execute if entity @s[scores={PZDiZS.p3Felder=1..}] align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3FeldDimension2] at @s run teleport @s ^1 ^ ^

# Ein neues Feld in Form eines Rüstungsständer mit einer Shulkerkiste wird über dem Hauptfeld gespawnt und alle Felder bekommen ihre Position um eins erhöht.
execute if entity @s[scores={PZDiZS.p3Felder=1..}] run summon minecraft:armor_stand ^1 ^ ^ {NoGravity:true,Small:true,Invisible:true,Marker:true,Tags:["EtiDiZS.p3Alle","EtiDiZS.p3Dimensionen","EtiDiZS.p3FeldDimension2","EtiDiZS.p3Dimension3Erhalten"],ArmorItems:[{},{},{},{id:"minecraft:blue_shulker_box",Count:1b} ] }
execute if entity @s[scores={PZDiZS.p3Felder=1..}] align xz positioned ~-0.2 ~-0.5 ~-0.2 run scoreboard players add @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension2] PZDiZS.p3Pos 1

execute if entity @s[scores={PZDiZS.p3Felder=1..}] align xz positioned ~-0.2 ~-0.5 ~-0.2 run scoreboard players operation @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension2,tag=EtiDiZS.p3Dimension3Erhalten] PZDiZS.p3Felder = #VarDiZS.p3Dimension3 PZDiZS.p3Felder
tag @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension2,tag=EtiDiZS.p3Dimension3Erhalten] remove EtiDiZS.p3Dimension3Erhalten

execute if entity @s[scores={PZDiZS.p3Felder=1..}] run scoreboard players remove @s PZDiZS.p3Felder 1

# Von dem Feld der 2. Dimension aus, wird ganz am Ende das letzte Feld der 1. Dimension gelöscht.
execute if entity @s[scores={PZDiZS.p3Felder=..-1}] align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,sort=furthest,limit=1,type=minecraft:armor_stand,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3FeldDimension2] at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 run kill @e[dx=0.4,dy=0.4,dz=64,type=minecraft:armor_stand,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3Inhalt]

execute if entity @s[scores={PZDiZS.p3Felder=..-1}] align xz positioned ~-0.2 ~-0.5 ~-0.2 run kill @e[dx=64,dy=0.4,dz=0.4,sort=furthest,limit=1,type=minecraft:armor_stand,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3FeldDimension2]

execute if entity @s[scores={PZDiZS.p3Felder=..-1}] run scoreboard players add @s PZDiZS.p3Felder 1


Variante 3: Dimension-3-Funktion
Die Dimension-3-Funktion erstellt neue Felder wenn der Felder-Wert eins oder größer ist und löscht Felder wenn der wert minus eins oder kleiner ist.

Editor Icon direktzugriffsspeicher:vp3dimension_3.mcfunction
# Alle vorhandenen Felder werden um einen Block nach oben teleportiert.
execute if entity @s[scores={PZDiZS.p3Felder=1..}] align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=0.4,dy=0.4,dz=64,type=minecraft:armor_stand,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3Inhalt] at @s run teleport @s ^ ^ ^1

# Ein neues Feld in Form eines Rüstungsständer mit einer Shulkerkiste wird über dem Hauptfeld gespawnt und alle Felder bekommen ihre Position um eins erhöht.
execute if entity @s[scores={PZDiZS.p3Felder=1..}] run summon minecraft:armor_stand ^ ^ ^1 {NoGravity:true,Small:true,Invisible:true,Marker:true,CustomNameVisible:true,CustomName:'{"text":"0","color":"dark_purple","bold":true}',Tags:["EtiDiZS.p3Alle","EtiDiZS.p3Dimensionen","EtiDiZS.p3Inhalt"],ArmorItems:[{},{},{},{id:"minecraft:chest",Count:1b} ] }
scoreboard players add @e[type=minecraft:armor_stand,tag=EtiDiZS.p3Inhalt] PZDiZS.p3Wert 0
execute if entity @s[scores={PZDiZS.p3Felder=1..}] align xz positioned ~-0.2 ~-0.5 ~-0.2 run scoreboard players add @e[dx=0.4,dy=0.4,dz=64,type=minecraft:armor_stand,tag=EtiDiZS.p3Inhalt] PZDiZS.p3Pos 1
execute if entity @s[scores={PZDiZS.p3Felder=1..}] run scoreboard players remove @s PZDiZS.p3Felder 1

# Das Feld der 2. Dimension ganz am Ende wird aus vom Feld der 1. Dimension wird gelöscht.
execute if entity @s[scores={PZDiZS.p3Felder=..-1}] align xz positioned ~-0.2 ~-0.5 ~-0.2 run kill @e[dx=0.4,dy=0.4,dz=64,sort=furthest,limit=1,type=minecraft:armor_stand,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3Inhalt]

execute if entity @s[scores={PZDiZS.p3Felder=..-1}] run scoreboard players add @s PZDiZS.p3Felder 1


Variante 3: Stopp-Funktion
Die Stopp-Funktion löscht alle Punkte-Ziele wieder und leert die Güterlore und danach werden alle Felder samt der Güterlore gelöscht.

Editor Icon direktzugriffsspeicher:vp3stopp.mcfunction
# Die Punkte-Ziele werden wieder entfernt.
scoreboard objectives remove PZDiZS.p3Wert
scoreboard objectives remove PZDiZS.p3Pos
scoreboard objectives remove PZDiZS.p3Felder

# Die Menü-Gegenstände werden aus dem Inventar aller Spieler entfernt.
clear @a #direktzugriffsspeicher:vp3menu{EigDiZS.p3Alle:true}

# Das Schild an der Position der Partikelwolke wird wieder entfernt.
execute at @e[type=minecraft:area_effect_cloud,tag=EtiDiZS.p3Schild] run setblock ~ ~ ~ minecraft:air replace

# Damit die Güterlore nichts droppt, wird sie geleert.
data remove entity @e[type=minecraft:chest_minecart,tag=EtiDiZS.p3GUI,sort=nearest,limit=1] Items

# Alle bisher erzeugten Felder werden gelöscht.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigDiZS.p3Alle:true} } }] add EtiDiZS.p3Alle
kill @e[tag=EtiDiZS.p3Alle]


Disambig color
Advertisement