Technik:Konstruktionsgerüst (Befehle)
Gruppe: Anlagen |
mit Mechaniken |
mit Redstone |
Hier: mit Befehlen |
Verfügbar in: Redstone-Welt |
Alle neuen oder überarbeiteten Techniken auf dieser Seite sind noch nicht in der aktuellen Redstone-Welt vorhanden. In einem der nächsten Updates werden sie dort hinzugefügt werden.
|
Mit einem Konstruktionsgerüst ist es möglich, geschlossene Bauwerke zu bauen. Dabei muss nur eine Hälfte, ein Viertel oder ein Achtel, je nach Bauart, per Hand gebaut werden. Der Rest wird durch Konstruktionsblöcke vervollständigt. Diese Technik eignet sich sehr gut für Minispiele und besonders gut für Abenteuerwelten, da es nicht mehr möglich ist, nur in einem Viertel falsch zu bauen. Der Aufbau eines Konstruktionsgerüsts ist einfach und die Anlage spart viel Zeit. So ist es auch ohne Modifikation möglich, schnell große Bauwerke zu errichten. Für ein Konstruktionsgerüst gibt es verschiedene Varianten, die jeweils unterschiedliche Anwendungsbereiche haben.
- Allgemeine Hinweise
Es sollte beachtet werden, dass diese Technik potentiell sehr viele Operationen auf dem Speichermedium durchführen könnte und dass sich das potentiell negativ auf die Lebensdauer auswirken könnte. Vom Kopieren von Objekten wird abgeraten! Dazu zählen auch Gemälde, Rüstungsständer, Loren, Boote, oder Rahmen. Wer es dennoch nutzen möchte, sollte eine Sicherungskopie anlegen. Auch bei sicherer Einstellung lassen befüllte Truhen, beim Zerschlagen dieser, wo sie eingefügt wurden, ihre Gegenstände fallen. Besonders Schneebälle, Verweiltränke, Enderperlen und Erfahrungsflaschen sorgen für Probleme! In Extremfällen kann die gesamte Welt unbrauchbar werden. Server können zum Absturz gebracht werden. Köpfe, Blumentöpfe (insbesondere mit Pflanzen) und Plattenspieler sorgen für Drops, die in extremer Anzahl die Welt erheblich beeinflussen. Betten sollten ganz im ausgewählten Bereich stehen. Jegliche Redstone-Schaltungen und Kolben sollten vermieden werden. TNT und Enderkristalle können zu unkontrollierbaren Explosionen führen. Sand, Kies, Ambosse und Dracheneiner, können, wenn sie auf dem Bauviertel am Fallen sind, ebenfalls zu schwerwiegenden Lags führen. Wasser kann in größeren Mengen zu erheblicher Belastung führen.
Variante 1[Bearbeiten | Quelltext bearbeiten]
Folgende Voraussetzungen werden benötigt: | ||
---|---|---|
|
Folgende Materialien werden benötigt: | |
---|---|
|
Diese Variante bietet dem Spieler die Möglichkeit mit Hilfe eines Rüstungsständers den man platzieren kann, die quadratische Grundfläche des Gerüsts 16x16 zu errichten. Hierbei besteht ein viertel dieser Fläche (8x8) aus blauer Keramik, die den Bereich markiert auf dem man Bauen kann. Baut man auf der blauen Fläche (8x8x8), so wird dieser Teil kopiert und um 90°, 180° und 270° gedreht wieder gesetzt. Der Kopiervorgang wird jede Sekunde einmal durchgeführt.
- Einschalten
- Befehl 1.1 Das Punkte-Ziel wird erstellt. Es wird dafür genutzt um Ticks hochzuzählen und um mit dessen Hilfe die Konstruktion jede Sekunde einmal zu aktivieren.
- Befehl 1.2 Allen Spielern im Umkreis von 15 Blöcken wird ein Rüstungsständer ins Inventar gegeben. Dieser kann platziert werden um an dessen Stelle ein Konstruktionsgerüst zu erzeugen.
- Wiederholen
- Befehl 1.3 Jeden Tick wird die Tick-Variable um eins erhöht.
- Befehl 1.4 Wenn man Objekte auf die blaue Fläche stellt, werden diese kopiert. Damit die Kopien der Objekt nicht vervielfältigt werden, werden exakt nur die Kopien die sich nicht auf der blauen Fläche befinden entfernt.
- Befehl 1.5 Ab 20 Ticks (eine Sekunde) wird eine 16x16 große Fläche aus Quarzblöcken an der Position von Rüstungsständern platziert, die das Gerüst-Etikett besitzen.
- Befehl 1.6 Ebenso wird an deren Position ein 8x8 Feld aus blauer Keramik platziert. Diese soll verdeutlichen das hier die Baufläche ist, auf der man die Konstruktion vorbauen kann.
- Befehl 1.7 Anschließend wird eine kleine Fläche aus roter Keramik gesetzt, die später durch Redstone-Blöcke ersetzt wird.
- Befehl 1.8 Nun wird ein Speicherblock gesetzt, der den Bereich über der blauen Keramik abdeckt und kopiert.
- Befehl 1.9 Es werden drei Ladeblöcke gesetzt, die die kopierte Konstruktion jeweils um 90° gedreht auf der Fläche der Quarzblöcke platziert[B1.10][B1.11].
- Befehl 1.12 Die zuvor platzierten roten Keramiken werden durch Redstone-Blöcke ersetzt, sodass diese die vier Konstruktionsblöcke aktivieren.
- Befehl 1.13 Zuletzt wird die Tick-Variable wieder auf null zurückgesetzt.
- Ausschalten
- Befehl 1.14 Das Punkte-Ziel wird entfernt.
- Befehl 1.15 Der Rüstungsständer wird aus dem Inventar der Spieler entfernt.
- Befehl 1.16 Die Bodenfläche des Gerüstes wird an der Position der Gerüst-Rüstungsständer entfernt.
- Befehl 1.17 Alle Objekte außer Spieler die sich auf dem Bereich des Konstruktionsgerüstes befinden werden entfernt.
- Befehl 1.18 Eventuell fallen gelassene Rüstungsständer in Form von Drops, erhalten ein Etikett.
- Befehl 1.19 Alle Objekte einschließlich der Rüstungsständer mit dem Etikett werden entfernt.
Befehlsblöcke mit Befehlen: |
|
Variante 2[Bearbeiten | Quelltext bearbeiten]
Folgende Voraussetzungen werden benötigt: | ||
---|---|---|
|
Folgende Materialien werden benötigt: | |
---|---|
|
Diese Variante gibt dem Spieler drei Rüstungsständer. Mit zwei von ihnen lassen sich Gerüste bauen während der dritte zum Entfernen der Gerüste verwendet werden kann. Platziert man die Rüstungsständer, wird jeweils eine Fläche von 16x16 erzeugt. Der Baubereich ist bei dem normalen Gerüst 8x8x8 groß und wird jede Sekunde kopiert und auf die restliche Fläche um 90°, 180° und 270° gedreht gesetzt. Der zweite Rüstungsständer ermöglicht das Bauen einer Spiegel-Konstruktion. So ist der Baubereich 8x8x16 groß und wird einmal kopiert und um 180° gedreht und gespiegelt auf die andere Seite gesetzt.
- Einschalten
- Befehl 2.1 Auf dem Wiederhol-Befehlsblock befindet sich ein Hebel. Legt man ihn um, wird zuerst der Befehlsblock mit der Startfunktion konstruktionsgeruest:v2start aktiviert.
- Wiederholen
- Befehl 2.2 Gleichzeitig wird auch der Wiederhol-Befehlsblock mit der Zyklusfunktion konstruktionsgeruest:v2zyklus aktiv.
- Ausschalten
- Befehl 2.3 der Befehlsblock löst die Funktion konstruktionsgeruest:v2stopp aus, wenn der Hebel wieder in Ausgangsstellung gebracht wurde.
Befehlsblöcke mit Befehlen: |
|
Datenpaket: |
|
Variante 2: Start-Funktion
Die Start-Funktion erstellt das Punkte-Ziel und gibt den Spielern drei Rüstungsständer.
konstruktionsgeruest:v2start.mcfunction
|
# Ein Punkte-Ziel wird erstellt, dass für das Hochzählen der Ticks verwendet wird. scoreboard objectives add PZKonG.2Wert dummy ["Konstruktionsgerüst.2: ",{"text":"Wert der Variablen","bold":true}] # Spieler im Umkreis von 15 Blöcken erhalten drei Rüstungsständer. Mit diesen lassen sich Konstruktionsgerüste platzieren und entfernen. give @a[distance=..15] minecraft:armor_stand[minecraft:entity_data={Invisible:true,NoGravity:true,Small:true,Tags:["EtiKonG.2Alle","EtiKonG.2Geruest"],id:"minecraft:armor_stand"},minecraft:lore=['"Platziere den Rüstungsständer"','"um das Konstruktionsgerüst"','"zu erstellen."'],minecraft:custom_name='{"text":"Konstruktionsgerüst","color":"green","bold":true}',minecraft:custom_data={EigKonG.2Alle:true,EigKonG.2Geruest:true}] 16 give @a[distance=..15] minecraft:armor_stand[minecraft:entity_data={Invisible:true,NoGravity:true,Small:true,Tags:["EtiKonG.2Alle","EtiKonG.2Geruest","EtiKonG.2Spiegel"],id:"minecraft:armor_stand"},minecraft:lore=['"Platziere den Rüstungsständer"','"um das Konstruktionsgerüst"','"zu erstellen."'],minecraft:custom_name='{"text":"Konstruktionsgerüst (Spiegel)","color":"green","bold":true}',minecraft:custom_data={EigKonG.2Alle:true,EigKonG.2Geruest:true}] 16 give @a[distance=..15] minecraft:armor_stand[minecraft:entity_data={Invisible:true,NoGravity:true,Small:true,Tags:["EtiKonG.2Alle","EtiKonG.2Entfernen"],id:"minecraft:armor_stand"},minecraft:lore=['"Platziere den Rüstungsständer"','"an einem Konstruktionsgerüstes"','"um es zu entfernen."'],minecraft:custom_name='{"text":"Konstruktionsgerüst entfernen","color":"red","bold":true}',minecraft:custom_data={EigKonG.2Alle:true}] 16 |
Variante 2: Zyklus-Funktion
Die Zyklus-Funktion kann die Gerüste entfernen und laden.
konstruktionsgeruest:v2zyklus.mcfunction
|
# Wenn der Entfernen-Rüstungsständer platziert wurde, wird das Gerüst mit einem Etikett markiert und die Plattform, sowie die Rüstungsständer verschwinden. execute at @e[type=minecraft:armor_stand,tag=EtiKonG.2Entfernen] run tag @e[dx=-15,dy=-1,dz=-15,type=minecraft:armor_stand,tag=EtiKonG.2Geruest] add EtiKonG.2Entfernen execute at @e[type=minecraft:armor_stand,tag=EtiKonG.2Geruest,tag=EtiKonG.2Entfernen] run fill ~ ~ ~ ~15 ~ ~15 minecraft:air replace execute at @e[type=minecraft:armor_stand,tag=EtiKonG.2Geruest,tag=EtiKonG.2Entfernen] run kill @e[type=!minecraft:player,dx=15,dy=15,dz=15] kill @e[type=minecraft:armor_stand,tag=EtiKonG.2Entfernen] # Jeden Tick wird die Tick-Variable um eins erhöht und wenn sie den Wert 20 erreicht, wird von allen Gerüst-Rüstungsständern die gleichnamige Funktion aufgerufen. scoreboard players add #VarKonG.2Tick PZKonG.2Wert 1 execute if score #VarKonG.2Tick PZKonG.2Wert matches 20.. as @e[type=minecraft:armor_stand,tag=EtiKonG.2Geruest] at @s run function konstruktionsgeruest:v2geruest |
Variante 2: Gerüst-Funktion
Die Gerüst-Funktion errichtet die Baufläche samt Konstruktionsblöcke und ermöglicht je nach Typ die Spiegelung des Bauwerkes.
konstruktionsgeruest:v2geruest.mcfunction
|
# Die Tick-Variable wird wieder auf null zurückgesetzt. scoreboard players set #VarKonG.2Tick PZKonG.2Wert 0 # Objekte die per Konstruktionsblock kopiert werden, werden bei jedem Aufruf erneut gelöscht, damit sie nicht sich rasant vervielfältigen. execute if entity @s[tag=!EtiKonG.2Spiegel] as @e[type=!minecraft:player,tag=!EtiKonG.2Geruest,dx=15,dy=15,dz=15] unless entity @s[dx=7,dy=15,dz=7] run kill @s execute if entity @s[tag=EtiKonG.2Spiegel] run kill @e[type=!minecraft:player,tag=!EtiKonG.2Geruest,dx=7,dy=15,dz=15] # Die Quarzplattform wird gesetzt und je nach dem ob das Gerüst die Spiegelung unterstützen soll, wird der blaue Bereich entsprechend groß erzeugt. fill ~ ~ ~ ~15 ~ ~15 minecraft:quartz_block replace execute if entity @s[tag=!EtiKonG.2Spiegel] run fill ~ ~ ~ ~7 ~ ~7 minecraft:blue_terracotta replace execute if entity @s[tag=EtiKonG.2Spiegel] run fill ~ ~ ~ ~7 ~ ~15 minecraft:blue_terracotta replace # Es wird rote Keramik platziert, damit diese später durch Redstone-Blöcke ersetzt werden kann. fill ~7 ~ ~6 ~8 ~ ~9 minecraft:red_terracotta replace # Es werden vier Konstruktionsblöcke platziert, die anschließend modifiziert werden. execute if entity @s[tag=!EtiKonG.2Spiegel] run fill ~7 ~ ~7 ~8 ~ ~8 minecraft:structure_block{mode:"LOAD",name:"konstruktionsgeruest:v2volumen",posY:1} replace # Ein Konstruktionsblock wird zum Speicherblock und bekommt die Größe des Bereichs zugewiesen. execute if entity @s[tag=!EtiKonG.2Spiegel] run data merge block ~7 ~ ~7 {mode:"SAVE",posX:-7,posZ:-7,sizeX:8,sizeY:8,sizeZ:8} # Die anderen drei Ladeblöcke bekommen ihre Daten, um die Konstruktion nachher richtig zu platzieren. execute if entity @s[tag=!EtiKonG.2Spiegel] run data merge block ~8 ~ ~7 {rotation:"CLOCKWISE_90",posX:7,posZ:-7} execute if entity @s[tag=!EtiKonG.2Spiegel] run data merge block ~8 ~ ~8 {rotation:"CLOCKWISE_180",posX:7,posZ:7} execute if entity @s[tag=!EtiKonG.2Spiegel] run data merge block ~7 ~ ~8 {rotation:"COUNTERCLOCKWISE_90",posX:-7,posZ:7} # Falls die Spiegel-Variante eingeschaltet ist, wird ein Speicherblock gesetzt, der die ganze Hälfte der Plattform speichern kann. execute if entity @s[tag=EtiKonG.2Spiegel] run setblock ~7 ~ ~7 minecraft:structure_block{mode:"SAVE",posX:-7,posY:1,posZ:-7,sizeX:8,sizeY:8,sizeZ:16,name:"konstruktionsgeruest:v2volumen"} # Ebenso wird dann ein Ladeblock gesetzt der die gespiegelte Konstruktion laden kann. execute if entity @s[tag=EtiKonG.2Spiegel] run setblock ~8 ~ ~7 minecraft:structure_block{mode:"LOAD",rotation:"CLOCKWISE_180",mirror:"LEFT_RIGHT",posX:7,posY:1,posZ:-7,name:"konstruktionsgeruest:v2volumen"} # Damit die Speicher- und Ladeblöcke aktiviert werden, wird die Keramik-Schicht durch Redstone-Blöcke ersetzt. fill ~7 ~ ~6 ~8 ~ ~9 minecraft:redstone_block replace minecraft:red_terracotta |
Variante 2: Stopp-Funktion
Die Stopp-Funktion löscht das Punkte-Ziel sowie die Gerüste und Etiketten.
konstruktionsgeruest:v2stopp.mcfunction
|
# Das Punkte-Ziel wird entfernt. scoreboard objectives remove PZKonG.2Wert # Die Rüstungsständer werden aus dem Inventar entfernt. clear @a minecraft:armor_stand[minecraft:custom_data~{EigKonG.2Alle:true}] # Die Plattform des Gerüsts wird entfernt. execute at @e[type=minecraft:armor_stand,tag=EtiKonG.2Geruest] run fill ~ ~ ~ ~15 ~15 ~15 minecraft:air replace # Herumliegende Drops und die Rüstungsständer in der Welt, werden entfernt. execute at @e[type=minecraft:armor_stand,tag=EtiKonG.2Geruest] run kill @e[type=!minecraft:player,dx=15,dy=15,dz=15] execute as @e[type=minecraft:item] if items entity @s contents *[minecraft:custom_data~{EigKonG.2Alle:true}] run kill @s kill @e[tag=EtiKonG.2Alle] |
Variante 3[Bearbeiten | Quelltext bearbeiten]
Folgende Voraussetzungen werden benötigt: | ||
---|---|---|
|
Folgende Materialien werden benötigt: | |
---|---|
|
Diese Technik gibt den Spielern drei Rüstungsständer, davon sind zwei für das Bauen des Gerüsts zuständig während der dritte für das Entfernen der Gerüste genutzt wird. Wählt man die Gerüst-Rüstungsständer aus, wird im Chat ein Menü mit anklickbaren Schaltflächen angezeigt. Dort kann man die Zeit in Ticks einstellen, in welchen Zeitabstand das Bauwerk kopiert und aktualisiert werden soll. Man kann die Größe des Gerüsts in achter-Abständen vergrößern oder verkleinern und man kann einstellen ob die Spiegelung normal oder vertauscht sein soll. Die kleinste Fläche die beim Platzieren der Rüstungsständer entstehen kann ist 16x16 (Kopiervolumen 8x8x8), während in achter-Schritten bis zu 48x48 möglich sind (Kopiervolumen 24x24x24). Stellt man ein Gerüst mit Spiegelung auf, so wird im kleinsten Fall ein 8x8x16-Volumen kopiert und gespiegelt, während bei der größten Fläche 24x24x48 möglich sind.
- Einschalten
- Befehl 3.1 Auf dem Wiederhol-Befehlsblock befindet sich ein Hebel. Legt man ihn um, wird zuerst der Befehlsblock mit der Startfunktion konstruktionsgeruest:v3start aktiviert.
- Wiederholen
- Befehl 3.2 Gleichzeitig wird auch der Wiederhol-Befehlsblock mit der Zyklusfunktion konstruktionsgeruest:v3zyklus aktiv.
- Ausschalten
- Befehl 3.3 der Befehlsblock löst die Funktion konstruktionsgeruest:v3stopp aus, wenn der Hebel wieder in Ausgangsstellung gebracht wurde.
Befehlsblöcke mit Befehlen: |
|
Datenpaket: |
|
Variante 3: Start-Funktion
Die Start-Funktion erstellt die Punkte-Ziele und Variablen. Ebenfalls erhalten die Spieler die drei Rüstungsständer.
konstruktionsgeruest:v3start.mcfunction
|
# Zwei Punkte-Ziele werden erstellt. scoreboard objectives add PZKonG.3Ausl trigger ["Konstruktionsgerüst.3: ",{"text":"Auslöser für Nachrichten","bold":true}] scoreboard objectives add PZKonG.3Wert dummy ["Konstruktionsgerüst.3: ",{"text":"Wert der Variablen","bold":true}] # Eine Konstante mit dem Wert zwei wird erstellt. scoreboard players set KonstKonG.3ZWEI PZKonG.3Wert 2 # Zwei Variablen für die Ticks und der Spiegelung werden erstellt. scoreboard players set VarKonG.3Ticks PZKonG.3Wert 20 scoreboard players set VarKonG.3Spiegelung PZKonG.3Wert 1 # Spieler im Umkreis von 15 Blöcken erhalten drei Rüstungsständer. Mit diesen kann man ein Gerüst und ein gespiegeltes Gerüst setzen. Während man diese mit dem dritten Rüstungsständer wieder entfernen kann. give @a[distance=..15] minecraft:armor_stand[minecraft:entity_data={Invisible:true,NoGravity:true,Small:true,Tags:["EtiKonG.3Alle","EtiKonG.3Geruest","EtiKonG.3Erstellen"],id:"minecraft:armor_stand"},minecraft:lore=['"Platziere den Rüstungsständer"','"um das Konstruktionsgerüst"','"zu erstellen."'],minecraft:custom_name='{"text":"Konstruktionsgerüst","color":"green","bold":true}',minecraft:custom_data={EigKonG.3Alle:true,EigKonG.3Geruest:true}] 16 give @a[distance=..15] minecraft:armor_stand[minecraft:entity_data={Invisible:true,NoGravity:true,Small:true,Tags:["EtiKonG.3Alle","EtiKonG.3Geruest","EtiKonG.3Erstellen","EtiKonG.3Spiegel"],id:"minecraft:armor_stand"},minecraft:lore=['"Platziere den Rüstungsständer"','"um das Konstruktionsgerüst"','"zu erstellen."'],minecraft:custom_name='{"text":"Konstruktionsgerüst (Spiegel)","color":"green","bold":true}',minecraft:custom_data={EigKonG.3Alle:true,EigKonG.3Geruest:true}] 16 give @a[distance=..15] minecraft:armor_stand[minecraft:entity_data={Invisible:true,NoGravity:true,Small:true,Tags:["EtiKonG.3Alle","EtiKonG.3Entfernen"],id:"minecraft:armor_stand"},minecraft:lore=['"Platziere den Rüstungsständer"','"an einem Konstruktionsgerüstes"','"um es zu entfernen."'],minecraft:custom_name='{"text":"Konstruktionsgerüst entfernen","color":"red","bold":true}',minecraft:custom_data={EigKonG.3Alle:true}] 16 |
Variante 3: Zyklus-Funktion
Die Zyklus-Funktion testet ob der Spieler einen der Rüstungsständer in der Schnellleiste ausgewählt hat und lädt dann die Auslöser-Funktion. Ebenfalls ermöglicht sie das Entfernen der Gerüste sowie das Laden dieser.
konstruktionsgeruest:v3zyklus.mcfunction
|
# Wenn Spieler den Rüstungsständer ausgewählt haben, erhalten sie ein Etikett. execute as @a if items entity @s weapon.* *[minecraft:custom_data~{EigKonG.3Geruest:true}] run tag @s add EtiKonG.3Ausgewaehlt # Wenn Spieler den Rüstungsständer gerade erst ausgewählt haben, wird ihnen der Auslöser-Wert und die Größe gesetzt. scoreboard players set @a[tag=EtiKonG.3Ausgewaehlt,tag=!EtiKonG.3Auswahl] PZKonG.3Ausl -99 execute as @a[tag=EtiKonG.3Ausgewaehlt,tag=!EtiKonG.3Auswahl] unless score @s PZKonG.3Wert = @s PZKonG.3Wert run scoreboard players set @a[tag=EtiKonG.3Ausgewaehlt,tag=!EtiKonG.3Auswahl] PZKonG.3Wert 16 # Wenn Spieler den Rüstungsständer ausgewählt haben und irgend einen Auslöser angeklickt haben, wird die Auslöser-Funktion gestartet. execute as @a[tag=EtiKonG.3Ausgewaehlt] unless entity @s[scores={PZKonG.3Ausl=0}] run function konstruktionsgeruest:v3ausloeser # Es wird ein Etikett gegeben oder genommen, je nach dem ob man gerade Rüstungsständer ausgewählt hat, oder nicht. tag @a[tag=EtiKonG.3Ausgewaehlt,tag=!EtiKonG.3Auswahl] add EtiKonG.3Auswahl tag @a[tag=!EtiKonG.3Ausgewaehlt,tag=EtiKonG.3Auswahl] remove EtiKonG.3Auswahl # Das Etikett wird wieder entfernt. tag @a[tag=EtiKonG.3Ausgewaehlt] remove EtiKonG.3Ausgewaehlt # Wenn der Entfernen-Rüstungsständer platziert wurde, wird das Gerüst mit einem Etikett markiert und die Plattform, sowie die Rüstungsständer verschwinden. execute at @e[type=minecraft:armor_stand,tag=EtiKonG.3Entfernen] run tag @e[dx=-47,dy=-1,dz=-47,type=minecraft:armor_stand,tag=EtiKonG.3Geruest,sort=nearest,limit=1] add EtiKonG.3Entfernen execute at @e[type=minecraft:armor_stand,tag=EtiKonG.3Geruest,tag=EtiKonG.3Entfernen] run fill ~ ~ ~ ~47 ~ ~47 minecraft:air replace execute at @e[type=minecraft:armor_stand,tag=EtiKonG.3Geruest,tag=EtiKonG.3Entfernen] run kill @e[type=!minecraft:player,dx=15,dy=15,dz=15] kill @e[type=minecraft:armor_stand,tag=EtiKonG.3Entfernen] # Wenn ein neues Gerüst gesetzt wurde, wird der Tick-Wert auf den Maximalwert gesetzt, damit die Gerüst-Funktion sofort aufgerufen wird. execute if entity @e[type=minecraft:armor_stand,tag=EtiKonG.3Geruest,tag=!EtiKonG.3Wert,sort=nearest,limit=1] run scoreboard players operation #VarKonG.3Tick PZKonG.3Wert = VarKonG.3Ticks PZKonG.3Wert # Jeden Tick wird die Tick-Variable um eins erhöht und wenn sie den Wert 20 erreicht, wird von allen Gerüst-Rüstungsständern die gleichnamige Funktion aufgerufen. scoreboard players add #VarKonG.3Tick PZKonG.3Wert 1 execute if score #VarKonG.3Tick PZKonG.3Wert >= VarKonG.3Ticks PZKonG.3Wert as @e[type=minecraft:armor_stand,tag=EtiKonG.3Geruest] at @s run function konstruktionsgeruest:v3geruest |
Variante 3: Auslöser-Funktion
Die Auslöser-Funktion zeigt im Chat die Optionen an und reagiert auf das Klicken der Schaltflächen.
konstruktionsgeruest:v3ausloeser.mcfunction
|
# Wenn die Option für die Ticks angeklickt wurde, wird eine Variable entsprechend hoch oder runter gesetzt. execute if entity @s[scores={PZKonG.3Ausl=3}] run scoreboard players add VarKonG.3Ticks PZKonG.3Wert 1 execute if entity @s[scores={PZKonG.3Ausl=-3}] if score VarKonG.3Ticks PZKonG.3Wert matches 3.. run scoreboard players remove VarKonG.3Ticks PZKonG.3Wert 1 # Die Größe des Gerüst wird in Achter-Schritten angepasst. scoreboard players add @s[scores={PZKonG.3Ausl=4,PZKonG.3Wert=..40}] PZKonG.3Wert 8 scoreboard players remove @s[scores={PZKonG.3Ausl=-4,PZKonG.3Wert=24..}] PZKonG.3Wert 8 # Für die Spiegelung wird eine Variable entsprechend geändert. execute if entity @s[scores={PZKonG.3Ausl=1..2}] run scoreboard players operation VarKonG.3Spiegelung PZKonG.3Wert = @s PZKonG.3Ausl # Der Spieler erhält durch die Chat-Nachricht die Möglichkeit, die Ticks, die Größe und die Spiegelung festzulegen. tellraw @s ["Konstruktionsgerüst.3:\n",{"text":"ticks = ","bold":true},{"text":"ticks + 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Ticks + 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZKonG.3Ausl set 3"} },"\n",{"text":"ticks = ","bold":true},{"text":"ticks - 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Ticks - 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZKonG.3Ausl set -3"} },"\n",{"text":"ticks == ","bold":true},{"score":{"name":"VarKonG.3Ticks","objective":"PZKonG.3Wert"},"color":"dark_purple","bold":true},"\n",{"text":"groesse = ","bold":true},{"text":"groesse + 8","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Größe + 8"} },"clickEvent":{"action":"run_command","value":"/trigger PZKonG.3Ausl set 4"} },"\n",{"text":"groesse = ","bold":true},{"text":"groesse - 8","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Größe - 8"} },"clickEvent":{"action":"run_command","value":"/trigger PZKonG.3Ausl set -4"} },"\n",{"text":"groesse == ","bold":true},{"score":{"name":"@s","objective":"PZKonG.3Wert"},"color":"dark_purple","bold":true},"\n",{"text":"spiegelung = ","bold":true},{"text":"normal","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Spiegelung vorne hinten"} },"clickEvent":{"action":"run_command","value":"/trigger PZKonG.3Ausl set 1"} },"\n",{"text":"spiegelung = ","bold":true},{"text":"vertauscht","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Spiegelung vertauscht"} },"clickEvent":{"action":"run_command","value":"/trigger PZKonG.3Ausl set 2"} } ] # Je nach Spiegelung die eingestellt wurde, wird der entsprechende Zustand im Chat angezeigt. execute if score VarKonG.3Spiegelung PZKonG.3Wert matches 1 run tellraw @s ["",{"text":"spiegelung == ","bold":true},{"text":"normal","color":"blue","bold":true}] execute if score VarKonG.3Spiegelung PZKonG.3Wert matches 2 run tellraw @s ["",{"text":"spiegelung == ","bold":true},{"text":"vertauscht","color":"yellow","bold":true}] # Der Spieler erhält erneut die Berechtigung und sein Wert wird zurückgesetzt. scoreboard players enable @s PZKonG.3Ausl scoreboard players set @s PZKonG.3Ausl 0 |
Variante 3: Gerüst-Funktion
Die Gerüst-Funktion bereitet alles vor, damit im Anschluss die Gerüst-Breiten-Funktion geladen werden kann um die Grundfläche des Gerüsts zu setzen.
konstruktionsgeruest:v3geruest.mcfunction
|
# Die Tick-Variable wird wieder auf null zurückgesetzt. scoreboard players set #VarKonG.3Tick PZKonG.3Wert 0 # Wenn das Gerüst noch nicht die Werte besitzt, werden diese übertragen. scoreboard players operation @s[tag=!EtiKonG.3Wert] PZKonG.3Wert = @p[distance=..5,scores={PZKonG.3Wert=16..}] PZKonG.3Wert scoreboard players operation @s[tag=!EtiKonG.3Wert] PZKonG.3Ausl = VarKonG.3Spiegelung PZKonG.3Wert # Anschließend erhält es ein Etikett. tag @s[tag=!EtiKonG.3Wert] add EtiKonG.3Wert # Die Hälften-Variable wird angelegt. scoreboard players operation VarKonG.3Haelfte PZKonG.3Wert = @s PZKonG.3Wert scoreboard players operation VarKonG.3Haelfte PZKonG.3Wert /= KonstKonG.3ZWEI PZKonG.3Wert # Die Breiten-Variable wird auf null gesetzt und anschließend in der Breiten-Funktion verwendet. scoreboard players set VarKonG.3Breite PZKonG.3Wert 0 function konstruktionsgeruest:v3geruest_breite # In der Mitte des Gerüstes befindet sich nach dem Aufbau eine Partikelwolke von der aus die Gerüst-Mitten-Funktion aufgerufen wird. execute at @e[type=minecraft:area_effect_cloud,tag=EtiKonG.3Mitte,sort=nearest,limit=1] run function konstruktionsgeruest:v3geruest_mitte |
Variante 3: Gerüst-Breiten-Funktion
Die Gerüst-Breiten-Funktion ruft sich ständig selbst um vier Blöcke in X-Richtung auf um die Gerüst-Längen-Funktion aufrufen zu können, die dann die Grundfläche errichtet.
konstruktionsgeruest:v3geruest_breite.mcfunction
|
# Die Längen-Variable wird auf null gesetzt und anschließend in der Längen-Funktion verwendet. scoreboard players set VarKonG.3Laenge PZKonG.3Wert 0 function konstruktionsgeruest:v3geruest_laenge # Die Breiten-Variable wird um vier erhöht und solange der Wert kleiner als der Maximalwert ist, ruft sich diese Funktion selbst um vier Blöcke in X-Richtung versetzt erneut auf. scoreboard players add VarKonG.3Breite PZKonG.3Wert 4 execute if score VarKonG.3Breite PZKonG.3Wert < @s PZKonG.3Wert positioned ~4 ~ ~ run function konstruktionsgeruest:v3geruest_breite |
Variante 3: Gerüst-Längen-Funktion
Die Gerüst-Längen platziert die Grundfläche des Gerüsts und setzt in die Mitte dieser Grundfläche eine Partikelwolke um die Mitte nach dem Erstellen zu erreichen.
konstruktionsgeruest:v3geruest_laenge.mcfunction
|
# Eine 4x4-Quarzfläche wird immer erzeugt. fill ~ ~ ~ ~3 ~ ~3 minecraft:quartz_block replace # Objekte die per Konstruktionsblock kopiert werden, werden bei jedem Aufruf erneut gelöscht, damit sie nicht sich rasant vervielfältigen. execute if entity @s[tag=!EtiKonG.3Spiegel] if score VarKonG.3Laenge PZKonG.3Wert >= VarKonG.3Haelfte PZKonG.3Wert run kill @e[type=!minecraft:player,tag=!EtiKonG.3Geruest,dx=3,dy=47,dz=3] execute if score VarKonG.3Breite PZKonG.3Wert >= VarKonG.3Haelfte PZKonG.3Wert run kill @e[type=!minecraft:player,tag=!EtiKonG.3Geruest,dx=3,dy=47,dz=3] # Nur wenn sich diese Funktion im ersten Quadranten aufhält oder auch im zweiten, wenn es eine Spiegelung geben soll, wird der Boden mit blauer Keramik ausgestattet. execute if entity @s[tag=EtiKonG.3Spiegel] if score VarKonG.3Breite PZKonG.3Wert < VarKonG.3Haelfte PZKonG.3Wert run fill ~ ~ ~ ~3 ~ ~3 minecraft:blue_terracotta replace execute if entity @s[tag=!EtiKonG.3Spiegel] if score VarKonG.3Breite PZKonG.3Wert < VarKonG.3Haelfte PZKonG.3Wert if score VarKonG.3Laenge PZKonG.3Wert < VarKonG.3Haelfte PZKonG.3Wert run fill ~ ~ ~ ~3 ~ ~3 minecraft:blue_terracotta replace # Nur, wenn sowohl die Breiten- wie auch die Längen-Variable den Wert der Hälfte besitzt, befindet sich die Funktion in der Mitte und dann wird eine Partikelwolke erzeugt, über die später die Position der Mitte aufgerufen werden kann. execute if score VarKonG.3Breite PZKonG.3Wert = VarKonG.3Haelfte PZKonG.3Wert if score VarKonG.3Laenge PZKonG.3Wert = VarKonG.3Haelfte PZKonG.3Wert run summon minecraft:area_effect_cloud ~ ~ ~ {Duration:1,Tags:["EtiKonG.3Alle","EtiKonG.3Mitte"]} # Die Längen-Variable wird um vier erhöht und nur wenn sie kleiner als der Maximalwert ist, wird diese Funktion um vier Blöcke in Z-Richtung erneut aufgerufen. scoreboard players add VarKonG.3Laenge PZKonG.3Wert 4 execute if score VarKonG.3Laenge PZKonG.3Wert < @s PZKonG.3Wert positioned ~ ~ ~4 run function konstruktionsgeruest:v3geruest_laenge |
Variante 3: Gerüst-Mitten-Funktion
Die Gerüst-Mitten-Funktion wird an der Position der Partikelwolke aufgerufen und platziert die Konstruktionsblöcke, die das Kopieren ermöglichen.
konstruktionsgeruest:v3geruest_mitte.mcfunction
|
# Zuerst wird ein roter Boden gesetzt, der später für die Redstone-Blöcke verwendet wird. fill ~-1 ~ ~-2 ~ ~ ~1 minecraft:red_terracotta replace # Es werden vier Konstruktionsblöcke gesetzt die bereits Daten enthalten. execute if entity @s[tag=!EtiKonG.3Spiegel] run fill ~-1 ~ ~-1 ~ ~ ~ minecraft:structure_block{mode:"LOAD",name:"konstruktionsgeruest:v3volumen",posY:1} replace # Anschließend wird einer davon als Speicherblock verwendet. execute if entity @s[tag=!EtiKonG.3Spiegel] run data merge block ~-1 ~ ~-1 {mode:"SAVE",posX:-7,posZ:-7,sizeX:8,sizeY:8,sizeZ:8} # Während die anderen drei Ladeblöcke Rotationsdaten erhalten. execute if entity @s[tag=!EtiKonG.3Spiegel] run data merge block ~ ~ ~-1 {rotation:"CLOCKWISE_90",posX:7,posZ:-7} execute if entity @s[tag=!EtiKonG.3Spiegel] run data merge block ~ ~ ~ {rotation:"CLOCKWISE_180",posX:7,posZ:7} execute if entity @s[tag=!EtiKonG.3Spiegel] run data merge block ~-1 ~ ~ {rotation:"COUNTERCLOCKWISE_90",posX:-7,posZ:7} # Wenn es eine Spiegelung geben soll, wird nur ein Speicherblock mit entsprechenden Daten gesetzt. execute if entity @s[tag=EtiKonG.3Spiegel] run setblock ~-1 ~ ~-1 minecraft:structure_block{mode:"SAVE",posX:-7,posY:1,posZ:-7,sizeX:8,sizeY:8,sizeZ:16,name:"konstruktionsgeruest:v3volumen"} # Ebenso wird nur ein Ladeblock gesetzt, der die Spiegelung ermöglicht. execute if entity @s[tag=EtiKonG.3Spiegel] run setblock ~ ~ ~-1 minecraft:structure_block{mode:"LOAD",rotation:"CLOCKWISE_180",mirror:"LEFT_RIGHT",posX:7,posY:1,posZ:-7,name:"konstruktionsgeruest:v3volumen"} # Der Speicherbereich ist immer halb so groß wie die Gesamtfläche des Gerüstes, so wird in dem Speicherblock die Größe in X, Y und Z entsprechend gesetzt. execute store result block ~-1 ~ ~-1 sizeX int 1 store result block ~-1 ~ ~-1 sizeY int 1 store result block ~-1 ~ ~-1 sizeZ int 1 run scoreboard players get VarKonG.3Haelfte PZKonG.3Wert # Falls es eine Spiegel-Variante ist, wird die Z-Größe verdoppelt, da das halbe Brett dann gespeichert wird. execute if entity @s[tag=EtiKonG.3Spiegel] store result block ~-1 ~ ~-1 sizeZ int 2 run scoreboard players get VarKonG.3Haelfte PZKonG.3Wert # Die X- und Z-Positionen werden abhängig der Größe des Bretts entsprechend mit Werten versehen. execute store result block ~-1 ~ ~-1 posX int -1 store result block ~-1 ~ ~-1 posZ int -1 store result block ~ ~ ~-1 posX int 1 store result block ~ ~ ~-1 posZ int -1 run scoreboard players remove VarKonG.3Haelfte PZKonG.3Wert 1 execute if entity @s[tag=!EtiKonG.3Spiegel] store result block ~ ~ ~ posX int 1 store result block ~ ~ ~ posZ int 1 store result block ~-1 ~ ~ posX int -1 store result block ~-1 ~ ~ posZ int 1 run scoreboard players get VarKonG.3Haelfte PZKonG.3Wert scoreboard players add VarKonG.3Haelfte PZKonG.3Wert 1 # Falls die Option vertauschen ausgewählt ist, besitzt das Gerüst den Wert zwei und so werden weitere Daten in den Ladeblock gespeichert. execute if entity @s[tag=EtiKonG.3Spiegel,scores={PZKonG.3Ausl=2}] run data merge block ~ ~ ~-1 {mirror:"NONE"} execute if entity @s[tag=EtiKonG.3Spiegel,scores={PZKonG.3Ausl=2}] store result block ~ ~ ~-1 posZ int 1 run scoreboard players get VarKonG.3Haelfte PZKonG.3Wert # Die ganz zu Anfang gesetzten Keramikblöcke können jetzt mit einer Ersetzung zu Redstone-Blöcken umgewandelt werden, sodass die Speicher- und Ladeblöcke sofort ihre Aufgabe nachgehen können. fill ~-1 ~ ~-2 ~ ~ ~1 minecraft:redstone_block replace minecraft:red_terracotta # Die Partikelwolke wird entfernt. kill @e[type=minecraft:area_effect_cloud,tag=EtiKonG.3Mitte,sort=nearest,limit=1] |
Variante 3: Stopp-Funktion
Die Stopp-Funktion löscht die Punkte-Ziele wieder, sie entfernt die Gerüste und eventuell vorhandene Etiketten.
konstruktionsgeruest:v3stopp.mcfunction
|
# Die beiden Punkte-Ziele werden wieder gelöscht. scoreboard objectives remove PZKonG.3Ausl scoreboard objectives remove PZKonG.3Wert # Die Rüstungsständer werden aus dem Inventar entfernt. clear @a minecraft:armor_stand[minecraft:custom_data~{EigKonG.3Alle:true}] # Das Etikett wird entfernt. tag @a[tag=EtiKonG.3Auswahl] remove EtiKonG.3Auswahl # Die Blöcke für das Gerüst werden entfernt. execute at @e[type=minecraft:armor_stand,tag=EtiKonG.3Geruest] run fill ~ ~ ~ ~47 ~7 ~47 minecraft:air replace # Drops und die Gerüste werden entfernt. execute at @e[type=minecraft:armor_stand,tag=EtiKonG.3Geruest] run kill @e[type=!minecraft:player,dx=47,dy=7,dz=47] execute as @e[type=minecraft:item] if items entity @s contents *[minecraft:custom_data~{EigKonG.3Alle:true}] run kill @s kill @e[tag=EtiKonG.3Alle] |
Variante 4[Bearbeiten | Quelltext bearbeiten]
Folgende Voraussetzungen werden benötigt: | ||
---|---|---|
|
Folgende Materialien werden benötigt: | |
---|---|
|
Diese Variante gibt den Spielern zwei Rüstungsständer, mit einem kann man das Gerüst errichten und mit dem anderen kann es wieder entfernt werden. Wählt man den Rüstungsständer in der Schnellleiste aus, wird im Chat ein Menü geöffnet dass Schaltflächen anbieten auf die man klicken kann. Dort kann die Zeit in Ticks einstellen in welchen Zeit-Intervall das Bauwerk kopiert werden soll. Man kann in achter-Schritten die Baufläche des Gerüstes einstellen. So sind in der kleinsten Ausführung 16x16 möglich (8x8x8 Kopiervolumen) und maximal 96x96 einstellbar (48x48x48 Kopiervolumen). Allerdings ist die Kopierfläche in der Diagonalen halbiert. Ebenfalls kann man einstellen ob es einen Mittelpunkt geben soll, sodass das Zentrum ein 1x1-Block ist anstatt 2x2. Das sorgt dafür, dass die Kopierfläche um einen Block bei allen Größen größer ausfällt.
- Einschalten
- Befehl 4.1 Auf dem Wiederhol-Befehlsblock befindet sich ein Hebel. Legt man ihn um, wird zuerst der Befehlsblock mit der Startfunktion konstruktionsgeruest:v4start aktiviert.
- Wiederholen
- Befehl 4.2 Gleichzeitig wird auch der Wiederhol-Befehlsblock mit der Zyklusfunktion konstruktionsgeruest:v4zyklus aktiv.
- Ausschalten
- Befehl 4.3 der Befehlsblock löst die Funktion konstruktionsgeruest:v4stopp aus, wenn der Hebel wieder in Ausgangsstellung gebracht wurde.
Befehlsblöcke mit Befehlen: |
|
Datenpaket: |
|
Variante 4: Start-Funktion
Die Start-Funktion erstellt zwei Punkte-Ziele und gibt den Spielern zwei Rüstungsständer um das Gerüst bauen zu können.
konstruktionsgeruest:v4start.mcfunction
|
# Zwei Punkte-Ziele werden erstellt. scoreboard objectives add PZKonG.4Ausl trigger ["Konstruktionsgerüst.4: ",{"text":"Auslöser für Nachrichten","bold":true}] scoreboard objectives add PZKonG.4Wert dummy ["Konstruktionsgerüst.4: ",{"text":"Wert der Variablen","bold":true}] # Die Konstante für den Wert zwei wird gesetzt. scoreboard players set KonstKonG.4ZWEI PZKonG.4Wert 2 # Die Ticks-Variable wird gesetzt. scoreboard players set VarKonG.4Ticks PZKonG.4Wert 20 # Spieler im Umkreis von 15 Blöcken erhalten zwei Rüstungsständer. give @a[distance=..15] minecraft:armor_stand[minecraft:entity_data={Invisible:true,NoGravity:true,Small:true,Tags:["EtiKonG.4Alle","EtiKonG.4Geruest","EtiKonG.4Erstellen"],id:"minecraft:armor_stand"},minecraft:lore=['"Platziere den Rüstungsständer"','"um das Konstruktionsgerüst"','"zu erstellen."'],minecraft:custom_name='{"text":"Konstruktionsgerüst","color":"green","bold":true}',minecraft:custom_data={EigKonG.4Alle:true,EigKonG.4Geruest:true}] 16 give @a[distance=..15] minecraft:armor_stand[minecraft:entity_data={Invisible:true,NoGravity:true,Small:true,Tags:["EtiKonG.4Alle","EtiKonG.4Entfernen"],id:"minecraft:armor_stand"},minecraft:lore=['"Platziere den Rüstungsständer"','"an einem Konstruktionsgerüstes"','"um es zu entfernen."'],minecraft:custom_name='{"text":"Konstruktionsgerüst entfernen","color":"red","bold":true}',minecraft:custom_data={EigKonG.4Alle:true}] 16 |
Variante 4: Zyklus-Funktion
Die Zyklus-Funktion prüft ob der Spieler den Rüstungsständer in der Schnellleiste ausgewählt hat und ruft dann die Auslöser-Funktion auf. Ebenfalls ist sie für das Entfernen und laden des Gerüst zuständig.
konstruktionsgeruest:v4zyklus.mcfunction
|
# Wenn Spieler den Rüstungsständer ausgewählt haben, erhalten sie ein Etikett. execute as @a if items entity @s weapon.* *[minecraft:custom_data~{EigKonG.4Geruest:true}] run tag @s add EtiKonG.4Ausgewaehlt # Wenn Spieler den Rüstungsständer gerade erst ausgewählt haben, wird ihnen der Auslöser-Wert und die Größe gesetzt. scoreboard players set @a[tag=EtiKonG.4Ausgewaehlt,tag=!EtiKonG.4Auswahl] PZKonG.4Ausl -99 execute as @a[tag=EtiKonG.4Ausgewaehlt,tag=!EtiKonG.4Auswahl] unless score @s PZKonG.4Wert = @s PZKonG.4Wert run scoreboard players set @a[tag=EtiKonG.4Ausgewaehlt,tag=!EtiKonG.4Auswahl] PZKonG.4Wert 16 # Wenn Spieler den Rüstungsständer ausgewählt haben und irgend einen Auslöser angeklickt haben, wird die Auslöser-Funktion gestartet. execute as @a[tag=EtiKonG.4Ausgewaehlt] unless entity @s[scores={PZKonG.4Ausl=0}] run function konstruktionsgeruest:v4ausloeser # Es wird ein Etikett gegeben oder genommen, je nach dem ob man gerade Rüstungsständer ausgewählt hat, oder nicht. tag @a[tag=EtiKonG.4Ausgewaehlt,tag=!EtiKonG.4Auswahl] add EtiKonG.4Auswahl tag @a[tag=!EtiKonG.4Ausgewaehlt,tag=EtiKonG.4Auswahl] remove EtiKonG.4Auswahl # Das Etikett wird wieder entfernt. tag @a[tag=EtiKonG.4Ausgewaehlt] remove EtiKonG.4Ausgewaehlt # Wenn der Entfernen-Rüstungsständer platziert wurde, wird das Gerüst mit einem Etikett markiert und die Plattform, sowie die Rüstungsständer verschwinden. execute at @e[type=minecraft:armor_stand,tag=EtiKonG.4Entfernen] run tag @e[dx=-47,dy=-1,dz=-47,type=minecraft:armor_stand,tag=EtiKonG.4Geruest,sort=nearest,limit=1] add EtiKonG.4Entfernen execute at @e[type=minecraft:armor_stand,tag=EtiKonG.4Geruest,tag=EtiKonG.4Entfernen] run fill ~ ~ ~ ~47 ~ ~47 minecraft:air replace kill @e[type=minecraft:armor_stand,tag=EtiKonG.4Entfernen] # Wenn ein neues Gerüst gesetzt wurde, wird der Tick-Wert auf den Maximalwert gesetzt, damit die Gerüst-Funktion sofort aufgerufen wird. execute if entity @e[type=minecraft:armor_stand,tag=EtiKonG.4Geruest,tag=!EtiKonG.4Wert,sort=nearest,limit=1] run scoreboard players operation #VarKonG.4Tick PZKonG.4Wert = VarKonG.4Ticks PZKonG.4Wert # Jeden Tick wird die Tick-Variable um eins erhöht und wenn sie den Wert 20 erreicht, wird von allen Gerüst-Rüstungsständern die gleichnamige Funktion aufgerufen. scoreboard players add #VarKonG.4Tick PZKonG.4Wert 1 execute if score #VarKonG.4Tick PZKonG.4Wert >= VarKonG.4Ticks PZKonG.4Wert as @e[type=minecraft:armor_stand,tag=EtiKonG.4Geruest] at @s run function konstruktionsgeruest:v4geruest |
Variante 4: Auslöser-Funktion
Die Auslöser-Funktion fügt im Chat das Menü mit anklickbaren Schaltflächen ein und reagiert auf Klicks der Schaltflächen.
konstruktionsgeruest:v4ausloeser.mcfunction
|
# Wenn die Option für die Ticks angeklickt wurde, wird eine Variable entsprechend hoch oder runter gesetzt. execute if entity @s[scores={PZKonG.4Ausl=3}] run scoreboard players add VarKonG.4Ticks PZKonG.4Wert 1 execute if entity @s[scores={PZKonG.4Ausl=-3}] if score VarKonG.4Ticks PZKonG.4Wert matches 3.. run scoreboard players remove VarKonG.4Ticks PZKonG.4Wert 1 # Die Größe des Gerüst wird in Achter-Schritten angepasst. scoreboard players add @s[scores={PZKonG.4Ausl=4,PZKonG.4Wert=..88}] PZKonG.4Wert 8 scoreboard players remove @s[scores={PZKonG.4Ausl=-4,PZKonG.4Wert=24..}] PZKonG.4Wert 8 # Wenn die Mittelpunkt-Option angeklickt wurde, erhält der Spieler das Etikett oder es wird entfernt. tag @s[tag=!EtiKonG.4Mittelpunkt,scores={PZKonG.4Ausl=2}] add EtiKonG.4Mittelpunkt tag @s[tag=EtiKonG.4Mittelpunkt,scores={PZKonG.4Ausl=-2}] remove EtiKonG.4Mittelpunkt # Der Spieler erhält durch die Chat-Nachricht die Möglichkeit, die Ticks, die Größe und die Spiegelung festzulegen. tellraw @s ["Konstruktionsgerüst.4:\n",{"text":"ticks = ","bold":true},{"text":"ticks + 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Ticks + 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZKonG.4Ausl set 3"} },"\n",{"text":"ticks = ","bold":true},{"text":"ticks - 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Ticks - 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZKonG.4Ausl set -3"} },"\n",{"text":"ticks == ","bold":true},{"score":{"name":"VarKonG.4Ticks","objective":"PZKonG.4Wert"},"color":"dark_purple","bold":true},"\n",{"text":"groesse = ","bold":true},{"text":"groesse + 8","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Größe + 8"} },"clickEvent":{"action":"run_command","value":"/trigger PZKonG.4Ausl set 4"} },"\n",{"text":"groesse = ","bold":true},{"text":"groesse - 8","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Größe - 8"} },"clickEvent":{"action":"run_command","value":"/trigger PZKonG.4Ausl set -4"} },"\n",{"text":"groesse == ","bold":true},{"score":{"name":"@s","objective":"PZKonG.4Wert"},"color":"dark_purple","bold":true},"\n",{"text":"mittelpunkt = ","bold":true},{"text":"wahr","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für wahr"} },"clickEvent":{"action":"run_command","value":"/trigger PZKonG.4Ausl set 2"} },"\n",{"text":"mittelpunkt = ","bold":true},{"text":"falsch","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für falsch"} },"clickEvent":{"action":"run_command","value":"/trigger PZKonG.4Ausl set -2"} } ] # Je nach dem ob die Mittelpunkt-Option eingestellt wurde oder nicht, wird der entsprechende Wahrheitswert im Chat angezeigt. tellraw @s[tag=EtiKonG.4Mittelpunkt] ["",{"text":"mittelpunkt == ","bold":true},{"text":"wahr","color":"green","bold":true}] tellraw @s[tag=!EtiKonG.4Mittelpunkt] ["",{"text":"mittelpunkt == ","bold":true},{"text":"falsch","color":"red","bold":true}] # Der Spieler erhält erneut die Berechtigung und sein Wert wird zurückgesetzt. scoreboard players enable @s PZKonG.4Ausl scoreboard players set @s PZKonG.4Ausl 0 |
Variante 4: Gerüst-Funktion
Die Gerüst-Funktion bereitet alles vor, damit die Gerüst-Breiten-Funktion geladen werden kann.
konstruktionsgeruest:v4geruest.mcfunction
|
# Die Tick-Variable wird wieder zurück gesetzt. scoreboard players set #VarKonG.4Tick PZKonG.4Wert 0 # Falls das Gerüst noch keine Werte besitzt, werden diese vom Spieler übertragen. scoreboard players operation @s[tag=!EtiKonG.4Wert] PZKonG.4Wert = @p[distance=..5,scores={PZKonG.4Wert=16..}] PZKonG.4Wert execute if entity @s[tag=!EtiKonG.4Wert] if entity @p[distance=..5,tag=EtiKonG.4Mittelpunkt,scores={PZKonG.4Wert=16..}] run tag @s add EtiKonG.4Mittelpunkt # Das Gerüst erhält ein Etikett zur Markierung. tag @s[tag=!EtiKonG.4Wert] add EtiKonG.4Wert # Die Hälften-Variable wird angelegt. scoreboard players operation VarKonG.4Haelfte PZKonG.4Wert = @s PZKonG.4Wert scoreboard players operation VarKonG.4Haelfte PZKonG.4Wert /= KonstKonG.4ZWEI PZKonG.4Wert # Die Breiten-Variable wird auf null gesetzt und anschließend in der Breiten-Funktion verwendet. scoreboard players set VarKonG.4Breite PZKonG.4Wert 0 function konstruktionsgeruest:v4geruest_breite # In der Mitte des Gerüstes befindet sich nach dem Aufbau eine Partikelwolke von der aus die Gerüst-Mitten-Funktion aufgerufen wird. execute at @e[type=minecraft:area_effect_cloud,tag=EtiKonG.4Mitte,sort=nearest,limit=1] run function konstruktionsgeruest:v4geruest_mitte |
Variante 4: Gerüst-Breiten-Funktion
Die Gerüst-Breiten-Funktion ruft sich so oft selbst damit die Größe der Grundfläche für das Gerüst ermöglicht werden kann.
konstruktionsgeruest:v4geruest_breite.mcfunction
|
# Die Längen-Variable wird auf null gesetzt und anschließend in der Längen-Funktion verwendet. scoreboard players set VarKonG.4Laenge PZKonG.4Wert 0 function konstruktionsgeruest:v4geruest_laenge # Die Breiten-Variable wird um vier erhöht und solange der Wert kleiner als der Maximalwert ist, ruft sich diese Funktion selbst um vier Blöcke in X-Richtung versetzt erneut auf. scoreboard players add VarKonG.4Breite PZKonG.4Wert 4 execute if score VarKonG.4Breite PZKonG.4Wert < @s PZKonG.4Wert positioned ~4 ~ ~ run function konstruktionsgeruest:v4geruest_breite |
Variante 4: Gerüst-Längen-Funktion
die Gerüst-Längen-Funktion erstellt die Grundfläche des Gerüsts und erzeugt eine Partikelwolke die als Mittelpunkt fungiert.
konstruktionsgeruest:v4geruest_laenge.mcfunction
|
# Eine 4x4-Quarzfläche wird immer erzeugt. fill ~ ~ ~ ~3 ~ ~3 minecraft:quartz_block replace # Objekte die per Konstruktionsblock kopiert werden, werden bei jedem Aufruf erneut gelöscht, damit sie nicht sich rasant vervielfältigen. execute if entity @s[tag=!EtiKonG.4Spiegel] if score VarKonG.4Laenge PZKonG.4Wert >= VarKonG.4Haelfte PZKonG.4Wert run kill @e[type=!minecraft:player,tag=!EtiKonG.4Geruest,dx=3,dy=47,dz=3] execute if score VarKonG.4Breite PZKonG.4Wert >= VarKonG.4Haelfte PZKonG.4Wert run kill @e[type=!minecraft:player,tag=!EtiKonG.4Geruest,dx=3,dy=47,dz=3] # Wenn sich diese Funktion im ersten Quadranten aufhält, wird der Boden aus blauer Keramik erzeugt. execute if score VarKonG.4Breite PZKonG.4Wert < VarKonG.4Haelfte PZKonG.4Wert if score VarKonG.4Laenge PZKonG.4Wert < VarKonG.4Haelfte PZKonG.4Wert run fill ~ ~ ~ ~3 ~ ~3 minecraft:blue_terracotta replace # Immer wenn sich die Funktion in der Diagonalen befindet wird ein einzelner gelber Block gesetzt. execute if score VarKonG.4Breite PZKonG.4Wert = VarKonG.4Laenge PZKonG.4Wert if score VarKonG.4Breite PZKonG.4Wert < VarKonG.4Haelfte PZKonG.4Wert run setblock ~ ~ ~ minecraft:yellow_terracotta replace # Wenn sich die Funktion in der Mitte befindet wird eine Partikelwolke erzeugt, die die Mitte markiert. execute if score VarKonG.4Breite PZKonG.4Wert = VarKonG.4Haelfte PZKonG.4Wert if score VarKonG.4Laenge PZKonG.4Wert = VarKonG.4Haelfte PZKonG.4Wert run summon minecraft:area_effect_cloud ~ ~ ~ {Duration:1,Tags:["EtiKonG.4Alle","EtiKonG.4Mitte"]} # Die Längen-Variable wird um vier erhöht. scoreboard players add VarKonG.4Laenge PZKonG.4Wert 4 # Falls ein Mittelpunkt eingestellt ist, wird eine zusätzliche blaue Schicht gesetzt. execute if entity @s[tag=EtiKonG.4Mittelpunkt] if score VarKonG.4Breite PZKonG.4Wert = VarKonG.4Haelfte PZKonG.4Wert if score VarKonG.4Laenge PZKonG.4Wert <= VarKonG.4Haelfte PZKonG.4Wert run fill ~ ~ ~ ~ ~ ~4 minecraft:blue_terracotta replace # Ebenso wird eine zusätzliche Quarzschicht in X-Breite gesetzt. execute if entity @s[tag=EtiKonG.4Mittelpunkt] run scoreboard players add VarKonG.4Breite PZKonG.4Wert 4 execute if score @s[tag=EtiKonG.4Mittelpunkt] PZKonG.4Wert = VarKonG.4Breite PZKonG.4Wert run fill ~4 ~ ~ ~4 ~ ~4 minecraft:quartz_block replace execute if entity @s[tag=EtiKonG.4Mittelpunkt] run scoreboard players remove VarKonG.4Breite PZKonG.4Wert 4 # Ebenfalls auch in Z-Breite. execute if score @s[tag=EtiKonG.4Mittelpunkt] PZKonG.4Wert = VarKonG.4Laenge PZKonG.4Wert run fill ~ ~ ~4 ~4 ~ ~4 minecraft:quartz_block replace # Wenn die Längen-Variable kleiner als der Maximalwert ist, wird diese Funktion um vier Blöcke in Z-Richtung nochmal aufgerufen. execute if score VarKonG.4Laenge PZKonG.4Wert < @s PZKonG.4Wert positioned ~ ~ ~4 run function konstruktionsgeruest:v4geruest_laenge |
Variante 4: Gerüst-Mitten-Funktion
Die Gerüst-Mitten-Funktion wird in der Mitte des Gerüsts aufgerufen und erzeugt die vier Konstruktionsblöcke, die das Bauwerk kopieren und rotieren. Ebenfalls wird die Gerüst-Ketten-Funktion aufgerufen.
konstruktionsgeruest:v4geruest_mitte.mcfunction
|
# Zuerst wird ein roter Boden gesetzt, der später für die Redstone-Blöcke verwendet wird. fill ~-1 ~ ~-2 ~ ~ ~1 minecraft:red_terracotta replace # Es werden vier Konstruktionsblöcke gesetzt, die schon ein paar Daten enthalten. fill ~-1 ~ ~-1 ~ ~ ~ minecraft:structure_block{mode:"LOAD",name:"konstruktionsgeruest:v4volumen",posY:1} replace # Einer davon wird als Speicherblock ausgewählt. data merge block ~-1 ~ ~-1 {mode:"SAVE",posX:-7,posZ:-7,sizeX:8,sizeY:8,sizeZ:8} # Während die drei Ladeblöcke ihre Rotationsdaten erhalten. data merge block ~ ~ ~-1 {rotation:"CLOCKWISE_90",posX:7,posZ:-7} data merge block ~ ~ ~ {rotation:"CLOCKWISE_180",posX:7,posZ:7} data merge block ~-1 ~ ~ {rotation:"COUNTERCLOCKWISE_90",posX:-7,posZ:7} # Die Größe des Speicherbereichs ist immer die Hälfte des gesamten Gerüstes. So wird dem entsprechend die Hälfte ausgelesen und in den Speicherblock gespeichert. execute store result block ~-1 ~ ~-1 sizeX int 1 store result block ~-1 ~ ~-1 sizeY int 1 store result block ~-1 ~ ~-1 sizeZ int 1 run scoreboard players get VarKonG.4Haelfte PZKonG.4Wert # Die Positionen der Konstuktionen ist immer ein Block weniger als die Hälfte. So wird die Hälften-Variable um eins reduziert und dessen Wert wird in all den Konstruktionsblöcken gespeichert. execute store result block ~-1 ~ ~-1 posX int -1 store result block ~-1 ~ ~-1 posZ int -1 store result block ~ ~ ~-1 posX int 1 store result block ~ ~ ~-1 posZ int -1 store result block ~ ~ ~ posX int 1 store result block ~ ~ ~ posZ int 1 store result block ~-1 ~ ~ posX int -1 store result block ~-1 ~ ~ posZ int 1 run scoreboard players remove VarKonG.4Haelfte PZKonG.4Wert 1 # Falls die Mittelpunkt-Option aktiviert ist, werden die Positionen um eins angepasst, sodass die Bereiche wieder passen. execute if entity @s[tag=EtiKonG.4Mittelpunkt] store result block ~ ~ ~-1 posX int 1 store result block ~ ~ ~ posX int 1 store result block ~ ~ ~ posZ int 1 store result block ~-1 ~ ~ posZ int 1 run scoreboard players add VarKonG.4Haelfte PZKonG.4Wert 1 execute if entity @s[tag=EtiKonG.4Mittelpunkt] store result block ~-1 ~ ~-1 sizeX int 1 run scoreboard players add VarKonG.4Haelfte PZKonG.4Wert 1 execute if entity @s[tag=EtiKonG.4Mittelpunkt] run scoreboard players remove VarKonG.4Haelfte PZKonG.4Wert 2 # Die roten Keramikblöcke können dann durch Redstone-Blöcke ersetzt werden und diese haben zur Folge, dass die Speicher- und Ladeblöcke ihrer Arbeit nachgehen können. fill ~-1 ~ ~-2 ~ ~ ~1 minecraft:redstone_block replace minecraft:red_terracotta # Damit die Gerüst-Ketten-Funktion aufgerufen werden kann, müssen die Variablen gesetzt und vorbereitet werden. scoreboard players set VarKonG.4Hoch PZKonG.4Wert 0 scoreboard players operation VarKonG.4Runter PZKonG.4Wert = VarKonG.4Haelfte PZKonG.4Wert scoreboard players add VarKonG.4Haelfte PZKonG.4Wert 1 execute positioned ~-2 ~ ~-1 run function konstruktionsgeruest:v4geruest_kette # Die Partikelwolke wird entfernt. kill @e[type=minecraft:area_effect_cloud,tag=EtiKonG.4Mitte,sort=nearest,limit=1] |
Variante 4: Gerüst-Ketten-Funktion
Die Gerüst-Ketten-Funktion platziert jetzt von der Mitte aus, bis zum Rand der Gerüstfläche jeweils einen Kopier- und einen Ladeblock. Dabei nimmt das Kopier-Volumen pro Selbstaufruf um eins ab.
konstruktionsgeruest:v4geruest_kette.mcfunction
|
# Es wird ein roter Keramik-Bereich gesetzt um ihn später in einem Ruck ersetzen zu können. fill ~ ~ ~-1 ~ ~ ~2 minecraft:red_terracotta replace # Es wird ein Speicherblock gesetzt, der die Grunddaten besitzt. setblock ~ ~ ~ minecraft:structure_block{mode:"SAVE",posX:1,posY:1,posZ:-7,sizeX:1,sizeY:8,sizeZ:8,name:"konstruktionsgeruest:v4volumen"} replace # Anschließend wird die Z-Position, wie auch die Y- und Z-Größe angepasst. execute store result block ~ ~ ~ posZ int -1 run scoreboard players remove VarKonG.4Haelfte PZKonG.4Wert 1 execute store result block ~ ~ ~ sizeY int 1 run scoreboard players add VarKonG.4Haelfte PZKonG.4Wert 1 execute store result block ~ ~ ~ sizeZ int 1 run scoreboard players get VarKonG.4Runter PZKonG.4Wert # Der Ladeblock wird gesetzt. Hierbei besitzt er schon manche Grunddaten. setblock ~ ~ ~1 minecraft:structure_block{mode:"LOAD",ignoreEntities:true,rotation:"CLOCKWISE_90",mirror:"LEFT_RIGHT",posX:0,posY:1,posZ:-7,name:"konstruktionsgeruest:v4volumen"} replace # Der Ladeblock bekommt anschließend die X- und Z-Position abhängig der Variablen gesetzt. execute store result block ~ ~ ~1 posX int -1 run scoreboard players remove VarKonG.4Runter PZKonG.4Wert 1 execute store result block ~ ~ ~1 posZ int -1 run scoreboard players add VarKonG.4Hoch PZKonG.4Wert 1 # Die roten Keramikblöcke werden durch Redstone-Blöcke ersetzt und aktivieren so den Speicher- und Ladeblock. fill ~ ~ ~-1 ~ ~ ~2 minecraft:redstone_block replace minecraft:red_terracotta # Solange die Runter-Variable noch mindestens den Wert eins besitzt wird diese Funktion selbst um einen Block gegen die X-Richtung aufgerufen. execute if score VarKonG.4Runter PZKonG.4Wert matches 1.. positioned ~-1 ~ ~ run function konstruktionsgeruest:v4geruest_kette |
Variante 4: Stopp-Funktion
Die Stopp-Funktion entfernt die Punkte-Ziele wieder und löscht die Gerüste. Ebenfalls werden die Etiketten entfernt.
konstruktionsgeruest:v4stopp.mcfunction
|
# Die beiden Punkte-Ziele werden entfernt. scoreboard objectives remove PZKonG.4Ausl scoreboard objectives remove PZKonG.4Wert # Die Etiketten werden entfernt. tag @a[tag=EtiKonG.4Auswahl] remove EtiKonG.4Auswahl tag @a[tag=EtiKonG.4Mittelpunkt] remove EtiKonG.4Mittelpunkt # Die Rüstungsständer aus dem Inventar werden entfernt. clear @a minecraft:armor_stand[minecraft:custom_data~{EigKonG.4Alle:true}] # Der Boden der Gerüste wird entfernt. execute at @e[type=minecraft:armor_stand,tag=EtiKonG.4Geruest] run fill ~ ~ ~ ~47 ~7 ~47 minecraft:air replace execute at @e[type=minecraft:armor_stand,tag=EtiKonG.4Geruest] if block ~48 ~ ~ quartz_block run fill ~48 ~ ~ ~95 ~7 ~47 minecraft:air replace execute at @e[type=minecraft:armor_stand,tag=EtiKonG.4Geruest] if block ~ ~ ~48 quartz_block run fill ~ ~ ~48 ~47 ~7 ~95 minecraft:air replace execute at @e[type=minecraft:armor_stand,tag=EtiKonG.4Geruest] if block ~48 ~ ~48 quartz_block run fill ~48 ~ ~48 ~95 ~7 ~95 minecraft:air replace # Drops und die Gerüste werden entfernt. execute at @e[type=minecraft:armor_stand,tag=EtiKonG.4Geruest] run kill @e[type=!minecraft:player,dx=47,dy=7,dz=47] execute as @e[type=minecraft:item] if items entity @s contents *[minecraft:custom_data~{EigKonG.4Alle:true}] run kill @s kill @e[tag=EtiKonG.4Alle] |
|
Block-Tauschanlage => Redstone; Block-Transportanlage => Redstone; Block-Speicher => Redstone; Einfachauswahl => Redstone, Befehle; Mehrfachauswahl => Redstone, Befehle; Benutzerschnittstelle => Befehle; Benutzeroberfläche => Befehle; Lichtanlage => Redstone; Leuchtfeueranlage => Redstone; Musikanlage => Redstone; Musikgenerator => Redstone; Musik-Walzenspieler => Redstone; Tür- und Toranlage => Mechanik, Redstone (erweitert), Befehle; Schleusentür => Redstone; Schießanlage => Redstone (erweitert); TNT-Kanone => Redstone (erweitert); Ambossspender => Mechanik, Redstone; Standort-Markierung => Befehle; Zonen-Markierung => Befehle; Sperrzone => Befehle; Käfigzone => Befehle; Objekt-Steuerung => Befehle; Tageszeitwandler und -sensor => Befehle; Wetterwandler und -sensor => Befehle; Parcours-Element => Befehle; Parcours => Befehle; Bestenliste => Befehle; Mannschaftsverteiler => Befehle; Labyrinth- und Irrgartengenerator => Befehle; Konstruktionsgerüst => Befehle;
|
|