Auftrag-System (Befehle)

Das **Auftrag-System** sorgt dafür, dass dem Spieler bestimmte Aufgaben aufgetragen werden, die dieser erfüllen muss um in seiner Handlung weiter zu kommen. Dabei muss der Spieler im Verlauf verschiedene Aufgaben lösen, Abenteuer bestehen, Feinde besiegen, Objekte finden, Schwierigkeiten überwinden und kann dadurch Ruhm und Erfahrung erlangen. Am besten eignen sich Dorfbewohner als Auftraggeber, da die Interaktion mit diesen sehr einfach abgefragt werden kann.

Zusätzlich: Für das Erstellen eines Dorfbewohners ohne Handelsware empfiehlt es sich, den Dorfbewohner-Generator zu verwenden und um Nachrichten besser ändern zu können, empfiehlt es sich den JSON-Creator zu verwenden.

## Variante 1

* Grundmodule
* Befehl
* Befehlssignal
* Grund-Element (Befehle)
* Signal-Element (Befehle)
* Signalleitung (Befehle)
* Vorrichtungen
* Anlagen
* Maschinen
 * Taktgeber (Befehle)
* Funktion
* Fortschrittsdaten

* 1 Redstone-Fackel
* 2 Befehlsblock
* 1 Wiederhol-Befehlsblock

Dieses System gibt drei Aufträge vor, die nacheinander abgearbeitet werden müssen. Zuerst soll der Spieler eine Pilzsuppe finden und dem Dorfbewohner Jonas geben. Als nächstes soll er Bill finden und dies anschließend Jonas mitteilen. Als letzes soll der Spieler Zäune und Zauntore herstellen und diese mit Bill handeln, sodass dieser sein Gebiet umzäunen kann.

Einschalten
Man legt einfach den Hebel auf dem Wiederhol-Befehlsblock um und die Funktion wird eingeschaltet.

* Befehl 1.1 Die Funktion auftrag-system:v1start wird hierbei aktiviert

Wiederholen
Mit dem Wiederhol-Befehlsblock wird die Zyklus-Funktion ständig geladen

* Befehl 1.2 die Funktion auftrag-system:v1zyklus wird ständig aufgerufen.

Ausschalten
Wenn der Hebel wieder in Ausgangsstellung gelegt wird, aktiviert eine Redstone-Fackel den Befehlsblock, der die Stopp-Funktion aufruft.

* Befehl 1.3 Die Funktion auftrag-system:v1stopp wird geladen

```
function auftrag-system:v1start

```

↑ 1.2:

```
function auftrag-system:v1zyklus

```

↑ 1.3:

```
function auftrag-system:v1stopp

```

Variante 1: **Start-Funktion**

Wenn die Start-Funktion geladen wird, werden die Punktestand-Ziele, die Punktestandswerte, der Abenteuermodus und die Dorfbewohner gesetzt.

```
# Punkte-Ziele werden erstellt.
scoreboard objectives add PZAufS.1Reden minecraft.custom:minecraft.talked\_to\_villager ["Auftrag-System.1: ",{"text":"Mit Dorfbewohner sprechen","bold":true}]
scoreboard objectives add PZAufS.1Handel minecraft.custom:minecraft.traded\_with\_villager ["Auftrag-System.1: ",{"text":"Mit Dorfbewohner gehandelt","bold":true}]
scoreboard objectives add PZAufS.1Nachr dummy ["Auftrag-System.1: ",{"text":"Nachricht mit Dorfbewohnern","bold":true}]
scoreboard objectives add PZAufS.1Auftrag dummy ["Auftrag-System.1: ",{"text":"Auftragsnummer","bold":true}]

# Die Auftragsnummer und der Fortschritt werden für den Spieler gesetzt.
scoreboard players set @p[distance=..25] PZAufS.1Auftrag 1
advancement grant @p[distance=..25] only auftrag-system:v1auftrag

# Der Spieler wird in den Abenteuermodus gesetzt.
gamemode adventure @p[distance=..25,gamemode=!adventure]

# Die Dorfbewohner Jonas und Bill werden erschaffen.
summon minecraft:villager ~-5 ~-0.5 ~ {Silent:true,Invulnerable:true,CanPickUpLoot:false,PersistenceRequired:true,CustomName:'{"text":"wahr","color":"green","bold":true}"',Offers:{Recipes:[]},Tags:["EtiAufS.1Alle","EtiAufS.1Jonas"],Attributes:[{Name:"generic.knockbackResistance",Base:"1f"},{Name:"generic.movementSpeed",Base:"0f"}],Passengers:[{id:"minecraft:armor\_stand",Small:true,Invisible:true,CustomNameVisible:true,CustomName:'{"text":"Jonas","bold":true}',Tags:["EtiAufS.1Alle","EtiAufS.1Name"],Passengers:[{id:"minecraft:armor\_stand",Small:true,Invisible:true,CustomNameVisible:true,CustomName:'{"text":"Auftrag!","underlined":true,"color":"green","bold":true}',Tags:["EtiAufS.1Alle","EtiAufS.1Auftrag"]}]}]}

summon minecraft:villager ~-10 ~-0.5 ~ {Silent:true,Invulnerable:true,CanPickUpLoot:false,PersistenceRequired:true,CustomName:'{"text":"falsch","color":"red","bold":true}"',Offers:{Recipes:[]},Tags:["EtiAufS.1Alle","EtiAufS.1Bill"],Attributes:[{Name:"generic.knockbackResistance",Base:"1f"},{Name:"generic.movementSpeed",Base:"0f"}],Passengers:[{id:"minecraft:armor\_stand",Small:true,Invisible:true,CustomNameVisible:true,CustomName:'{"text":"Bill","bold":true}',Tags:["EtiAufS.1Alle","EtiAufS.1Name"],Passengers:[{id:"minecraft:armor\_stand",Small:true,Invisible:true,CustomNameVisible:true,CustomName:'{"text":"Nichts!","underlined":true,"color":"red","bold":true}',Tags:["EtiAufS.1Alle","EtiAufS.1Auftrag"]}]}]}

# Der Chunk wird aktiviert.
forceload add ~ ~

```

```
{
 "display":
 {
 "icon":
 {
 "item":"minecraft:emerald"
 },
 "title":
 {
 "text":"Aufträge!",
 "color":"green",
 "bold":true
 },
 "frame":"task",
 "background":"minecraft:textures/block/sandstone.png",
 "description":
 [
 {
 "text":"Die Auftragsbücher werden gefüllt!",
 "color":"gold"
 }
 ]
 },
 "criteria":
 {
 "Kriterium":
 {
 "trigger":"minecraft:impossible"
 }
 }
}

```

Variante 1: **Zyklus-Funktion**

Die Zyklus-Funktion lädt alle Aufträge, falls sie benötigt werden und sorgt für Partikel, bei den entsprechenden Auftraggebern.

```
# Anhand der Namen der Dorfbewohner wird der Rüstungsständer, der den Auftrag anzeigt, so geändert, dass er dem aktuellen Zustand entspricht.
execute at @e[type=minecraft:villager,tag=EtiAufS.1Alle,name="wahr"] run data merge entity @e[distance=..5,type=minecraft:armor\_stand,tag=EtiAufS.1Auftrag,name=!"Auftrag!",sort=nearest,limit=1] {CustomName:'{"text":"Auftrag!","underlined":true,"color":"green","bold":true}'}
execute at @e[type=minecraft:villager,tag=EtiAufS.1Alle,name="falsch"] run data merge entity @e[distance=..5,type=minecraft:armor\_stand,tag=EtiAufS.1Auftrag,name=!"Nichts!",sort=nearest,limit=1] {CustomName:'{"text":"Nichts!","underlined":true,"color":"red","bold":true}'}
execute at @e[type=minecraft:villager,tag=EtiAufS.1Alle,name="undefiniert"] run data merge entity @e[distance=..5,type=minecraft:armor\_stand,tag=EtiAufS.1Auftrag,name=!"Wartet!",sort=nearest,limit=1] {CustomName:'{"text":"Wartet!","underlined":true,"color":"yellow","bold":true}'}

# Lässt grüne Partikel bei den Dorfbewohnern, die einen Auftrag für den Spieler haben, entstehen.
execute at @e[type=minecraft:villager,tag=EtiAufS.1Alle,name="wahr"] run particle minecraft:happy\_villager ~ ~1 ~ 0.2 0.2 0.2 0.1 1 force @p[distance=..10]

# Jedesmal wenn man einen Dorfbewohner anklickt, gibt er Sprechlaute von sich.
execute at @e[type=minecraft:villager,tag=EtiAufS.1Alle] run playsound minecraft:entity.villager.ambient master @p[distance=..3,scores={PZAufS.1Reden=1..}] ~ ~ ~ 1 0.5 1

# Auftrag 3
execute as @e[type=minecraft:villager,tag=EtiAufS.1Bill,name=!"falsch"] at @s if entity @p[distance=..3,scores={PZAufS.1Auftrag=3}] run function auftrag-system:v1auftrag\_3

# Auftrag 2
execute as @e[type=minecraft:villager,tag=EtiAufS.1Jonas,name=!"falsch"] at @s if entity @p[distance=..3,scores={PZAufS.1Auftrag=2}] run function auftrag-system:v1auftrag\_2
execute as @e[type=minecraft:villager,tag=EtiAufS.1Bill,name=!"falsch"] at @s if entity @p[distance=..3,scores={PZAufS.1Auftrag=2}] run function auftrag-system:v1auftrag\_2\_bill

# Auftrag 1
execute as @e[type=minecraft:villager,tag=EtiAufS.1Jonas,name=!"falsch"] at @s if entity @p[distance=..3,scores={PZAufS.1Auftrag=1}] run function auftrag-system:v1auftrag\_1

# Wenn der Spieler mit einem Dorfbewohner gehandelt hat, erklingt ein fröhliches Dorfbewohner-Geräusch.
execute as @a[scores={PZAufS.1Handel=1..}] at @e[type=minecraft:villager,tag=EtiAufS.1Alle] run playsound minecraft:entity.villager.yes master @s ~ ~ ~ 1 0.5 1
scoreboard players set @a[scores={PZAufS.1Handel=1..}] PZAufS.1Handel 0

# Wenn der Spieler mit einem Dorfbewohner geredet hat, wird sein entsprechender Punktestand zurück gesetzt.
scoreboard players set @a[scores={PZAufS.1Reden=1..}] PZAufS.1Reden 0

```

Variante 1: **Auftrag-1-Funktion**

In dieser Aufgabe geht es darum, dem Dorfbewohner eine Pilzsuppe zu bringen. Der ganze Dialog läuft über das Rechtsklicken der Maus, wodurch man den Dorfbewohner dazu bringt, einem etwas über die Aufgabe zu erzählen. Am Ende der Aufgabe bekommt man von dem Dorfbewohner für das Erfüllen der Aufgabe eine kleine Belohnung in Form von Smaragden

```
# Wenn der Spieler mit dem Dorfbewohner Jonas redet, wird sein Punktestand für die Nachricht entsprechend eingestellt.
scoreboard players add @p[distance=..3,scores={PZAufS.1Reden=1..}] PZAufS.1Nachr 1
scoreboard players set @p[distance=..3,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=3..}] PZAufS.1Nachr 1

# Wenn der Spieler gehandelt hat und den Smaragd ins Inventar gelegt hat, wird der Fortschritt ausgelöst und dann wird das Handeslmenü wieder entfernt.
tag @p[distance=..3,advancements={auftrag-system:v1auftrag\_1\_pilzsuppe=true,auftrag-system:v1auftrag\_1\_handel=false},nbt={Inventory:[{tag:{EigAufS.1Auftrag1:true} } ] }] add EtiAufS.1Erledigt
advancement grant @p[distance=..3,tag=EtiAufS.1Erledigt] only auftrag-system:v1auftrag\_1\_handel
tellraw @p[distance=..3,tag=EtiAufS.1Erledigt] ["",{"text":"[1/1]","color":"gray"},{"text":" «","color":"gold","bold":true},{"entity":"@e[distance=..2,type=minecraft:armor\_stand,tag=EtiAufS.1Name,sort=nearest,limit=1]","nbt":"CustomName","interpret":true},{"text":"» ","color":"gold","bold":true},{"text":"Der Handel ist erledigt. Ohne dich hätte ich wohl verhungern müssen.","color":"gray"}]
execute if entity @p[distance=..3,tag=EtiAufS.1Erledigt] run data merge entity @s {NoAI:false,Offers:{Recipes:[] } }
scoreboard players set @p[distance=..3,tag=EtiAufS.1Erledigt] PZAufS.1Auftrag 2
scoreboard players set @p[distance=..3,tag=EtiAufS.1Erledigt] PZAufS.1Nachr 0
tag @p[distance=..3,tag=EtiAufS.1Erledigt] remove EtiAufS.1Erledigt

# Wenn der spieler die Pilzsuppe im Inventar trägt, erhält der Spieler den Fortschritt und Jonas handelt mit dem Handelsmenü.
tag @p[distance=..3,advancements={auftrag-system:v1auftrag\_1=true,auftrag-system:v1auftrag\_1\_pilzsuppe=false},scores={PZAufS.1Reden=1..},nbt={Inventory:[{id:"minecraft:mushroom\_stew",tag:{EigAufS.1Alle:true} } ] }] add EtiAufS.1Inventar
advancement grant @p[distance=..3,tag=EtiAufS.1Inventar] only auftrag-system:v1auftrag\_1\_pilzsuppe
execute if entity @p[distance=..3,tag=EtiAufS.1Inventar] run data merge entity @s {NoAI:true,Offers:{Recipes:[{buy:{id:"minecraft:mushroom\_stew",Count:1b},sell:{id:"minecraft:emerald",Count:1b,tag:{EigAufS.1Alle:true,EigAufS.1Auftrag1:true} },maxUses:1,uses:0} ] } }
tellraw @p[distance=..3,tag=EtiAufS.1Inventar] ["",{"text":"[1/1]","color":"gray"},{"text":" «","color":"gold","bold":true},{"entity":"@e[distance=..2,type=minecraft:armor\_stand,tag=EtiAufS.1Name,sort=nearest,limit=1]","nbt":"CustomName","interpret":true},{"text":"» ","color":"gold","bold":true},{"text":"Endlich meine Suppe, tausche sie mit mir in meinem Handeslmenü.","color":"yellow"}]
tag @p[distance=..3,tag=EtiAufS.1Inventar] remove EtiAufS.1Inventar

# Nachrichten von Jonas, wenn man in rechtsklickt. Er gibt dem Spieler den Auftrag die Pilzsuppe zu holen.
tag @p[distance=..3,advancements={auftrag-system:v1auftrag\_1\_pilzsuppe=false},scores={PZAufS.1Reden=1..}] add EtiAufS.1Reden
tellraw @p[distance=..3,tag=EtiAufS.1Reden,scores={PZAufS.1Nachr=1}] ["",{"text":"[1/2]","color":"gray"},{"text":" «","color":"gold","bold":true},{"entity":"@e[distance=..2,type=minecraft:armor\_stand,tag=EtiAufS.1Name,sort=nearest,limit=1]","nbt":"CustomName","interpret":true},{"text":"» ","color":"gold","bold":true},{"text":"Ich leide schon seit drei Tagen an Hunger. Wärst du so nett und holst mir eine ","color":"yellow"},{"text":"[Pilzsuppe]","color":"green","hoverEvent":{"action":"show\_text","value":{"text":"Hole Jonas 1x Pilzsuppe"} } } ]
tellraw @p[distance=..3,tag=EtiAufS.1Reden,scores={PZAufS.1Nachr=2}] ["",{"text":"[2/2]","color":"gray"},{"text":" «","color":"gold","bold":true},{"entity":"@e[distance=..2,type=minecraft:armor\_stand,tag=EtiAufS.1Name,sort=nearest,limit=1]","nbt":"CustomName","interpret":true},{"text":"» ","color":"gold","bold":true},{"text":"Du bist ja immer noch hier. Los hol mir was zu essen!","color":"yellow"}]
tag @p[distance=..3,tag=EtiAufS.1Reden] remove EtiAufS.1Reden

# Der Spieler erhält den entsprechenden Fortschritt, wenn er mit Jonas das erste mal gesprochen hat und somit den Auftrag erfüllen soll.
tag @p[distance=..3,advancements={auftrag-system:v1auftrag\_1=false},scores={PZAufS.1Reden=1..}] add EtiAufS.1Auftrag
advancement grant @p[distance=..3,tag=EtiAufS.1Auftrag] only auftrag-system:v1auftrag\_1
execute if entity @p[distance=..3,tag=EtiAufS.1Auftrag] run setblock ~ ~ ~-5 minecraft:chest[facing=south]{Items:[{Slot:13b,id:"minecraft:mushroom\_stew",Count:1b,tag:{EigAufS.1Alle:true,display:{Lore:['"Ein Auftragsgegenstand"'] } } } ] } replace
tag @p[distance=..3,tag=EtiAufS.1Auftrag] remove EtiAufS.1Auftrag

```

```
{
 "display":
 {
 "icon":
 {
 "item":"minecraft:bowl"
 },
 "title":"1. Auftrag!",
 "frame":"task",
 "description":"Klicke mit Rechts auf Jonas um mehr über den Auftrag zu erfahren."
 },
 "parent":"auftrag-system:v1auftrag",
 "criteria":
 {
 "Kriterium":
 {
 "trigger":"minecraft:impossible"
 }
 }
}

```

```
{
 "display":
 {
 "icon":
 {
 "item":"minecraft:mushroom\_stew"
 },
 "title":"Pilzige Angelegenheit!",
 "frame":"task",
 "description":"Finde und bringe die Pilzsuppe zu Jonas."
 },
 "parent":"auftrag-system:v1auftrag\_1",
 "criteria":
 {
 "Kriterium":
 {
 "trigger":"minecraft:impossible"
 }
 }
}

```

```
{
 "display":
 {
 "icon":
 {
 "item":"minecraft:mushroom\_stew"
 },
 "title":"Handel!",
 "frame":"goal",
 "description":"Tausche die Pilzsuppe gegen deine Belohnung."
 },
 "parent":"auftrag-system:v1auftrag\_1\_pilzsuppe",
 "criteria":
 {
 "Kriterium":
 {
 "trigger":"minecraft:impossible"
 }
 }
}

```

Variante 1: **Auftrag-2-Funktion**

In der zweiten Aufgabe, welche auf der ersten Aufgabe aufbaut, muss man den Freund des ersten Dorfbewohners suchen. Hierzu benötigt man einen weiteren Dorfbewohner, der bereits mit der Start-Funktion erstellt wurde

```
# Wenn der Spieler mit dem Dorfbewohner Jonas redet, wird sein Punktestand für die Nachricht eingestellt.
scoreboard players add @p[distance=..3,scores={PZAufS.1Reden=1..}] PZAufS.1Nachr 1
scoreboard players set @p[distance=..3,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=4..}] PZAufS.1Nachr 1

# Wenn der Spieler mit Bill gesprochen und somit gefunden hat, dann gibt Jonas dem Spieler die Belohnung.
tag @p[distance=..3,advancements={auftrag-system:v1auftrag\_2\_bill=true,auftrag-system:v1auftrag\_2\_jonas=false},scores={PZAufS.1Reden=1..}] add EtiAufS.1Erledigt
advancement grant @p[distance=..3,tag=EtiAufS.1Erledigt] only auftrag-system:v1auftrag\_2\_jonas
tellraw @p[distance=..3,tag=EtiAufS.1Erledigt] ["",{"text":"[1/1]","color":"gray"},{"text":" «","color":"gold","bold":true},{"entity":"@e[distance=..2,type=minecraft:armor\_stand,tag=EtiAufS.1Name,sort=nearest,limit=1]","nbt":"CustomName","interpret":true},{"text":"» ","color":"gold","bold":true},{"text":"Danke, dass du nach ihm geschaut hast.","color":"gray"}]
execute if entity @p[distance=..3,tag=EtiAufS.1Erledigt] run data merge entity @e[type=minecraft:villager,tag=EtiAufS.1Bill,name=!"wahr",sort=nearest,limit=1] {CustomName:'{"text":"wahr","color":"green","bold":true}'}
execute if entity @p[distance=..3,tag=EtiAufS.1Erledigt] run data merge entity @s[name="wahr"] {CustomName:'{"text":"falsch","color":"red","bold":true}'}
playsound minecraft:entity.villager.yes master @p[distance=..3,tag=EtiAufS.1Erledigt] ~ ~ ~ 1 0.5 1
give @p[distance=..3,tag=EtiAufS.1Erledigt] minecraft:emerald{EigAufS.1Alle:true} 1
scoreboard players set @p[distance=..3,tag=EtiAufS.1Erledigt] PZAufS.1Auftrag 3
scoreboard players set @p[distance=..3,tag=EtiAufS.1Erledigt] PZAufS.1Nachr 0
tag @p[distance=..3,tag=EtiAufS.1Erledigt] remove EtiAufS.1Erledigt

# Nachrichten an den Spieler. Jonas gibt den Auftrag Bill zu suchen.
tellraw @p[distance=..3,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1}] ["",{"text":"[1/3]","color":"gray"},{"text":" «","color":"gold","bold":true},{"entity":"@e[distance=..2,type=minecraft:armor\_stand,tag=EtiAufS.1Name,sort=nearest,limit=1]","nbt":"CustomName","interpret":true},{"text":"» ","color":"gold","bold":true},{"text":"Weißt du wo sich mein Freund","color":"yellow"},{"text":" [Bill] ","color":"green","hoverEvent":{"action":"show\_text","value":{"text":"Suche Bill"} } },{"text":"befindet?","color":"yellow"} ]
tellraw @p[distance=..3,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=2}] ["",{"text":"[2/3]","color":"gray"},{"text":" «","color":"gold","bold":true},{"entity":"@e[distance=..2,type=minecraft:armor\_stand,tag=EtiAufS.1Name,sort=nearest,limit=1]","nbt":"CustomName","interpret":true},{"text":"» ","color":"gold","bold":true},{"text":"Ich glaube er spielt schon wieder im Wald, bin mir aber nicht sicher.","color":"yellow"}]
tellraw @p[distance=..3,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=3}] ["",{"text":"[3/3]","color":"gray"},{"text":" «","color":"gold","bold":true},{"entity":"@e[distance=..2,type=minecraft:armor\_stand,tag=EtiAufS.1Name,sort=nearest,limit=1]","nbt":"CustomName","interpret":true},{"text":"» ","color":"gold","bold":true},{"text":"Viel mehr Angaben kann ich dir nicht machen, das ist alles was ich weiß.","color":"yellow"}]

# Wenn der Spieler Jonas anklickt, erhält er den Auftrag Bill zu suchen (Fortschritt).
tag @p[distance=..3,advancements={auftrag-system:v1auftrag\_2=false},scores={PZAufS.1Reden=1..}] add EtiAufS.1Auftrag
execute if entity @p[distance=..3,tag=EtiAufS.1Auftrag] run data merge entity @e[type=minecraft:villager,tag=EtiAufS.1Bill,name="falsch",sort=nearest,limit=1] {CustomName:'{"text":"wahr","color":"green","bold":true}'}
execute if entity @p[distance=..3,tag=EtiAufS.1Auftrag] run data merge entity @s[name="wahr"] {CustomName:'{"text":"undefiniert","color":"yellow","bold":true}'}
advancement grant @p[distance=..3,tag=EtiAufS.1Auftrag] only auftrag-system:v1auftrag\_2
tag @p[distance=..3,tag=EtiAufS.1Auftrag] remove EtiAufS.1Auftrag

```

```
{
 "display":
 {
 "icon":
 {
 "item":"minecraft:leather\_boots"
 },
 "title":"2. Auftrag!",
 "frame":"task",
 "description":"Klicke mit Rechts auf Jonas um mehr über den Auftrag zu erfahren."
 },
 "parent":"auftrag-system:v1auftrag",
 "criteria":
 {
 "Kriterium":
 {
 "trigger":"minecraft:impossible"
 }
 }
}

```

```
{
 "display":
 {
 "icon":
 {
 "item":"minecraft:leather\_boots"
 },
 "title":"Gefunden!",
 "frame":"goal",
 "description":"Laufe zu Jonas und berichte ihm die freudige Nachricht."
 },
 "parent":"auftrag-system:v1auftrag\_2\_bill",
 "criteria":
 {
 "Kriterium":
 {
 "trigger":"minecraft:impossible"
 }
 }
}

```

Variante 1: **Auftrag-2-Bill-Funktion**

Die Funktion lässt Bill dem Spieler eine Nachricht ausgeben, wenn dieser ihn gefunden und angesprochen hat.

```
# Wenn der Spieler Bill gefunden hat und anspricht, so gibt er die Anweisung, Jonas anzusprechen.
tellraw @p[distance=..3,advancements={auftrag-system:v1auftrag\_2=true},scores={PZAufS.1Reden=1..}] ["",{"text":"[1/1]","color":"gray"},{"text":" «","color":"gold","bold":true},{"entity":"@e[distance=..2,type=minecraft:armor\_stand,tag=EtiAufS.1Name,sort=nearest,limit=1]","nbt":"CustomName","interpret":true},{"text":"» ","color":"gold","bold":true},{"text":"Was? Jonas hat dich geschickt um zu wissen wo ich bin? Sag ihm es geht mir gut.","color":"yellow"}]

# Wenn der Spieler Bill anspricht, erhält er den Fortschritt und Jonas wird zum Ansprechpartner.
tag @p[distance=..3,advancements={auftrag-system:v1auftrag\_2=true,auftrag-system:v1auftrag\_2\_bill=false},scores={PZAufS.1Reden=1..}] add EtiAufS.1Auftrag
advancement grant @p[distance=..3,tag=EtiAufS.1Auftrag] only auftrag-system:v1auftrag\_2\_bill
execute if entity @p[distance=..3,tag=EtiAufS.1Auftrag] run data merge entity @e[type=minecraft:villager,tag=EtiAufS.1Jonas,name=!"wahr",sort=nearest,limit=1] {CustomName:'{"text":"wahr","color":"green","bold":true}'}
execute if entity @p[distance=..3,tag=EtiAufS.1Auftrag] run data merge entity @s[name="wahr"] {CustomName:'{"text":"undefiniert","color":"red","bold":true}'}
tag @p[distance=..3,tag=EtiAufS.1Auftrag] remove EtiAufS.1Auftrag

```

```
{
 "display":
 {
 "icon":
 {
 "item":"minecraft:leather\_boots"
 },
 "title":"Das verlorene Kind!",
 "frame":"task",
 "description":"Suche Bill."
 },
 "parent":"auftrag-system:v1auftrag\_2",
 "criteria":
 {
 "Kriterium":
 {
 "trigger":"minecraft:impossible"
 }
 }
}

```

Variante 1: **Auftrag-3-Funktion**

Bei der dritten Aufgabe soll der Spieler mit den gegebenen Holzmaterialien Zäune und Zauntor herstellen und dem Dorfbewohner übergeben.

```
# Wenn der Spieler mit dem Dorfbewohner Bill redet, wird sein Punktestand für die Nachricht eingestellt.
scoreboard players add @p[distance=..3,scores={PZAufS.1Reden=1..}] PZAufS.1Nachr 1
scoreboard players set @p[distance=..3,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=4..}] PZAufS.1Nachr 1

# Wenn der Spieler dem Dorfbewohner Bill die Auftragsmaterialien gegeben hat, werden die entsprechenden Punktestand-Ziele angepasst. Die Auftrag-3-Erledigt-Funktion wird zehn Sekunden verzögert ausgeführt.
tag @p[distance=..3,advancements={auftrag-system:v1auftrag\_3\_zaun=true,auftrag-system:v1auftrag\_3\_handel=false},nbt={Inventory:[{tag:{EigAufS.1Auftrag3:true} } ] }] add EtiAufS.1Erledigt
advancement grant @p[distance=..3,tag=EtiAufS.1Erledigt] only auftrag-system:v1auftrag\_3\_handel
tellraw @p[distance=..3,tag=EtiAufS.1Erledigt] ["",{"text":"[1/1]","color":"gray"},{"text":" «","color":"gold","bold":true},{"entity":"@e[distance=..2,type=minecraft:armor\_stand,tag=EtiAufS.1Name,sort=nearest,limit=1]","nbt":"CustomName","interpret":true},{"text":"» ","color":"gold","bold":true},{"text":"Prima, jetzt kann ich meinen Bereich einzäunen.","color":"gray"}]
execute if entity @p[distance=..3,tag=EtiAufS.1Erledigt] run data merge entity @s[name="wahr"] {NoAI:false,CustomName:'{"text":"falsch","color":"red","bold":true}',Offers:{Recipes:[] } }
execute if entity @p[distance=..3,tag=EtiAufS.1Erledigt] run schedule function auftrag-system:v1auftrag\_3\_erledigt 10s replace
scoreboard players set @p[distance=..3,tag=EtiAufS.1Erledigt] PZAufS.1Auftrag 4
scoreboard players set @p[distance=..3,tag=EtiAufS.1Erledigt] PZAufS.1Nachr 0
tag @p[distance=..3,tag=EtiAufS.1Erledigt] remove EtiAufS.1Erledigt

# Wenn der Spieler für Bill die sechs Zäune und das Zauntor hergestellt hat, besitzt er diese in seinem Inventar und auch den Fortschritt, dass er dafür den Auftrag bekommen hat.
tag @p[distance=..3,advancements={auftrag-system:v1auftrag\_3=true,auftrag-system:v1auftrag\_3\_zaun=false},scores={PZAufS.1Reden=1..},nbt={Inventory:[{id:"minecraft:oak\_fence"},{id:"minecraft:oak\_fence\_gate"}]}] add EtiAufS.1Inventar
advancement grant @p[distance=..3,tag=EtiAufS.1Inventar] only auftrag-system:v1auftrag\_3\_zaun
execute if entity @p[distance=..3,tag=EtiAufS.1Inventar] run data merge entity @s {NoAI:true,Offers:{Recipes:[{buy:{id:"minecraft:oak\_fence",Count:24b},buyB:{id:"minecraft:oak\_fence\_gate",Count:1b},sell:{id:"minecraft:emerald",Count:1b,tag:{EigAufS.1Alle:true,EigAufS.1Auftrag3:true} },maxUses:1,uses:0} ] } }
tellraw @p[distance=..3,tag=EtiAufS.1Inventar] ["",{"text":"[1/1]","color":"gray"},{"text":" «","color":"gold","bold":true},{"entity":"@e[distance=..2,type=minecraft:armor\_stand,tag=EtiAufS.1Name,sort=nearest,limit=1]","nbt":"CustomName","interpret":true},{"text":"» ","color":"gold","bold":true},{"text":"Wie ich sehe hast du die Zäune und das Zauntor bei dir, dann gebe ich dir im Handelsmenü deine Belohnung.","color":"yellow"}]
tag @p[distance=..3,tag=EtiAufS.1Inventar] remove EtiAufS.1Inventar

# Bill gibt bei einem Rechtsklickt auf ihn drei Nachrichten nacheinander aus, um dem Spieler zu erklären, was er von ihm verlangt.
tag @p[distance=..3,advancements={auftrag-system:v1auftrag\_3\_zaun=false},scores={PZAufS.1Reden=1..}] add EtiAufS.1Reden
tellraw @p[distance=..3,tag=EtiAufS.1Reden,scores={PZAufS.1Nachr=1}] ["",{"text":"[1/3]","color":"gray"},{"text":" «","color":"gold","bold":true},{"entity":"@e[distance=..2,type=minecraft:armor\_stand,tag=EtiAufS.1Name,sort=nearest,limit=1]","nbt":"CustomName","interpret":true},{"text":"» ","color":"gold","bold":true},{"text":"Hey du, du siehst aus, als ob du ","color":"yellow"},{"text":"[Zäune und Zauntore]","color":"green","hoverEvent":{"action":"show\_text","value":{"text":"Stelle 24x Zäune und 1x Zauntor her"} } },{"text":" herstellen könntest.","color":"yellow"} ]
tellraw @p[distance=..3,tag=EtiAufS.1Reden,scores={PZAufS.1Nachr=2}] ["",{"text":"[2/3]","color":"gray"},{"text":" «","color":"gold","bold":true},{"entity":"@e[distance=..2,type=minecraft:armor\_stand,tag=EtiAufS.1Name,sort=nearest,limit=1]","nbt":"CustomName","interpret":true},{"text":"» ","color":"gold","bold":true},{"text":"Ich glaube ich hatte hier irgendwo doch meine Werkbank stehen. Dort in der Nähe befinden sich dann auch die Materialien für das Herstellen.","color":"yellow"}]
tellraw @p[distance=..3,tag=EtiAufS.1Reden,scores={PZAufS.1Nachr=3}] ["",{"text":"[3/3]","color":"gray"},{"text":" «","color":"gold","bold":true},{"entity":"@e[distance=..2,type=minecraft:armor\_stand,tag=EtiAufS.1Name,sort=nearest,limit=1]","nbt":"CustomName","interpret":true},{"text":"» ","color":"gold","bold":true},{"text":"Was stehst du hier so ahnungslos herum? Du bekommst das doch bestimmt hin.","color":"yellow"}]
tag @p[distance=..3,tag=EtiAufS.1Reden] remove EtiAufS.1Reden

# Falls der Spieler Bill das erste angeklickt hat, wird die Werkbank und die Truhe mit dem Material platziert. Der Spieler erhält dann den Fortschritt für den Auftrag.
tag @p[distance=..3,advancements={auftrag-system:v1auftrag\_3=false},scores={PZAufS.1Reden=1..}] add EtiAufS.1Auftrag
advancement grant @p[distance=..3,tag=EtiAufS.1Auftrag] only auftrag-system:v1auftrag\_3
execute if entity @p[distance=..3,tag=EtiAufS.1Auftrag] run setblock ~ ~ ~-5 minecraft:crafting\_table replace
execute if entity @p[distance=..3,tag=EtiAufS.1Auftrag] run setblock ~ ~ ~-6 minecraft:chest[facing=north]{Items:[{Slot:12b,id:"minecraft:oak\_planks",Count:34b,tag:{EigAufS.1Alle:true,display:{Lore:['"Ein Auftragsgegenstand"'] } } },{Slot:13b,id:"minecraft:stick",Count:20b,tag:{EigAufS.1Alle:true,display:{Lore:['"Ein Auftragsgegenstand"'] } } } ] } replace
tag @p[distance=..3,tag=EtiAufS.1Auftrag] remove EtiAufS.1Auftrag

```

```
{
 "display":
 {
 "icon":
 {
 "item":"minecraft:oak\_fence"
 },
 "title":"3. Auftrag!",
 "frame":"task",
 "description":"Klicke mit Rechts auf Bill um mehr über den Auftrag zu erfahren."
 },
 "parent":"auftrag-system:v1auftrag",
 "criteria":
 {
 "Kriterium":
 {
 "trigger":"minecraft:impossible"
 }
 }
}

```

```
{
 "display":
 {
 "icon":
 {
 "item":"minecraft:oak\_fence"
 },
 "title":"Zäune herstellen!",
 "frame":"task",
 "description":"Stelle für Bill 24 Zäune und ein Zauntor her."
 },
 "parent":"auftrag-system:v1auftrag\_3",
 "criteria":
 {
 "Kriterium":
 {
 "trigger":"minecraft:impossible"
 }
 }
}

```

```
{
 "display":
 {
 "icon":
 {
 "item":"minecraft:oak\_fence\_gate"
 },
 "title":"Umzäunte Verhältnisse!",
 "frame":"challenge",
 "description":"Gib Bill die Zäune und das Zauntor."
 },
 "parent":"auftrag-system:v1auftrag\_3\_zaun",
 "criteria":
 {
 "Kriterium":
 {
 "trigger":"minecraft:impossible"
 }
 }
}

```

Variante 1: **Auftrag-3-Erledigt-Funktion**

Die Funktion wird geladen, wenn der Spieler den Auftrag für das Herstellen von Zäunen am erledigen ist. Der Dorfbewohner Bill wird dann die Belohnung übergeben.

```
# Holzgeräusche und Explosionspartikel erscheinen, damit im Anschluss der Zaun entstehen kann.
execute at @e[type=minecraft:villager,tag=EtiAufS.1Bill] run playsound minecraft:block.barrel.close master @a[distance=..25]
execute at @e[type=minecraft:villager,tag=EtiAufS.1Bill] run particle minecraft:explosion\_emitter ~ ~ ~ 0 0 0 0 1 force @r[distance=..25]
execute at @e[type=minecraft:villager,tag=EtiAufS.1Bill] run fill ~-3 ~ ~-3 ~3 ~ ~3 minecraft:oak\_fence replace
execute at @e[type=minecraft:villager,tag=EtiAufS.1Bill] run fill ~-2 ~ ~-2 ~2 ~ ~2 minecraft:air replace
execute at @e[type=minecraft:villager,tag=EtiAufS.1Bill] run setblock ~3 ~ ~ minecraft:oak\_fence\_gate[facing=east,open=true] replace

```

Variante 1: **Stopp-Funktion**

Die Stopp-Funktion löscht alle Punktestand-Ziele, setzt den Spieler wieder in den Kreativmodus und löscht alle Blöcke die gesetzt wurden, wie auch die Dorfbewohner und Gegenstände die der Spieler im Laufe der Aufträge erhalten hat.

```
# Die Punkte-Ziele werden entfernt.
scoreboard objectives remove PZAufS.1Reden
scoreboard objectives remove PZAufS.1Handel
scoreboard objectives remove PZAufS.1Nachr
scoreboard objectives remove PZAufS.1Auftrag

# Der Spieler wird wieder in den Kreativmodus gesetzt.
gamemode creative @a[distance=..25,gamemode=!creative]

# Alle Blöcke die im Laufe der Aufträge platziert wurden, werden wieder entfernt.
execute at @e[type=minecraft:villager,tag=EtiAufS.1Alle] run fill ~ ~ ~-5 ~ ~ ~-6 minecraft:air replace
execute at @e[type=minecraft:villager,tag=EtiAufS.1Bill] run fill ~-3 ~ ~-3 ~3 ~ ~3 minecraft:air replace

# Spielern werden Smaragde, Pilzsuppen und Erfahrungspunkte entfernt.
clear @a[distance=..25] minecraft:emerald
clear @a[distance=..25] minecraft:mushroom\_stew
experience add @a[distance=..25] -15 points

# Alle Fortschritte, von der Wurzel ausgehend, werden entfernt.
advancement revoke @a[advancements={auftrag-system:v1auftrag=true}] from auftrag-system:v1auftrag

# Der dauerhaft aktive Chunk wird wieder deaktiviert.
forceload remove ~ ~

```