Braustand-Rezeptmaschine (Befehle)

Aus Technik Wiki
Wechseln zu: Navigation, Suche
Gruppe: Grid Trichter.png
Maschinen

Grid Roter Sand blass.png mit Mechaniken

Grid Redstone blass.png mit Redstone
                Hier:
Grid Befehlsblock.png mit Befehlen
Noch in keiner
Download-Welt enthalten.
Wiki Mechanik-Welt.png
Alle neuen oder überarbeiteten Techniken auf dieser Seite sind noch nicht in der aktuellen Mechanik-Welt vorhanden.
In einem der nächsten Updates werden sie dort hinzugefügt werden.

Eine Braustand-Rezeptmaschine wird für das Brauen von Tränken verwendet. Da es keine Möglichkeit gibt, die Trankrezepte über JSON-Dateien zu ändern, muss das über NBT erfolgen. die Braustand-Rezeptmaschine ermöglicht es die Brauzeit zu beschleunigen oder völlig neue oder andere Tränke zu brauen.

Was hier nicht gezeigt wird, aber theoretisch auch möglich wäre, ist es einen größeren Behälter zu verwenden der mehr Slots frei hat. Dann könnte man einstellen, das noch mehr als drei Tränke gleichzeitig gebraut werden könnten. Ebenfalls könnte man auch einstellen, dass Tränke gemischt werden können, sodass ein Trank mehrere Trankeffekte ausübt.

Inhaltsverzeichnis

Variante 1[Bearbeiten | Quelltext bearbeiten]

Braustand-Rezeptmaschine (Befehle) Bild 1.1.png Braustand-Rezeptmaschine (Befehle) Bild 1.2.png Braustand-Rezeptmaschine (Befehle) Bild 1.3.png

Diese Braustand-Rezeptmaschine wird dazu genutzt, damit der Braustand deutlich schneller Tränke braut. Dazu muss man einen Braustand aufstellen und auf ihm einen Rahmen platzieren, mit einem Braustand darin. Anschließend müssen die drei Tränke-Slots mit Feuerresistenz-Wurftränken befüllt sein und Lohenpulver und Schwarzpulver müssen eingelegt sein. Dann werden alle Slots geleert und im Lohenpulver-Slot befindet sich die Summe der Lohenpulver und Schwarzpulver-Stapelmengen als Feuerkugeln. Solange Feuerkugeln dort liegen, werden Tränke schneller gebraut. Wenn der Braustand leer ist, muss er wieder mit nachgefüllt, damit er schnell brauen kann.

Einschalten
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:


Variante 1: Start-Funktion
Die Start-Funktion erstellt das Punkte-Ziel um den Braufortschritt speichern zu können, es werden alle wichtigen Gegenstände den Spielern gegeben und die Vorgehensweise wie man den Braustand aktiviert wird mit einem Beispiel-Braustand gezeigt.

Editor Icon.png braustand-rezeptmaschine:v1start.mcfunction
# Ein Punkte-Ziel für das Brauen wird erstellt.
scoreboard objectives add PZBrRezM.1Fort dummy ["Braustand-Rezeptmaschine.1: ",{"text":"Fortschritt des Brauvorgangs","bold":true}]

# Zwei Braustände und ein Rahmen wird den Spielern gegeben, mit dem sie den Aufbau starten können.
give @a[distance=..15] minecraft:brewing_stand{EigBrRezM.1Alle:true,display:{Lore:['"Platziere den Braustand,"','"platziere den Rahmen darauf"','"und lege in diesen ebenfalls den Braustand."']} } 2
give @a[distance=..15] minecraft:item_frame{EigBrRezM.1Alle:true,display:{Lore:['"Platziere den Braustand,"','"platziere den Rahmen darauf"','"und lege in diesen ebenfalls den Braustand."']} } 1

# Lohenstaub für das Betreiben des Braustandes wird gegeben.
give @a[distance=..15] minecraft:blaze_powder{EigBrRezM.1Alle:true,display:{Lore:['"Rezept-Gegenstand"']} } 64

# Um die Tränke zu brauen, werden spezielle Zutaten den Spielern gegeben.
give @a[distance=..15] minecraft:fermented_spider_eye{EigBrRezM.1Alle:true,display:{Lore:['"Rezept-Gegenstand"']} } 64
give @a[distance=..15] minecraft:gunpowder{EigBrRezM.1Alle:true,display:{Lore:['"Rezept-Gegenstand"']} } 64
give @a[distance=..15] minecraft:dragon_breath{EigBrRezM.1Alle:true,display:{Lore:['"Rezept-Gegenstand"']} } 64

# Um den Braustand in einen Schnellbrauer umzuwandeln werden Feuerresistenz-Tränke benötigt.
give @a[distance=..15] minecraft:splash_potion{EigBrRezM.1Alle:true,display:{Lore:['"Rezept-Gegenstand"']},Potion:"minecraft:fire_resistance"} 3

# Verschiedene Tränke, die man weiter brauen kann.
give @a[distance=..15] minecraft:potion{EigBrRezM.1Alle:true,display:{Lore:['"Rezept-Gegenstand"']},Potion:"minecraft:night_vision"} 2
give @a[distance=..15] minecraft:potion{EigBrRezM.1Alle:true,display:{Lore:['"Rezept-Gegenstand"']},Potion:"minecraft:strength"} 2
give @a[distance=..15] minecraft:potion{EigBrRezM.1Alle:true,display:{Lore:['"Rezept-Gegenstand"']},Potion:"minecraft:luck"} 2
give @a[distance=..15] minecraft:potion{EigBrRezM.1Alle:true,display:{Lore:['"Rezept-Gegenstand"']},Potion:"minecraft:regeneration"} 2
give @a[distance=..15] minecraft:potion{EigBrRezM.1Alle:true,display:{Lore:['"Rezept-Gegenstand"']},Potion:"minecraft:swiftness"} 2

# Um zu sehen, wie man den Braustand bestücken muss, damit er zum Schnellbrauer wird.
setblock ~ ~1 ~ minecraft:brewing_stand{Fuel:20b,Items:[{Slot:0b,id:"minecraft:splash_potion",Count:1b,tag:{Potion:"minecraft:fire_resistance"} },{Slot:1b,id:"minecraft:splash_potion",Count:1b,tag:{Potion:"minecraft:fire_resistance"} },{Slot:2b,id:"minecraft:splash_potion",Count:1b,tag:{Potion:"minecraft:fire_resistance"} },{Slot:3b,id:"minecraft:gunpowder",Count:1b},{Slot:4b,id:"minecraft:blaze_powder",Count:63b}]} replace

Variante 1: Zyklus-Funktion
Die Zyklus-Funktion prüft ob man einen Braustand platziert hat, auf den man einen Rahmen mit Braustand drin befestigt hat und nur dann wird die Rezeptblock-Funktion geladen.

Editor Icon.png braustand-rezeptmaschine:v1zyklus.mcfunction
# Es wird geprüft ob ein Rahmen einen Braustand in sich trägt und unter sich ein Braustand befindet, nur dann bekommt er die Etiketten.
execute as @e[type=minecraft:item_frame,tag=!EtiBrRezM.1Rezeptblock,nbt={Facing:1b,Item:{id:"minecraft:brewing_stand"} }] at @s if block ~ ~-1 ~ minecraft:brewing_stand{Items:[]} run data merge entity @s {Tags:["EtiBrRezM.1Alle","EtiBrRezM.1Rezeptblock"]}

# Vom Rahmen aus, wird geprüft ob sich kein Braustand unter ihm befindet, das Ergebnis der Prüfung wird mit eins oder null in seinem Punktestand gespeichert.
execute as @e[type=minecraft:item_frame,tag=EtiBrRezM.1Rezeptblock] at @s store success score @s PZBrRezM.1Fort unless block ~ ~-1 ~ minecraft:brewing_stand

# Wenn unter dem Rahmen kein Braustand mehr ist, wird dieser gelöscht.
kill @e[type=minecraft:item_frame,tag=EtiBrRezM.1Rezeptblock,scores={PZBrRezM.1Fort=1}]

# Wenn unter dem Rahmen ein Braustand ist, wird die Rezeptblock-Funktion unter ihm ausgeführt.
execute as @e[type=minecraft:item_frame,tag=EtiBrRezM.1Rezeptblock,scores={PZBrRezM.1Fort=0}] at @s if entity @p[distance=..5] positioned ~ ~-1 ~ run function braustand-rezeptmaschine:v1rezeptblock

Variante 1: Rezeptblock-Funktion
Die Rezeptblock-Funktion prüft ob man den Braustand mit drei Tränken, Lohenpulver und Schwarzpulver aktiviert hat und nur dann sorgt sie dafür, dass der Braustand beliebige Gegenstände im rasanten Tempo braut.

Editor Icon.png braustand-rezeptmaschine:v1rezeptblock.mcfunction
# Damit der Braustand zum Schnellbrauer wird, müssen sich in den drei Trank-Slots jeweils ein Feuerresistenz-Wurftrank befinden und Lohenpulver und Schwarzpulver in ihren jeweiligen Slots. Dann erhält der Rahmen ein Etikett zur Markierung.
execute if data block ~ ~ ~ {Items:[{Slot:0b,id:"minecraft:splash_potion",tag:{Potion:"minecraft:fire_resistance"} },{Slot:1b,id:"minecraft:splash_potion",tag:{Potion:"minecraft:fire_resistance"} },{Slot:2b,id:"minecraft:splash_potion",tag:{Potion:"minecraft:fire_resistance"} },{Slot:3b,id:"minecraft:gunpowder"},{Slot:4b,id:"minecraft:blaze_powder"}]} run tag @s add EtiBrRezM.1Rezept

# Die Anzahl des Lohenpulvers und die des Schwarzpulvers wird ausgelesen und in separate Variablen gespeichert. Anschließend wird das Inventar des Braustandes gelöscht und in den Lohenpulver-Slot wird eine Feuerkugel gelegt.
execute if entity @s[tag=EtiBrRezM.1Rezept] store result score VarBrRezM.1Lohenpulver PZBrRezM.1Fort run data get block ~ ~ ~ Items[{Slot:4b}].Count
execute if entity @s[tag=EtiBrRezM.1Rezept] store result score VarBrRezM.1Schwarzpulver PZBrRezM.1Fort run data get block ~ ~ ~ Items[{Slot:3b}].Count
execute if entity @s[tag=EtiBrRezM.1Rezept] run data remove block ~ ~ ~ Items
execute if entity @s[tag=EtiBrRezM.1Rezept] run data modify block ~ ~ ~ Items prepend value {Slot:4b,id:"minecraft:fire_charge",Count:1b}

# Die beiden ausgelesenen Variablen werden zusammen addiert. Die Summe davon bestimmt die Anzahl der Feuerkugeln. Es werden maximal 127 Einheiten als Stapel akzeptiert, deshalb wird beim Übertragen der Summe eins vorher noch abgezogen. Anschließend werden drei Glasflaschen erzeugt und ein Geräusch abgespielt.
execute if entity @s[tag=EtiBrRezM.1Rezept] run scoreboard players operation VarBrRezM.1Lohenpulver PZBrRezM.1Fort += VarBrRezM.1Schwarzpulver PZBrRezM.1Fort
execute if entity @s[tag=EtiBrRezM.1Rezept] store result block ~ ~ ~ Items[{Slot:4b}].Count byte 1 run scoreboard players remove VarBrRezM.1Lohenpulver PZBrRezM.1Fort 1
execute if entity @s[tag=EtiBrRezM.1Rezept] run summon minecraft:item ~ ~1 ~ {Item:{id:"minecraft:glass_bottle",Count:3b},Motion:[0.0d,0.3d,0.0d]}
execute if entity @s[tag=EtiBrRezM.1Rezept] run playsound minecraft:entity.wither.spawn master @a[distance=..15] ~ ~ ~ 1 1 0.1

# Damit ist der Vorgang abgeschlossen und das Etikett wird entfernt.
tag @s[tag=EtiBrRezM.1Rezept] remove EtiBrRezM.1Rezept

# Solange mindestens eine Feuerkugel im Lohenpulver-Slot liegt, erhält der Rahmen ein Etikett.
execute if data block ~ ~ ~ {Items:[{Slot:4b,id:"minecraft:fire_charge"}]} run tag @s add EtiBrRezM.1Feuerkugel

# Wenn der Rahmen eine Feuerkugel oder auch den Schnellbrauer-Modus hast, wird der Brennstoff ausgelesen und in seinen Punktestand gespeichert.
execute unless entity @s[tag=!EtiBrRezM.1Feuerkugel,tag=!EtiBrRezM.1Schnellbrauen] store result score @s PZBrRezM.1Fort run data get block ~ ~ ~ Fuel

# Wenn der Braustand keine Feuerkugel mehr besitzt und sein Brennstoff auf null gesunken ist, wird das Etikett fürs Schnellbrauen entzogen.
tag @s[tag=!EtiBrRezM.1Feuerkugel,tag=EtiBrRezM.1Schnellbrauen,scores={PZBrRezM.1Fort=..0}] remove EtiBrRezM.1Schnellbrauen

# Wenn der Braustand mindestens eine Feuerkugel besitzt und sein Brennstoff bei null angekommen ist und einer der drei Trank-Slots belegt ist, wird das Etikett vergeben.
execute if entity @s[tag=EtiBrRezM.1Feuerkugel,scores={PZBrRezM.1Fort=..0}] if data block ~ ~ ~ Items[{Slot:0b}] run tag @s add EtiBrRezM.1Stapel
execute if entity @s[tag=EtiBrRezM.1Feuerkugel,tag=!EtiBrRezM.1Stapel,scores={PZBrRezM.1Fort=..0}] if data block ~ ~ ~ Items[{Slot:1b}] run tag @s add EtiBrRezM.1Stapel
execute if entity @s[tag=EtiBrRezM.1Feuerkugel,tag=!EtiBrRezM.1Stapel,scores={PZBrRezM.1Fort=..0}] if data block ~ ~ ~ Items[{Slot:2b}] run tag @s add EtiBrRezM.1Stapel

# Wenn das Etikett vorhanden ist, wird der Brennstoff wieder aufgefüllt und die Anzahl der Feuerkugeln um eins reduziert.
execute if entity @s[tag=EtiBrRezM.1Stapel] run data merge block ~ ~ ~ {Fuel:20b}
execute store result score @s[tag=EtiBrRezM.1Stapel] PZBrRezM.1Fort run data get block ~ ~ ~ Items[{Slot:4b}].Count
execute if entity @s[tag=EtiBrRezM.1Stapel] store result block ~ ~ ~ Items[{Slot:4b}].Count byte 1 run scoreboard players remove @s PZBrRezM.1Fort 1

# Wenn der Brennstoff mindestens bei eins liegt, wird das Etikett fürs Schnellbrauen vergeben.
tag @s[tag=!EtiBrRezM.1Schnellbrauen,scores={PZBrRezM.1Fort=1..}] add EtiBrRezM.1Schnellbrauen

# Die Etiketten werden wieder entfernt.
tag @s[tag=EtiBrRezM.1Stapel] remove EtiBrRezM.1Stapel
tag @s[tag=EtiBrRezM.1Feuerkugel] remove EtiBrRezM.1Feuerkugel

# Wenn der Braustand im Schnellbrauer-Modus ist, wird die Brauzeit ausgelesen und in den Rahmen gepseichert. Dann wird sie um 21 verringert.
execute store result score @s[tag=EtiBrRezM.1Schnellbrauen] PZBrRezM.1Fort run data get block ~ ~ ~ BrewTime
execute if entity @s[tag=EtiBrRezM.1Schnellbrauen,scores={PZBrRezM.1Fort=20..}] store result block ~ ~ ~ BrewTime short 1 run scoreboard players remove @s PZBrRezM.1Fort 21

# Wenn die Brauzeit zwischen 21 und 42 liegt, werden Rauch- und Flammen-Partikel erzeugt.
execute if entity @s[tag=EtiBrRezM.1Schnellbrauen,scores={PZBrRezM.1Fort=21..42}] run particle minecraft:smoke ~ ~1 ~ 0 0 0 0.01 10 force @a[distance=..15]
execute if entity @s[tag=EtiBrRezM.1Schnellbrauen,scores={PZBrRezM.1Fort=21..42}] run particle minecraft:flame ~ ~1 ~ 0 0 0 0.01 10 force @a[distance=..15]

Variante 1: Stopp-Funktion
Die Stopp-Funktion löscht das Punkte-Ziel und die Gegenstände wieder. Ebenfalls werden die Braustände entfernt.

Editor Icon.png braustand-rezeptmaschine:v1stopp.mcfunction
# Das Punkte-Ziel wird entfernt.
scoreboard objectives remove PZBrRezM.1Fort

# Wenn der Spieler mindestens einen Gegenstand mit der bestimmten Eigenschaft besitzt, werden alle Gegenstände vom Alias entfernt.
clear @a[nbt={Inventory:[{tag:{EigBrRezM.1Alle:true} } ] }] #braustand-rezeptmaschine:v1rezepte

# Der Braustand und alle anderen unter Rahmen werden entfernt.
setblock ~ ~1 ~1 minecraft:air replace
execute at @e[type=minecraft:item_frame,tag=EtiBrRezM.1Alle] if block ~ ~-1 ~ minecraft:brewing_stand run setblock ~ ~-1 ~ minecraft:air replace

# Drops bekommen das Etikett und alle Drops und Rahmen werden gelöscht.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigBrRezM.1Alle:true} } }] add EtiBrRezM.1Alle
kill @e[tag=EtiBrRezM.1Alle]

Variante 2[Bearbeiten | Quelltext bearbeiten]

Braustand-Rezeptmaschine (Befehle) Bild 2.1.png Braustand-Rezeptmaschine (Befehle) Bild 2.2.png Braustand-Rezeptmaschine (Befehle) Bild 2.3.png

Mit dieser Braustand-Rezeptmaschine lässt sich ein Braustand simulieren. Dazu wird ein Spender benutzt, der nach oben schauen muss und auf diesem muss sich ein Rahmen mit Braustand befinden. Dann verhält sich das Inventar des Spenders wie ein Braustand. Man legt oben links das Lohenpulver hinein und rechts oben die Brauzutaten. In den unteren drei Slots legt man die Tränke hinein, die gebraut werden sollen. Die rote Glasscheibe zeigt die Dauer an und die grüne den Braufortschritt. Man kann die Funktionen der Zutaten und Tränke erweitern, sodass man weitere Tränke brauen könnte.

Einschalten
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:


Variante 2: Start-Funktion
Die Start-Funktion erstellt die drei Punkte-Ziele für den Fortschritt, die Dauer und die zutat. Es werden alle wichtigen Gegenstände den Spielern gegeben.

Editor Icon.png braustand-rezeptmaschine:v2start.mcfunction
# Es werden drei Punkte-Ziel erstellt.
scoreboard objectives add PZBrRezM.2Fort dummy ["Braustand-Rezeptmaschine.2: ",{"text":"Fortschritt der Erhitzung","bold":true}]
scoreboard objectives add PZBrRezM.2Dau dummy ["Braustand-Rezeptmaschine.2: ",{"text":"Dauer der Erhitzung","bold":true}]
scoreboard objectives add PZBrRezM.2Zut dummy ["Braustand-Rezeptmaschine.2: ",{"text":"Zutaten für Tränke","bold":true}]

# Es wird eine Konstante mit dem wert 20 erstellt.
scoreboard players set KonstBrRezM.2ZWANZIG PZBrRezM.2Fort 20

# Es wird ein NBT-Speicher für das Speichern von Tränken angelegt.
data merge storage braustand-rezeptmaschine:v2daten {EigBrRezM.2Trank:{} }

# Es wird ein Spender, ein Rahmen und ein Braustand an die Spieler gegeben, um den simulierten Braustand aufbauen zu können.
give @a[distance=..15] minecraft:dropper{EigBrRezM.2Alle:true,display:{Lore:['"Platziere den Spender,"','"platziere den Rahmen darauf"','"und lege in diesen den Braustand."']} } 1
give @a[distance=..15] minecraft:item_frame{EigBrRezM.2Alle:true,display:{Lore:['"Platziere den Spender,"','"platziere den Rahmen darauf"','"und lege in diesen den Braustand."']} } 1
give @a[distance=..15] minecraft:brewing_stand{EigBrRezM.2Alle:true,display:{Lore:['"Platziere den Spender,"','"platziere den Rahmen darauf"','"und lege in diesen den Braustand."']} } 1

# Lohenpulver für das Brauen wird gegeben.
give @a[distance=..15] minecraft:blaze_powder{EigBrRezM.2Alle:true,display:{Lore:['"Rezept-Gegenstand"']} } 64

# Es werden an die Spieler drei Zutaten gegeben, die man zum brauen nutzen kann.
give @a[distance=..15] minecraft:fermented_spider_eye{EigBrRezM.2Alle:true,display:{Lore:['"Rezept-Gegenstand"']} } 64
give @a[distance=..15] minecraft:gunpowder{EigBrRezM.2Alle:true,display:{Lore:['"Rezept-Gegenstand"']} } 64
give @a[distance=..15] minecraft:dragon_breath{EigBrRezM.2Alle:true,display:{Lore:['"Rezept-Gegenstand"']} } 64

# Es werden verschiedene Tränke gegeben, die man weiter verbrauen kann.
give @a[distance=..15] minecraft:potion{EigBrRezM.2Alle:true,display:{Lore:['"Rezept-Gegenstand"']},Potion:"minecraft:night_vision"} 2
give @a[distance=..15] minecraft:potion{EigBrRezM.2Alle:true,display:{Lore:['"Rezept-Gegenstand"']},Potion:"minecraft:strength"} 2
give @a[distance=..15] minecraft:potion{EigBrRezM.2Alle:true,display:{Lore:['"Rezept-Gegenstand"']},Potion:"minecraft:luck"} 2
give @a[distance=..15] minecraft:potion{EigBrRezM.2Alle:true,display:{Lore:['"Rezept-Gegenstand"']},Potion:"minecraft:regeneration"} 2
give @a[distance=..15] minecraft:potion{EigBrRezM.2Alle:true,display:{Lore:['"Rezept-Gegenstand"']},Potion:"minecraft:swiftness"} 2

Variante 2: Zyklus-Funktion
Die Zyklus-Funktion prüft ob ein nach oben gestellter Spender von einem Rahmen mit Braustand begleitet wird und ruft nur dann die Menü-Funktion auf.

Editor Icon.png braustand-rezeptmaschine:v2zyklus.mcfunction
# Wenn ein Rahmen einen Braustand besitzt und unter ihm ein nach oben zeigender Spender steht, werden dem Rahmen drei Etiketten gegeben.
execute as @e[type=minecraft:item_frame,tag=!EtiBrRezM.2Spender,nbt={Facing:1b,Item:{id:"minecraft:brewing_stand"} }] at @s if block ~ ~-1 ~ minecraft:dropper[facing=up]{Items:[]} run data merge entity @s {Tags:["EtiBrRezM.2Alle","EtiBrRezM.2Spender","EtiBrRezM.2Werte"]}

# Wenn der Rahmen noch das entsprechende Etikett besitzt, werden die Dauer und der Fortschritt auf null gesetzt und anschließend wird das Etikett entfernt.
execute as @e[type=minecraft:item_frame,tag=EtiBrRezM.2Werte] run scoreboard players operation @s PZBrRezM.2Dau = @s PZBrRezM.2Fort
tag @e[type=minecraft:item_frame,tag=EtiBrRezM.2Werte] remove EtiBrRezM.2Werte

# Falls unter dem Rahmen kein Spender ist, wird er entfernt.
execute as @e[type=minecraft:item_frame,tag=EtiBrRezM.2Spender] at @s unless block ~ ~-1 ~ minecraft:dropper[facing=up] run kill @s

# Vom Rahmen aus, wird die Menü-Funktion aufgerufen.
execute as @e[type=minecraft:item_frame,tag=EtiBrRezM.2Spender] at @s positioned ~ ~-1 ~ run function braustand-rezeptmaschine:v2menu

Variante 2: Menü-Funktion
Die Menü-Funktion prüft das Inventar des Spender-Braustandes und nur, wenn alles stimmt, wird die Inventar-Funktion aufgerufen.

Editor Icon.png braustand-rezeptmaschine:v2menu.mcfunction
# Falls der Spieler die Glasscheiben gedroppt oder ins Inventar geholt hat, werden sie gelöscht.
clear @a[distance=..5] #braustand-rezeptmaschine:v2menu{EigWeRezM.2Menu:true}
kill @e[distance=..2,type=minecraft:item,nbt={Item:{tag:{EigWeRezM.2Menu:true} } },sort=nearest]

# Um die tatsächlich belegten Slots zu zählen, werden alle anderen Slots freigeräumt. Die Anzahl der belegten Slot wird in eine Variable gespeichert.
data remove block ~ ~ ~ Items[{tag:{EigWeRezM.2Menu:true} }]
execute store result score VarWeRezM.2Slots PZBrRezM.2Fort run data get block ~ ~ ~ Items

# Die gesperrten Slots werden schwarzen Glasscheiben aufgefüllt.
replaceitem block ~ ~ ~ container.1 minecraft:black_stained_glass_pane{EigWeRezM.2Alle:true,EigWeRezM.2Menu:true,display:{Name:'{"text":""}'} }
replaceitem block ~ ~ ~ container.5 minecraft:black_stained_glass_pane{EigWeRezM.2Alle:true,EigWeRezM.2Menu:true,display:{Name:'{"text":""}'} }

# Die rote Glasscheibe gibt durch ihre Stapelzahl an, wie weit die Braudauer ist.
replaceitem block ~ ~ ~ container.3 minecraft:red_stained_glass_pane{EigWeRezM.2Alle:true,EigWeRezM.2Menu:true,display:{Name:'{"text":"Dauer","color":"red","bold":true}'} }

# Die grüne Glasscheibe zeigt durch ihre Stapelzahl wie weit der Fortschritt des Brauvorgangs ist.
replaceitem block ~ ~ ~ container.4 minecraft:green_stained_glass_pane{EigWeRezM.2Alle:true,EigWeRezM.2Menu:true,display:{Name:'{"text":"Fortschritt","color":"green","bold":true}'} }

# Wenn mindestens ein Slot belegt ist, wird die Inventar-Funktion aufgerufen.
execute if score VarWeRezM.2Slots PZBrRezM.2Fort matches 1.. run function braustand-rezeptmaschine:v2inventar
JSON Icon.png braustand-rezeptmaschine:v2menu.json
{
  "values": [
    "minecraft:black_stained_glass_pane",
    "minecraft:red_stained_glass_pane",
    "minecraft:green_stained_glass_pane"
  ]
}

Variante 2: Inventar-Funktion
Die Inventar-Funktion prüft ob und wie viele noch zu brauende Tränke in den Slot sind und nur dann ruft sie die Zutaten- und Rezeptblock-Funktionen auf.

Editor Icon.png braustand-rezeptmaschine:v2inventar.mcfunction
# Die zwei Trank-Variablen werden erstmal auf null gesetzt.
execute store result score VarBrRezM.2Trank2 PZBrRezM.2Fort run scoreboard players set VarBrRezM.2Trank3 PZBrRezM.2Fort 0

# Für jeden Trank-Slot wird eine Variable auf eins oder null gesetzt, wenn der Slot wirklich belegt ist und gleichzeitg wird eine Zähl-Variable verwendet, die die belegten Trankslots zählt.
execute store success score VarBrRezM.2Trank1 PZBrRezM.2Fort store success score VarBrRezM.2Traenke PZBrRezM.2Fort if data block ~ ~ ~ Items[{Slot:6b}]
execute store success score VarBrRezM.2Trank2 PZBrRezM.2Fort if data block ~ ~ ~ Items[{Slot:7b}] run scoreboard players add VarBrRezM.2Traenke PZBrRezM.2Fort 1
execute store success score VarBrRezM.2Trank3 PZBrRezM.2Fort if data block ~ ~ ~ Items[{Slot:8b}] run scoreboard players add VarBrRezM.2Traenke PZBrRezM.2Fort 1

# Wenn Etiketten für die Tränke vorhanden sind beduetet dass, dass dort fertig gebraute Tränke noch in den Trank-Slots liegen und dann wird dieser Slot von den belegten Slots wieder abgezogen, da diese Tränke nicht mehr weiter verbaut werden sollen.
execute if entity @s[tag=EtiBrRezM.2Trank1] if score VarBrRezM.2Trank1 PZBrRezM.2Fort matches 1 run scoreboard players remove VarBrRezM.2Traenke PZBrRezM.2Fort 1
execute if entity @s[tag=EtiBrRezM.2Trank2] if score VarBrRezM.2Trank2 PZBrRezM.2Fort matches 1 run scoreboard players remove VarBrRezM.2Traenke PZBrRezM.2Fort 1
execute if entity @s[tag=EtiBrRezM.2Trank3] if score VarBrRezM.2Trank3 PZBrRezM.2Fort matches 1 run scoreboard players remove VarBrRezM.2Traenke PZBrRezM.2Fort 1

# Wenn die Etiketten für die fertig gebrauten Tränke noch vorhanden sind, aber die Slots tatsächlich frei sind, werden die Etiketten entfernt.
execute if entity @s[tag=EtiBrRezM.2Trank1] if score VarBrRezM.2Trank1 PZBrRezM.2Fort matches 0 run tag @s remove EtiBrRezM.2Trank1
execute if entity @s[tag=EtiBrRezM.2Trank2] if score VarBrRezM.2Trank2 PZBrRezM.2Fort matches 0 run tag @s remove EtiBrRezM.2Trank2
execute if entity @s[tag=EtiBrRezM.2Trank3] if score VarBrRezM.2Trank3 PZBrRezM.2Fort matches 0 run tag @s remove EtiBrRezM.2Trank3

# Wenn der Slot für Brauzutaten belegt ist, wird ein entsprechendes Etikett vergeben. ebenfalls wird der Wert der Zutaten in eine Variable kopiert.
execute if data block ~ ~ ~ Items[{Slot:2b}] run tag @s add EtiBrRezM.2Zutat
scoreboard players operation VarBrRezM.2Zutat PZBrRezM.2Zut = @s PZBrRezM.2Zut

# Wenn eine Zutat vorhanden ist, wird die Zutaten-Funktion geladen.
execute if entity @s[tag=EtiBrRezM.2Zutat] run function braustand-rezeptmaschine:v2zutaten

# Wenn die Zutaten-Nummer vor einem Tick nicht mit der aktuellen übereinstimmt, wird die Tränke-Variable auf null gesetzt
execute if score VarBrRezM.2Zutat PZBrRezM.2Zut matches 1.. unless score VarBrRezM.2Zutat PZBrRezM.2Zut = @s PZBrRezM.2Zut run scoreboard players set VarBrRezM.2Traenke PZBrRezM.2Fort 0

# Wenn eine Zutat mit Nummer vorhanden ist und die Anzahl der zu brauenden Tränke mindestens bei eins liegt, wird die Rezeptblock-Funktion geladen.
execute if entity @s[tag=EtiBrRezM.2Zutat,scores={PZBrRezM.2Zut=1..}] if score VarBrRezM.2Traenke PZBrRezM.2Fort matches 1.. run function braustand-rezeptmaschine:v2rezeptblock

# Das Etikett wird entfernt.
tag @s[tag=EtiBrRezM.2Zutat] remove EtiBrRezM.2Zutat

# Wenn sich keine Tränke mehr in den Trank-Slots befinden wird auch der Brauvorgang abgebrochen, in dem der Fortschritt auf null gesetzt wird.
execute if score VarBrRezM.2Traenke PZBrRezM.2Fort matches ..0 run scoreboard players set @s PZBrRezM.2Fort 0

Variante 2: Zutaten-Funktion
Die Zutaten-Funktion prüft die Zutat, welches gebraut werden soll und nur wenn es in der Liste vorkommt, bekommt die Zutat eine Nummer ab eins aufwärts.

Editor Icon.png braustand-rezeptmaschine:v2zutaten.mcfunction
# Jede Zutat setzt eine eigenen Wert, hierbei wird von eins aufwärts die Nummer vergeben.
execute store success score @s PZBrRezM.2Zut if data block ~ ~ ~ {Items:[{Slot:2b,id:"minecraft:fermented_spider_eye"}]}
execute if entity @s[scores={PZBrRezM.2Zut=0}] if data block ~ ~ ~ {Items:[{Slot:2b,id:"minecraft:gunpowder"}]} run scoreboard players set @s PZBrRezM.2Zut 2
execute if entity @s[scores={PZBrRezM.2Zut=0}] if data block ~ ~ ~ {Items:[{Slot:2b,id:"minecraft:dragon_breath"}]} run scoreboard players set @s PZBrRezM.2Zut 3

Variante 2: Rezeptblock-Funktion
Die Rezeptblock-Funktion sorgt für die Visualisierung der Brenndauer und des Fortschrittes im Spender-Braustand, in dem die gefärbten Glasscheiben ihre Stapel-Anzahl entsprechend geändert bekommen. Ebenfalls wird die Rezepte-Funktion aufgerufen.

Editor Icon.png braustand-rezeptmaschine:v2rezeptblock.mcfunction
# Solange die Brenndauer noch größer als null ist, wird sie jeden Tick um eins verringert.
scoreboard players remove @s[scores={PZBrRezM.2Dau=1..}] PZBrRezM.2Dau 1

# Die Dauer wird in eine Variable gespeichert um diese durch 20 zu teilen. Danach wird das Ergebnis in die rote Glasscheibe als Stapelzahl gespeichert.
scoreboard players operation VarBrRezM.2Dauer PZBrRezM.2Dau = @s PZBrRezM.2Dau
scoreboard players operation VarBrRezM.2Dauer PZBrRezM.2Dau /= KonstBrRezM.2ZWANZIG PZBrRezM.2Fort
execute store result block ~ ~ ~ Items[{Slot:3b}].Count byte 1 run scoreboard players add VarBrRezM.2Dauer PZBrRezM.2Dau 1

# Die anzahl der Lohenpulver wird ausgelesen und in eine Variable gespeichert. Wenn die Braudauer auf null liegt, wird die Dauer wieder maximiert und einen Lohenstaub wird abgezogen.
execute store result score VarBrRezM.2Stapel PZBrRezM.2Dau run data get block ~ ~ ~ Items[{Slot:0b,id:"minecraft:blaze_powder"}].Count
execute if entity @s[scores={PZBrRezM.2Dau=..0}] if score VarBrRezM.2Traenke PZBrRezM.2Fort matches 1.. if data block ~ ~ ~ {Items:[{Slot:0b,id:"minecraft:blaze_powder"}]} run scoreboard players add @s PZBrRezM.2Dau 600
execute if entity @s[scores={PZBrRezM.2Dau=1..,PZBrRezM.2Fort=..0}] if score VarBrRezM.2Traenke PZBrRezM.2Fort matches 1.. store result block ~ ~ ~ Items[{Slot:0b,id:"minecraft:blaze_powder"}].Count byte 1 run scoreboard players remove VarBrRezM.2Stapel PZBrRezM.2Dau 1

# Wenn die Dauer bei null liegt, wird auch der Fortschritt auf null gesetzt , ansonsten wird der Fortschritt um eins erhöht, bis er maximal 300 erreicht.
scoreboard players set @s[scores={PZBrRezM.2Dau=..0}] PZBrRezM.2Fort 0
scoreboard players add @s[scores={PZBrRezM.2Dau=1..,PZBrRezM.2Fort=..300}] PZBrRezM.2Fort 1

# Der Fortschritt wird in eine Variable gespeichert und dann durch 20 geteilt um anschließend um eins verringert in die grüne Glasscheibe als Stapelzahl gespeichert zu werden.
scoreboard players operation VarBrRezM.2Fortschritt PZBrRezM.2Fort = @s PZBrRezM.2Fort
scoreboard players operation VarBrRezM.2Fortschritt PZBrRezM.2Fort /= KonstBrRezM.2ZWANZIG PZBrRezM.2Fort
execute store result block ~ ~ ~ Items[{Slot:4b}].Count byte 1 run scoreboard players add VarBrRezM.2Fortschritt PZBrRezM.2Fort 1

# Wenn der Fortschritt bei 300 liegt, wird die Rezepte-Funktion geladen und danach wird der Fortschritt auf null gesetzt.
execute if entity @s[scores={PZBrRezM.2Fort=300..}] if score VarBrRezM.2Traenke PZBrRezM.2Fort matches 1.. run function braustand-rezeptmaschine:v2rezepte
scoreboard players set @s[scores={PZBrRezM.2Fort=300..}] PZBrRezM.2Fort 0

Variante 2: Rezepte-Funktion
Die Rezepte-Funktion schaut nach, welche Zutat gebraut wird und reagiert darauf entsprechend. Sie zeiht vom Stapel der Brauzutaten einen ab und die Tränke-Funktion wird aufgerufen.

Editor Icon.png braustand-rezeptmaschine:v2rezepte.mcfunction
# Der Trank aus dem ersten Trank-Slot wird in den NBT-Speicher kopiert und auf diesen wird die Tränke-Funktion angesetzt.
scoreboard players set VarBrRezM.2Brauen PZBrRezM.2Zut 0
execute if score VarBrRezM.2Trank1 PZBrRezM.2Fort matches 1 run data modify storage braustand-rezeptmaschine:v2daten "EigBrRezM.2Trank" set from block ~ ~ ~ Items[{Slot:6b}]
execute if score VarBrRezM.2Trank1 PZBrRezM.2Fort matches 1 run function braustand-rezeptmaschine:v2traenke
execute if score VarBrRezM.2Trank1 PZBrRezM.2Fort matches 1 run data modify block ~ ~ ~ Items[{Slot:6b}] set from storage braustand-rezeptmaschine:v2daten "EigBrRezM.2Trank"
execute if score VarBrRezM.2Brauen PZBrRezM.2Zut matches 1 run tag @s add EtiBrRezM.2Trank1

# Der Trank aus dem zweiten Trank-Slot wird in den NBT-Speicher kopiert und auf diesen wird die Tränke-Funktion angesetzt.
scoreboard players set VarBrRezM.2Brauen PZBrRezM.2Zut 0
execute if score VarBrRezM.2Trank2 PZBrRezM.2Fort matches 1 run data modify storage braustand-rezeptmaschine:v2daten "EigBrRezM.2Trank" set from block ~ ~ ~ Items[{Slot:7b}]
execute if score VarBrRezM.2Trank2 PZBrRezM.2Fort matches 1 run function braustand-rezeptmaschine:v2traenke
execute if score VarBrRezM.2Trank2 PZBrRezM.2Fort matches 1 run data modify block ~ ~ ~ Items[{Slot:7b}] set from storage braustand-rezeptmaschine:v2daten "EigBrRezM.2Trank"
execute if score VarBrRezM.2Brauen PZBrRezM.2Zut matches 1 run tag @s add EtiBrRezM.2Trank2

# Der Trank aus dem dritten Trank-Slot wird in den NBT-Speicher kopiert und auf diesen wird die Tränke-Funktion angesetzt.
scoreboard players set VarBrRezM.2Brauen PZBrRezM.2Zut 0
execute if score VarBrRezM.2Trank3 PZBrRezM.2Fort matches 1 run data modify storage braustand-rezeptmaschine:v2daten "EigBrRezM.2Trank" set from block ~ ~ ~ Items[{Slot:8b}]
execute if score VarBrRezM.2Trank3 PZBrRezM.2Fort matches 1 run function braustand-rezeptmaschine:v2traenke
execute if score VarBrRezM.2Trank3 PZBrRezM.2Fort matches 1 run data modify block ~ ~ ~ Items[{Slot:8b}] set from storage braustand-rezeptmaschine:v2daten "EigBrRezM.2Trank"
execute if score VarBrRezM.2Brauen PZBrRezM.2Zut matches 1 run tag @s add EtiBrRezM.2Trank3

# Die Anzahl der Brauzutat wird ausgelesen und um eins verringert und zurückgespeichert.
execute store result score VarBrRezM.2Stapel PZBrRezM.2Dau run data get block ~ ~ ~ Items[{Slot:2b}].Count
execute store result block ~ ~ ~ Items[{Slot:2b}].Count byte 1 run scoreboard players remove VarBrRezM.2Stapel PZBrRezM.2Dau 1

Variante 2: Tränke-Funktion
Die Tränke-Funktion schaut in der Liste nach, welcher Trank gebraut werden soll und ersetzt den aktuellen Trank durch den zu brauenden Trank.

Editor Icon.png braustand-rezeptmaschine:v2traenke.mcfunction
# Es wird für die erste Zutat geprüft welcher Trank vorliegt und darauf aufbauend wird der entsprechende ausgabe-Trank in den NBT-Speicher kopiert.
execute if entity @s[scores={PZBrRezM.2Zut=1}] store success score VarBrRezM.2Brauen PZBrRezM.2Zut run data modify storage braustand-rezeptmaschine:v2daten "EigBrRezM.2Trank".tag{Potion:"minecraft:night_vision"} set value {Potion:"minecraft:water",CustomPotionColor:255255255,CustomPotionEffects:[{Id:15b,Amplifier:0b,Duration:800}],display:{Name:'{"text":"Trank der Blindheit","italic":false}'} }

execute if entity @s[scores={PZBrRezM.2Zut=1}] if score VarBrRezM.2Brauen PZBrRezM.2Zut matches 0 store success score VarBrRezM.2Brauen PZBrRezM.2Zut run data modify storage braustand-rezeptmaschine:v2daten "EigBrRezM.2Trank".tag{Potion:"minecraft:strength"}.Potion set value "minecraft:weakness"

execute if entity @s[scores={PZBrRezM.2Zut=1}] if score VarBrRezM.2Brauen PZBrRezM.2Zut matches 0 store success score VarBrRezM.2Brauen PZBrRezM.2Zut run data modify storage braustand-rezeptmaschine:v2daten "EigBrRezM.2Trank".tag{Potion:"minecraft:luck"} set value {Potion:"minecraft:water",CustomPotionColor:999999999,CustomPotionEffects:[{Id:27b,Amplifier:0b,Duration:800}],display:{Name:'{"text":"Trank des Pechs","italic":false}'} }

execute if entity @s[scores={PZBrRezM.2Zut=1}] if score VarBrRezM.2Brauen PZBrRezM.2Zut matches 0 store success score VarBrRezM.2Brauen PZBrRezM.2Zut run data modify storage braustand-rezeptmaschine:v2daten "EigBrRezM.2Trank".tag{Potion:"minecraft:regeneration"}.Potion set value "minecraft:poison"
execute if entity @s[scores={PZBrRezM.2Zut=1}] if score VarBrRezM.2Brauen PZBrRezM.2Zut matches 0 store success score VarBrRezM.2Brauen PZBrRezM.2Zut run data modify storage braustand-rezeptmaschine:v2daten "EigBrRezM.2Trank".tag{Potion:"minecraft:swiftness"}.Potion set value "minecraft:slowness"

# Für die zweite Zutat wird der Trank zu einem Wurftran umgewandelt ohne die anderen Daten zu überschreiben.
execute if entity @s[scores={PZBrRezM.2Zut=2}] store success score VarBrRezM.2Brauen PZBrRezM.2Zut run data modify storage braustand-rezeptmaschine:v2daten "EigBrRezM.2Trank"{id:"minecraft:potion"}.id set value "minecraft:splash_potion"

# Für die dritte Zutat wird der Trank zu einem Verweiltrank umgewandelt ohne die anderen Daten zu überschreiben.
execute if entity @s[scores={PZBrRezM.2Zut=3}] store success score VarBrRezM.2Brauen PZBrRezM.2Zut run data modify storage braustand-rezeptmaschine:v2daten "EigBrRezM.2Trank"{id:"minecraft:splash_potion"}.id set value "minecraft:lingering_potion"

# Wenn ein Trank gebraut werden konnte, besitzt die Variable einen Wert von eins und nur dann wird ein Brau-Geräusch abgespielt.
execute if score VarBrRezM.2Brauen PZBrRezM.2Zut matches 1 run playsound minecraft:block.brewing_stand.brew master @a[distance=..15] ~ ~ ~ 1 1 0.1

Variante 2: Stopp-Funktion
Die Stopp-Funktion löscht die drei Punkte-Ziele wieder und löscht alle Gegenstände aus dem Inventar und vom Boden und löscht alle simulierten Braustände.

Editor Icon.png braustand-rezeptmaschine:v2stopp.mcfunction
# die drei Punkte-Ziele werden entfernt.
scoreboard objectives remove PZBrRezM.2Fort
scoreboard objectives remove PZBrRezM.2Dau
scoreboard objectives remove PZBrRezM.2Zut

# Der NBT-Speicher wird freigeräumt.
data remove storage braustand-rezeptmaschine:v2daten "EigBrRezM.2Trank"

# Wenn sich mindestens ein Braugegenstand im Inventar des Spielers befindet, werden sämtliche Braugegenstände gelöscht.
clear @a[nbt={Inventory:[{tag:{EigBrRezM.2Alle:true} } ] }] #braustand-rezeptmaschine:v2rezepte

# Damit der Spender-Braustand nichts droppt, werden zuvor alle Gegenstände gelöscht, bevor er selbst gelöscht wird.
execute at @e[type=minecraft:item_frame,tag=EtiBrRezM.2Spender] run data remove block ~ ~-1 ~ Items
execute at @e[type=minecraft:item_frame,tag=EtiBrRezM.2Spender] if block ~ ~-1 ~ minecraft:dropper run setblock ~ ~-1 ~ minecraft:air replace

# Alle gedroppten Braugegenstände und Rahmen werden gelöscht.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigBrRezM.2Alle:true} } }] add EtiBrRezM.2Alle
kill @e[tag=EtiBrRezM.2Alle]


Disambig color.svg