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

Schaltnetze/Direktzugriffsspeicher (Befehle,plus)

Aus Technik Wiki
Wechseln zu: Navigation, Suche
Baustelle.svg
Diese Seite wird gerade von Nethonos neu erstellt oder grundlegend überarbeitet.
Fragen und Vorschläge bitte in die Diskussion. Fortschritt: Grid Redstone-Block.pngGrid Redstone-Block.pngGrid Redstone-Block.pngGrid Redstone-Block.pngGrid Redstone-Block.pngGrid Redstone-Block.pngGrid Redstone-Block.pngGrid Redstone-Block blass.pngGrid Redstone-Block blass.pngGrid Redstone-Block blass.png


Gruppe: Grid Redstone-Verstärker.png
Schaltnetze

Grid Roter Sand blass.png mit Mechaniken

Grid Redstone.png mit Redstone

Grid Befehlsblock.png mit Befehlen

Diese Technik ist noch in
keiner Download-Welt enthalten.
                Hier:
Grid Wiederhol-Befehlsblock.png mehr Befehle
Redstone-Schaltkreise Symbol.png
Diese Technik ist noch nicht in der aktuellen Redstone-Welt vorhanden.
In einem der nächsten Updates wird sie dort hinzugefügt werden.

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]

Schaltnetze Direktzugriffsspeicher (Befehle,plus) Bild 1.1.png Schaltnetze Direktzugriffsspeicher (Befehle,plus) Bild 1.2.png

Die zweidimensionalen Felder verhalten sich sehr ähnlich wie die eindimensionalen, es werden jedoch etwas mehr Variablen und Feldobjekte in Form von weiteren Befehlen benötigt. Zuerst werden die Punktestand-Ziele erstelltBefehl 1.1Befehl 1.2Befehl 1.3Befehl 1.4. Anschließend wird das symbolische FeldobjektBefehl 1.5, welches das zweidimensionale Startfeld klassifiziert, erschaffen. Nun braucht man zwei Variablen die die beiden Dimensionen festlegenBefehl 1.21Befehl 1.22Befehl 1.23Befehl 1.24. Diese können beide beliebig oft jeweils um eins erhöht werden. Legt man den Hebel von der drei Meter langen Befehlsblockkette um, so werden zuerst alle Felder die zuvor existierten gelöschtBefehl 1.25, um dann die neue Anzahl der Felder an die Anzahl-Variable zu übergebenBefehl 1.26Befehl 1.27. Nun wird die Befehlsblocksäule mit dem Wiederhol-Befehlsblock aktiv, denn sie erfasst nun, dass die Anzahl-Variable größer als null istBefehl 1.6. Dadurch können nun die bedingten Ketten-Befehlsblöcke die Felder der ersten Dimension erzeugenBefehl 1.7 und die Positionsdaten übergebenBefehl 1.8Befehl 1.9. Damit jedes Feld eine bestimmte Positionsnummer hat. Nun sorgt der nachfolgende Ketten-Befehlsblock dafür, das die Felder der ersten Dimension die Anzahl der zweiten Dimension in sich speichernBefehl 1.10. Das wird dafür benötigt, um im Anschluss nur genau so viele Felder der zweiten Dimension zu erzeugen, wie es zuvor auch eingestellt wurdeBefehl 1.11. Da sich in diesem Augenblick beide Felder (beider Dimensionen) an einem Fleck befinden, kann man direkt von der Position des Feldes (1. D.) eine Übergabe des Wertes auf das Feld (2. D.) stattfinden lassenBefehl 1.12 und anschließend wird mit einem Etikett verhindert, das es nochmals zu einer Positionsübergabe kommen kannBefehl 1.13, damit die Position nun endgültig fest steht.

Nun werden alle Felder der zweiten Dimension horizontal bewegt, bis sie alle in einer Reihe platziert sindBefehl 1.14Befehl 1.15, dies wird darüber entschieden, ob das letzte Feld (2. D.) einer Reihe erschaffen wurdeBefehl 1.16. Dabei wird geprüft ob das Feld der ersten Dimension alle Felder seiner zweiten Dimension erzeugt hat, wenn das der Fall ist, hat das Feld (1. D.) den Wert null erreicht. Dann werden alle Felder der zweiten Dimension durch ein Etikett gestoppt. Sie werden dann nicht mehr horizontal (zur Seite) bewegt. Nun wird geprüft ob es noch Felder der ersten Dimension gibt, die noch nicht vertikal nach oben bewegt wurden, wenn das der Fall ist, wird ihnen ein Etikett gegebenBefehl 1.17 und anschließend werden Felder der ersten, wie auch zweiten Dimension vertikal nach oben um einen Meter bewegtBefehl 1.18.

Nun legt man über einen weiteren Befehlsblock mit bedingten Ketten-Befehlsblock den einzuspeichernden Wert für die Felder festBefehl 1.28. Dieser wird dann auch im Chat ausgegebenBefehl 1.29. Diesen Wert möchte man nun auf ein bestimmten Feld speichern, dazu wird nun ein Zeiger für die erste und ein zweiter für die zweite Dimension benötigt, der erste wird schon beim Einschalten initialisiertBefehl 1.55. Diese zeigen dann immer genau auf ein bestimmtes Feld, welches den Wert übernehmen soll. Der Zeiger der zweiten Dimension bewegt sich durch die FelderBefehl 1.30Befehl 1.31Befehl 1.32Befehl 1.33Befehl 1.34. Wenn er das letzte Feld erreicht hat, wird er wieder zurückgesetzt, nur das der Zeiger der ersten Dimension dabei auch um eins erhöht wirdBefehl 1.35. Dadurch kann man sich nun durch alle Felder des gesamten Feldes durchhangelnBefehl 1.36Befehl 1.37Befehl 1.38Befehl 1.39. Der nächste Befehl sorgt dann dafür, das man auch im Chat angezeigt bekommt, wo sich gerade die beiden Zeiger aufhaltenBefehl 1.40. Jedoch muss man nicht nur die Zeiger erhöhen, sondern auch in den Feldern speichern, wo sie gerade sind, sonst kann man den Inhalt nicht abfragen, dazu wird nun bei jedem Feld der ersten Dimension den einen Vergleichswert erzeugen, der immer nur dann null sein kann, wenn sich dort der Zeiger aufhältBefehl 1.41Befehl 1.42. Anschließend muss das auch für die Felder der zweiten Dimension geschehen, dies ist etwas kniffliger, da man nur die Felder (2. D.) ansprechen will, die in einem bestimmten Feld (1. D.) sindBefehl 1.43Befehl 1.44. Dazu nutzt man den Umstand, das die erste Zeiger-Position bekannt ist (Vergl = 0) und sucht genau von diesem Feld aus die Felder der zweiten Dimension und hat dann das entsprechende Feld. Damit die Zeiger aber auch grafisch in der Welt angezeigt werden, werden bei den Feldern bestimmte Effekt abgespieltBefehl 1.19Befehl 1.20Befehl 1.45.

Nun kann man den Speicher-Wert, einem Feld übergeben und genau dort speichernBefehl 1.46Befehl 1.47. Jetzt ist man in der Lage den Wert eines bestimmten Feldes ausgeben zu lassenBefehl 1.48Befehl 1.49. Dazu wird eine Ausgabe-Variable mit dem Wert des gerade ausgewählten Feldes ausgestattet. Möchte man Werte aus den Feldern abfragen, dann kann man das über diese Variable tun. Wenn man die Felder ausschaltet, werden alle Punktestand-Ziele und alle Felder gelöschtBefehl 1.50Befehl 1.51Befehl 1.52Befehl 1.53Befehl 1.54



Befehlsblöcke mit Befehlen:



Variante 1: Start-Funktion

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

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

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

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

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 gepseichert 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 gepseichert 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

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

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

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-Nachtichen 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 veringerte 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-Nachtichen 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

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

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

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

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

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

# Das Feld der 2. Dimension ganz am Ende wird aus vom Feld der 1. Dimension wird 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

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]


Die dreidimensionale Felder sind nochmals um eine ganze Ecke komplizierter. Es werden jedoch nur genauso viele Punktestand-Ziele benötigt, wie bei den zweidimensionalen FeldernBefehl 2.1Befehl 2.2Befehl 2.3Befehl 2.4. Wenn man den Hebel an der Befehlsblocksäule umlegt, werden zuerst diese Punktestand-Ziele erstellt und im Anschluss das Startfeld, von dem aus alle anderen Felder erzeugt werdenBefehl 2.5. Gleichzeitig wird auch der Wiederhol-Befehlsblock aktiv, der die dreidimensionalen Felder durch die nachfolgenden Ketten-Befehlsblöcke erstellt, dazu weiter unten mehr. Zuerst muss noch die Größe der drei Dimensionen festgelegt werden, bevor diese erstellt werden können.


Befehlsblöcke mit Befehlen:



Variante 2: Start-Funktion

Editor Icon.png technik_wiki:direktzugriffsspeicher/vp1start.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

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.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

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/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

Editor Icon.png technik_wiki:direktzugriffsspeicher/vp1menü_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 gepseichert 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 gepseichert 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

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.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

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.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

Editor Icon.png technik_wiki:direktzugriffsspeicher/vp1menu_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

Editor Icon.png technik_wiki:direktzugriffsspeicher/vp1menu_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-Nachtichen 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 veringerte 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 veringerte 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-Nachtichen 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

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 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

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.2:"]
scoreboard players set #VarFeld.p2PositionAusgebenDimension1 PZFeld.p2Pos 0
function technik_wiki:direktzugriffsspeicher/vp2menu_werte_dimension_1


Variante 2: Menü-Werte-Dimension-1-Funktion

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.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

Editor Icon.png technik_wiki:direktzugriffsspeicher/vp1menu_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

Editor Icon.png technik_wiki:direktzugriffsspeicher/vp1menu_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

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.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

# 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 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

Editor Icon.png technik_wiki:direktzugriffsspeicher/vp1dimension_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

Editor Icon.png technik_wiki:direktzugriffsspeicher/vp1stopp.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