Gruppe: Schaltnetze |
mit Mechaniken |
mit Redstone |
mit Befehlen |
Verfügbar in: Redstone-Welt |
Hier: mehr Befehle |
Erweiterte Direktzugriffsspeicher ermöglichen das Speichern sowie das erneute Auslesen von Zahlenwerten in Objekten. Die zu speichernden Werte werden in sogenannte Felder (engl. Arrays) hinterlegt. Hierbei werden alle Werte die ein Feld speichert auch äußerlich angezeigt. Man kann die Felder in Form von Objekten sehen und welchen Wert sie gerade beinhalten.
Variante 1[]
Folgende Voraussetzungen werden benötigt: | |||
---|---|---|---|
|
Folgende Materialien werden benötigt: | |
---|---|
|
Dieser Speicher ist als eine einfache Felderreihe ausgelegt. Mit Hilfe einer Güterlore lässt sich die Anzahl der Felder dieser Felderreihe einstellen, man kann die aktuelle Feldposition steuern, sowie den Zahlenwert eines Feldes. Man kann dabei die Werte erhöhen oder verringern. Zu jeder Zeit lässt sich auch die Felderreihenlänge, die aktuelle Feldposition oder der aktuell gespeicherte Zahlenwert eines Feldes auslesen. Möchte man alle Werte der Felderreiche löschen, wählt man in der Güterlore den entsprechenden Slot aus. Auch kann man sich alle Felder mit Zahlenwert auf einmal ausgeben lassen um so eine Gesamtübersicht zu erhalten. Die Ausgaben erfolgen über Chat-Nachrichten.
- Einschalten
Man legt einfach den Hebel auf dem Wiederhol-Befehlsblock um und der Speicher wird eingeschaltet.
- Befehl 1.1 Die Funktion direktzugriffsspeicher:vp1start wird hierbei aktiviert.
- Wiederholen
Mit dem Wiederhol-Befehlsblock wird die Zyklus-Funktion ständig am laufen gehalten.
- Befehl 1.2 die Funktion direktzugriffsspeicher:vp1zyklus wird ständig aufgerufen, dabei wird die aktuelle Position vom Befehlsblock übernommen.
- Ausschalten
Wenn der Hebel wieder in Ausgangsstellung gelegt wird, aktiviert eine Redstone-Fackel den Befehlsblock, der die Stopp-Funktion aufruft.
- Befehl 1.3 Die Funktion direktzugriffsspeicher:vp1stopp wird geladen.
Befehlsblöcke mit Befehlen: |
|
Variante 1: Start-Funktion
Wenn die Start-Funktion geladen wird, werden die Punkte-Ziele und das Start-Feld erzeugt, welche für die Felderreihen von tragender Bedeutung sind.
direktzugriffsspeicher:vp1start.mcfunction
|
# Punkte-Ziele werden erstellt. scoreboard objectives add PZDiZS.p1Wert dummy ["Direktzugriffsspeicher.erweitert.1: ",{"text":"Feldwert","bold":true}] scoreboard objectives add PZDiZS.p1Pos dummy ["Direktzugriffsspeicher.erweitert.1: ",{"text":"Feldposition","bold":true}] # Eine Güterlore (Benutzeroberfläche) mit einer grünen Shulkerkiste wird als Startposition für die Felder gespawnt. summon minecraft:armor_stand ~ ~2 ~ {NoGravity:true,Small:true,Invisible:true,Marker:true,Tags:["EtiDiZS.p1Alle"],Passengers:[{id:"minecraft:chest_minecart",NoGravity:true,Invulnerable:true,CustomDisplayTile:true,DisplayOffset:6,DisplayState:{Name:"minecraft:lime_shulker_box"},CustomName:'{"text":"Optionen","color":"dark_purple","bold":true}',Tags:["EtiDiZS.p1Alle","EtiDiZS.p1GUI"]},{id:"minecraft:armor_stand",NoGravity:true,Small:true,Invisible:true,Tags:["EtiDiZS.p1Alle"],CustomNameVisible:true,CustomName:'{"text":"Optionen","color":"dark_purple","bold":true}'}]} # Der Güterlore werden die Punktestandswerte null gegeben, damit diese in den Funktionen abgefragt werden können. scoreboard players set @e[type=minecraft:chest_minecart,tag=EtiDiZS.p1GUI] PZDiZS.p1Pos 0 scoreboard players set @e[type=minecraft:chest_minecart,tag=EtiDiZS.p1GUI] PZDiZS.p1Wert 0 # Es wird eine Partikelwolke erzeugt, an deren Position ein Schild platziert wird, um den Wert der Felder in deren Anzeige-Namen speichern zu können. summon minecraft:area_effect_cloud ~ ~1 ~ {Duration:-1,Age:-2147483648,WaitTime:-2147483648,Particle:"minecraft:block minecraft:air",Tags:["EtiDiZS.p1Alle","EtiDiZS.p1Schild"]} execute at @e[type=minecraft:area_effect_cloud,tag=EtiDiZS.p1Schild] run setblock ~ ~ ~ minecraft:oak_sign[rotation=8] replace |
Variante 1: Zyklus-Funktion
Die Zyklus-Funktion hält die Felderreihe am laufen, in dem jeden Tick überprüft wurde, ob man in dem Auswahl-Menü eine bestimmte Option angeklickt hat. Darüberhinaus sorgt die Funktion dafür, dass das aktuell ausgewählte Feld seinen weißen Leuchteffekt sowie den Partikeleffekt erhält.
direktzugriffsspeicher:vp1zyklus.mcfunction
|
# Falls die Option Felder erzeugen angeklickt wurde, besitzt die Variable einen Wert ab eins oder höher, wenn dass der Fall ist, wird von der Güterlore der Gegenstand fürs "Feld hinzufügen" entfernt, sodass diese Option aktiviert wird. Damit der Spieler dies angezeigt bekommt, wird sein Wert auf eins gesetzt. execute if score #VarDiZS.p1FelderErzeugen PZDiZS.p1Wert matches 1.. as @e[type=minecraft:chest_minecart,tag=EtiDiZS.p1GUI,sort=nearest,limit=1] at @s store result score @p[distance=..5] PZDiZS.p1Pos run data remove entity @s Items[{Slot:3b}] # Die Anzahl der belegten Slots, in der schwebende Güterlore mit Shulkerkiste, wird ausgelesen und nur wenn sie nicht übereinstimmt, wird die Funktion geladen. execute as @e[type=minecraft:chest_minecart,tag=EtiDiZS.p1GUI,sort=nearest,limit=1] store result score @s PZDiZS.p1Wert run data get entity @s Items execute as @e[type=minecraft:chest_minecart,tag=EtiDiZS.p1GUI,sort=nearest,limit=1] unless entity @s[scores={PZDiZS.p1Wert=11}] at @s run function direktzugriffsspeicher:vp1menu # Das ausgewählte Feld erhält Leucht- und Partikeleffekte, um es sofort ausfindig machen zu können. execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p1Inhalt] unless score @s PZDiZS.p1Pos = #VarDiZS.p1AktuellePosition PZDiZS.p1Pos run effect clear @s minecraft:glowing execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p1Inhalt] if score @s PZDiZS.p1Pos = #VarDiZS.p1AktuellePosition PZDiZS.p1Pos run effect give @s minecraft:glowing 1 1 execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p1Inhalt] if score @s PZDiZS.p1Pos = #VarDiZS.p1AktuellePosition PZDiZS.p1Pos at @s run particle minecraft:block minecraft:lime_concrete ~ ~1.1 ~ 0 0 0 0.1 1 normal @a[distance=..25] |
Variante 1: Menü-Funktion
Die Menü-Funktion kann erkennen welcher Gegenstand fehlt, also welche Schaltfläche angeklickt wurde und ruft dann die entsprechende Funktion auf, die die Option beinhaltet.
Variante 1: Menü-Felder-Funktion
Die Menü-Felder-Funktion wird dafür eingesetzt, die eigentlichen Felder zu erzeugen. Hierbei kann man die Anzahl festlegen und zu jeder Zeit sich auch anzeigen lassen, wie viele Felder man angelegt hat.
Variante 1: Menü-Felder-Erzeugen-Funktion
Die Menü-Felder-Funktion ist dafür gedacht, alle vorhandenen Felder zu löschen und nochmal neu zu erzeugen. Das ist nur dafür gedacht um alle Felder auf einmal erscheinen zu lassen und um alle Werte der Felder auf null zurück zu setzen.
Variante 1: Menü-Position-Funktion
Die Menü-Position-Funktion speichert die Position des Zeigers. Jedes Feld muss angesteuert werden bevor man den Wert ändern kann, dazu wird der Zeiger benutzt, der immer das aktuelle Feld markiert, das gerade angesteuert wurde. Wenn man eine Positionsoption angeklickt hat, wird die Güterlore für die jeweilige Option ein Etikett besitzen.
Variante 1: Menü-Wert-Funktion
Die Menü-Wert-Funktion ermöglicht es einem Feld einen Wert zuzuweisen und auch auszulesen.
Variante 1: Menü-Werte-Funktion
Die Menü-Werte-Funktion arbeitet mit der Menü-Werte-Felder-Funktion zusammen und sorgt dafür, dass alle Felderwerte in einem Rutsch ausgegeben werden können.
Variante 1: Menü-Werte-Felder-Funktion
Die Menü-Werte-Felder-Funktion gibt pro Aufruf in dem aktuell ausgewählten Feld den gespeicherten Wert aus. Hierbei ruft sich die Funktion selbst solange auf, bis sie alle Werte der Felderreihe ausgegeben hat.
Variante 1: Stopp-Funktion
Die Stopp-Funktion beendet alles, in dem sie die Punkte-Ziele löscht und alle Felder entfernt.
direktzugriffsspeicher:vp1stopp.mcfunction
|
# Die Punkte-Ziele werden wieder entfernt. scoreboard objectives remove PZDiZS.p1Wert scoreboard objectives remove PZDiZS.p1Pos # Die Menü-Gegenstände werden aus dem Inventar aller Spieler entfernt. clear @a #direktzugriffsspeicher:vp1menu{EigDiZS.p1Alle:true} # Das Schild an der Position der Partikelwolke wird wieder entfernt. execute at @e[type=minecraft:area_effect_cloud,tag=EtiDiZS.p1Schild] run setblock ~ ~ ~ minecraft:air replace # Damit die Güterlore nichts droppt, wird sie geleert. data remove entity @e[type=minecraft:chest_minecart,tag=EtiDiZS.p1GUI,sort=nearest,limit=1] Items # Alle bisher erzeugten Felder werden gelöscht. tag @e[type=minecraft:item,nbt={Item:{tag:{EigDiZS.p1Alle:true} } }] add EtiDiZS.p1Alle kill @e[tag=EtiDiZS.p1Alle] |
Variante 2[]
Folgende Voraussetzungen werden benötigt: | |||
---|---|---|---|
|
Folgende Materialien werden benötigt: | |
---|---|
|
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.
- Befehl 2.1 Die Funktion direktzugriffsspeicher:vp2start wird hierbei aktiviert.
- Wiederholen
Der Wiederhol-Befehlsblock aktiviert die Zyklus-Funktion jeden Tick, sodass sie ständig ausgeführt wird.
- Befehl 2.2 die Funktion direktzugriffsspeicher:vp2zyklus wird ständig aufgerufen, dabei wird die aktuelle Position vom Befehlsblock übernommen.
- Ausschalten
Legt man den Hebel wieder um, so wird die Stopp-Funktion durch den Befehlsblock ausgelöst.
- Befehl 2.3 Die Funktion direktzugriffsspeicher:vp2stopp wird geladen.
Befehlsblöcke mit Befehlen: |
|
Variante 2: Start-Funktion
Wenn die Start-Funktion geladen wird, werden die Punkte-Ziele und die Güterlore erstellt.
direktzugriffsspeicher:vp2start.mcfunction
|
# Punkte-Ziele werden erstellt. scoreboard objectives add PZDiZS.p2Wert dummy ["Direktzugriffsspeicher.erweitert.2: ",{"text":"Feldwert","bold":true}] scoreboard objectives add PZDiZS.p2Pos dummy ["Direktzugriffsspeicher.erweitert.2: ",{"text":"Feld-Position","bold":true}] scoreboard objectives add PZDiZS.p2Felder dummy ["Direktzugriffsspeicher.erweitert.2: ",{"text":"Felder eines Feldes","bold":true}] # Eine Güterlore mit einer grünen Shulkerkiste wird als Startposition für die Felder gespawnt. summon minecraft:armor_stand ~ ~2 ~ {NoGravity:true,Small:true,Invisible:true,Marker:true,Tags:["EtiDiZS.p2Alle"],Passengers:[{id:"minecraft:chest_minecart",NoGravity:true,Invulnerable:true,CustomDisplayTile:true,DisplayOffset:6,DisplayState:{Name:"minecraft:lime_shulker_box"},CustomName:'{"text":"Optionen","color":"dark_purple","bold":true}',Tags:["EtiDiZS.p2Alle","EtiDiZS.p2GUI"]},{id:"minecraft:armor_stand",NoGravity:true,Small:true,Invisible:true,Tags:["EtiDiZS.p2Alle"],CustomNameVisible:true,CustomName:'{"text":"Optionen","color":"dark_purple","bold":true}'}]} # Der Güterlore werden die Punktestandswerte gegeben, damit diese in den Funktionen abgefragt werden können. scoreboard players set @e[type=minecraft:chest_minecart,tag=EtiDiZS.p2GUI] PZDiZS.p2Felder 0 scoreboard players set @e[type=minecraft:chest_minecart,tag=EtiDiZS.p2GUI] PZDiZS.p2Wert 0 # Es wird eine Partikelwolke erzeugt, an deren Position ein Schild platziert wird, um den Wert der Felder in deren Anzeige-Namen speichern zu können. summon minecraft:area_effect_cloud ~ ~1 ~ {Duration:-1,Age:-2147483648,WaitTime:-2147483648,Particle:"minecraft:block minecraft:air",Tags:["EtiDiZS.p2Alle","EtiDiZS.p2Schild"]} execute at @e[type=minecraft:area_effect_cloud,tag=EtiDiZS.p2Schild] run setblock ~ ~ ~ minecraft:oak_sign[rotation=8] replace |
Variante 2: Zyklus-Funktion
Die Zyklus-Funktion prüft ob in der Güterlore (Menü) Gegenstände entnommen wurden und startet daraufhin dann die Menü-Funktion. Gleichzeitig werden auch alle Felder mit dem Leucht- und Partikeleffekt ausgestattet, die gerade durch das Menü ausgewählt wurden.
direktzugriffsspeicher:vp2zyklus.mcfunction
|
# Falls die Option Felder erzeugen angeklickt wurde, besitzt die Variable einen Wert ab eins oder höher, wenn dass der Fall ist, wird von der Güterlore der Gegenstand fürs "Feld hinzufügen" entfernt, sodass diese Option aktiviert wird. Damit der Spieler dies angezeigt bekommt, wird sein Wert auf eins gesetzt. execute if score #VarDiZS.p2FelderErzeugen PZDiZS.p2Felder matches 1.. as @e[type=minecraft:chest_minecart,tag=EtiDiZS.p2GUI,sort=nearest,limit=1] at @s store result score @p[distance=..5] PZDiZS.p2Pos run data remove entity @s Items[{Slot:2b}] # Die Anzahl der belegten Slots, in der schwebende Güterlore mit Shulkerkiste, wird ausgelesen und nur wenn sie nicht übereinstimmt, wird die Funktion geladen. execute as @e[type=minecraft:chest_minecart,tag=EtiDiZS.p2GUI,sort=nearest,limit=1] store result score @s PZDiZS.p2Wert run data get entity @s Items execute as @e[type=minecraft:chest_minecart,tag=EtiDiZS.p2GUI,sort=nearest,limit=1] unless entity @s[scores={PZDiZS.p2Wert=14}] at @s run function direktzugriffsspeicher:vp2menu # Von der Güterlore aus, werden in einem Radius von maximal 128 Blöcken, alle Felder der ersten Dimension ausgewählt und geprüft ob sie noch Felder beantragen, falls ja wird die Funktion für die zweite Dimension aufgerufen. execute at @e[type=minecraft:chest_minecart,tag=EtiDiZS.p2GUI,sort=nearest,limit=1] as @e[distance=..128,sort=nearest,type=minecraft:armor_stand,tag=EtiDiZS.p2FeldDimension1,tag=EtiDiZS.p2Dimensionen] unless score @s PZDiZS.p2Felder matches 0 at @s run function direktzugriffsspeicher:vp2dimension_2 # Alle Felder bekommen den Leuchteffekt entfernt. effect clear @e[tag=EtiDiZS.p2Dimensionen] minecraft:glowing # Das ausgewählte Feld der ersten Dimension erhält Leucht- und Partikeleffekte, um es sofort ausfindig machen zu können. execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p2FeldDimension1] if score @s PZDiZS.p2Pos = #VarDiZS.p2AktuellePositionDimension1 PZDiZS.p2Pos run effect give @s minecraft:glowing 1 1 execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p2FeldDimension1] if score @s PZDiZS.p2Pos = #VarDiZS.p2AktuellePositionDimension1 PZDiZS.p2Pos at @s run particle minecraft:block minecraft:lime_concrete ~ ~1.1 ~ 0 0 0 0.1 1 normal @a[distance=..25] # Das ausgewählte Feld der zweiten Dimension erhält Leucht- und Partikeleffekte, um es sofort ausfindig machen zu können. execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p2FeldDimension1] if score @s PZDiZS.p2Pos = #VarDiZS.p2AktuellePositionDimension1 PZDiZS.p2Pos at @s align xyz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p2Inhalt] if score @s PZDiZS.p2Pos = #VarDiZS.p2AktuellePositionDimension2 PZDiZS.p2Pos run effect give @s minecraft:glowing 1 1 execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p2FeldDimension1] if score @s PZDiZS.p2Pos = #VarDiZS.p2AktuellePositionDimension1 PZDiZS.p2Pos at @s align xyz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p2Inhalt] if score @s PZDiZS.p2Pos = #VarDiZS.p2AktuellePositionDimension2 PZDiZS.p2Pos at @s run particle minecraft:block minecraft:red_concrete ~ ~1.1 ~ 0 0 0 0.1 1 normal @a[distance=..25] |
Variante 2: Menü-Funktion
Die Menü-Funktion schaut nach welcher Gegenstand aus dem Inventar der Güterlore genommen wurde und ruft daraufhin dann die entsprechenden Options-Funktionen auf und löscht vom Spieler diese entnommenen Gegenstände.
Variante 2: Menü-Feld-Dimension-1-Funktion
Die Menü-Feld-Dimension-1-Funktion sorgt dafür, dass neue Felder der ersten Dimension erzeugt werden, dass die Feldanzahl ausgegeben wird oder dass die Feldanzahl verringert wird.
Variante 2: Menü-Feld-Dimension-2-Funktion
Die Menü-Feld-Dimension-2-Funktion sorgt dafür, dass neue Felder der zweiten Dimension erzeugt werden, die Feldanzahl ausgegeben wird oder dass die feldanzahl verringert wird.
Variante 2: Menü-Felder-Erzeugen-Funktion
Die Menü-Felder-Erzeugen-Funktion löscht alle vorhandenen Felder, um sie dann wieder erneut zu erzeugen. Dabei wird der Punktestand der Güterlore in die Variable für die Anzahl der zu erzeugenden Felder gespeichert.
Variante 2: Menü-Position-Funktion
Die Menü-Position-Funktion erlaubt es die aktuelle Position um eins zu erhöhen, die aktuelle Position auszulesen oder die aktuelle Position um eins zu verringern.
Variante 2: Menü-Wert-Funktion
Die Menü-Wert-Funktion sorgt dafür, dass man den Wert an der aktuellen Position um eins erhöhen kann, den Wert auslesen kann oder den Wert um eins an der aktuellen Position verringern kann.
Variante 2: Menü-Werte-Funktion
Die Menü-Werte-Funktion erlaubt es, alle Werte aller Felder auszugeben, in dem sie mit Selbstaufrufen die Menü-Werte-Dimension-1-Funktion aufruft.
Variante 2: Menü-Werte-Dimension-1-Funktion
Die Menü-Werte-Dimension-1-Funktion ruft die Menü-Werte-Dimension-2-Funktion wie sich selbst auf und erhöht dabei die Position der ersten Dimension um eins.
Variante 2: Menü-Werte-Dimension-2-Funktion
Die Menü-Werte-Dimension-2-Funktion macht die gesamte Arbeit und gibt einen Wert pro Aufruf aus, wobei sie sich selbst um eine Position erhöht aufruft, solange sie nicht am Ende angelangt ist.
Variante 2: Dimension-2-Funktion
Die Dimension-2-Funktion erzeugt eine neues Feld, wenn der Wert eins oder höher ist und es wird ein Feld der zweiten Dimension gelöscht, wenn der Wert minus eins oder kleiner ist.
direktzugriffsspeicher:vp2dimension_2.mcfunction
|
# Alle vorhandenen Felder werden um einen Block nach oben teleportiert. execute if entity @s[scores={PZDiZS.p2Felder=1..}] align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p2Alle,tag=EtiDiZS.p2Inhalt] at @s run teleport @s ^1 ^ ^ # Ein neues Feld in Form eines Rüstungsständer mit einer Shulkerkiste wird über dem Hauptfeld gespawnt und alle Felder bekommen ihre Position um eins erhöht. execute if entity @s[scores={PZDiZS.p2Felder=1..}] run summon minecraft:armor_stand ^1 ^ ^ {NoGravity:true,Small:true,Invisible:true,Marker:true,CustomNameVisible:true,CustomName:'{"text":"0","color":"dark_purple","bold":true}',Tags:["EtiDiZS.p2Alle","EtiDiZS.p2Inhalt","EtiDiZS.p2Dimensionen"],ArmorItems:[{},{},{},{id:"minecraft:chest",Count:1b} ] } scoreboard players add @e[type=minecraft:armor_stand,tag=EtiDiZS.p2Inhalt] PZDiZS.p2Wert 0 execute if entity @s[scores={PZDiZS.p2Felder=1..}] align xz positioned ~-0.2 ~-0.5 ~-0.2 run scoreboard players add @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p2Inhalt] PZDiZS.p2Pos 1 execute if entity @s[scores={PZDiZS.p2Felder=1..}] run scoreboard players remove @s PZDiZS.p2Felder 1 # Von dem Feld der 2. Dimension aus, wird ganz am Ende das letzte Feld der 1. Dimension gelöscht. execute if entity @s[scores={PZDiZS.p2Felder=..-1}] align xz positioned ~-0.2 ~-0.5 ~-0.2 run kill @e[dx=64,dy=0.4,dz=0.4,sort=furthest,limit=1,type=minecraft:armor_stand,tag=EtiDiZS.p2Alle,tag=EtiDiZS.p2Inhalt] execute if entity @s[scores={PZDiZS.p2Felder=..-1}] run scoreboard players add @s PZDiZS.p2Felder 1 |
Variante 2: Stopp-Funktion
Die Stopp-Funktion löscht alle Punkte-Ziele, sowie alle Felder und die Güterlore.
direktzugriffsspeicher:vp2stopp.mcfunction
|
# Die Punkte-Ziele werden wieder entfernt. scoreboard objectives remove PZDiZS.p2Wert scoreboard objectives remove PZDiZS.p2Pos scoreboard objectives remove PZDiZS.p2Felder # Die Menü-Gegenstände werden aus dem Inventar aller Spieler entfernt. clear @a #direktzugriffsspeicher:vp2menu{EigDiZS.p2Alle:true} # Das Schild an der Position der Partikelwolke wird wieder entfernt. execute at @e[type=minecraft:area_effect_cloud,tag=EtiDiZS.p2Schild] run setblock ~ ~ ~ minecraft:air replace # Damit die Güterlore nichts droppt, wird sie geleert. data remove entity @e[type=minecraft:chest_minecart,tag=EtiDiZS.p2GUI,sort=nearest,limit=1] Items # Alle bisher erzeugten Felder werden gelöscht. tag @e[type=minecraft:item,nbt={Item:{tag:{EigDiZS.p2Alle:true} } }] add EtiDiZS.p2Alle kill @e[tag=EtiDiZS.p2Alle] |
Variante 3[]
Folgende Voraussetzungen werden benötigt: | |||
---|---|---|---|
|
Folgende Materialien werden benötigt: | |
---|---|
|
Mit diesem erweiterten Direktzugriffsspeicher werden dreidimensionale Felderreihen erstellt. Mit der schwebenden Güterlore als Menü, kann man die Feld-Anzahl, die aktuelle Position und alle Werte festlegen. Die verschiedenen Optionen ermöglichen sämtliche Einstellungen vorzunehmen und man kann sich auch alle gespeicherten Werte der dreidimensionalen Felder ausgeben lassen.
- Einschalten
Wenn man den Hebel auf dem Wiederhol-Befehlsblock umlegt wird auch der Befehlsblock aktiviert, welcher die Start-Funktion auslöst.
- Befehl 3.1 Die Funktion direktzugriffsspeicher:vp3start wird hierbei aktiviert.
- Wiederholen
Der Wiederhol-Befehlsblock aktiviert die Zyklus-Funktion jeden Tick, sodass sie ständig ausgeführt wird.
- Befehl 3.2 die Funktion direktzugriffsspeicher:vp3zyklus wird ständig aufgerufen, dabei wird die aktuelle Position vom Befehlsblock übernommen.
- Ausschalten
Legt man den Hebel wieder um, so wird die Stopp-Funktion durch den Befehlsblock ausgelöst.
- Befehl 3.3 Die Funktion direktzugriffsspeicher:vp3stopp wird geladen.
Befehlsblöcke mit Befehlen: |
|
Variante 3: Start-Funktion
Die Start-Funktion erstellt alle Punkte-Ziele für die Werte, die Position und die Feldanzahl der jeweiligen Dimension, sowie die Güterlore die als Menü funktioniert.
direktzugriffsspeicher:vp3start.mcfunction
|
# Punkte-Ziele werden erstellt. scoreboard objectives add PZDiZS.p3Wert dummy ["Direktzugriffsspeicher.erweitert.3: ",{"text":"Feldwert","bold":true}] scoreboard objectives add PZDiZS.p3Pos dummy ["Direktzugriffsspeicher.erweitert.3: ",{"text":"Feld-Position","bold":true}] scoreboard objectives add PZDiZS.p3Felder dummy ["Direktzugriffsspeicher.erweitert.3: ",{"text":"Felder eines Feldes","bold":true}] # Eine Güterlore mit einer grünen Shulkerkiste wird als Startposition für die Felder gespawnt. summon minecraft:armor_stand ~ ~2 ~ {NoGravity:true,Small:true,Invisible:true,Marker:true,Tags:["EtiDiZS.p3Alle"],Passengers:[{id:"minecraft:chest_minecart",NoGravity:true,Invulnerable:true,CustomDisplayTile:true,DisplayOffset:6,DisplayState:{Name:"minecraft:lime_shulker_box"},CustomName:'{"text":"Optionen","color":"dark_purple","bold":true}',Tags:["EtiDiZS.p3Alle","EtiDiZS.p3GUI"]},{id:"minecraft:armor_stand",NoGravity:true,Small:true,Invisible:true,Tags:["EtiDiZS.p3Alle"],CustomNameVisible:true,CustomName:'{"text":"Optionen","color":"dark_purple","bold":true}'}]} # Der Güterlore werden die Punktestandswerte gegeben, damit diese in den Funktionen abgefragt werden können. scoreboard players set @e[type=minecraft:chest_minecart,tag=EtiDiZS.p3GUI] PZDiZS.p3Felder 0 scoreboard players set @e[type=minecraft:chest_minecart,tag=EtiDiZS.p3GUI] PZDiZS.p3Wert 0 # Es wird eine Partikelwolke erzeugt, an deren Position ein Schild platziert wird, um den Wert der Felder in deren Anzeige-Namen speichern zu können. summon minecraft:area_effect_cloud ~ ~1 ~ {Duration:-1,Age:-2147483648,WaitTime:-2147483648,Particle:"minecraft:block minecraft:air",Tags:["EtiDiZS.p3Alle","EtiDiZS.p3Schild"]} execute at @e[type=minecraft:area_effect_cloud,tag=EtiDiZS.p3Schild] run setblock ~ ~ ~ minecraft:oak_sign[rotation=8] replace |
Variante 3: Zyklus-Funktion
Die Zyklus-Funktion prüft ob in der Güterlore Gegenstände rausgenommen wurden, welche dann die Menü-Funktion auslöst um genau die Option aufzurufen die mit dem fehlenden Gegenstand ausgelöst wurde. Es werden auch Leucht- und Partikeleffekte durch diese Funktion gesteuert.
direktzugriffsspeicher:vp3zyklus.mcfunction
|
# Falls die Option Felder erzeugen angeklickt wurde, besitzt die Variable einen Wert ab eins oder höher, wenn dass der Fall ist, wird von der Güterlore der Gegenstand fürs "Feld hinzufügen" entfernt, sodass diese Option aktiviert wird. Damit der Spieler dies angezeigt bekommt, wird sein Wert auf eins gesetzt. execute if score #VarDiZS.p3FelderErzeugen PZDiZS.p3Felder matches 1.. as @e[type=minecraft:chest_minecart,tag=EtiDiZS.p3GUI,sort=nearest,limit=1] at @s store result score @p[distance=..5] PZDiZS.p3Pos run data remove entity @s Items[{Slot:2b}] # Die Anzahl der belegten Slots, in der schwebende Güterlore mit Shulkerkiste, wird ausgelesen und nur wenn sie nicht übereinstimmt, wird die Funktion geladen. execute as @e[type=minecraft:chest_minecart,tag=EtiDiZS.p3GUI,sort=nearest,limit=1] store result score @s PZDiZS.p3Wert run data get entity @s Items execute as @e[type=minecraft:chest_minecart,tag=EtiDiZS.p3GUI,sort=nearest,limit=1] unless entity @s[scores={PZDiZS.p3Wert=17}] at @s run function direktzugriffsspeicher:vp3menu # Von der Güterlore aus, werden in einem Radius von maximal 128 Blöcken, alle Felder der ersten Dimension ausgewählt und geprüft ob sie noch Felder beantragen, falls ja wird die Funktion für die zweite und dritten Dimension aufgerufen. execute at @e[type=minecraft:chest_minecart,tag=EtiDiZS.p3GUI,sort=nearest,limit=1] as @e[distance=..128,sort=nearest,type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1,tag=EtiDiZS.p3Dimensionen] unless score @s PZDiZS.p3Felder matches 0 at @s run function direktzugriffsspeicher:vp3dimension_2 execute at @e[type=minecraft:chest_minecart,tag=EtiDiZS.p3GUI,sort=nearest,limit=1] as @e[distance=..128,sort=nearest,type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension2,tag=EtiDiZS.p3Dimensionen] unless score @s PZDiZS.p3Felder matches 0 at @s run function direktzugriffsspeicher:vp3dimension_3 # Alle Felder bekommen den Leuchteffekt entfernt. effect clear @e[tag=EtiDiZS.p3Dimensionen] minecraft:glowing # Das ausgewählte Feld der ersten Dimension erhält Leucht- und Partikeleffekte, um es sofort ausfindig machen zu können. execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension1 PZDiZS.p3Pos run effect give @s minecraft:glowing 1 1 execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension1 PZDiZS.p3Pos at @s run particle minecraft:block minecraft:lime_concrete ~ ~1.1 ~ 0 0 0 0.1 1 normal @a[distance=..25] # Das ausgewählte Feld der zweiten Dimension erhält Leucht- und Partikeleffekte, um es sofort ausfindig machen zu können. execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension1 PZDiZS.p3Pos at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension2] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension2 PZDiZS.p3Pos run effect give @s minecraft:glowing 1 1 execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension1 PZDiZS.p3Pos at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension2] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension2 PZDiZS.p3Pos at @s run particle minecraft:block minecraft:red_concrete ~ ~1.1 ~ 0 0 0 0.1 1 normal @a[distance=..25] # Das ausgewählte Feld der dritten Dimension erhält Leucht- und Partikeleffekte, um es sofort ausfindig machen zu können. execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension1 PZDiZS.p3Pos at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension2] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension2 PZDiZS.p3Pos at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=0.4,dy=0.4,dz=64,type=minecraft:armor_stand,tag=EtiDiZS.p3Inhalt] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos run effect give @s minecraft:glowing 1 1 execute as @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension1 PZDiZS.p3Pos at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension2] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension2 PZDiZS.p3Pos at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=0.4,dy=0.4,dz=64,type=minecraft:armor_stand,tag=EtiDiZS.p3Inhalt] if score @s PZDiZS.p3Pos = #VarDiZS.p3AktuellePositionDimension3 PZDiZS.p3Pos at @s run particle minecraft:block minecraft:blue_concrete ~ ~1.1 ~ 0 0 0 0.1 1 normal @a[distance=..25] |
Variante 3: Menü-Funktion
Die Menü-Funktion entfernt alle Gegenstände aus dem Inventar des Spielers die als Options-Gegenstand in der Güterlore vorhanden sind und prüft nach welcher spezielle Gegenstand genau heruasgenommen wurde. Je nach Gegenstand wird dann die entsprechende Menü-Funktion aufgerufen.
Variante 3: Menü-Feld-Dimension-1-Funktion
Die Menü-Feld-Dimension-1-Funktion erzeugt neue Felder, gibt die aktuelle Feldanzahl aus oder löscht ein Feld wieder.
direktzugriffsspeicher:vp3menü_feld_dimension_1.mcfunction
|
# Alle vorhandenen Felder werden um einen Block nach oben teleportiert. execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Anheben,scores={PZDiZS.p3Felder=..63}] as @e[type=minecraft:armor_stand,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3Dimensionen] at @s run teleport @s ~ ~1 ~ # Ein neues Feld in Form eines Rüstungsständer mit einer Shulkerkiste wird über dem Hauptfeld gespawnt und alle Felder bekommen ihre Position um eins erhöht. execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Anheben,scores={PZDiZS.p3Felder=..63}] run summon minecraft:armor_stand ~ ~1.5 ~ {NoGravity:true,Small:true,Invisible:true,Marker:true,Tags:["EtiDiZS.p3Alle","EtiDiZS.p3Dimensionen","EtiDiZS.p3FeldDimension1","EtiDiZS.p3Dimension2Erhalten"],ArmorItems:[{},{},{},{id:"minecraft:red_shulker_box",Count:1b} ] } execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Anheben,scores={PZDiZS.p3Felder=..63}] run scoreboard players add @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1] PZDiZS.p3Pos 1 execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Anheben,scores={PZDiZS.p3Felder=..63}] run scoreboard players operation @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1,tag=EtiDiZS.p3Dimension2Erhalten] PZDiZS.p3Felder = #VarDiZS.p3Dimension2 PZDiZS.p3Felder tag @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1,tag=EtiDiZS.p3Dimension2Erhalten] remove EtiDiZS.p3Dimension2Erhalten # Danach wird die neue Anzahl der Felder als Wert in der Güterlore gespeichert, welche somit immer die aktuelle Anzahl ihrer Felder gespeichert hat. execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Anheben] at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 store result score @s PZDiZS.p3Felder if entity @e[dx=0.4,dy=64,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1] execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Anheben,scores={PZDiZS.p3Felder=..63}] unless score #VarDiZS.p3FelderErzeugen PZDiZS.p3Felder matches 1.. run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.3:\n",{"text":"Feld.Länge + 1 = neues Feld[","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p3Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3Dimension2","objective":"PZDiZS.p3Felder"},"bold":true,"color":"red"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3Dimension3","objective":"PZDiZS.p3Felder"},"bold":true,"color":"blue"},{"text":"]","bold":true} ] # Die aktuelle Position wird um eins erhöht. execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Anheben,scores={PZDiZS.p3Felder=..63}] unless score #VarDiZS.p3FelderErzeugen PZDiZS.p3Felder matches 1.. run scoreboard players add #VarDiZS.p3AktuellePositionDimension1 PZDiZS.p3Pos 1 # Verringert den Wert der Variable um eins, falls sie mindestens noch den Wert eins hat. execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Anheben,scores={PZDiZS.p3Felder=..63}] if score #VarDiZS.p3FelderErzeugen PZDiZS.p3Felder matches 1.. run scoreboard players remove #VarDiZS.p3FelderErzeugen PZDiZS.p3Felder 1 # Die aktuelle Feldanzahl wird ausgegeben. execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Ausgeben] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.3:\n",{"text":"Feld.Länge == ","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p3Felder"},"bold":true,"color":"green"} ] # Das oberste Feld mit seinen Feldern wird zusammen gelöscht. execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Verringern,scores={PZDiZS.p3Felder=1..}] as @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1,sort=furthest,limit=1] at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,tag=EtiDiZS.p3FeldDimension2,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3Dimensionen] at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 run kill @e[dx=0.4,dy=0.4,dz=64,type=minecraft:armor_stand,tag=EtiDiZS.p3Inhalt] execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Verringern,scores={PZDiZS.p3Felder=1..}] as @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1,sort=furthest,limit=1] at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 run kill @e[dx=64,dy=0.4,dz=0.4,tag=EtiDiZS.p3FeldDimension2,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3Dimensionen] execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Verringern,scores={PZDiZS.p3Felder=1..}] run kill @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1,sort=furthest,limit=1] # Danach wird die neue Anzahl Felder als Punktestand in der Güterlore gespeichert, welche somit immer die aktuelle Anzahl ihrer Felder gespeichert hat. execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Verringern] store result score @s PZDiZS.p3Felder if entity @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension1] execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Verringern] run tellraw @a[distance=..25] ["Direktzugriffsspeicher.erweitert.3:\n",{"text":"Feld.Länge - 1 = neues Feld[","bold":true},{"score":{"name":"@s","objective":"PZDiZS.p3Felder"},"bold":true,"color":"green"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3Dimension2","objective":"PZDiZS.p3Felder"},"bold":true,"color":"red"},{"text":"][","bold":true},{"score":{"name":"#VarDiZS.p3Dimension3","objective":"PZDiZS.p3Felder"},"bold":true,"color":"blue"},{"text":"]","bold":true} ] # Falls die aktuelle ausgewählte Position das gelöschte Feld war, wird die aktuelle Position auf das nächst niedrigere Feld gesetzt. execute if entity @s[tag=EtiDiZS.p3FeldAnzahlDimension1Verringern] if score #VarDiZS.p3AktuellePositionDimension1 PZDiZS.p3Pos > @s PZDiZS.p3Felder run scoreboard players remove #VarDiZS.p3AktuellePositionDimension1 PZDiZS.p3Pos 1 |
Variante 3: Menü-Felder-Erzeugen-Funktion
Die Menü-Felder-Erzeugen-Funktion löscht erst alle Felder und anschließend wird der Wert der zu erzeugenden Felder aus der Güterlore in die entsprechende Variable gespeichert.
Variante 3: Menü-Feld-Dimension-2-Funktion
Die Menü-Feld-Dimension-2-Funktion erhöht den Punktestand der Feldanzahl der ersten Dimension um eins, sodass eine andere Funktion ein Feld für die zweite Dimension erstellt. Sie kann auch die aktuelle Feldanzahl der zweiten Dimension ausgeben oder auch verringern.
Variante 3: Menü-Feld-Dimension-3-Funktion
Die Menü-Feld-Dimension-3-Funktion erhöht die Feldanzahl der dritten Dimension, in dem der Feldanzahl-Wert in das Feld der zweiten Dimension gespeichert wird und dann wird eine andere Funktion aufgerufen um die Felder zu erzeugen. Es kann auch die aktuelle Feldanzahl der dritten Dimension ausgegeben werden oder auch verringert werden.
Variante 3: Menü-Position-Funktion
Die Menü-Position-Funktion erhöht die aktuelle Position, gibt sie aus oder verringert sie. Falls man über die maximale Anzahl der Felder gelangt, fängt es wieder bei ersten Feld von vorne an und umgekehrt, wenn man tiefer als das erste Feld gehen möchte geht es beim letzten Feld weiter.
Variante 3: Menü-Wert-Funktion
Die Menü-Wert-Funktion erhöht den Wert des Feldes an der aktuellen Position, gibt ihn aus oder verringert ihn um eins.
Variante 3: Menü-Werte-Funktion
Die Menü-werte-Funktion gibt am Ende alle Werte aller Felder aus. Dabei setzt diese die Start-Position auf null und ruft dann die Menü-Werte-Dimension-1-Funktion auf, welche wiederum die der zweiten und dritten Dimension aufruft, welche dann jeweils die Feldwerte ausgeben.
Variante 3: Menü-Werte-Dimension-1-Funktion
Die Menü-Werte-Dimension-1-Funktion erhöht die aktuelle Position der ersten Dimension um eins und ruft dann die Menü-Werte-Dimension-2-Funktion für die zweite Dimension auf und ruft anschließend sich selbst auf.
Variante 3: Menü-Werte-Dimension-2-Funktion
Die Menü-Werte-Dimension-2-Funktion erhöht die aktuelle Position der zweiten Dimension um eins und ruft anschließend die Menü-Werte-Dimension-3-Funktion für die dritte Dimension auf, die die gesamte Arbeit macht und jedes einzelne Feld ausgibt, anschließend ruft sie sich selbst auf, solange sie noch nicht am Ende angekommen ist.
Variante 3: Menü-Werte-Dimension-3-Funktion
Die Menü-Werte-Dimension-3-Funktion gibt an der aktuellen Position den Feldwert aus und erhöht anschließend die aktuelle Position der dritten Dimension um anschließend sich selbst aufzurufen, solange nicht die letzte Position überschritten ist.
Variante 3: Dimension-2-Funktion
Die Dimension-2-Funktion erzeugt neue Felder wenn der Felder-Wert eins oder größer ist und löscht Felder, wenn der wert minus eins oder kleiner ist.
direktzugriffsspeicher:vp3dimension_2.mcfunction
|
# Alle vorhandenen Felder werden um einen Block nach oben teleportiert. execute if entity @s[scores={PZDiZS.p3Felder=1..}] align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3FeldDimension2] at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=0.4,dy=0.4,dz=64,type=minecraft:armor_stand,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3Inhalt] at @s run teleport @s ^1 ^ ^ execute if entity @s[scores={PZDiZS.p3Felder=1..}] align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3FeldDimension2] at @s run teleport @s ^1 ^ ^ # Ein neues Feld in Form eines Rüstungsständer mit einer Shulkerkiste wird über dem Hauptfeld gespawnt und alle Felder bekommen ihre Position um eins erhöht. execute if entity @s[scores={PZDiZS.p3Felder=1..}] run summon minecraft:armor_stand ^1 ^ ^ {NoGravity:true,Small:true,Invisible:true,Marker:true,Tags:["EtiDiZS.p3Alle","EtiDiZS.p3Dimensionen","EtiDiZS.p3FeldDimension2","EtiDiZS.p3Dimension3Erhalten"],ArmorItems:[{},{},{},{id:"minecraft:blue_shulker_box",Count:1b} ] } execute if entity @s[scores={PZDiZS.p3Felder=1..}] align xz positioned ~-0.2 ~-0.5 ~-0.2 run scoreboard players add @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension2] PZDiZS.p3Pos 1 execute if entity @s[scores={PZDiZS.p3Felder=1..}] align xz positioned ~-0.2 ~-0.5 ~-0.2 run scoreboard players operation @e[dx=64,dy=0.4,dz=0.4,type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension2,tag=EtiDiZS.p3Dimension3Erhalten] PZDiZS.p3Felder = #VarDiZS.p3Dimension3 PZDiZS.p3Felder tag @e[type=minecraft:armor_stand,tag=EtiDiZS.p3FeldDimension2,tag=EtiDiZS.p3Dimension3Erhalten] remove EtiDiZS.p3Dimension3Erhalten execute if entity @s[scores={PZDiZS.p3Felder=1..}] run scoreboard players remove @s PZDiZS.p3Felder 1 # Von dem Feld der 2. Dimension aus, wird ganz am Ende das letzte Feld der 1. Dimension gelöscht. execute if entity @s[scores={PZDiZS.p3Felder=..-1}] align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=64,dy=0.4,dz=0.4,sort=furthest,limit=1,type=minecraft:armor_stand,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3FeldDimension2] at @s align xz positioned ~-0.2 ~-0.5 ~-0.2 run kill @e[dx=0.4,dy=0.4,dz=64,type=minecraft:armor_stand,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3Inhalt] execute if entity @s[scores={PZDiZS.p3Felder=..-1}] align xz positioned ~-0.2 ~-0.5 ~-0.2 run kill @e[dx=64,dy=0.4,dz=0.4,sort=furthest,limit=1,type=minecraft:armor_stand,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3FeldDimension2] execute if entity @s[scores={PZDiZS.p3Felder=..-1}] run scoreboard players add @s PZDiZS.p3Felder 1 |
Variante 3: Dimension-3-Funktion
Die Dimension-3-Funktion erstellt neue Felder wenn der Felder-Wert eins oder größer ist und löscht Felder wenn der wert minus eins oder kleiner ist.
direktzugriffsspeicher:vp3dimension_3.mcfunction
|
# Alle vorhandenen Felder werden um einen Block nach oben teleportiert. execute if entity @s[scores={PZDiZS.p3Felder=1..}] align xz positioned ~-0.2 ~-0.5 ~-0.2 as @e[dx=0.4,dy=0.4,dz=64,type=minecraft:armor_stand,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3Inhalt] at @s run teleport @s ^ ^ ^1 # Ein neues Feld in Form eines Rüstungsständer mit einer Shulkerkiste wird über dem Hauptfeld gespawnt und alle Felder bekommen ihre Position um eins erhöht. execute if entity @s[scores={PZDiZS.p3Felder=1..}] run summon minecraft:armor_stand ^ ^ ^1 {NoGravity:true,Small:true,Invisible:true,Marker:true,CustomNameVisible:true,CustomName:'{"text":"0","color":"dark_purple","bold":true}',Tags:["EtiDiZS.p3Alle","EtiDiZS.p3Dimensionen","EtiDiZS.p3Inhalt"],ArmorItems:[{},{},{},{id:"minecraft:chest",Count:1b} ] } scoreboard players add @e[type=minecraft:armor_stand,tag=EtiDiZS.p3Inhalt] PZDiZS.p3Wert 0 execute if entity @s[scores={PZDiZS.p3Felder=1..}] align xz positioned ~-0.2 ~-0.5 ~-0.2 run scoreboard players add @e[dx=0.4,dy=0.4,dz=64,type=minecraft:armor_stand,tag=EtiDiZS.p3Inhalt] PZDiZS.p3Pos 1 execute if entity @s[scores={PZDiZS.p3Felder=1..}] run scoreboard players remove @s PZDiZS.p3Felder 1 # Das Feld der 2. Dimension ganz am Ende wird aus vom Feld der 1. Dimension wird gelöscht. execute if entity @s[scores={PZDiZS.p3Felder=..-1}] align xz positioned ~-0.2 ~-0.5 ~-0.2 run kill @e[dx=0.4,dy=0.4,dz=64,sort=furthest,limit=1,type=minecraft:armor_stand,tag=EtiDiZS.p3Alle,tag=EtiDiZS.p3Inhalt] execute if entity @s[scores={PZDiZS.p3Felder=..-1}] run scoreboard players add @s PZDiZS.p3Felder 1 |
Variante 3: Stopp-Funktion
Die Stopp-Funktion löscht alle Punkte-Ziele wieder und leert die Güterlore und danach werden alle Felder samt der Güterlore gelöscht.
direktzugriffsspeicher:vp3stopp.mcfunction
|
# Die Punkte-Ziele werden wieder entfernt. scoreboard objectives remove PZDiZS.p3Wert scoreboard objectives remove PZDiZS.p3Pos scoreboard objectives remove PZDiZS.p3Felder # Die Menü-Gegenstände werden aus dem Inventar aller Spieler entfernt. clear @a #direktzugriffsspeicher:vp3menu{EigDiZS.p3Alle:true} # Das Schild an der Position der Partikelwolke wird wieder entfernt. execute at @e[type=minecraft:area_effect_cloud,tag=EtiDiZS.p3Schild] run setblock ~ ~ ~ minecraft:air replace # Damit die Güterlore nichts droppt, wird sie geleert. data remove entity @e[type=minecraft:chest_minecart,tag=EtiDiZS.p3GUI,sort=nearest,limit=1] Items # Alle bisher erzeugten Felder werden gelöscht. tag @e[type=minecraft:item,nbt={Item:{tag:{EigDiZS.p3Alle:true} } }] add EtiDiZS.p3Alle kill @e[tag=EtiDiZS.p3Alle] |
|
Zähler => Redstone (erweitert), Befehle; Halbaddierer => Redstone; Volladdierer => Redstone; Halbsubtrahierer => Redstone; Vollsubtrahierer => Redstone; Bitschieber => Redstone; Kodierer und Dekodierer => Redstone, Befehle; Zahlen-Anzeige => Redstone; Vergleicher => Redstone, Befehle; Abzweig-Konstrukt => Befehle; Schleifen-Konstrukt => Befehle; Nur-Lese-Speicher => Redstone (erweitert); Direktzugriffsspeicher => Redstone, Befehle (erweitert); |
|