Technik Wiki
Registrieren
Advertisement
Gruppe: Grid Trichter
Maschinen

Grid Roter Sand blass mit Mechaniken

Grid Redstone blass mit Redstone
                Hier:
Grid Befehlsblock mit Befehlen
Verfügbar in:
Wiki Mechanik-Welt Mechanik-Welt

Eine Werkbank-Rezeptmaschine wird für das Handwerk (engl. Crafting) benutzt. Handwerksrezepte lassen sich über Rezeptdaten ändern, dabei kann man die Größe des Handwerkbereichs nur auf 2x2 oder 3x3 setzen. Ebenfalls lassen sich damit keine Gegenstände mit NBT herstellen. Dagegen kann mit einer Rezeptmaschine ein beliebig großer Handwerksbereich (Handwerks-Slots) kreiert werden und er muss nicht quadratisch sein. Ebenfalls können so Rezepte ganze Stapel für das Fertigen von Gegenständen fordern. Die Rezeptmaschinen arbeiten in erster Linie mit Behältern in denen die Slots so präpariert sind, dass sie wie ein Handwerksbereich erscheinen.

Rezeptdaten[]

Hier werden vier Beispiele von Rezeptdateien gezeigt:

Variante 1[]

Werkbank-Rezeptmaschine (Befehle) Bild 1.1 Werkbank-Rezeptmaschine (Befehle) Bild 1.2 Werkbank-Rezeptmaschine (Befehle) Bild 1.3

Mit dieser Werkbank-Rezeptmaschine lassen sich bestimmte Gegenstände in einem speziellen Spender herstellen. Dazu muss man einen leeren Spender nach oben zeigend platzieren, einen Rahmen flach auf den Spender setzen und anschließend in den Rahmen eine Werkbank legen. Dann ist der Spender bereit Dinge herzustellen. Manche der Rezepte benötigen mehrere Gegenstände auf einem Slot um den neuen Ziel-Gegenstand herzustellen. Wenn das Rezept stimmt, wird der Ziel-Gegenstand sofort hergestellt, ohne das man noch etwas tun muss. In diesem Beispiel können drei Dinge hergestellt werden. Man kann aber auch weitere Rezepte in die Funktion hinzufügen.

Einschalten
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:


Variante 1: Start-Funktion
Die Start-Funktion erstellt das Punkte-Ziel um die Rezepte einzuordnen zu können, es werden alle wichtigen Gegenstände den Spielern gegeben und die drei Rezepte werden in einer Truhe gezeigt.

Editor Icon werkbank-rezeptmaschine:v1start.mcfunction
# Das Punkte-Ziel für die Nummerierung der Rezepte wird erstellt.
scoreboard objectives add PZWeRezM.1Rezept dummy ["Werkbank-Rezeptmaschine.1: ",{"text":"Rezepte","bold":true}]

# Den Spielern werden ein Spender, ein Rahmen und eine Werkbank gegeben.
give @a[distance=..15] minecraft:dropper{EigWeRezM.1Alle:true,display:{Lore:['"Platziere den Spender"','"nach oben blickend,"','"platziere den Rahmen darauf"','"und lege in diesen die Werkbank."']} } 1
give @a[distance=..15] minecraft:item_frame{EigWeRezM.1Alle:true,display:{Lore:['"Platziere den Spender"','"nach oben blickend,"','"platziere den Rahmen darauf"','"und lege in diesen die Werkbank."']} } 1
give @a[distance=..15] minecraft:crafting_table{EigWeRezM.1Alle:true,display:{Lore:['"Platziere den Spender"','"nach oben blickend,"','"platziere den Rahmen darauf"','"und lege in diesen die Werkbank."']} } 1

# Für die drei Rezepte werden alle benötigten Gegenstände gegeben.
give @a[distance=..15] minecraft:golden_helmet{EigWeRezM.1Alle:true,display:{Lore:['"Rezept-Gegenstand"']} } 1
give @a[distance=..15] minecraft:gold_ingot{EigWeRezM.1Alle:true,display:{Lore:['"Rezept-Gegenstand"']} } 6
give @a[distance=..15] minecraft:emerald{EigWeRezM.1Alle:true,display:{Lore:['"Rezept-Gegenstand"']} } 3

give @a[distance=..15] minecraft:skeleton_skull{EigWeRezM.1Alle:true,display:{Lore:['"Rezept-Gegenstand"']} } 1
give @a[distance=..15] minecraft:bone{EigWeRezM.1Alle:true,display:{Lore:['"Rezept-Gegenstand"']} } 8
give @a[distance=..15] minecraft:bone_block{EigWeRezM.1Alle:true,display:{Lore:['"Rezept-Gegenstand"']} } 1

give @a[distance=..15] minecraft:diamond_sword{EigWeRezM.1Alle:true,display:{Lore:['"Rezept-Gegenstand"']} } 1
give @a[distance=..15] minecraft:potion{EigWeRezM.1Alle:true,display:{Lore:['"Rezept-Gegenstand"']},Potion:"minecraft:strength"} 1
give @a[distance=..15] minecraft:dragon_breath{EigWeRezM.1Alle:true,display:{Lore:['"Rezept-Gegenstand"']} } 3

# Damit Spieler die Rezepte nachschauen können, wird eine Truhe gesetzt, die diese anzeigt.
setblock ~ ~1 ~ minecraft:chest[facing=south]{Items:[{Slot:1b,id:"minecraft:golden_helmet",Count:1b},{Slot:3b,id:"minecraft:bone",Count:2b},{Slot:4b,id:"minecraft:skeleton_skull",Count:1b},{Slot:5b,id:"minecraft:bone",Count:2b},{Slot:7b,id:"minecraft:gold_ingot",Count:1b},{Slot:9b,id:"minecraft:gold_ingot",Count:1b},{Slot:10b,id:"minecraft:emerald",Count:3b},{Slot:11b,id:"minecraft:gold_ingot",Count:1b},{Slot:13b,id:"minecraft:bone_block",Count:1b},{Slot:15b,id:"minecraft:potion",Count:1b,tag:{Potion:"minecraft:strength"} },{Slot:16b,id:"minecraft:diamond_sword",Count:1b},{Slot:17b,id:"minecraft:dragon_breath",Count:3b},{Slot:19b,id:"minecraft:gold_ingot",Count:2b},{Slot:21b,id:"minecraft:bone",Count:2b},{Slot:23b,id:"minecraft:bone",Count:2b},{Slot:25b,id:"minecraft:gold_ingot",Count:1b}]} replace

Variante 1: Zyklus-Funktion
Die Zyklus-Funktion prüft ob die Spender-Rahmen-Konstellation existiert und ruft nur dann in der Nähe die Rezeptblock-Funktion auf.

Editor Icon werkbank-rezeptmaschine:v1zyklus.mcfunction
# Von der Position von Spielern wird in jeweils deren Umkreis von fünf Metern geprüft, ob sich ein Rahmen dort befindet. Von diesem aus wird geprüft ob unter diesem sich ein leerer Spender der nach oben schaut befindet. Nur dann erhält der Rahmen zwei Etiketten.
execute at @a as @e[distance=..5,type=minecraft:item_frame,tag=!EtiWeRezM.1Spender,nbt={Facing:1b,Item:{id:"minecraft:crafting_table"} }] at @s if block ~ ~-1 ~ minecraft:dropper[facing=up]{Items:[]} run data merge entity @s {Tags:["EtiWeRezM.1Alle","EtiWeRezM.1Spender"]}

# Von der Position der Spieler aus wird geprüft ob sich ein Rahmen mit Etikett dort befindet. Von diesem aus wird geprüft ob sich noch der Spender unter diesen befindet. Das Ergbnis dieses Tests wird als Wert im Rahmen gespeichert. Wenn der Spender noch dort war, besitzt der Rahmen den Wert null.
execute at @a as @e[distance=..5,type=minecraft:item_frame,tag=EtiWeRezM.1Spender,sort=nearest,limit=1] store success score @s PZWeRezM.1Rezept at @s unless block ~ ~-1 ~ minecraft:dropper[facing=up]

# Wenn sich kein Spender mehr unter dem Rahmen befindet, wird der Rahmen gelöscht.
execute at @a run kill @e[distance=..5,type=minecraft:item_frame,tag=EtiWeRezM.1Spender,scores={PZWeRezM.1Rezept=1},sort=nearest,limit=1]

# Wenn unter dem Rahmen noch ein Spender exisitiert, wird von dessen Position aus geprüft ob sich mindestens ein Spieler in der Nähe ist und nur dann wird von der Position des Spenders aus die Rezeptblock-Funktion geladen.
execute as @e[type=minecraft:item_frame,tag=EtiWeRezM.1Spender,scores={PZWeRezM.1Rezept=0}] at @s if entity @p[distance=..5] positioned ~ ~-1 ~ run function werkbank-rezeptmaschine:v1rezeptblock

Variante 1: Rezeptblock-Funktion
Die Rezeptblock-Funktion prüft ob das Rezept im Spender stimmt und nur dann wird die Rezepte-Funktion geladen.

Editor Icon werkbank-rezeptmaschine:v1rezeptblock.mcfunction
# Es wird ausgelesen, wie viele Slots im Spender belegt sind und die Anzahl wird in eine Variable gespeichert.
execute store result score VarWeRezM.1Slots PZWeRezM.1Rezept run data get block ~ ~ ~ Items

# Wenn fünf Slots belegt sind, wird geprüft ob das Rezept1 erfüllt ist.
execute if score VarWeRezM.1Slots PZWeRezM.1Rezept matches 5 if data block ~ ~ ~ {Items:[{Slot:1b,id:"minecraft:golden_helmet",Count:1b,tag:{Damage:0} },{Slot:3b,id:"minecraft:gold_ingot",Count:1b},{Slot:4b,id:"minecraft:emerald",Count:3b},{Slot:5b,id:"minecraft:gold_ingot",Count:1b},{Slot:7b,id:"minecraft:gold_ingot",Count:2b}]} run scoreboard players set @s PZWeRezM.1Rezept 1

# Wenn sechs Slots belegt sind, wird geprüft ob das Rezept2 erfüllt ist.
execute if entity @s[scores={PZWeRezM.1Rezept=0}] if score VarWeRezM.1Slots PZWeRezM.1Rezept matches 6 if data block ~ ~ ~ {Items:[{Slot:0b,id:"minecraft:bone",Count:2b},{Slot:1b,id:"minecraft:skeleton_skull",Count:1b},{Slot:2b,id:"minecraft:bone",Count:2b},{Slot:4b,id:"minecraft:bone_block",Count:1b},{Slot:6b,id:"minecraft:bone",Count:2b},{Slot:8b,id:"minecraft:bone",Count:2b}]} run scoreboard players set @s PZWeRezM.1Rezept 2

# Wenn fünf Slots belegt sind, wird geprüft ob das Rezept3 erfüllt ist.
execute if entity @s[scores={PZWeRezM.1Rezept=0}] if score VarWeRezM.1Slots PZWeRezM.1Rezept matches 5 if data block ~ ~ ~ {Items:[{Slot:1b,id:"minecraft:gold_ingot",Count:1b},{Slot:3b,id:"minecraft:potion",Count:1b,tag:{Potion:"minecraft:strength"} },{Slot:4b,id:"minecraft:diamond_sword",Count:1b,tag:{Damage:0} },{Slot:5b,id:"minecraft:dragon_breath",Count:3b},{Slot:7b,id:"minecraft:gold_ingot",Count:1b}]} run scoreboard players set @s PZWeRezM.1Rezept 3

# Nur wenn eines der Rezepte tatsächlich erfüllt ist, wird die Rezepte-Funktion geladen.
execute if entity @s[scores={PZWeRezM.1Rezept=1..}] run function werkbank-rezeptmaschine:v1rezepte

Variante 1: Rezepte-Funktion
Die Rezepte-Funktion ersetzt den Inhalt des Spenders durch den Ziel-Gegenstand und lässt ein Geräusch erklingen.

Editor Icon werkbank-rezeptmaschine:v1rezeptblock.mcfunction
# Wenn Rezept1 erfüllt ist, wird der Inhalt des Spenders durch den Ziel-Gegenstand ersetzt.
execute if entity @s[scores={PZWeRezM.1Rezept=1}] run data merge block ~ ~ ~ {Items:[{Slot:4b,id:"minecraft:totem_of_undying",Count:2b,tag:{EigWeRezM.1Alle:true,display:{Lore:['"Rezept-Gegenstand"'] } } } ] }

# Wenn Rezept2 erfüllt ist, wird der Inhalt des Spenders durch den Ziel-Gegenstand ersetzt.
execute if entity @s[scores={PZWeRezM.1Rezept=2}] run data merge block ~ ~ ~ {Items:[{Slot:4b,id:"minecraft:skeleton_spawn_egg",Count:3b,tag:{EigWeRezM.1Alle:true,display:{Lore:['"Rezept-Gegenstand"'] },EntityTag:{Tags:["EtiWeRezM.1Alle"],DeathLootTable:"minecraft:empty"} } } ] }

# Wenn Rezept3 erfüllt ist, wird der Inhalt des Spenders durch den Ziel-Gegenstand ersetzt.
execute if entity @s[scores={PZWeRezM.1Rezept=3}] run data merge block ~ ~ ~ {Items:[{Slot:4b,id:"minecraft:netherite_sword",Count:1b,tag:{EigWeRezM.1Alle:true,display:{Lore:['"Rezept-Gegenstand"']},Enchantments:[{id:"minecraft:sharpness",lvl:5s} ] } } ] }

# Damit man akustisch mitbekommt, dass der Gegenstand erfolgreich hergestellt werden konnte, wird ein Amboss-Geräusch abgespielt.
playsound minecraft:block.anvil.use master @a[distance=..15] ~ ~ ~ 1 1 0.1

Variante 1: Stopp-Funktion
Die Stopp-Funktion löscht das Punkte-Ziel wieder, es werden alle Spender unter Rahmen die als Rezeptblock fungieren gelöscht und alle Gegenstände für die Rezepte werden mit Hilfe eines Alias komplett aus dem Inventar der Spieler gelöscht.

Editor Icon werkbank-rezeptmaschine:v1stopp.mcfunction
# Das Punkte-Ziel wird entfernt.
scoreboard objectives remove PZWeRezM.1Rezept

# Alle Gegenstände für die Rezepte werden entfernt.
clear @a #werkbank-rezeptmaschine:v1rezepte{EigWeRezM.1Alle:true}

# Die Truhe, die die Rezepte anzeigt, wird entfernt.
setblock ~ ~1 ~1 minecraft:air replace

# Von der Position der Rahmen die auf einem Spender sitzen, wird der Spender darunter entfernt.
execute at @e[type=minecraft:item_frame,tag=EtiWeRezM.1Alle] if block ~ ~-1 ~ minecraft:dropper run setblock ~ ~-1 ~ minecraft:air replace

# Gegenstände die auf den Boden geworfen wurden, werden entfernt.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigWeRezM.1Alle:true} } }] add EtiWeRezM.1Alle

# Alle Objekte mit dem entsprechenden Etikett werden entfernt.
kill @e[tag=EtiWeRezM.1Alle]

Variante 2[]

Werkbank-Rezeptmaschine (Befehle) Bild 2.1 Werkbank-Rezeptmaschine (Befehle) Bild 2.2 Werkbank-Rezeptmaschine (Befehle) Bild 2.3

Mit dieser Werkbank-Rezeptmaschine wird eine Werkbank vollständig nachgebildet. Zuvor muss man auf eine leere Einzel-Truhe einen Rahmen mit Werkbank drin gelegt haben, dann kann man die Truhe als Werkbank verwenden. Man kann in das 3x3-Quadrat bestimmte Rezepte reinlegen und in dem Ausgabe-Slot erscheint der Ziel-Gegenstand. Nimmt man diesen heraus, verschwinden die Gegenstände im 3x3-Quadrat. Nimmt man stattdessen einen der Rezepte-Gegenstände heraus verschwindet der Ziel-Gegenstand. Es sind insgesamt drei Rezepte einprogrammiert, man kann dieses Beispiel auch nehmen und um weitere Rezepte erweitern, dazu muss man weitere Rezepte mit Nummern einfügen und jeweils einen weiteren Ziel-Gegenstand einbauen.

Einschalten
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:


Variante 2: Start-Funktion
Die Start-Funktion erstellt das Punkte-Ziel und gibt den Spielern die Blöcke für den Bau der simulierten Werkbank und die Rezept-Gegenstände.

Editor Icon werkbank-rezeptmaschine:v2start.mcfunction
# Es wird ein Punkte-Ziel erstellt, dass für die Rezeptnummern genutzt wird.
scoreboard objectives add PZWeRezM.2Rezept dummy ["Werkbank-Rezeptmaschine.2: ",{"text":"Rezepte","bold":true}]

# Den Spielern wird eine Truhe, ein Rahmen und eine Werkbank gegeben, diese müssen aufgebaut werden, damit die Truhe die simulierte Werkbank ergeben.
give @a[distance=..15] minecraft:chest{EigWeRezM.2Alle:true,display:{Lore:['"Platziere die Truhe,"','"platziere den Rahmen darauf"','"und lege in diesen die Werkbank."']} } 1
give @a[distance=..15] minecraft:item_frame{EigWeRezM.2Alle:true,display:{Lore:['"Platziere die Truhe,"','"platziere den Rahmen darauf"','"und lege in diesen die Werkbank."']} } 1
give @a[distance=..15] minecraft:crafting_table{EigWeRezM.2Alle:true,display:{Lore:['"Platziere die Truhe,"','"platziere den Rahmen darauf"','"und lege in diesen die Werkbank."']} } 1

# Es werden die Materialien gegeben, die für die Rezepte benötigt werden.
give @a[distance=..15] minecraft:red_wool{EigWeRezM.2Alle:true,display:{Lore:['"Rezept-Gegenstand"']} } 64
give @a[distance=..15] minecraft:gold_ingot{EigWeRezM.2Alle:true,display:{Lore:['"Rezept-Gegenstand"']} } 64
give @a[distance=..15] minecraft:emerald_block{EigWeRezM.2Alle:true,display:{Lore:['"Rezept-Gegenstand"']} } 64

# Damit man weiss wie die Rezepte aussehen, werden sie in einer Truhe angezeigt.
setblock ~ ~1 ~ minecraft:chest[facing=south]{Items:[{Slot:2b,id:"minecraft:gold_ingot",Count:1b},{Slot:3b,id:"minecraft:emerald_block",Count:1b},{Slot:4b,id:"minecraft:emerald_block",Count:1b},{Slot:5b,id:"minecraft:emerald_block",Count:1b},{Slot:9b,id:"minecraft:gold_ingot",Count:1b},{Slot:10b,id:"minecraft:red_wool",Count:1b},{Slot:11b,id:"minecraft:gold_ingot",Count:1b},{Slot:12b,id:"minecraft:emerald_block",Count:1b},{Slot:13b,id:"minecraft:emerald_block",Count:1b},{Slot:14b,id:"minecraft:emerald_block",Count:1b},{Slot:16b,id:"minecraft:emerald_block",Count:1b,tag:{EigWeRezM.2BlockBlock:true,Enchantments:[{id:-1} ] } },{Slot:18b,id:"minecraft:gold_ingot",Count:1b},{Slot:19b,id:"minecraft:gold_ingot",Count:1b},{Slot:20b,id:"minecraft:gold_ingot",Count:1b},{Slot:21b,id:"minecraft:emerald_block",Count:1b},{Slot:22b,id:"minecraft:emerald_block",Count:1b},{Slot:23b,id:"minecraft:emerald_block",Count:1b}]} replace

Variante 2: Zyklus-Funktion
Die Zyklus-Funktion prüft ob der Aufbau der simulierten Werkbank stimmt und ruft die Menü-Funktion auf.

Editor Icon werkbank-rezeptmaschine:v2zyklus.mcfunction
# Es wird geprüft ob ein Rahmen mit Werkbank drin über einer leeren Einzel-Truhe liegt und nur dann bekommt er ein Etikett.
execute as @e[type=minecraft:item_frame,tag=!EtiWeRezM.2Truhe,nbt={Facing:1b,Item:{id:"minecraft:crafting_table"} }] at @s if block ~ ~-1 ~ minecraft:chest[type=single]{Items:[]} run data merge entity @s {Tags:["EtiWeRezM.2Alle","EtiWeRezM.2Truhe"]}

# Von dem Rahmen aus, wird geprüft ob sich unter ihm keine Truhe mehr befindet und das Ergebnis wird in seinen Punkte-Stand gespeichert.
execute as @e[type=minecraft:item_frame,tag=EtiWeRezM.2Truhe] store success score @s PZWeRezM.2Rezept at @s unless block ~ ~-1 ~ minecraft:chest

# Falls keine Truhe unter ihm war, besitzt er den Wert eins und wird gelöscht.
kill @e[type=minecraft:item_frame,tag=EtiWeRezM.2Truhe,scores={PZWeRezM.2Rezept=1}]

# Die Menü-Funktion wird von allen Rahmen aufgerufen, unter denen sich eine Truhe befindet.
execute as @e[type=minecraft:item_frame,tag=EtiWeRezM.2Truhe,scores={PZWeRezM.2Rezept=0}] at @s positioned ~ ~-1 ~ run function werkbank-rezeptmaschine:v2menu

Variante 2: Menü-Funktion
Die Menü-Funktion prüft ob das 3x3-Quadrat belegt ist und ruft nur dann die Rezeptblock-Funktion auf.

Editor Icon werkbank-rezeptmaschine:v2menu.mcfunction
# In der Truhe befinden sich scharze Glasscheiben, welche die nicht benötigten Slots belegen, falls man diese genommen hat, werden sie aus dem Inventar gelöscht und falls man sie gedroppt hat, werden sie als Drops in der Welt gelöscht.
clear @a[distance=..5] minecraft:black_stained_glass_pane{EigWeRezM.2Menu:true}
kill @e[distance=..2,type=minecraft:item,nbt={Item:{tag:{EigWeRezM.2Menu:true} } },sort=nearest]

# Bevor die Anzahl der belegten Slots ausgelesen und in eine Variable geschrieben wird, müssen erst alle schwarzen Glasscheiben entfernt werden. Danach erfolgt eine Prüfung ob mindestens ein Slot belegt wurde und nur dann wird die Rezeptblock-Funktion geladen.
data remove block ~ ~ ~ Items[{tag:{EigWeRezM.2Menu:true} }]
execute store result score VarWeRezM.2Slots PZWeRezM.2Rezept run data get block ~ ~ ~ Items
execute if score VarWeRezM.2Slots PZWeRezM.2Rezept matches 1.. run function werkbank-rezeptmaschine:v2rezeptblock

# Alle Glasscheiben werden anschließend wieder an die entsprechende Slot-Position gesetzt.
replaceitem block ~ ~ ~ container.0 minecraft:black_stained_glass_pane{EigWeRezM.2Alle:true,EigWeRezM.2Menu:true,display:{Name:'{"text":""}'} }

replaceitem block ~ ~ ~ container.4 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":""}'} }
replaceitem block ~ ~ ~ container.6 minecraft:black_stained_glass_pane{EigWeRezM.2Alle:true,EigWeRezM.2Menu:true,display:{Name:'{"text":""}'} }
replaceitem block ~ ~ ~ container.7 minecraft:black_stained_glass_pane{EigWeRezM.2Alle:true,EigWeRezM.2Menu:true,display:{Name:'{"text":""}'} }
replaceitem block ~ ~ ~ container.8 minecraft:black_stained_glass_pane{EigWeRezM.2Alle:true,EigWeRezM.2Menu:true,display:{Name:'{"text":""}'} }
replaceitem block ~ ~ ~ container.9 minecraft:black_stained_glass_pane{EigWeRezM.2Alle:true,EigWeRezM.2Menu:true,display:{Name:'{"text":""}'} }

replaceitem block ~ ~ ~ container.13 minecraft:black_stained_glass_pane{EigWeRezM.2Alle:true,EigWeRezM.2Menu:true,display:{Name:'{"text":""}'} }
replaceitem block ~ ~ ~ container.14 minecraft:black_stained_glass_pane{EigWeRezM.2Alle:true,EigWeRezM.2Menu:true,display:{Name:'{"text":""}'} }

replaceitem block ~ ~ ~ container.16 minecraft:black_stained_glass_pane{EigWeRezM.2Alle:true,EigWeRezM.2Menu:true,display:{Name:'{"text":""}'} }
replaceitem block ~ ~ ~ container.17 minecraft:black_stained_glass_pane{EigWeRezM.2Alle:true,EigWeRezM.2Menu:true,display:{Name:'{"text":""}'} }
replaceitem block ~ ~ ~ container.18 minecraft:black_stained_glass_pane{EigWeRezM.2Alle:true,EigWeRezM.2Menu:true,display:{Name:'{"text":""}'} }

replaceitem block ~ ~ ~ container.22 minecraft:black_stained_glass_pane{EigWeRezM.2Alle:true,EigWeRezM.2Menu:true,display:{Name:'{"text":""}'} }
replaceitem block ~ ~ ~ container.23 minecraft:black_stained_glass_pane{EigWeRezM.2Alle:true,EigWeRezM.2Menu:true,display:{Name:'{"text":""}'} }
replaceitem block ~ ~ ~ container.24 minecraft:black_stained_glass_pane{EigWeRezM.2Alle:true,EigWeRezM.2Menu:true,display:{Name:'{"text":""}'} }
replaceitem block ~ ~ ~ container.25 minecraft:black_stained_glass_pane{EigWeRezM.2Alle:true,EigWeRezM.2Menu:true,display:{Name:'{"text":""}'} }
replaceitem block ~ ~ ~ container.26 minecraft:black_stained_glass_pane{EigWeRezM.2Alle:true,EigWeRezM.2Menu:true,display:{Name:'{"text":""}'} }

Variante 2: Rezeptblock-Funktion
Die Rezeptblock-Funktion prüft ob in dem 3x3-Quadrat ein Rezept liegt. Nur wenn ein Rezept gefunden wurde, wird die Rezepte-Funktion aufgerufen.

Editor Icon werkbank-rezeptmaschine:v2rezeptblock.mcfunction
# Falls der Slot für den Ziel-Gegenstand belegt ist, wird die Anzahl der belegten Slots um eins reduziert, um diesen Slot nicht mitzuzählen.
execute if data block ~ ~ ~ {Items:[{Slot:15b}]} run scoreboard players remove VarWeRezM.2Slots PZWeRezM.2Rezept 1

# Wenn sieben belegte Slots vorliegen, wird das Rezept1 geprüft und ein Wert gesetzt.
execute if score VarWeRezM.2Slots PZWeRezM.2Rezept matches 7 if data block ~ ~ ~ {Items:[{Slot:3b,id:"minecraft:gold_ingot",Count:1b},{Slot:10b,id:"minecraft:gold_ingot",Count:1b},{Slot:11b,id:"minecraft:red_wool",Count:1b},{Slot:12b,id:"minecraft:gold_ingot",Count:1b},{Slot:19b,id:"minecraft:gold_ingot",Count:1b},{Slot:20b,id:"minecraft:gold_ingot",Count:1b},{Slot:21b,id:"minecraft:gold_ingot",Count:1b}]} run scoreboard players set @s PZWeRezM.2Rezept 1

# Wenn neun belegte Slots vorliegen, wird das Rezept2 geprüft und ein Wert gesetzt.
execute if entity @s[scores={PZWeRezM.2Rezept=0}] if score VarWeRezM.2Slots PZWeRezM.2Rezept matches 9 if data block ~ ~ ~ {Items:[{Slot:1b,id:"minecraft:emerald_block",Count:1b},{Slot:2b,id:"minecraft:emerald_block",Count:1b},{Slot:3b,id:"minecraft:emerald_block",Count:1b},{Slot:10b,id:"minecraft:emerald_block",Count:1b},{Slot:11b,id:"minecraft:emerald_block",Count:1b},{Slot:12b,id:"minecraft:emerald_block",Count:1b},{Slot:19b,id:"minecraft:emerald_block",Count:1b},{Slot:20b,id:"minecraft:emerald_block",Count:1b},{Slot:21b,id:"minecraft:emerald_block",Count:1b}]} run scoreboard players set @s PZWeRezM.2Rezept 2

# Wenn ein belegter Slot vorliegen, wird das Rezept3 geprüft und ein Wert gesetzt.
execute if entity @s[scores={PZWeRezM.2Rezept=0}] if score VarWeRezM.2Slots PZWeRezM.2Rezept matches 1 if data block ~ ~ ~ {Items:[{Slot:11b,id:"minecraft:emerald_block",Count:1b,tag:{EigWeRezM.2BlockBlock:true} }]} run scoreboard players set @s PZWeRezM.2Rezept 3

# Falls kein Rezept gefunden wurde, so wird der Ziel-Gegenstand gelöscht, da das Rezept nicht mehr zutrifft. Ansonsten wird die Rezepte-Funktion geladen.
execute if entity @s[tag=EtiWeRezM.2Rezept,scores={PZWeRezM.2Rezept=0}] run replaceitem block ~ ~ ~ container.15 minecraft:air
execute if entity @s[tag=!EtiWeRezM.2Rezept,scores={PZWeRezM.2Rezept=1..}] run function werkbank-rezeptmaschine:v2rezepte

# Wenn das Rezept gefunden wurde und der Ziel-Gegenstand fehlt, so muss dieser entnommen worden sein und es wird ein Etikett vergeben.
execute if entity @s[tag=EtiWeRezM.2Rezept,scores={PZWeRezM.2Rezept=1..}] unless data block ~ ~ ~ {Items:[{Slot:15b}]} run tag @s add EtiWeRezM.2Entnommen

# Die 3x3-Slots werden komplett frei gemacht.
execute if entity @s[tag=EtiWeRezM.2Entnommen] run replaceitem block ~ ~ ~ container.1 minecraft:air
execute if entity @s[tag=EtiWeRezM.2Entnommen] run replaceitem block ~ ~ ~ container.2 minecraft:air
execute if entity @s[tag=EtiWeRezM.2Entnommen] run replaceitem block ~ ~ ~ container.3 minecraft:air
execute if entity @s[tag=EtiWeRezM.2Entnommen] run replaceitem block ~ ~ ~ container.10 minecraft:air
execute if entity @s[tag=EtiWeRezM.2Entnommen] run replaceitem block ~ ~ ~ container.11 minecraft:air
execute if entity @s[tag=EtiWeRezM.2Entnommen] run replaceitem block ~ ~ ~ container.12 minecraft:air
execute if entity @s[tag=EtiWeRezM.2Entnommen] run replaceitem block ~ ~ ~ container.19 minecraft:air
execute if entity @s[tag=EtiWeRezM.2Entnommen] run replaceitem block ~ ~ ~ container.20 minecraft:air
execute if entity @s[tag=EtiWeRezM.2Entnommen] run replaceitem block ~ ~ ~ container.21 minecraft:air

# Nach der Entnahme erklingt ein Amboss-Geräusch.
execute if entity @s[tag=EtiWeRezM.2Entnommen] run playsound minecraft:block.anvil.use master @a[distance=..5] ~ ~ ~ 1 1 0.1

# Die Etiketten werden wieder entfernt, damit sie nur im Prozess vorhanden sind.
tag @s[tag=EtiWeRezM.2Rezept,scores={PZWeRezM.2Rezept=0}] remove EtiWeRezM.2Rezept
tag @s[tag=EtiWeRezM.2Entnommen,tag=EtiWeRezM.2Rezept] remove EtiWeRezM.2Rezept
tag @s[tag=EtiWeRezM.2Entnommen] remove EtiWeRezM.2Entnommen

Variante 2: Rezepte-Funktion
Die Rezepte-Funktion fügt den Ziel-Gegenstand hinzu.

Editor Icon werkbank-rezeptmaschine:v2rezepte.mcfunction
# Es wird ein Etikett vergeben um zu speichern, dass das Rezept gefunden wurde.
tag @s add EtiWeRezM.2Rezept

# Für das Rezept1 wird der Ziel-Gegenstand in die Truhe hinzugefügt.
execute if entity @s[scores={PZWeRezM.2Rezept=1}] run data modify block ~ ~ ~ Items append value {Slot:15b,id:"minecraft:golden_horse_armor",Count:1b,tag:{EigWeRezM.2Alle:true,display:{Lore:['"Rezept-Gegenstand"'] } } }

# Für das Rezept2 wird der Ziel-Gegenstand in die Truhe hinzugefügt.
execute if entity @s[scores={PZWeRezM.2Rezept=2}] run data modify block ~ ~ ~ Items append value {Slot:15b,id:"minecraft:emerald_block",Count:1b,tag:{EigWeRezM.2Alle:true,EigWeRezM.2BlockBlock:true,display:{Lore:['"Rezept-Gegenstand"'] },Enchantments:[{id:-1} ] } }

# Für das Rezept3 wird der Ziel-Gegenstand in die Truhe hinzugefügt.
execute if entity @s[scores={PZWeRezM.2Rezept=3}] run data modify block ~ ~ ~ Items append value {Slot:15b,id:"minecraft:emerald_block",Count:9b,tag:{EigWeRezM.2Alle:true,display:{Lore:['"Rezept-Gegenstand"'] } } }

Variante 2: Stopp-Funktion
Die Stopp-Funktion löscht das Punkte-Ziel wieder. Alle Rezept-Gegenstände und Menü-Gegenstände werden entfernt. Alle Objekte für die simulierte Werkbank ebenfalls.

Editor Icon werkbank-rezeptmaschine:v2stopp.mcfunction
# Das Punkte-Ziel wird entfernt.
scoreboard objectives remove PZWeRezM.2Rezept

# Alle Rezept-Gegenstände werden wieder entfernt.
clear @a #werkbank-rezeptmaschine:v2rezepte{EigWeRezM.2Alle:true}

# Die Truhe mit den Rezepten wird entfernt
setblock ~ ~1 ~1 minecraft:air replace

# Alle Truhen unter den Rahmen werden entfernt.
execute at @e[type=minecraft:item_frame,tag=EtiWeRezM.2Alle] if block ~ ~-1 ~ minecraft:chest run setblock ~ ~-1 ~ minecraft:air replace

# Alle Gegenstände die für die Rezepte genutzt wurden und auf dem Boden liegen erhalten ein Etikett.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigWeRezM.2Alle:true} } }] add EtiWeRezM.2Alle

# Alle Objekte mit den Etikett werden entfernt.
kill @e[tag=EtiWeRezM.2Alle]


Disambig color
Advertisement