Das offizielle Minecraft Wiki twittert hier: Wiki-Twitter  –  Chatte im Wiki-Discord  – Noch keinen Server gefunden? Es gibt einen Wiki-Server

Direktzugriffsspeicher (Befehle, erweitert)

Aus Technik Wiki
Wechseln zu: Navigation, Suche
Gruppe: Grid Redstone-Verstärker.png
Schaltnetze

Grid Roter Sand blass.png mit Mechaniken

Grid Redstone.png mit Redstone

Grid Befehlsblock.png mit Befehlen

Die vorgestellte Technik kann in der Redstone-Welt angesehen werden.
                Hier:
Grid Wiederhol-Befehlsblock.png mehr Befehle

Erweiterte Direktzugriffsspeicher ermöglichen das Speichern sowie das erneute Auslesen von Zahlenwerten in großen Maßstäben. Die zu speichernden Werte werden in sogenannte Felder (engl. Arrays) hinterlegt. Damit man große Mengen dieser Felder erzeugen kann, wird nicht nur auf eindimensionale Felder zugegriffen, sondern gleich auf zwei, drei oder variabel-einstellbar viele. Hierbei wird pro normalen Feld eine Felderreihe erzeugt, also ein Feld von Feldern.

Die erste Dimension wird einfach als Felderreihe nach oben parallel zur y-Achse gebildet. Die zweite zur x-Achse und die dritte zur z-Achse. Ab der vierten Dimension wird es etwas kniffliger. In diesem Fall bildet man die vierte Dimension in der ersten Dimension ab (3D für y-Achse), das gleiche gilt für die fünfte (3D für x-Achse) und sechste Dimension (3D für z-Achse). Ab der siebten wird es dann jedoch ziemlich aufwändig. Und für eine unbegrenzte Anzahl Dimensionen muss man schließlich eine eindimensionale Felderreihe benutzen um von ihr aus alle Felderdimensionen ansteuern zu können. Dort wird dann mit Hilfe der Anzahl der Felder auf die Anzahl der Dimensionen geschlussfolgert und anhand der Felderwerte die Anzahl der Felder in einer Dimension. Da es jedoch über dem normalen hinaus geht wird diese Art nicht weiter beschrieben.

Inhaltsverzeichnis

Variante 1[Bearbeiten | Quelltext bearbeiten]

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

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 1: Start-Funktion
Wenn die Start-Funktion geladen wird, werden die Punktestand-Ziele und die Güterlore erstellt.

  • Zeile 2 Das Punktestand-Ziel für den Feld-Wert,
  • Zeile 3 für die Position eines Feldes und
  • Zeile 4 für die Anzahl der Felder die zu einem Feld der höheren Dimension angehören
  • Zeile 7 Zwei Blöcke über dem Befehlsblock wird eine Güterlore mit dem Aussehen einer Shulkerkiste gespawnt. Sie beinhaltet im Inventar nach dem ersten Laden der Zyklus-Funktion ein Auswahl-Menü um alle Optionen der Felderreihen einstellen zu können.
  • Zeile 10 Die Güterlore erhält die Felderanzahl von null, damit bei späteren Punktestandsvergleichen ein Zahlenwert vorhanden ist, da sonst nicht damit gearbeitet werden kann.
  • Zeile 11 Die Güterlore erhält auch den Zahlenwert null, wie bei der Positionsnummer, damit mit ihr ohne Komplikationen gearbeitet werden kann.
Editor Icon.png technik_wiki:direktzugriffsspeicher/vp1start.mcfunction
# Punktestand-Ziele werden erstellt
scoreboard objectives add PZFeld.p1Wert dummy ["Direktzugriffsspeicher.plus.1: ",{"text":"Feldwert","bold":true}]
scoreboard objectives add PZFeld.p1Pos dummy ["Direktzugriffsspeicher.plus.1: ",{"text":"Feld-Position","bold":true}]
scoreboard objectives add PZFeld.p1Felder dummy ["Direktzugriffsspeicher.plus.1: ",{"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:["EtiFeld.p1AlleFelder"],Passengers:[{id:"minecraft:chest_minecart",NoGravity:true,Invulnerable:true,CustomDisplayTile:true,DisplayOffset:6,DisplayState:{Name:"minecraft:lime_shulker_box"},CustomName:"{\"text\":\"Optionen\"}",Tags:["EtiFeld.p1Start","EtiFeld.p1AlleFelder"]},{id:"minecraft:armor_stand",NoGravity:true,Small:true,Invisible:true,Tags:["EtiFeld.p1AlleFelder"],CustomNameVisible:true,CustomName:"{\"text\":\"Optionen\"}"}]}

# 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=EtiFeld.p1Start] PZFeld.p1Felder 0
scoreboard players set @e[type=minecraft:chest_minecart,tag=EtiFeld.p1Start] PZFeld.p1Wert 0


Variante 1: 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.

  • Zeile 2 Wenn die Güterlore keine vierzehn Gegenstände im Inventar trägt, wird ihr Inhalt erneuert.
  • Zeile 5 Wenn der Gegenstand für die Option "Felder erzeugen" entnommen wurde, wird solange die Variable für die noch zu erzeugenden Felder nicht bei null liegt, der Gegenstand für die Option "Feld erzeugen" entfernt, wodurch diese Option aktiviert wird.
  • Zeile 8 Die Anzahl der belegten Slots wird ausgelesen und in einem Punktestand der Güterlore gespeichert.
  • Zeile 9 Wenn die Anzahl nicht der gesamten Anzahl aller Menü-Gegenständen entspricht, wurde ein Gegenstand herausgenommen und somit wird die Funktion Menü aufgerufen.
  • Zeile 12 Von der Position der Güterlore, werden alle Felder der ersten Dimension erfasst und es wird geprüft ob sie nicht null Felder der zweiten Dimension fehlen, falls das der Fall ist, wird die Funktion für die zweite Dimension aufgerufen.
  • Zeile 15 Bevor bestimmte Felder einen Leuchteffekt erhalten, wird ihnen der Leuchteffekt entfernt, da dieser nicht sofort verschwindet.
  • Zeile 18 Das Feld der ersten Dimension wird durch die Position ausfindig gemacht und erhält einen Leuchteffekt, sowie einen Partikeleffekt[Z19]
  • Zeile 22 Das Feld der zweiten Dimension erhält ebenfalls einen Leuchteffekt und einen Partikeleffekt[Z23]
Editor Icon.png technik_wiki:direktzugriffsspeicher/vp1zyklus.mcfunction
# Die Güterlore wird dann vom Menü wieder zurück gesetzt und bekommt alle Etiketten gelöscht, in dem die Etikette neu gesetzt werden
execute as @e[type=minecraft:chest_minecart,tag=EtiFeld.p1Start,tag=EtiFeld.p1AlleFelder,sort=nearest,limit=1] unless entity @s[scores={PZFeld.p1Wert=14}] run data merge entity @s {Tags:["EtiFeld.p1Start","EtiFeld.p1AlleFelder"],Items:[{Slot:2b,id:"minecraft:lime_concrete_powder",Count:1b,tag:{display:{Name:"{\"text\":\"Anzahl erhöhen (1. D)\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:3b,id:"minecraft:lime_concrete_powder",Count:1b,tag:{display:{Name:"{\"text\":\"Anzahl erhöhen (2. D)\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:4b,id: "minecraft:lime_concrete_powder",Count:1b,tag:{display:{Name:"{\"text\":\"Zur höheren Position\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:5b,id:"minecraft:lime_concrete_powder",Count:1b,tag:{display:{Name:"{\"text\":\"Wert erhöhen\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:10b,id:"minecraft:lime_shulker_box",Count:1b,tag:{display:{Name:"{\"text\":\"Felder löschen und neu erzeugen\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:11b,id:"minecraft:red_shulker_box",Count:1b,tag:{display:{Name:"{\"text\":\"Aktuelle Feldanzahl ausgeben (1. D)\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:12b,id:"minecraft:chest",Count:1b, tag:{display:{Name:"{\"text\":\"Aktuelle Feldanzahl ausgeben (2. D)\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:13b,id:"minecraft:daylight_detector",Count:1b,tag:{display:{Name:"{\"text\":\"Aktuelle Position ausgeben\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:14b,id:"minecraft:book",Count:1b,tag:{display:{Name: "{\"text\":\"Aktuellen Wert ausgeben\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:15b,id:"minecraft:bookshelf",Count:1b,tag:{display:{Name: "{\"text\":\"Werte aller Felder ausgeben\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:20b,id:"minecraft:red_concrete_powder",Count:1b,tag:{display:{Name:"{\"text\":\"Anzahl verringern (1. D)\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:21b,id:"minecraft:red_concrete_powder",Count:1b,tag:{display:{Name:"{\"text\":\"Anzahl verringern (2. D)\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:22b,id:"minecraft:red_concrete_powder",Count:1b,tag:{display:{Name:"{\"text\":\"Zur niedrigeren Position\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:23b,id:"minecraft:red_concrete_powder",Count:1b,tag:{display:{Name:"{\"text\":\"Wert verringern\"}",Lore:["Klicke auf den Gegenstand"]} } } ]}

# Falls die Option Felder erzeugen angeklickt wurde, besitzt die Variable einen Wert ab eins oder höher, wenn dass der Fall ist, wird der Güterlore der Gegenstand fürs "Feld hinzufügen" aktiviert
execute if score #VarFeld.p1FelderErzeugen PZFeld.p1Felder matches 1.. run data remove entity @e[type=minecraft:chest_minecart,tag=EtiFeld.p1Start,tag=EtiFeld.p1AlleFelder,sort=nearest,limit=1] Items[0]

# 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=EtiFeld.p1Start,tag=EtiFeld.p1AlleFelder,sort=nearest,limit=1] store result score @s PZFeld.p1Wert run data get entity @s Items
execute as @e[type=minecraft:chest_minecart,tag=EtiFeld.p1Start,tag=EtiFeld.p1AlleFelder,sort=nearest,limit=1] unless entity @s[scores={PZFeld.p1Wert=14}] run function technik_wiki:direktzugriffsspeicher/vp1menu

# Von der Güterlore aus, werden in einem Radius von maximal 128, 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=EtiFeld.p1Start,tag=EtiFeld.p1AlleFelder,sort=nearest,limit=1] as @e[distance=..128,sort=nearest,type=minecraft:armor_stand,name=ObjFeld.p1FeldDimension1,tag=EtiFeld.p1AlleFelder,tag=EtiFeld.p1Dimensionen] unless score @s PZFeld.p1Felder matches 0 at @s run function technik_wiki:direktzugriffsspeicher/vp1dimension_2

# Alle Felder bekommen den Leuchteffekt entfernt
effect clear @e[tag=EtiFeld.p1Dimensionen] 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,name=ObjFeld.p1FeldDimension1,tag=EtiFeld.p1AlleFelder] if score @s PZFeld.p1Pos = #VarFeld.p1AktuellePositionDimension1 PZFeld.p1Pos run effect give @s minecraft:glowing 1 1
execute as @e[type=minecraft:armor_stand,name=ObjFeld.p1FeldDimension1,tag=EtiFeld.p1AlleFelder] if score @s PZFeld.p1Pos = #VarFeld.p1AktuellePositionDimension1 PZFeld.p1Pos at @s run particle minecraft:block minecraft:lime_concrete ~ ~1.1 ~ 0 0 0 0.1 1 normal @p[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,name=ObjFeld.p1FeldDimension1,tag=EtiFeld.p1AlleFelder] if score @s PZFeld.p1Pos = #VarFeld.p1AktuellePositionDimension1 PZFeld.p1Pos at @s align xyz positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,name=ObjFeld.p1Inhalt,tag=EtiFeld.p1AlleFelder] if score @s PZFeld.p1Pos = #VarFeld.p1AktuellePositionDimension2 PZFeld.p1Pos run effect give @s minecraft:glowing 1 1
execute as @e[type=minecraft:armor_stand,name=ObjFeld.p1FeldDimension1,tag=EtiFeld.p1AlleFelder] if score @s PZFeld.p1Pos = #VarFeld.p1AktuellePositionDimension1 PZFeld.p1Pos at @s align xyz positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,name=ObjFeld.p1Inhalt,tag=EtiFeld.p1AlleFelder] if score @s PZFeld.p1Pos = #VarFeld.p1AktuellePositionDimension2 PZFeld.p1Pos at @s run particle minecraft:block minecraft:red_concrete ~ ~1.1 ~ 0 0 0 0.1 1 normal @p[distance=..25]


Variante 1: 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.png technik_wiki:direktzugriffsspeicher/vp1menu.mcfunction
# Wenn der Spieler Gegenstände im Inventar hat, die vom Menü der Güterlore stammen, werden sie entfernt
execute at @s run clear @a[distance=..10] #technik_wiki:direktzugriffsspeicher/vp1menu_gegenstand{display:{Lore:["Klicke auf den Gegenstand"]} } 64

# Wenn der Gegenstand für das Neuerzeugen aller Felder angeklickt wurde, wird die Felder-Erzeugen-Funktion geladen
execute as @s[nbt=!{Items:[{Slot:10b}]}] run function technik_wiki: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:2b}]}] add EtiFeld.p1FeldAnzahlDimension1Anheben
tag @s[nbt=!{Items:[{Slot:11b}]}] add EtiFeld.p1FeldAnzahlDimension1Ausgeben
tag @s[nbt=!{Items:[{Slot:20b}]}] add EtiFeld.p1FeldAnzahlDimension1Verringern
execute unless entity @s[tag=!EtiFeld.p1FeldAnzahlDimension1Anheben,tag=!EtiFeld.p1FeldAnzahlDimension1Ausgeben,tag=!EtiFeld.p1FeldAnzahlDimension1Verringern] run function technik_wiki:direktzugriffsspeicher/vp1menu_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}]}] add EtiFeld.p1FeldAnzahlDimension2Anheben
tag @s[nbt=!{Items:[{Slot:12b}]}] add EtiFeld.p1FeldAnzahlDimension2Ausgeben
tag @s[nbt=!{Items:[{Slot:21b}]}] add EtiFeld.p1FeldAnzahlDimension2Verringern
execute unless entity @s[tag=!EtiFeld.p1FeldAnzahlDimension2Anheben,tag=!EtiFeld.p1FeldAnzahlDimension2Ausgeben,tag=!EtiFeld.p1FeldAnzahlDimension2Verringern] run function technik_wiki:direktzugriffsspeicher/vp1menu_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}]}] add EtiFeld.p1PositionAufsteigen
tag @s[nbt=!{Items:[{Slot:13b}]}] add EtiFeld.p1PositionAusgeben
tag @s[nbt=!{Items:[{Slot:22b}]}] add EtiFeld.p1PositionAbsteigen
execute unless entity @s[tag=!EtiFeld.p1PositionAufsteigen,tag=!EtiFeld.p1PositionAusgeben,tag=!EtiFeld.p1PositionAbsteigen] run function technik_wiki: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}]}] add EtiFeld.p1WertAnheben
tag @s[nbt=!{Items:[{Slot:14b}]}] add EtiFeld.p1WertAusgeben
tag @s[nbt=!{Items:[{Slot:23b}]}] add EtiFeld.p1WertVerringern
execute unless entity @s[tag=!EtiFeld.p1WertAnheben,tag=!EtiFeld.p1WertAusgeben,tag=!EtiFeld.p1WertVerringern] run function technik_wiki:direktzugriffsspeicher/vp1menu_wert

# Wenn der Gegenstand für das Ausgeben aller Werte der Felder angeklickt wurde, wird die Werte-Funktion geladen
execute as @s[nbt=!{Items:[{Slot:15b}]},scores={PZFeld.p1Felder=1..}] run function technik_wiki:direktzugriffsspeicher/vp1menu_werte


Variante 1: 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.png technik_wiki:direktzugriffsspeicher/vp1menu_feld_dimension_1.mcfunction
# Alle vorhandenen Felder werden um einen Block nach oben teleportiert
execute if entity @s[tag=EtiFeld.p1FeldAnzahlDimension1Anheben,scores={PZFeld.p1Felder=..63}] as @e[type=minecraft:armor_stand,tag=EtiFeld.p1AlleFelder,tag=EtiFeld.p1Dimensionen] 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 at @s[tag=EtiFeld.p1FeldAnzahlDimension1Anheben,scores={PZFeld.p1Felder=..63}] run summon minecraft:armor_stand ~ ~1 ~ {NoGravity:true,Small:true,Invisible:true,Marker:true,CustomName:"\"ObjFeld.p1FeldDimension1\"",Tags:["EtiFeld.p1AlleFelder","EtiFeld.p1Dimensionen","EtiFeld.p1Dimension2Erhalten"],ArmorItems:[{},{},{},{id:"minecraft:red_shulker_box",Count:1b} ] }
execute as @s[tag=EtiFeld.p1FeldAnzahlDimension1Anheben,scores={PZFeld.p1Felder=..63}] run scoreboard players add @e[type=minecraft:armor_stand,name=ObjFeld.p1FeldDimension1] PZFeld.p1Pos 1
execute as @s[tag=EtiFeld.p1FeldAnzahlDimension1Anheben,scores={PZFeld.p1Felder=..63}] run scoreboard players operation @e[type=minecraft:armor_stand,name=ObjFeld.p1FeldDimension1,tag=EtiFeld.p1Dimension2Erhalten] PZFeld.p1Felder = #VarFeld.p1Dimension2 PZFeld.p1Felder
tag @e[type=minecraft:armor_stand,name=ObjFeld.p1FeldDimension1,tag=EtiFeld.p1Dimension2Erhalten] remove EtiFeld.p1Dimension2Erhalten

# 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=EtiFeld.p1FeldAnzahlDimension1Anheben] at @s align xyz positioned ~-0.2 ~-0.2 ~-0.2 store result score @s PZFeld.p1Felder if entity @e[dx=0.4,dy=64,dz=0.4,type=minecraft:armor_stand,name=ObjFeld.p1FeldDimension1]
execute at @s[tag=EtiFeld.p1FeldAnzahlDimension1Anheben,scores={PZFeld.p1Felder=..63}] unless score #VarFeld.p1FelderErzeugen PZFeld.p1Felder matches 1.. run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.1:\n",{"text":"Feld.Länge + 1 = neues Feld[","bold":true},{"score":{"name":"@s","objective":"PZFeld.p1Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p1Dimension2","objective":"PZFeld.p1Felder"},"bold":true,"color":"red"},{"text":"]","bold":true} ]

# Die aktuelle Position wird um eins erhöht
execute as @s[tag=EtiFeld.p1FeldAnzahlDimension1Anheben,scores={PZFeld.p1Felder=..63}] unless score #VarFeld.p1FelderErzeugen PZFeld.p1Felder matches 1.. run scoreboard players add #VarFeld.p1AktuellePositionDimension1 PZFeld.p1Pos 1

# Verringert den Wert der Variable um eins, falls sie mindestens noch den Wert eins hat
execute as @s[tag=EtiFeld.p1FeldAnzahlDimension1Anheben,scores={PZFeld.p1Felder=..63}] if score #VarFeld.p1FelderErzeugen PZFeld.p1Felder matches 1.. run scoreboard players remove #VarFeld.p1FelderErzeugen PZFeld.p1Felder 1

# Die aktuelle Feldanzahl wird ausgegeben
execute at @s[tag=EtiFeld.p1FeldAnzahlDimension1Ausgeben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.1:\n",{"text":"Feld.Länge = ","bold":true},{"score":{"name":"@s","objective":"PZFeld.p1Felder"},"bold":true,"color":"green"} ]

# Das oberste Feld mit seinen Feldern wird zusammen gelöscht
execute at @s[tag=EtiFeld.p1FeldAnzahlDimension1Verringern,scores={PZFeld.p1Felder=1..}] at @e[type=minecraft:armor_stand,name=ObjFeld.p1FeldDimension1,sort=furthest,limit=1] align xyz positioned ~-0.2 ~-0.2 ~-0.2 run kill @e[dx=64,dy=0.4,dz=0.4,name=ObjFeld.p1Inhalt,tag=EtiFeld.p1AlleFelder,tag=EtiFeld.p1Dimensionen]
execute at @s[tag=EtiFeld.p1FeldAnzahlDimension1Verringern,scores={PZFeld.p1Felder=1..}] run kill @e[type=minecraft:armor_stand,name=ObjFeld.p1FeldDimension1,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 at @s[tag=EtiFeld.p1FeldAnzahlDimension1Verringern] store result score @s PZFeld.p1Felder if entity @e[type=minecraft:armor_stand,name=ObjFeld.p1FeldDimension1]
execute at @s[tag=EtiFeld.p1FeldAnzahlDimension1Verringern] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.1:\n",{"text":"Feld.Länge - 1 = neues Feld[","bold":true},{"score":{"name":"@s","objective":"PZFeld.p1Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p1Dimension2","objective":"PZFeld.p1Felder"},"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 as @s[tag=EtiFeld.p1FeldAnzahlDimension1Verringern] if score #VarFeld.p1AktuellePositionDimension1 PZFeld.p1Pos > @s PZFeld.p1Felder run scoreboard players remove #VarFeld.p1AktuellePositionDimension1 PZFeld.p1Pos 1


Variante 1: 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.png technik_wiki:direktzugriffsspeicher/vp1menu_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=EtiFeld.p1FeldAnzahlDimension2Anheben] if score #VarFeld.p1Dimension2 PZFeld.p1Felder matches ..63 run scoreboard players add @e[type=minecraft:armor_stand,name=ObjFeld.p1FeldDimension1,tag=EtiFeld.p1AlleFelder,tag=EtiFeld.p1Dimensionen] PZFeld.p1Felder 1
execute if entity @s[tag=EtiFeld.p1FeldAnzahlDimension2Anheben] if score #VarFeld.p1Dimension2 PZFeld.p1Felder matches ..63 run scoreboard players add #VarFeld.p1Dimension2 PZFeld.p1Felder 1
execute if entity @s[tag=EtiFeld.p1FeldAnzahlDimension2Anheben] if score #VarFeld.p1Dimension2 PZFeld.p1Felder matches ..63 run scoreboard players add #VarFeld.p1AktuellePositionDimension2 PZFeld.p1Pos 1

execute at @s[tag=EtiFeld.p1FeldAnzahlDimension2Anheben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.1:\n",{"text":"Feld[","bold":true},{"score":{"name":"@s","objective":"PZFeld.p1Felder"},"bold":true,"color":"green"},{"text":"].Länge + 1 = neues Feld[","bold":true},{"score":{"name":"@s","objective":"PZFeld.p1Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p1Dimension2","objective":"PZFeld.p1Felder"},"bold":true,"color":"red"},{"text":"]","bold":true} ]

# Die aktuelle Feldanzahl wird ausgegeben
execute at @s[tag=EtiFeld.p1FeldAnzahlDimension2Ausgeben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.1:\n",{"text":"Feld[","bold":true},{"score":{"name":"#VarFeld.p1AktuellePositionDimension1","objective":"PZFeld.p1Pos"},"bold":true,"color":"green"},{"text":"].Länge = ","bold":true},{"score":{"name":"#VarFeld.p1Dimension2","objective":"PZFeld.p1Felder"},"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=EtiFeld.p1FeldAnzahlDimension2Verringern] if score #VarFeld.p1Dimension2 PZFeld.p1Felder matches 1.. run scoreboard players remove @e[type=minecraft:armor_stand,name=ObjFeld.p1FeldDimension1,tag=EtiFeld.p1AlleFelder,tag=EtiFeld.p1Dimensionen] PZFeld.p1Felder 1
execute if entity @s[tag=EtiFeld.p1FeldAnzahlDimension2Verringern] if score #VarFeld.p1Dimension2 PZFeld.p1Felder matches 1.. run scoreboard players remove #VarFeld.p1Dimension2 PZFeld.p1Felder 1

execute if entity @s[tag=EtiFeld.p1FeldAnzahlDimension2Verringern] if score #VarFeld.p1AktuellePositionDimension2 PZFeld.p1Pos > #VarFeld.p1Dimension2 PZFeld.p1Felder run scoreboard players remove #VarFeld.p1AktuellePositionDimension2 PZFeld.p1Pos 1

execute at @s[tag=EtiFeld.p1FeldAnzahlDimension2Verringern] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.1:\n",{"text":"Feld.Länge - 1 = neues Feld[","bold":true},{"score":{"name":"@s","objective":"PZFeld.p1Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p1Dimension2","objective":"PZFeld.p1Felder"},"bold":true,"color":"red"},{"text":"]","bold":true} ]


Variante 1: 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.png technik_wiki: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=EtiFeld.p1Dimensionen]
scoreboard players operation #VarFeld.p1FelderErzeugen PZFeld.p1Felder = @s PZFeld.p1Felder
execute at @s run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.1:\n",{"text":"Feld = neues Feld[","bold":true},{"score":{"name":"#VarFeld.p1FelderErzeugen","objective":"PZFeld.p1Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p1Dimension2","objective":"PZFeld.p1Felder"},"bold":true,"color":"red"},{"text":"]","bold":true} ]


Variante 1: 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.png technik_wiki:direktzugriffsspeicher/vp1menu_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ück gesetzt
execute as @s[tag=EtiFeld.p1PositionAufsteigen] run scoreboard players add #VarFeld.p1AktuellePositionDimension2 PZFeld.p1Pos 1
execute as @s[tag=EtiFeld.p1PositionAufsteigen] if score #VarFeld.p1AktuellePositionDimension2 PZFeld.p1Pos > #VarFeld.p1Dimension2 PZFeld.p1Felder run scoreboard players set #VarFeld.p1AktuellePositionDimension2 PZFeld.p1Pos 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 as @s[tag=EtiFeld.p1PositionAufsteigen] if score #VarFeld.p1AktuellePositionDimension2 PZFeld.p1Pos matches 1 run scoreboard players add #VarFeld.p1AktuellePositionDimension1 PZFeld.p1Pos 1
execute as @s[tag=EtiFeld.p1PositionAufsteigen] if score #VarFeld.p1AktuellePositionDimension2 PZFeld.p1Pos matches 1 if score #VarFeld.p1AktuellePositionDimension1 PZFeld.p1Pos > @s PZFeld.p1Felder run scoreboard players set #VarFeld.p1AktuellePositionDimension1 PZFeld.p1Pos 1

# Gibt die veränderten Positionen als tellraw-Nachrichten aus
execute at @s[tag=EtiFeld.p1PositionAufsteigen] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.1:"]
execute at @s[tag=EtiFeld.p1PositionAufsteigen] if score #VarFeld.p1AktuellePositionDimension2 PZFeld.p1Pos matches 1 run tellraw @a[distance=..25] ["",{"text":"Feld.Position + 1 = ","bold":true},{"score":{"name":"#VarFeld.p1AktuellePositionDimension1","objective":"PZFeld.p1Pos"},"bold":true,"color":"green"}]
execute at @s[tag=EtiFeld.p1PositionAufsteigen] run tellraw @a[distance=..25] ["",{"text":"Feld[","bold":true},{"score":{"name":"#VarFeld.p1AktuellePositionDimension1","objective":"PZFeld.p1Pos"},"bold":true,"color":"green"},{"text":"].Position + 1 = ","bold":true},{"score":{"name":"#VarFeld.p1AktuellePositionDimension2","objective":"PZFeld.p1Pos"},"bold":true,"color":"red"} ]

# Gibt die aktuelle Position aus
execute at @s[tag=EtiFeld.p1PositionAusgeben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.1:\n",{"text":"Feld[","bold":true},{"score":{"name":"#VarFeld.p1AktuellePositionDimension1","objective":"PZFeld.p1Pos"},"bold":true,"color":"green"},{"text":"].Position = ","bold":true},{"score":{"name":"#VarFeld.p1AktuellePositionDimension2","objective":"PZFeld.p1Pos"},"bold":true,"color":"red"} ]

# Gibt die neue verringerte Position der zweiten Dimension aus
execute as @s[tag=EtiFeld.p1PositionAbsteigen] run scoreboard players remove #VarFeld.p1AktuellePositionDimension2 PZFeld.p1Pos 1
execute as @s[tag=EtiFeld.p1PositionAbsteigen] if score #VarFeld.p1AktuellePositionDimension2 PZFeld.p1Pos matches ..0 run scoreboard players operation #VarFeld.p1AktuellePositionDimension2 PZFeld.p1Pos = #VarFeld.p1Dimension2 PZFeld.p1Felder

# 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 as @s[tag=EtiFeld.p1PositionAbsteigen] if score #VarFeld.p1AktuellePositionDimension2 PZFeld.p1Pos = #VarFeld.p1Dimension2 PZFeld.p1Felder run scoreboard players remove #VarFeld.p1AktuellePositionDimension1 PZFeld.p1Pos 1
execute as @s[tag=EtiFeld.p1PositionAbsteigen] if score #VarFeld.p1AktuellePositionDimension2 PZFeld.p1Pos = #VarFeld.p1Dimension2 PZFeld.p1Felder if score #VarFeld.p1AktuellePositionDimension1 PZFeld.p1Pos matches ..0 run scoreboard players operation #VarFeld.p1AktuellePositionDimension1 PZFeld.p1Pos = @s PZFeld.p1Felder

# Gibt die veränderten Positionen als tellraw-Nachrichten aus
execute at @s[tag=EtiFeld.p1PositionAbsteigen] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.1:"]
execute at @s[tag=EtiFeld.p1PositionAbsteigen] if score #VarFeld.p1AktuellePositionDimension2 PZFeld.p1Pos = #VarFeld.p1Dimension2 PZFeld.p1Felder run tellraw @a[distance=..25] ["",{"text":"Feld.Position - 1 = ","bold":true},{"score":{"name":"#VarFeld.p1AktuellePositionDimension1","objective":"PZFeld.p1Pos"},"bold":true,"color":"green"}]
execute at @s[tag=EtiFeld.p1PositionAbsteigen] run tellraw @a[distance=..25] ["",{"text":"Feld[","bold":true},{"score":{"name":"#VarFeld.p1AktuellePositionDimension1","objective":"PZFeld.p1Pos"},"bold":true,"color":"green"},{"text":"].Position - 1 = ","bold":true},{"score":{"name":"#VarFeld.p1AktuellePositionDimension2","objective":"PZFeld.p1Pos"},"bold":true,"color":"red"} ]


Variante 1: 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.png technik_wiki:direktzugriffsspeicher/vp1menu_wert.mcfunction
# 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 as @s[tag=EtiFeld.p1WertAnheben] as @e[type=minecraft:armor_stand,name=ObjFeld.p1FeldDimension1,tag=EtiFeld.p1AlleFelder] if score @s PZFeld.p1Pos = #VarFeld.p1AktuellePositionDimension1 PZFeld.p1Pos at @s align xyz positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,name=ObjFeld.p1Inhalt] if score @s PZFeld.p1Pos = #VarFeld.p1AktuellePositionDimension2 PZFeld.p1Pos run scoreboard players add @s PZFeld.p1Wert 1
execute as @s[tag=EtiFeld.p1WertAnheben] as @e[type=minecraft:armor_stand,name=ObjFeld.p1FeldDimension1,tag=EtiFeld.p1AlleFelder] if score @s PZFeld.p1Pos = #VarFeld.p1AktuellePositionDimension1 PZFeld.p1Pos at @s align xyz positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,name=ObjFeld.p1Inhalt] if score @s PZFeld.p1Pos = #VarFeld.p1AktuellePositionDimension2 PZFeld.p1Pos run scoreboard players operation #VarFeld.p1WertInhalt PZFeld.p1Wert = @s PZFeld.p1Wert

execute at @s[tag=EtiFeld.p1WertAnheben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.1:\n",{"text":"Feld[","bold":true},{"score":{"name":"#VarFeld.p1AktuellePositionDimension1","objective":"PZFeld.p1Pos"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p1AktuellePositionDimension2","objective":"PZFeld.p1Pos"},"bold":true,"color":"red"},{"text":"] + 1 = ","bold":true},{"score":{"name":"#VarFeld.p1WertInhalt","objective":"PZFeld.p1Wert"},"bold":true,"color":"dark_purple"} ]

# Gibt den Wert des aktuellen Feldes aus
execute as @s[tag=EtiFeld.p1WertAusgeben] as @e[type=minecraft:armor_stand,name=ObjFeld.p1FeldDimension1,tag=EtiFeld.p1AlleFelder] if score @s PZFeld.p1Pos = #VarFeld.p1AktuellePositionDimension1 PZFeld.p1Pos at @s align xyz positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,name=ObjFeld.p1Inhalt] if score @s PZFeld.p1Pos = #VarFeld.p1AktuellePositionDimension2 PZFeld.p1Pos run scoreboard players operation #VarFeld.p1WertInhalt PZFeld.p1Wert = @s PZFeld.p1Wert
execute at @s[tag=EtiFeld.p1WertAusgeben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.1:\n",{"text":"Feld[","bold":true},{"score":{"name":"#VarFeld.p1AktuellePositionDimension1","objective":"PZFeld.p1Pos"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p1AktuellePositionDimension2","objective":"PZFeld.p1Pos"},"bold":true,"color":"red"},{"text":"] = ","bold":true},{"score":{"name":"#VarFeld.p1WertInhalt","objective":"PZFeld.p1Wert"},"bold":true,"color":"dark_purple"} ]

# Verringert den Wert des aktuellen Feldes
execute as @s[tag=EtiFeld.p1WertVerringern] as @e[type=minecraft:armor_stand,name=ObjFeld.p1FeldDimension1,tag=EtiFeld.p1AlleFelder] if score @s PZFeld.p1Pos = #VarFeld.p1AktuellePositionDimension1 PZFeld.p1Pos at @s align xyz positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,name=ObjFeld.p1Inhalt] if score @s PZFeld.p1Pos = #VarFeld.p1AktuellePositionDimension2 PZFeld.p1Pos run scoreboard players remove @s PZFeld.p1Wert 1
execute as @s[tag=EtiFeld.p1WertVerringern] as @e[type=minecraft:armor_stand,name=ObjFeld.p1FeldDimension1,tag=EtiFeld.p1AlleFelder] if score @s PZFeld.p1Pos = #VarFeld.p1AktuellePositionDimension1 PZFeld.p1Pos at @s align xyz positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,name=ObjFeld.p1Inhalt] if score @s PZFeld.p1Pos = #VarFeld.p1AktuellePositionDimension2 PZFeld.p1Pos run scoreboard players operation #VarFeld.p1WertInhalt PZFeld.p1Wert = @s PZFeld.p1Wert

execute at @s[tag=EtiFeld.p1WertVerringern] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.1:\n",{"text":"Feld[","bold":true},{"score":{"name":"#VarFeld.p1AktuellePositionDimension1","objective":"PZFeld.p1Pos"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p1AktuellePositionDimension2","objective":"PZFeld.p1Pos"},"bold":true,"color":"red"},{"text":"] - 1 = ","bold":true},{"score":{"name":"#VarFeld.p1WertInhalt","objective":"PZFeld.p1Wert"},"bold":true,"color":"dark_purple"} ]


Variante 1: 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.png technik_wiki:direktzugriffsspeicher/vp1menu_werte.mcfunction
# Die aktuelle Position wird zwischengespeichert und der Kopfteil der tellraw-Nachricht wird ausgegeben
execute at @s run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.1:"]
scoreboard players set #VarFeld.p1PositionAusgebenDimension1 PZFeld.p1Pos 0
function technik_wiki:direktzugriffsspeicher/vp1menu_werte_dimension_1


Variante 1: 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.png technik_wiki:direktzugriffsspeicher/vp1menu_werte_dimension_1.mcfunction
# Die aktuelle Position wird zwischengespeichert und der Kopfteil der tellraw-Nachricht wird ausgegeben
scoreboard players add #VarFeld.p1PositionAusgebenDimension1 PZFeld.p1Pos 1
scoreboard players set #VarFeld.p1PositionAusgebenDimension2 PZFeld.p1Pos 1
execute if score #VarFeld.p1PositionAusgebenDimension1 PZFeld.p1Pos <= @s PZFeld.p1Felder run function technik_wiki:direktzugriffsspeicher/vp1menu_werte_dimension_2
execute if score #VarFeld.p1PositionAusgebenDimension1 PZFeld.p1Pos <= @s PZFeld.p1Felder run function technik_wiki:direktzugriffsspeicher/vp1menu_werte_dimension_1


Variante 1: 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.png technik_wiki:direktzugriffsspeicher/vp1menu_werte_dimension_2.mcfunction
# Es wird nach dem Feld mit der entsprechenden Position gesucht und dann wird dessen Wert in eine Variable gespeichert und anschließend in einer tellraw-Nachricht ausgegeben
execute as @e[type=minecraft:armor_stand,name=ObjFeld.p1FeldDimension1,tag=EtiFeld.p1AlleFelder] if score @s PZFeld.p1Pos = #VarFeld.p1PositionAusgebenDimension1 PZFeld.p1Pos at @s align xyz positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiFeld.p1AlleFelder,name=ObjFeld.p1Inhalt] if score @s PZFeld.p1Pos = #VarFeld.p1PositionAusgebenDimension2 PZFeld.p1Pos at @s run scoreboard players operation #VarFeld.p1WertInhalt PZFeld.p1Wert = @s PZFeld.p1Wert
execute at @s run tellraw @a[distance=..25] ["",{"text":"Feld[","bold":true},{"score":{"name":"#VarFeld.p1PositionAusgebenDimension1","objective":"PZFeld.p1Pos"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p1PositionAusgebenDimension2","objective":"PZFeld.p1Pos"},"bold":true,"color":"red"},{"text":"] = ","bold":true},{"score":{"name":"#VarFeld.p1WertInhalt","objective":"PZFeld.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 #VarFeld.p1PositionAusgebenDimension2 PZFeld.p1Pos 1
execute if score #VarFeld.p1PositionAusgebenDimension2 PZFeld.p1Pos <= #VarFeld.p1Dimension2 PZFeld.p1Felder run function technik_wiki:direktzugriffsspeicher/vp1menu_werte_dimension_2


Variante 1: 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.png technik_wiki:direktzugriffsspeicher/vp1dimension_2.mcfunction
# Alle vorhandenen Felder werden um einen Block nach oben teleportiert
execute if entity @s[scores={PZFeld.p1Felder=1..}] align xyz positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiFeld.p1AlleFelder,name=ObjFeld.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[scores={PZFeld.p1Felder=1..}] run summon minecraft:armor_stand ^1 ^ ^ {NoGravity:true,Small:true,Invisible:true,Marker:true,CustomName:"\"ObjFeld.p1Inhalt\"",Tags:["EtiFeld.p1AlleFelder","EtiFeld.p1Dimensionen"],ArmorItems:[{},{},{},{id:"minecraft:chest",Count:1b} ] }
execute if entity @s[scores={PZFeld.p1Felder=1..}] align xyz positioned ~-0.2 ~-0.2 ~-0.2 run scoreboard players add @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,name=ObjFeld.p1Inhalt] PZFeld.p1Pos 1
execute if entity @s[scores={PZFeld.p1Felder=1..}] run scoreboard players remove @s PZFeld.p1Felder 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={PZFeld.p1Felder=..-1}] align xyz positioned ~-0.2 ~-0.2 ~-0.2 run kill @e[dx=64,dy=0.4,dz=0.4,sort=furthest,limit=1,type=minecraft:armor_stand,tag=EtiFeld.p1AlleFelder,name=ObjFeld.p1Inhalt]
execute if entity @s[scores={PZFeld.p1Felder=..-1}] run scoreboard players add @s PZFeld.p1Felder 1


Variante 1: Stopp-Funktion
Die Stopp-Funktion löscht alle Punktestand-Ziele, sowie alle Felder und die Güterlore (welche zuvor noch in die Leere teleportiert wird)

  • Zeile 2 Das Punktestand-Ziel für den Feldwert, für die Feldposition[Z3] sowie für die Felderdimension[Z4] wird gelöscht.
  • Zeile 7 Die Güterlore, die einige Gegenstände im Inventar für das Menü besitzt wird zuerst in die Leere teleportiert, bevor es zusammen mit allen anderen Feldern gelöscht wird[Z8]
Editor Icon.png technik_wiki:direktzugriffsspeicher/vp1stopp.mcfunction
# Die Punktestand-Ziele werden wieder entfernt
scoreboard objectives remove PZFeld.p1Wert
scoreboard objectives remove PZFeld.p1Pos
scoreboard objectives remove PZFeld.p1Felder

# Alle bisher erzeugten Felder werden gelöscht
teleport @e[tag=EtiFeld.p1Start,tag=EtiFeld.p1AlleFelder] ~ -255 ~
kill @e[tag=EtiFeld.p1AlleFelder]

Variante 2[Bearbeiten | Quelltext bearbeiten]

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

Mit diesem erweiterten Direktzugriffsspeicher werden dreidimensionale Felderreihen erstellt. Mit der schwebenden Güterlore als Menü, kann man die Felderanzahl, die aktuelle Position und alle Werte bestimmen. 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 2: Start-Funktion
Die Start-Funktion erstellt alle Punktestand-Ziele für die Werte, die Position und die Feldanzahl der jeweiligen Dimension, sowie die Güterlore die als Menü funktioniert.

Editor Icon.png technik_wiki:direktzugriffsspeicher/vp2start.mcfunction
# Punktestand-Ziele werden erstellt
scoreboard objectives add PZFeld.p2Wert dummy ["Direktzugriffsspeicher.plus.2: ",{"text":"Feldwert","bold":true}]
scoreboard objectives add PZFeld.p2Pos dummy ["Direktzugriffsspeicher.plus.2: ",{"text":"Feld-Position","bold":true}]
scoreboard objectives add PZFeld.p2Felder dummy ["Direktzugriffsspeicher.plus.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:["EtiFeld.p2AlleFelder"],Passengers:[{id:"minecraft:chest_minecart",NoGravity:true,Invulnerable:true,CustomDisplayTile:true,DisplayOffset:6,DisplayState:{Name:"minecraft:lime_shulker_box"},CustomName:"{\"text\":\"Optionen\"}",Tags:["EtiFeld.p2Start","EtiFeld.p2AlleFelder"]},{id:"minecraft:armor_stand",NoGravity:true,Small:true,Invisible:true,Tags:["EtiFeld.p2AlleFelder"],CustomNameVisible:true,CustomName:"{\"text\":\"Optionen\"}"}]}

# 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=EtiFeld.p2Start] PZFeld.p2Felder 0
scoreboard players set @e[type=minecraft:chest_minecart,tag=EtiFeld.p2Start] PZFeld.p2Wert 0


Variante 2: 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.png technik_wiki:direktzugriffsspeicher/vp2zyklus.mcfunction
# Die Güterlore wird dann vom Menü wieder zurück gesetzt und bekommt alle Etiketten gelöscht, in dem die Etikette neu gesetzt werden
execute as @e[type=minecraft:chest_minecart,tag=EtiFeld.p2Start,tag=EtiFeld.p2AlleFelder,sort=nearest,limit=1] unless entity @s[scores={PZFeld.p2Wert=17}] run data merge entity @s {Tags:["EtiFeld.p2Start","EtiFeld.p2AlleFelder"],Items:[{Slot:2b,id:"minecraft:lime_concrete_powder",Count:1b,tag:{display:{Name:"{\"text\":\"Anzahl erhöhen (1. D)\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:3b,id:"minecraft:lime_concrete_powder",Count:1b,tag:{display:{Name:"{\"text\":\"Anzahl erhöhen (2. D)\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:4b,id:"minecraft:lime_concrete_powder",Count:1b,tag:{display:{Name:"{\"text\":\"Anzahl erhöhen (3. D)\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:5b,id: "minecraft:lime_concrete_powder",Count:1b,tag:{display:{Name:"{\"text\":\"Zur höheren Position\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:6b,id:"minecraft:lime_concrete_powder",Count:1b,tag:{display:{Name:"{\"text\":\"Wert erhöhen\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:10b,id:"minecraft:lime_shulker_box",Count:1b,tag:{display:{Name:"{\"text\":\"Felder löschen und neu erzeugen\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:11b,id:"minecraft:red_shulker_box",Count:1b,tag:{display:{Name:"{\"text\":\"Aktuelle Feldanzahl ausgeben (1. D)\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:12b,id:"minecraft:blue_shulker_box",Count:1b, tag:{display:{Name:"{\"text\":\"Aktuelle Feldanzahl ausgeben (2. D)\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:13b,id:"minecraft:chest",Count:1b, tag:{display:{Name:"{\"text\":\"Aktuelle Feldanzahl ausgeben (3. D)\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:14b,id:"minecraft:daylight_detector",Count:1b,tag:{display:{Name:"{\"text\":\"Aktuelle Position ausgeben\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:15b,id:"minecraft:book",Count:1b,tag:{display:{Name: "{\"text\":\"Aktuellen Wert ausgeben\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:16b,id:"minecraft:bookshelf",Count:1b,tag:{display:{Name: "{\"text\":\"Werte aller Felder ausgeben\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:20b,id:"minecraft:red_concrete_powder",Count:1b,tag:{display:{Name:"{\"text\":\"Anzahl verringern (1. D)\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:21b,id:"minecraft:red_concrete_powder",Count:1b,tag:{display:{Name:"{\"text\":\"Anzahl verringern (2. D)\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:22b,id:"minecraft:red_concrete_powder",Count:1b,tag:{display:{Name:"{\"text\":\"Anzahl verringern (3. D)\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:23b,id:"minecraft:red_concrete_powder",Count:1b,tag:{display:{Name:"{\"text\":\"Zur niedrigeren Position\"}",Lore:["Klicke auf den Gegenstand"]} } },{Slot:24b,id:"minecraft:red_concrete_powder",Count:1b,tag:{display:{Name:"{\"text\":\"Wert verringern\"}",Lore:["Klicke auf den Gegenstand"]} } } ]}

# Falls die Option Felder erzeugen angeklickt wurde, besitzt die Variable einen Wert ab eins oder höher, wenn dass der Fall ist, wird der Güterlore der Gegenstand fürs "Feld hinzufügen" aktiviert
execute if score #VarFeld.p2FelderErzeugen PZFeld.p2Felder matches 1.. run data remove entity @e[type=minecraft:chest_minecart,tag=EtiFeld.p2Start,tag=EtiFeld.p2AlleFelder,sort=nearest,limit=1] Items[0]

# 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=EtiFeld.p2Start,tag=EtiFeld.p2AlleFelder,sort=nearest,limit=1] store result score @s PZFeld.p2Wert run data get entity @s Items
execute as @e[type=minecraft:chest_minecart,tag=EtiFeld.p2Start,tag=EtiFeld.p2AlleFelder,sort=nearest,limit=1] unless entity @s[scores={PZFeld.p2Wert=17}] run function technik_wiki:direktzugriffsspeicher/vp2menu

execute at @e[type=minecraft:chest_minecart,tag=EtiFeld.p2Start,tag=EtiFeld.p2AlleFelder,sort=nearest,limit=1] as @e[distance=..128,sort=nearest,type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension1,tag=EtiFeld.p2AlleFelder,tag=EtiFeld.p2Dimensionen] unless score @s PZFeld.p2Felder matches 0 at @s run function technik_wiki:direktzugriffsspeicher/vp2dimension_2

execute at @e[type=minecraft:chest_minecart,tag=EtiFeld.p2Start,tag=EtiFeld.p2AlleFelder,sort=nearest,limit=1] as @e[distance=..128,sort=nearest,type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension2,tag=EtiFeld.p2AlleFelder,tag=EtiFeld.p2Dimensionen] unless score @s PZFeld.p2Felder matches 0 at @s run function technik_wiki:direktzugriffsspeicher/vp2dimension_3

# Alle Felder bekommen den Leuchteffekt entfernt
effect clear @e[tag=EtiFeld.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,name=ObjFeld.p2FeldDimension1,tag=EtiFeld.p2AlleFelder] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension1 PZFeld.p2Pos run effect give @s minecraft:glowing 1 1
execute as @e[type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension1,tag=EtiFeld.p2AlleFelder] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension1 PZFeld.p2Pos at @s run particle minecraft:block minecraft:lime_concrete ~ ~1.1 ~ 0 0 0 0.1 1 normal @p[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,name=ObjFeld.p2FeldDimension1,tag=EtiFeld.p2AlleFelder] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension1 PZFeld.p2Pos at @s align xyz positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension2,tag=EtiFeld.p2AlleFelder] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension2 PZFeld.p2Pos run effect give @s minecraft:glowing 1 1
execute as @e[type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension1,tag=EtiFeld.p2AlleFelder] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension1 PZFeld.p2Pos at @s align xyz positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension2,tag=EtiFeld.p2AlleFelder] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension2 PZFeld.p2Pos at @s run particle minecraft:block minecraft:red_concrete ~ ~1.1 ~ 0 0 0 0.1 1 normal @p[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,name=ObjFeld.p2FeldDimension1,tag=EtiFeld.p2AlleFelder] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension1 PZFeld.p2Pos at @s align xyz positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension2,tag=EtiFeld.p2AlleFelder] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension2 PZFeld.p2Pos at @s align xyz positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=0.4,dy=0.4,dz=64,type=minecraft:armor_stand,name=ObjFeld.p2Inhalt,tag=EtiFeld.p2AlleFelder] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos run effect give @s minecraft:glowing 1 1
execute as @e[type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension1,tag=EtiFeld.p2AlleFelder] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension1 PZFeld.p2Pos at @s align xyz positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension2,tag=EtiFeld.p2AlleFelder] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension2 PZFeld.p2Pos at @s align xyz positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=0.4,dy=0.4,dz=64,type=minecraft:armor_stand,name=ObjFeld.p2Inhalt,tag=EtiFeld.p2AlleFelder] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos at @s run particle minecraft:block minecraft:blue_concrete ~ ~1.1 ~ 0 0 0 0.1 1 normal @p[distance=..25]


Variante 2: 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.png technik_wiki:direktzugriffsspeicher/vp2menu.mcfunction
# Wenn der Spieler Gegenstände im Inventar hat, die vom Menü der Güterlore stammen, werden sie entfernt
execute at @s run clear @a[distance=..10] #technik_wiki:direktzugriffsspeicher/vp2menu_gegenstand{display:{Lore:["Klicke auf den Gegenstand"]} } 64

# Wenn der Gegenstand für das Neuerzeugen aller Felder angeklickt wurde, wird die Felder-Erzeugen-Funktion geladen
execute as @s[nbt=!{Items:[{Slot:10b}]}] run function technik_wiki: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}]}] add EtiFeld.p2FeldAnzahlDimension1Anheben
tag @s[nbt=!{Items:[{Slot:11b}]}] add EtiFeld.p2FeldAnzahlDimension1Ausgeben
tag @s[nbt=!{Items:[{Slot:20b}]}] add EtiFeld.p2FeldAnzahlDimension1Verringern
execute unless entity @s[tag=!EtiFeld.p2FeldAnzahlDimension1Anheben,tag=!EtiFeld.p2FeldAnzahlDimension1Ausgeben,tag=!EtiFeld.p2FeldAnzahlDimension1Verringern] run function technik_wiki: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}]}] add EtiFeld.p2FeldAnzahlDimension2Anheben
tag @s[nbt=!{Items:[{Slot:12b}]}] add EtiFeld.p2FeldAnzahlDimension2Ausgeben
tag @s[nbt=!{Items:[{Slot:21b}]}] add EtiFeld.p2FeldAnzahlDimension2Verringern
execute unless entity @s[tag=!EtiFeld.p2FeldAnzahlDimension2Anheben,tag=!EtiFeld.p2FeldAnzahlDimension2Ausgeben,tag=!EtiFeld.p2FeldAnzahlDimension2Verringern] run function technik_wiki:direktzugriffsspeicher/vp2menu_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}]}] add EtiFeld.p2FeldAnzahlDimension3Anheben
tag @s[nbt=!{Items:[{Slot:13b}]}] add EtiFeld.p2FeldAnzahlDimension3Ausgeben
tag @s[nbt=!{Items:[{Slot:22b}]}] add EtiFeld.p2FeldAnzahlDimension3Verringern
execute unless entity @s[tag=!EtiFeld.p2FeldAnzahlDimension3Anheben,tag=!EtiFeld.p2FeldAnzahlDimension3Ausgeben,tag=!EtiFeld.p2FeldAnzahlDimension3Verringern] run function technik_wiki:direktzugriffsspeicher/vp2menu_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}]}] add EtiFeld.p2PositionAufsteigen
tag @s[nbt=!{Items:[{Slot:14b}]}] add EtiFeld.p2PositionAusgeben
tag @s[nbt=!{Items:[{Slot:23b}]}] add EtiFeld.p2PositionAbsteigen
execute unless entity @s[tag=!EtiFeld.p2PositionAufsteigen,tag=!EtiFeld.p2PositionAusgeben,tag=!EtiFeld.p2PositionAbsteigen] run function technik_wiki: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:6b}]}] add EtiFeld.p2WertAnheben
tag @s[nbt=!{Items:[{Slot:15b}]}] add EtiFeld.p2WertAusgeben
tag @s[nbt=!{Items:[{Slot:24b}]}] add EtiFeld.p2WertVerringern
execute unless entity @s[tag=!EtiFeld.p2WertAnheben,tag=!EtiFeld.p2WertAusgeben,tag=!EtiFeld.p2WertVerringern] run function technik_wiki:direktzugriffsspeicher/vp2menu_wert

# Wenn der Gegenstand für das Ausgeben aller Werte der Felder angeklickt wurde, wird die Werte-Funktion geladen
execute as @s[nbt=!{Items:[{Slot:16b}]},scores={PZFeld.p2Felder=1..}] run function technik_wiki:direktzugriffsspeicher/vp2menu_werte


Variante 2: 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.png technik_wiki:direktzugriffsspeicher/vp2menü_feld_dimension_1.mcfunction
# Alle vorhandenen Felder werden um einen Block nach oben teleportiert
execute if entity @s[tag=EtiFeld.p2FeldAnzahlDimension1Anheben,scores={PZFeld.p2Felder=..63}] as @e[type=minecraft:armor_stand,tag=EtiFeld.p2AlleFelder,tag=EtiFeld.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 at @s[tag=EtiFeld.p2FeldAnzahlDimension1Anheben,scores={PZFeld.p2Felder=..63}] run summon minecraft:armor_stand ~ ~1 ~ {NoGravity:true,Small:true,Invisible:true,Marker:true,CustomName:"\"ObjFeld.p2FeldDimension1\"",Tags:["EtiFeld.p2AlleFelder","EtiFeld.p2Dimensionen","EtiFeld.p2Dimension2Erhalten"],ArmorItems:[{},{},{},{id:"minecraft:red_shulker_box",Count:1b} ] }
execute as @s[tag=EtiFeld.p2FeldAnzahlDimension1Anheben,scores={PZFeld.p2Felder=..63}] run scoreboard players add @e[type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension1] PZFeld.p2Pos 1
execute as @s[tag=EtiFeld.p2FeldAnzahlDimension1Anheben,scores={PZFeld.p2Felder=..63}] run scoreboard players operation @e[type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension1,tag=EtiFeld.p2Dimension2Erhalten] PZFeld.p2Felder = #VarFeld.p2Dimension2 PZFeld.p2Felder
tag @e[type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension1,tag=EtiFeld.p2Dimension2Erhalten] remove EtiFeld.p2Dimension2Erhalten

# 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=EtiFeld.p2FeldAnzahlDimension1Anheben] at @s align xyz positioned ~-0.2 ~-0.2 ~-0.2 store result score @s PZFeld.p2Felder if entity @e[dx=0.4,dy=64,dz=0.4,type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension1]
execute at @s[tag=EtiFeld.p2FeldAnzahlDimension1Anheben,scores={PZFeld.p2Felder=..63}] unless score #VarFeld.p2FelderErzeugen PZFeld.p2Felder matches 1.. run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.2:\n",{"text":"Feld.Länge + 1 = neues Feld[","bold":true},{"score":{"name":"@s","objective":"PZFeld.p2Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p2Dimension2","objective":"PZFeld.p2Felder"},"bold":true,"color":"red"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p2Dimension3","objective":"PZFeld.p2Felder"},"bold":true,"color":"blue"},{"text":"]","bold":true} ]

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

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

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

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

execute at @s[tag=EtiFeld.p2FeldAnzahlDimension1Verringern,scores={PZFeld.p2Felder=1..}] as @e[type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension1,sort=furthest,limit=1] at @s align xyz positioned ~-0.2 ~-0.2 ~-0.2 run kill @e[dx=64,dy=0.4,dz=0.4,name=ObjFeld.p2FeldDimension2,tag=EtiFeld.p2AlleFelder,tag=EtiFeld.p2Dimensionen]
execute at @s[tag=EtiFeld.p2FeldAnzahlDimension1Verringern,scores={PZFeld.p2Felder=1..}] run kill @e[type=minecraft:armor_stand,name=ObjFeld.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 at @s[tag=EtiFeld.p2FeldAnzahlDimension1Verringern] store result score @s PZFeld.p2Felder if entity @e[type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension1]
execute at @s[tag=EtiFeld.p2FeldAnzahlDimension1Verringern] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.2:\n",{"text":"Feld.Länge - 1 = neues Feld[","bold":true},{"score":{"name":"@s","objective":"PZFeld.p2Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p2Dimension2","objective":"PZFeld.p2Felder"},"bold":true,"color":"red"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p2Dimension3","objective":"PZFeld.p2Felder"},"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 as @s[tag=EtiFeld.p2FeldAnzahlDimension1Verringern] if score #VarFeld.p2AktuellePositionDimension1 PZFeld.p2Pos > @s PZFeld.p2Felder run scoreboard players remove #VarFeld.p2AktuellePositionDimension1 PZFeld.p2Pos 1


Variante 2: 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.png technik_wiki: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=EtiFeld.p2Dimensionen]
scoreboard players operation #VarFeld.p2FelderErzeugen PZFeld.p2Felder = @s PZFeld.p2Felder
execute at @s run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.2:\n",{"text":"Feld = neues Feld[","bold":true},{"score":{"name":"#VarFeld.p2FelderErzeugen","objective":"PZFeld.p2Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p2Dimension2","objective":"PZFeld.p2Felder"},"bold":true,"color":"red"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p2Dimension3","objective":"PZFeld.p2Felder"},"bold":true,"color":"blue"},{"text":"]","bold":true} ]


Variante 2: 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.png technik_wiki: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=EtiFeld.p2FeldAnzahlDimension2Anheben] if score #VarFeld.p2Dimension2 PZFeld.p2Felder matches ..63 run scoreboard players add @e[type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension1,tag=EtiFeld.p2AlleFelder,tag=EtiFeld.p2Dimensionen] PZFeld.p2Felder 1
execute if entity @s[tag=EtiFeld.p2FeldAnzahlDimension2Anheben] if score #VarFeld.p2Dimension2 PZFeld.p2Felder matches ..63 run scoreboard players add #VarFeld.p2Dimension2 PZFeld.p2Felder 1
execute if entity @s[tag=EtiFeld.p2FeldAnzahlDimension2Anheben] if score #VarFeld.p2Dimension2 PZFeld.p2Felder matches ..63 run scoreboard players add #VarFeld.p2AktuellePositionDimension2 PZFeld.p2Pos 1

execute at @s[tag=EtiFeld.p2FeldAnzahlDimension2Anheben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.2:\n",{"text":"Feld[","bold":true},{"score":{"name":"@s","objective":"PZFeld.p2Pos"},"bold":true,"color":"green"},{"text":"].Länge + 1 = neues Feld[","bold":true},{"score":{"name":"@s","objective":"PZFeld.p2Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p2Dimension2","objective":"PZFeld.p2Felder"},"bold":true,"color":"red"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p2Dimension3","objective":"PZFeld.p2Felder"},"bold":true,"color":"blue"},{"text":"]","bold":true} ]

# Die aktuelle Feldanzahl wird ausgegeben
execute at @s[tag=EtiFeld.p2FeldAnzahlDimension2Ausgeben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.2:\n",{"text":"Feld[","bold":true},{"score":{"name":"#VarFeld.p2AktuellePositionDimension1","objective":"PZFeld.p2Pos"},"bold":true,"color":"green"},{"text":"].Länge = ","bold":true},{"score":{"name":"#VarFeld.p2Dimension2","objective":"PZFeld.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=EtiFeld.p2FeldAnzahlDimension2Verringern] if score #VarFeld.p2Dimension2 PZFeld.p2Felder matches 1.. run scoreboard players remove @e[type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension1,tag=EtiFeld.p2AlleFelder,tag=EtiFeld.p2Dimensionen] PZFeld.p2Felder 1
execute if entity @s[tag=EtiFeld.p2FeldAnzahlDimension2Verringern] if score #VarFeld.p2Dimension2 PZFeld.p2Felder matches 1.. run scoreboard players remove #VarFeld.p2Dimension2 PZFeld.p2Felder 1

execute if entity @s[tag=EtiFeld.p2FeldAnzahlDimension2Verringern] if score #VarFeld.p2AktuellePositionDimension2 PZFeld.p2Pos > #VarFeld.p2Dimension2 PZFeld.p2Felder run scoreboard players remove #VarFeld.p2AktuellePositionDimension2 PZFeld.p2Pos 1

execute at @s[tag=EtiFeld.p2FeldAnzahlDimension2Verringern] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.2:\n",{"text":"Feld.Länge - 1 = neues Feld[","bold":true},{"score":{"name":"@s","objective":"PZFeld.p2Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p2Dimension2","objective":"PZFeld.p2Felder"},"bold":true,"color":"red"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p2Dimension3","objective":"PZFeld.p2Felder"},"bold":true,"color":"blue"},{"text":"]","bold":true} ]


Variante 2: 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.png technik_wiki:direktzugriffsspeicher/vp2menu_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=EtiFeld.p2FeldAnzahlDimension3Anheben] if score #VarFeld.p2Dimension3 PZFeld.p2Felder matches ..63 run scoreboard players add @e[type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension2,tag=EtiFeld.p2AlleFelder,tag=EtiFeld.p2Dimensionen] PZFeld.p2Felder 1
execute if entity @s[tag=EtiFeld.p2FeldAnzahlDimension3Anheben] if score #VarFeld.p2Dimension3 PZFeld.p2Felder matches ..63 run scoreboard players add #VarFeld.p2Dimension3 PZFeld.p2Felder 1
execute if entity @s[tag=EtiFeld.p2FeldAnzahlDimension3Anheben] if score #VarFeld.p2Dimension3 PZFeld.p2Felder matches ..63 run scoreboard players add #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos 1

execute at @s[tag=EtiFeld.p2FeldAnzahlDimension3Anheben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.2:\n",{"text":"Feld[","bold":true},{"score":{"name":"@s","objective":"PZFeld.p2Pos"},"bold":true,"color":"green"},{"text":"].Länge + 1 = neues Feld[","bold":true},{"score":{"name":"@s","objective":"PZFeld.p2Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p2Dimension2","objective":"PZFeld.p2Felder"},"bold":true,"color":"red"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p2Dimension3","objective":"PZFeld.p2Felder"},"bold":true,"color":"blue"},{"text":"]","bold":true} ]

# Die aktuelle Feldanzahl wird ausgegeben
execute at @s[tag=EtiFeld.p2FeldAnzahlDimension3Ausgeben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.2:\n",{"text":"Feld[","bold":true},{"score":{"name":"#VarFeld.p2AktuellePositionDimension1","objective":"PZFeld.p2Pos"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p2AktuellePositionDimension2","objective":"PZFeld.p2Pos"},"bold":true,"color":"red"},{"text":"].Länge = ","bold":true},{"score":{"name":"#VarFeld.p2Dimension3","objective":"PZFeld.p2Felder"},"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=EtiFeld.p2FeldAnzahlDimension3Verringern] if score #VarFeld.p2Dimension3 PZFeld.p2Felder matches 1.. run scoreboard players remove @e[type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension2,tag=EtiFeld.p2AlleFelder,tag=EtiFeld.p2Dimensionen] PZFeld.p2Felder 1
execute if entity @s[tag=EtiFeld.p2FeldAnzahlDimension3Verringern] if score #VarFeld.p2Dimension3 PZFeld.p2Felder matches 1.. run scoreboard players remove #VarFeld.p2Dimension3 PZFeld.p2Felder 1

execute if entity @s[tag=EtiFeld.p2FeldAnzahlDimension3Verringern] if score #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos > #VarFeld.p2Dimension3 PZFeld.p2Felder run scoreboard players remove #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos 1

execute at @s[tag=EtiFeld.p2FeldAnzahlDimension3Verringern] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.2:\n",{"text":"Feld.Länge - 1 = neues Feld[","bold":true},{"score":{"name":"@s","objective":"PZFeld.p2Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p2Dimension2","objective":"PZFeld.p2Felder"},"bold":true,"color":"red"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p2Dimension3","objective":"PZFeld.p2Felder"},"bold":true,"color":"blue"},{"text":"]","bold":true} ]


Variante 2: 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.png technik_wiki:direktzugriffsspeicher/vp2menu_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ück gesetzt
execute as @s[tag=EtiFeld.p2PositionAufsteigen] run scoreboard players add #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos 1
execute as @s[tag=EtiFeld.p2PositionAufsteigen] if score #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos > #VarFeld.p2Dimension3 PZFeld.p2Felder run scoreboard players set #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos 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ück gesetzt
execute as @s[tag=EtiFeld.p2PositionAufsteigen] if score #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos matches 1 run scoreboard players add #VarFeld.p2AktuellePositionDimension2 PZFeld.p2Pos 1
execute as @s[tag=EtiFeld.p2PositionAufsteigen] if score #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos matches 1 if score #VarFeld.p2AktuellePositionDimension2 PZFeld.p2Pos > #VarFeld.p2Dimension2 PZFeld.p2Felder run scoreboard players set #VarFeld.p2AktuellePositionDimension2 PZFeld.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 as @s[tag=EtiFeld.p2PositionAufsteigen] if score #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos matches 1 if score #VarFeld.p2AktuellePositionDimension2 PZFeld.p2Pos matches 1 run scoreboard players add #VarFeld.p2AktuellePositionDimension1 PZFeld.p2Pos 1
execute as @s[tag=EtiFeld.p2PositionAufsteigen] if score #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos matches 1 if score #VarFeld.p2AktuellePositionDimension2 PZFeld.p2Pos matches 1 if score #VarFeld.p2AktuellePositionDimension1 PZFeld.p2Pos > @s PZFeld.p2Felder run scoreboard players set #VarFeld.p2AktuellePositionDimension1 PZFeld.p2Pos 1

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

# Gibt die aktuelle Position aus
execute at @s[tag=EtiFeld.p2PositionAusgeben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.2:\n",{"text":"Feld[","bold":true},{"score":{"name":"#VarFeld.p2AktuellePositionDimension1","objective":"PZFeld.p2Pos"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p2AktuellePositionDimension2","objective":"PZFeld.p2Pos"},"bold":true,"color":"red"},{"text":"].Position = ","bold":true},{"score":{"name":"#VarFeld.p2AktuellePositionDimension3","objective":"PZFeld.p2Pos"},"bold":true,"color":"blue"} ]

# Gibt die neue verringerte Position der zweiten Dimension aus
execute as @s[tag=EtiFeld.p2PositionAbsteigen] run scoreboard players remove #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos 1
execute as @s[tag=EtiFeld.p2PositionAbsteigen] if score #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos matches ..0 run scoreboard players operation #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos = #VarFeld.p2Dimension3 PZFeld.p2Felder

# Gibt die neue verringerte Position der zweiten Dimension aus
execute as @s[tag=EtiFeld.p2PositionAbsteigen] if score #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos = #VarFeld.p2Dimension3 PZFeld.p2Felder run scoreboard players remove #VarFeld.p2AktuellePositionDimension2 PZFeld.p2Pos 1
execute as @s[tag=EtiFeld.p2PositionAbsteigen] if score #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos = #VarFeld.p2Dimension3 PZFeld.p2Felder if score #VarFeld.p2AktuellePositionDimension2 PZFeld.p2Pos matches ..0 run scoreboard players operation #VarFeld.p2AktuellePositionDimension2 PZFeld.p2Pos = #VarFeld.p2Dimension2 PZFeld.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 as @s[tag=EtiFeld.p2PositionAbsteigen] if score #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos = #VarFeld.p2Dimension3 PZFeld.p2Felder if score #VarFeld.p2AktuellePositionDimension2 PZFeld.p2Pos = #VarFeld.p2Dimension2 PZFeld.p2Felder run scoreboard players remove #VarFeld.p2AktuellePositionDimension1 PZFeld.p2Pos 1
execute as @s[tag=EtiFeld.p2PositionAbsteigen] if score #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos = #VarFeld.p2Dimension3 PZFeld.p2Felder if score #VarFeld.p2AktuellePositionDimension2 PZFeld.p2Pos = #VarFeld.p2Dimension2 PZFeld.p2Felder if score #VarFeld.p2AktuellePositionDimension1 PZFeld.p2Pos matches ..0 run scoreboard players operation #VarFeld.p2AktuellePositionDimension1 PZFeld.p2Pos = @s PZFeld.p2Felder

# Gibt die veränderten Positionen als tellraw-Nachrichten aus
execute at @s[tag=EtiFeld.p2PositionAbsteigen] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.2:"]
execute at @s[tag=EtiFeld.p2PositionAbsteigen] if score #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos = #VarFeld.p2Dimension3 PZFeld.p2Felder if score #VarFeld.p2AktuellePositionDimension2 PZFeld.p2Pos = #VarFeld.p2Dimension2 PZFeld.p2Felder run tellraw @a[distance=..25] ["",{"text":"Feld.Position - 1 = ","bold":true},{"score":{"name":"#VarFeld.p2AktuellePositionDimension1","objective":"PZFeld.p2Pos"},"bold":true,"color":"green"}]
execute at @s[tag=EtiFeld.p2PositionAbsteigen] if score #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos = #VarFeld.p2Dimension3 PZFeld.p2Felder run tellraw @a[distance=..25] ["",{"text":"Feld[","bold":true},{"score":{"name":"#VarFeld.p2AktuellePositionDimension1","objective":"PZFeld.p2Pos"},"bold":true,"color":"green"},{"text":"].Position - 1 = ","bold":true},{"score":{"name":"#VarFeld.p2AktuellePositionDimension2","objective":"PZFeld.p2Pos"},"bold":true,"color":"red"} ]
execute at @s[tag=EtiFeld.p2PositionAbsteigen] run tellraw @a[distance=..25] ["",{"text":"Feld[","bold":true},{"score":{"name":"#VarFeld.p2AktuellePositionDimension1","objective":"PZFeld.p2Pos"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p2AktuellePositionDimension2","objective":"PZFeld.p2Pos"},"bold":true,"color":"red"},{"text":"].Position - 1 = ","bold":true},{"score":{"name":"#VarFeld.p2AktuellePositionDimension3","objective":"PZFeld.p2Pos"},"bold":true,"color":"blue"} ]


Variante 2: 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.png technik_wiki:direktzugriffsspeicher/vp2menu_wert.mcfunction
# 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 at @s[tag=EtiFeld.p2WertAnheben] as @e[type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension1,tag=EtiFeld.p2AlleFelder,sort=nearest] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension1 PZFeld.p2Pos at @s positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=64,dy=0.2,dz=0.2,type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension2] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension2 PZFeld.p2Pos at @s positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=0.2,dy=0.2,dz=64,type=minecraft:armor_stand,name=ObjFeld.p2Inhalt] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos run scoreboard players add @s PZFeld.p2Wert 1
execute at @s[tag=EtiFeld.p2WertAnheben] as @e[type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension1,tag=EtiFeld.p2AlleFelder,sort=nearest] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension1 PZFeld.p2Pos at @s positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=64,dy=0.2,dz=0.2,type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension2] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension2 PZFeld.p2Pos at @s positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=0.2,dy=0.2,dz=64,type=minecraft:armor_stand,name=ObjFeld.p2Inhalt] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos run scoreboard players operation #VarFeld.p2WertInhalt PZFeld.p2Wert = @s PZFeld.p2Wert

execute at @s[tag=EtiFeld.p2WertAnheben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.2:\n",{"text":"Feld[","bold":true},{"score":{"name":"#VarFeld.p2AktuellePositionDimension1","objective":"PZFeld.p2Pos"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p2AktuellePositionDimension2","objective":"PZFeld.p2Pos"},"bold":true,"color":"red"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p2AktuellePositionDimension3","objective":"PZFeld.p2Pos"},"bold":true,"color":"blue"},{"text":"] + 1 = ","bold":true},{"score":{"name":"#VarFeld.p2WertInhalt","objective":"PZFeld.p2Wert"},"bold":true,"color":"dark_purple"} ]

# Gibt den Wert des aktuellen Feldes aus
execute at @s[tag=EtiFeld.p2WertAusgeben] as @e[type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension1,tag=EtiFeld.p2AlleFelder,sort=nearest] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension1 PZFeld.p2Pos at @s positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=64,dy=0.2,dz=0.2,type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension2] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension2 PZFeld.p2Pos at @s positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=0.2,dy=0.2,dz=64,type=minecraft:armor_stand,name=ObjFeld.p2Inhalt] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos run scoreboard players operation #VarFeld.p2WertInhalt PZFeld.p2Wert = @s PZFeld.p2Wert
execute at @s[tag=EtiFeld.p2WertAusgeben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.2:\n",{"text":"Feld[","bold":true},{"score":{"name":"#VarFeld.p2AktuellePositionDimension1","objective":"PZFeld.p2Pos"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p2AktuellePositionDimension2","objective":"PZFeld.p2Pos"},"bold":true,"color":"red"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p2AktuellePositionDimension3","objective":"PZFeld.p2Pos"},"bold":true,"color":"blue"},{"text":"] = ","bold":true},{"score":{"name":"#VarFeld.p2WertInhalt","objective":"PZFeld.p2Wert"},"bold":true,"color":"dark_purple"} ]

# Verringert den Wert des aktuellen Feldes
execute at @s[tag=EtiFeld.p2WertVerringern] as @e[type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension1,tag=EtiFeld.p2AlleFelder,sort=nearest] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension1 PZFeld.p2Pos at @s positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=64,dy=0.2,dz=0.2,type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension2] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension2 PZFeld.p2Pos at @s positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=0.2,dy=0.2,dz=64,type=minecraft:armor_stand,name=ObjFeld.p2Inhalt] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos run scoreboard players remove @s PZFeld.p2Wert 1
execute at @s[tag=EtiFeld.p2WertVerringern] as @e[type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension1,tag=EtiFeld.p2AlleFelder,sort=nearest] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension1 PZFeld.p2Pos at @s positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=64,dy=0.2,dz=0.2,type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension2] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension2 PZFeld.p2Pos at @s positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=0.2,dy=0.2,dz=64,type=minecraft:armor_stand,name=ObjFeld.p2Inhalt] if score @s PZFeld.p2Pos = #VarFeld.p2AktuellePositionDimension3 PZFeld.p2Pos run scoreboard players operation #VarFeld.p2WertInhalt PZFeld.p2Wert = @s PZFeld.p2Wert

execute at @s[tag=EtiFeld.p2WertVerringern] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.2:\n",{"text":"Feld[","bold":true},{"score":{"name":"#VarFeld.p2AktuellePositionDimension1","objective":"PZFeld.p2Pos"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p2AktuellePositionDimension2","objective":"PZFeld.p2Pos"},"bold":true,"color":"red"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p2AktuellePositionDimension3","objective":"PZFeld.p2Pos"},"bold":true,"color":"blue"},{"text":"] - 1 = ","bold":true},{"score":{"name":"#VarFeld.p2WertInhalt","objective":"PZFeld.p2Wert"},"bold":true,"color":"dark_purple"} ]


Variante 2: 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.png technik_wiki:direktzugriffsspeicher/vp2menu_werte.mcfunction
# Die aktuelle Position wird zwischengespeichert und der Kopfteil der tellraw-Nachricht wird ausgegeben
execute at @s run tellraw @a[distance=..25] ["Direktzugriffsspeicher.plus.2:"]
scoreboard players set #VarFeld.p2PositionAusgebenDimension1 PZFeld.p2Pos 0
function technik_wiki:direktzugriffsspeicher/vp2menu_werte_dimension_1


Variante 2: 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.png technik_wiki:direktzugriffsspeicher/vp2menu_werte_dimension_1.mcfunction
# Die aktuelle Position wird zwischengespeichert und der Kopfteil der tellraw-Nachricht wird ausgegeben
scoreboard players add #VarFeld.p2PositionAusgebenDimension1 PZFeld.p2Pos 1
scoreboard players set #VarFeld.p2PositionAusgebenDimension2 PZFeld.p2Pos 0
execute if score #VarFeld.p2PositionAusgebenDimension1 PZFeld.p2Pos <= @s PZFeld.p2Felder run function technik_wiki:direktzugriffsspeicher/vp2menu_werte_dimension_2
execute if score #VarFeld.p2PositionAusgebenDimension1 PZFeld.p2Pos <= @s PZFeld.p2Felder run function technik_wiki:direktzugriffsspeicher/vp2menu_werte_dimension_1


Variante 2: 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.png technik_wiki:direktzugriffsspeicher/vp2menu_werte_dimension_2.mcfunction
# Die aktuelle Position wird zwischengespeichert und der Kopfteil der tellraw-Nachricht wird ausgegeben
scoreboard players add #VarFeld.p2PositionAusgebenDimension2 PZFeld.p2Pos 1
scoreboard players set #VarFeld.p2PositionAusgebenDimension3 PZFeld.p2Pos 1
execute if score #VarFeld.p2PositionAusgebenDimension2 PZFeld.p2Pos <= #VarFeld.p2Dimension2 PZFeld.p2Felder run function technik_wiki:direktzugriffsspeicher/vp2menu_werte_dimension_3
execute if score #VarFeld.p2PositionAusgebenDimension2 PZFeld.p2Pos <= #VarFeld.p2Dimension2 PZFeld.p2Felder run function technik_wiki:direktzugriffsspeicher/vp2menu_werte_dimension_2


Variante 2: 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.png technik_wiki:direktzugriffsspeicher/vp2menu_werte_dimension_3.mcfunction
# Es wird nach dem Feld mit der entsprechenden Position gesucht und dann wird dessen Wert in eine Variable gespeichert und anschließend in einer tellraw-Nachricht ausgegeben
execute as @e[type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension1,tag=EtiFeld.p2AlleFelder] if score @s PZFeld.p2Pos = #VarFeld.p2PositionAusgebenDimension1 PZFeld.p2Pos at @s positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiFeld.p2AlleFelder,name=ObjFeld.p2FeldDimension2] if score @s PZFeld.p2Pos = #VarFeld.p2PositionAusgebenDimension2 PZFeld.p2Pos at @s positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=0.4,dy=0.4,dz=64,type=minecraft:armor_stand,tag=EtiFeld.p2AlleFelder,name=ObjFeld.p2Inhalt] if score @s PZFeld.p2Pos = #VarFeld.p2PositionAusgebenDimension3 PZFeld.p2Pos run scoreboard players operation #VarFeld.p2WertInhalt PZFeld.p2Wert = @s PZFeld.p2Wert
execute at @s run tellraw @a[distance=..25] ["",{"text":"Feld[","bold":true},{"score":{"name":"#VarFeld.p2PositionAusgebenDimension1","objective":"PZFeld.p2Pos"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p2PositionAusgebenDimension2","objective":"PZFeld.p2Pos"},"bold":true,"color":"red"},{"text":"][","bold":true},{"score":{"name":"#VarFeld.p2PositionAusgebenDimension3","objective":"PZFeld.p2Pos"},"bold":true,"color":"blue"},{"text":"] = ","bold":true},{"score":{"name":"#VarFeld.p2WertInhalt","objective":"PZFeld.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 #VarFeld.p2PositionAusgebenDimension3 PZFeld.p2Pos 1
execute if score #VarFeld.p2PositionAusgebenDimension3 PZFeld.p2Pos <= #VarFeld.p2Dimension3 PZFeld.p2Felder run function technik_wiki:direktzugriffsspeicher/vp2menu_werte_dimension_3


Variante 2: 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.png technik_wiki:direktzugriffsspeicher/vp2dimension_2.mcfunction
# Alle vorhandenen Felder werden um einen Block nach oben teleportiert
execute if entity @s[scores={PZFeld.p2Felder=1..}] align xyz positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiFeld.p2AlleFelder,name=ObjFeld.p2FeldDimension2] at @s align xyz positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=0.4,dy=0.4,dz=64,type=minecraft:armor_stand,tag=EtiFeld.p2AlleFelder,name=ObjFeld.p2Inhalt] at @s run teleport @s ^1 ^ ^
execute if entity @s[scores={PZFeld.p2Felder=1..}] align xyz positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiFeld.p2AlleFelder,name=ObjFeld.p2FeldDimension2] 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={PZFeld.p2Felder=1..}] run summon minecraft:armor_stand ^1 ^ ^ {NoGravity:true,Small:true,Invisible:true,Marker:true,CustomName:"\"ObjFeld.p2FeldDimension2\"",Tags:["EtiFeld.p2AlleFelder","EtiFeld.p2Dimensionen","EtiFeld.p2Dimension3Erhalten"],ArmorItems:[{},{},{},{id:"minecraft:blue_shulker_box",Count:1b} ] }
execute if entity @s[scores={PZFeld.p2Felder=1..}] align xyz positioned ~-0.2 ~-0.2 ~-0.2 run scoreboard players add @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension2] PZFeld.p2Pos 1

execute if entity @s[scores={PZFeld.p2Felder=1..}] align xyz positioned ~-0.2 ~-0.2 ~-0.2 run scoreboard players operation @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension2,tag=EtiFeld.p2Dimension3Erhalten] PZFeld.p2Felder = #VarFeld.p2Dimension3 PZFeld.p2Felder
tag @e[type=minecraft:armor_stand,name=ObjFeld.p2FeldDimension2,tag=EtiFeld.p2Dimension3Erhalten] remove EtiFeld.p2Dimension3Erhalten

execute if entity @s[scores={PZFeld.p2Felder=1..}] run scoreboard players remove @s PZFeld.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={PZFeld.p2Felder=..-1}] align xyz positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,sort=furthest,limit=1,type=minecraft:armor_stand,tag=EtiFeld.p2AlleFelder,name=ObjFeld.p2FeldDimension2] at @s align xyz positioned ~-0.2 ~-0.2 ~-0.2 run kill @e[dx=0.4,dy=0.4,dz=64,type=minecraft:armor_stand,tag=EtiFeld.p2AlleFelder,name=ObjFeld.p2Inhalt]

execute if entity @s[scores={PZFeld.p2Felder=..-1}] align xyz positioned ~-0.2 ~-0.2 ~-0.2 run kill @e[dx=64,dy=0.4,dz=0.4,sort=furthest,limit=1,type=minecraft:armor_stand,tag=EtiFeld.p2AlleFelder,name=ObjFeld.p2FeldDimension2]

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


Variante 2: 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.png technik_wiki:direktzugriffsspeicher/vp2dimension_3.mcfunction
# Alle vorhandenen Felder werden um einen Block nach oben teleportiert
execute if entity @s[scores={PZFeld.p2Felder=1..}] align xyz positioned ~-0.2 ~-0.2 ~-0.2 as @e[dx=0.4,dy=0.4,dz=64,type=minecraft:armor_stand,tag=EtiFeld.p2AlleFelder,name=ObjFeld.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={PZFeld.p2Felder=1..}] run summon minecraft:armor_stand ^ ^ ^1 {NoGravity:true,Small:true,Invisible:true,Marker:true,CustomName:"\"ObjFeld.p2Inhalt\"",Tags:["EtiFeld.p2AlleFelder","EtiFeld.p2Dimensionen"],ArmorItems:[{},{},{},{id:"minecraft:chest",Count:1b} ] }
execute if entity @s[scores={PZFeld.p2Felder=1..}] align xyz positioned ~-0.2 ~-0.2 ~-0.2 run scoreboard players add @e[dx=0.4,dy=0.4,dz=64,type=minecraft:armor_stand,name=ObjFeld.p2Inhalt] PZFeld.p2Pos 1
execute if entity @s[scores={PZFeld.p2Felder=1..}] run scoreboard players remove @s PZFeld.p2Felder 1

# Das Feld der 2. Dimension ganz am Ende wird aus vom Feld der 1. Dimension wird gelöscht
execute if entity @s[scores={PZFeld.p2Felder=..-1}] align xyz positioned ~-0.2 ~-0.2 ~-0.2 run kill @e[dx=0.4,dy=0.4,dz=64,sort=furthest,limit=1,type=minecraft:armor_stand,tag=EtiFeld.p2AlleFelder,name=ObjFeld.p2Inhalt]

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


Variante 2: Stopp-Funktion
Die Stopp-Funktion löscht alle Punktestand-Ziele wieder und teleportiert die Güterlore in die Leere, welche sonst ihre beladenen Gegenstände droppen würde und danach werden alle Felder samt der Güterlore gelöscht

Editor Icon.png technik_wiki:direktzugriffsspeicher/vp2stopp.mcfunction
# Die Punktestand-Ziele werden wieder entfernt
scoreboard objectives remove PZFeld.p2Wert
scoreboard objectives remove PZFeld.p2Pos
scoreboard objectives remove PZFeld.p2Felder

# Alle bisher erzeugten Felder werden gelöscht
teleport @e[tag=EtiFeld.p2Start,tag=EtiFeld.p2AlleFelder] ~ -255 ~
kill @e[tag=EtiFeld.p2AlleFelder]


Disambig color.svg