Das offizielle Minecraft Wiki twittert hier: Wiki-Twitter  –  Chatte im Wiki-Discord  – Noch keinen Server gefunden? Es gibt einen Wiki-Server

Auftrag-System (Befehle)

Aus Technik Wiki
Wechseln zu: Navigation, Suche
Gruppe: Grid Ketten-Befehlsblock.png
Systeme

Grid Roter Sand blass.png mit Mechaniken

Grid Redstone blass.png mit Redstone
                Hier:
Grid Befehlsblock.png mit Befehlen

Die vorgestellte Technik kann in der Mechanik-Welt angesehen werden.

Grid Wiederhol-Befehlsblock.png mehr 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.

Inhaltsverzeichnis

Variante 1[Bearbeiten | Quelltext bearbeiten]

Auftrag-System (Befehle) Bild 1.1.png Auftrag-System (Befehle) Bild 1.2.png Auftrag-System (Befehle) Bild 1.3.png

Dieses System gibt drei Aufträge vor, die nacheinander abgearbeitet werden müssen. Zuerst soll der Spieler eine Pilzsuppe finden und dem Dorfbewohner Jones geben. Als nächstes soll er Bill ansprechen und dies mitteilen. Als letzes soll der Spieler Zäune und Zauntore herstellen und diese mit Bill handeln.


Einschalten

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

Wiederholen

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

Ausschalten

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



Befehlsblöcke mit Befehlen:



Variante 1: Start-Funktion
Wenn die Start-Funktion geladen wird, werden die Punktestand-Ziele, die Punktestandswerte, der Überlebensmodus und die Dorfbewohner gesetzt.

  • Zeile 2 für das Erfassen von Rechtsklicken auf den Dorfbewohner
  • Zeile 3 für das Erfassen von abgeschlossenen Handel der Dorfbewohner
  • Zeile 4 für das Speichern der Nachrichtsnummer
  • Zeile 5 für das Speichern der Auftragsnummer
  • Zeile 8 der Spieler bekommt den ersten Auftrag in Form eines Punktestandes
  • Zeile 11 der Spieler wird in den Überlebensmodus gesetzt
  • Zeile 14 Dorfbewohner Jones wird erschaffen
  • Zeile 15 Dorfbewohner Bill wird erschaffen
Editor Icon.png technik_wiki:auftrag-system/v1start.mcfunction
# Punktestand-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 dem 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 Punktestandswerte werden für den Spieler gesetzt
scoreboard players set @a[distance=..25] PZAufS.1Auftrag 1

# Der Spieler wird in den Überlebensmodus gesetzt
gamemode survival @a[distance=..25,gamemode=!survival]

# Die Dorfbewohner werden erschaffen
summon minecraft:villager ~-5 ~ ~ {Silent:true,Invulnerable:true,CanPickUpLoot:false,PersistenceRequired:true,CustomNameVisible:true,CustomName:"{\"text\":\"Jones\",\"bold\":true}",Offers:{Recipes:[]},Tags:["EtiAufS.1Alle","EtiAufS.1AuftragVorhanden"],Profession:1,Career:1,CareerLevel:42,Attributes:[{Name:"generic.knockbackResistance",Base:"1f"},{Name:"generic.movementSpeed",Base:"0f"}]}
summon minecraft:villager ~-10 ~ ~ {Silent:true,Invulnerable:true,CanPickUpLoot:false,PersistenceRequired:true,CustomNameVisible:true,CustomName:"{\"text\":\"Bill\",\"bold\":true}",Offers:{Recipes:[]},Tags:["EtiAufS.1Alle"],Profession:2,Career:1,CareerLevel:42,Attributes:[{Name:"generic.knockbackResistance",Base:"1f"},{Name:"generic.movementSpeed",Base:"0f"}]}


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.

  • Zeile 2 lässt beim Auftraggeber (der ein Etikett dafür erhalten hat) grüne Partikel entstehen
  • Zeile 5 erzeugt Sprechgeräusche in der Nähe von Dorfbewohnern, wenn ein Spieler sie anklickt
  • Zeile 8 Der dritte Auftrag wird ausgelöst, wenn der Spieler diesen gerade zu erledigen hat (Punktewert bei 3). Dazu wird von dem Dorfbewohner aus geprüft ob der Spieler in einem Radius von maximal drei Blöcken um diesen sich befindet und mit ihm gerade redet und die entsprechende Auftragsnummer besitzt.
  • Zeile 9 Vom dritten Auftrag wird auch noch geprüft ob der Spieler mit dem Dorfbewohner den Handel durchgeführt hat
  • Zeile 12 Der zweite Auftrag wird aufgerufen wenn der Spieler diesen zu erledigen hat
  • Zeile 13 Der zweite Auftrag beinhaltet auch dass Bill gefunden wird, dazu wird die entsprechende Funktion ebenfalls geladen
  • Zeile 16 Der erste Auftrag wird aufgerufen wenn der Spieler diesen zu erledigen hat, dazu erhält der Spieler von der Start-Funktion den Auftragswert von 1
  • Zeile 19 Wenn der Spieler mit irgendeinem Dorfbewohner gesprochen hat (Rechtsklick auf den Dorfbewohner), wird der Punktestand wieder zurück gesetzt
Editor Icon.png technik_wiki:auftrag-system/v1zyklus.mcfunction
# 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,tag=EtiAufS.1AuftragVorhanden] run particle minecraft:happy_villager ~ ~1 ~ 0.2 0.2 0.2 0.1 1 force @a[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 @a[distance=..3,scores={PZAufS.1Reden=1..}] ~ ~ ~ 1 0.5 1

# Auftrag 3
execute as @e[type=minecraft:villager,name=Bill,tag=EtiAufS.1Alle] at @s if entity @a[distance=..3,scores={PZAufS.1Reden=1..,PZAufS.1Auftrag=3}] run function technik_wiki:auftrag-system/v1auftrag_3
execute as @e[type=minecraft:villager,name=Bill,tag=EtiAufS.1Alle] at @s if entity @a[distance=..3,scores={PZAufS.1Handel=1..,PZAufS.1Auftrag=3}] run function technik_wiki:auftrag-system/v1auftrag_3_handel

# Auftrag 2
execute as @e[type=minecraft:villager,name=Jones,tag=EtiAufS.1Alle] at @s if entity @a[distance=..3,scores={PZAufS.1Reden=1..,PZAufS.1Auftrag=2}] run function technik_wiki:auftrag-system/v1auftrag_2
execute as @e[type=minecraft:villager,name=Bill,tag=EtiAufS.1Alle] at @s if entity @a[distance=..3,scores={PZAufS.1Reden=1..,PZAufS.1Auftrag=2}] run function technik_wiki:auftrag-system/v1auftrag_2_bill

# Auftrag 1
execute as @e[type=minecraft:villager,name=Jones,tag=EtiAufS.1Alle] at @s if entity @a[distance=..3,scores={PZAufS.1Reden=1..,PZAufS.1Auftrag=1}] run function technik_wiki:auftrag-system/v1auftrag_1

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


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

  • Zeile 2 Damit die Nachrichten nach einander ausgegeben werden, wird die Nachricht als Punktestand im Spieler gespeichert
  • Zeile 3 Wenn die maximale Anzahl der Nachrichten erreicht wurde, wird der Punktestand wieder zurück gesetzt und die Nachrichten beginnen wieder von vorne
  • Zeile 6 Von dem Dorfbewohner aus, wird geprüft ob in einem Radius von maximal drei Blöcken ein Spieler sich aufhält, der die Suppe besorgen sollte, mit dem Dorfbewohner redet und eine beliebige Nachricht von ihm erhalten hat. Und er muss eine Pilzsuppe in dem Inventar haben, dann wird ihm genau eine Pilzsuppe aus dem Inventar gelöscht und nur dann wird dieser Erfolg als Punktestand in dem Dorfbewohner gespeichert.
  • Zeile 9 Nur wenn das Entfernen der Pilzsuppe vom Spieler der den Auftrag dazu hatte erfolgreich war, gibt er jetzt die Erfolgsnaichricht aus,
  • Zeile 10 gibt ein Erfolgsgeräusch ab,
  • Zeile 11 gibt dem Spieler fünf Erfahrungspunkte
  • Zeile 12 gibt dem Spieler einen Smaragd,
  • Zeile 13 gibt dem Spieler den zweiten Auftrag,
  • Zeile 14 setzt die Nachrichten auf null und
  • Zeile 15 entfernt das Etikett für den Auftrag, dass die Suppe geholt werden soll
  • Zeile 18 Wenn der Spieler den Dorfbewohner einfach nur rechtsklickt, gibt dieser eine von zwei Nachrichten aus
  • Zeile 19 Diese Nachricht wird beim zweiten anklicken ausgegeben
  • Zeile 22 Wenn der Spieler das erste mal mit dem Dorfbewohner gesprochen hat, wird eine Truhe erstellt, in der sich die Pilzsuppe befindet und
  • Zeile 23 er erhält das Etikett um ihn damit zu markieren, dass er jetzt die Pilzsuppe besorgen soll
Editor Icon.png technik_wiki:auftrag-system/v1auftrag_1.mcfunction
# Wenn der Spieler mit dem Dorfbewohner Jones redet, wird sein Punktestand für die Nachricht eingestellt
scoreboard players add @a[distance=..3,scores={PZAufS.1Reden=1..}] PZAufS.1Nachr 1
scoreboard players set @a[distance=..3,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=3..}] PZAufS.1Nachr 1

# Vom Dorfbewohner Jones wird geprüft ob der Spieler eine Pilzsuppe in der Hand hat und ob er von Jones schon den Auftrag dafür bekommen hat (Etikett)
execute store success score @s PZAufS.1Nachr run clear @a[distance=..3,tag=EtiAufS.1JonesSuppeHolen,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1..},nbt={Inventory:[{id:"minecraft:mushroom_stew",tag:{display:{Lore:["Ein Auftragsgegenstand"] } } } ] } ] minecraft:mushroom_stew{display:{Lore:["Ein Auftragsgegenstand"] } } 1

# Nur wenn dem Spieler die Pilzsuppe entfernt werden könnte besitzt Jones für seinen Punktestand eine eins, dann wird dem Spieler die Belohnung gegeben
execute if entity @s[scores={PZAufS.1Nachr=1}] run tellraw @a[distance=..3,tag=EtiAufS.1JonesSuppeHolen,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1..}] ["",{"text":"[1/1]","color":"gray"},{"text":" «","color":"gold","bold":true},{"selector":"@s"},{"text":"» ","color":"gold","bold":true},{"text":"Endlich meine Suppe, danke.","color":"gray"}]
execute if entity @s[scores={PZAufS.1Nachr=1}] run playsound minecraft:entity.player.levelup master @a[distance=..3,tag=EtiAufS.1JonesSuppeHolen,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1..}] ~ ~ ~ 1 0.5 1
execute if entity @s[scores={PZAufS.1Nachr=1}] run experience add @a[distance=..3,tag=EtiAufS.1JonesSuppeHolen,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1..}] 5 points
execute if entity @s[scores={PZAufS.1Nachr=1}] run give @a[distance=..3,tag=EtiAufS.1JonesSuppeHolen,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1..}] minecraft:emerald 1
execute if entity @s[scores={PZAufS.1Nachr=1}] run scoreboard players set @a[distance=..3,tag=EtiAufS.1JonesSuppeHolen,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1..}] PZAufS.1Auftrag 2
execute if entity @s[scores={PZAufS.1Nachr=1}] run scoreboard players set @a[distance=..3,tag=EtiAufS.1JonesSuppeHolen,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1..}] PZAufS.1Nachr 0
execute if entity @s[scores={PZAufS.1Nachr=1}] run tag @a[distance=..3,tag=EtiAufS.1JonesSuppeHolen,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=0}] remove EtiAufS.1JonesSuppeHolen

# Nachrichten von Jones, wenn man in rechtsklickt. Er gibt dem Spieler den Auftrag die Pilzsuppe zu holen
tellraw @a[distance=..3,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1}] ["",{"text":"[1/2]","color":"gray"},{"text":" «","color":"gold","bold":true},{"selector":"@s"},{"text":"» ","color":"gold","bold":true},{"text":"Ich leide schon seit 3 Tagen an Hunger. Wärst du so nett und holst mir","color":"yellow"},{"text":" [1 Pilzsuppe] ","color":"green","hoverEvent":{"action":"show_text","value":{"text":"Hole Jones 1x Pilzsuppe"} } } ]
tellraw @a[distance=..3,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=2}] ["",{"text":"[2/2]","color":"gray"},{"text":" «","color":"gold","bold":true},{"selector":"@s"},{"text":"» ","color":"gold","bold":true},{"text":"Du bist ja immer noch hier. Los hol mir was zu essen!","color":"yellow"}]

# Der Spieler erhält das entsprechende Etikett, wenn er mit Jones  das erste mal gesprochen hat und somit den Auftrag erfüllen soll
execute if entity @a[distance=..3,tag=!EtiAufS.1JonesSuppeHolen,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1..}] run setblock ~ ~ ~-5 minecraft:chest[facing=south]{Items:[{Slot:13b,id:"minecraft:mushroom_stew",Count:1b,tag:{display:{Lore:["Ein Auftragsgegenstand"] } } } ] } replace
tag @a[distance=..3,tag=!EtiAufS.1JonesSuppeHolen,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1..}] add EtiAufS.1JonesSuppeHolen


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

  • Zeile 2 Wie beim ersten Auftrag wird auch hier die Nachricht gespeichert, die der Dorfbewohner dem Spieler ausgibt.
  • Zeile 3 Wenn die maximale Anzahl der Nachrichten erreicht wurde, wird der wert zurück gesetzt und es beginnt wieder von vorne
  • Zeile 6 Wenn der Spieler mit Bill dem gesuchten Dorfbewohner gesprochen hat, dann erhält er die Erfolgsnachricht,
  • Zeile 7 Bill erhält das Etikett für den dritten Auftrag,
  • Zeile 8 Jones, der Auftraggeber bekommt das Etikett entfernt
  • Zeile 9 es wird ein Erfolgsgeräusch abgespielt,
  • Zeile 10 der Spieler erhält fünf Erfahrungspunkte,
  • Zeile 11 der Spieler erhält einen Smaragd
  • Zeile 12 der Spieler erhält den dritten Auftrag als Punktestand
  • Zeile 13 die Nachrichten werden wieder auf null gesetzt und
  • Zeile 14 das Etikett für das Suchen von Bill wird entfernt
  • Zeile 17 Jones erklärt in drei Nachrichten den zweiten Auftrag an den Spieler. Die zweite Nachricht [Z18] und dritte Nachricht [Z19]
  • Zeile 22 Wenn der Spieler den Dorfbewohner für diesen Auftrag das erste mal anklickt, wird der gesuchte Dorfbewohner Bill ein Etikett erhalten.
  • Zeile 23 Gleichzeitig erhält auch der Spieler selbst das Etikett für das Suchen von Bill.
Editor Icon.png technik_wiki:auftrag-system/v1auftrag_2.mcfunction
# Wenn der Spieler mit dem Dorfbewohner Jones redet, wird sein Punktestand für die Nachricht eingestellt
scoreboard players add @a[distance=..3,scores={PZAufS.1Reden=1..}] PZAufS.1Nachr 1
scoreboard players set @a[distance=..3,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=4..}] PZAufS.1Nachr 1

# Wenn der Spieler mit Bill gesprochen und damit gefunden hat, dann gibt Jones dem Spieler die Belohnung
tellraw @a[distance=..3,tag=EtiAufS.1BillGefunden,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1..}] ["",{"text":"[1/1]","color":"gray"},{"text":" «","color":"gold","bold":true},{"selector":"@s"},{"text":"» ","color":"gold","bold":true},{"text":"Danke, dass du nach ihm geschaut hast.","color":"gray"}]
execute if entity @a[distance=..3,tag=EtiAufS.1BillGefunden,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1..}] run tag @e[type=minecraft:villager,name=Bill,tag=!EtiAufS.1AuftragVorhanden] add EtiAufS.1AuftragVorhanden
execute if entity @a[distance=..3,tag=EtiAufS.1BillGefunden,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1..}] run tag @s[tag=EtiAufS.1AuftragVorhanden] remove EtiAufS.1AuftragVorhanden
playsound minecraft:entity.player.levelup master @a[distance=..3,tag=EtiAufS.1BillGefunden,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1..}] ~ ~ ~ 1 0.5 1
experience add @a[distance=..3,tag=EtiAufS.1BillGefunden,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1..}] 5 points
give @a[distance=..3,tag=EtiAufS.1BillGefunden,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1..}] minecraft:emerald 1
scoreboard players set @a[distance=..3,tag=EtiAufS.1BillGefunden,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1..}] PZAufS.1Auftrag 3
scoreboard players set @a[distance=..3,tag=EtiAufS.1BillGefunden,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1..}] PZAufS.1Nachr 0
tag @a[distance=..3,tag=EtiAufS.1BillGefunden,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=0}] remove EtiAufS.1BillGefunden

# Nachrichten an den Spieler. Jones gibt den Auftrag Bill zu suchen
tellraw @a[distance=..3,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1}] ["",{"text":"[1/3]","color":"gray"},{"text":" «","color":"gold","bold":true},{"selector":"@s"},{"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 @a[distance=..3,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=2}] ["",{"text":"[2/3]","color":"gray"},{"text":" «","color":"gold","bold":true},{"selector":"@s"},{"text":"» ","color":"gold","bold":true},{"text":"Ich glaube er spielt schon wieder im Wald, bin mir aber nicht sicher.","color":"yellow","bold":false}]
tellraw @a[distance=..3,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=3}] ["",{"text":"[3/3]","color":"gray"},{"text":" «","color":"gold","bold":true},{"selector":"@s"},{"text":"» ","color":"gold","bold":true},{"text":"Viel mehr Angaben kann ich dir nicht machen, das ist alles was ich weiß.","color":"yellow","bold":false}]

# Wenn der Spieler Jones anklickt, erhält er den Auftrag Bill zu suchen (Etikett)
execute if entity @a[distance=..3,tag=!EtiAufS.1BillSuchen,tag=!EtiAufS.1BillGefunden,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1..}] run tag @e[type=minecraft:villager,name=Bill,tag=!EtiAufS.1AuftragVorhanden] add EtiAufS.1AuftragVorhanden
execute if entity @a[distance=..3,tag=!EtiAufS.1BillSuchen,tag=!EtiAufS.1BillGefunden,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1..}] run tag @s[tag=EtiAufS.1AuftragVorhanden] remove EtiAufS.1AuftragVorhanden
tag @a[distance=..3,tag=!EtiAufS.1BillSuchen,tag=!EtiAufS.1BillGefunden,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1..}] add EtiAufS.1BillSuchen


Variante 1: Auftrag-2-Bill-Funktion
Die Funktion lässt Bill dem Spieler eine Nachricht ausgeben, wenn dieser ihn gefunden und angesprochen hat.

  • Zeile 2 Wenn der Spieler Bill anspricht, erhält er die Nachricht
  • Zeile 5 Der Dorfbewohner Jones bekommt wieder das Etikett für den Auftrag, und Bill bekommt es entfernt [Z6] und der Spieler erhält das Etikett, dass er Bill gefunden hat [Z7] und das Etikett, dass er ihn suchen soll wird entfernt [Z8]
Editor Icon.png technik_wiki:auftrag-system/v1auftrag_2_bill.mcfunction
# Wenn der Spieler Bill gefunden hat und anspricht, so gibt er die Anweisung, Jones anzusprechen
tellraw @a[distance=..3,tag=EtiAufS.1BillSuchen,scores={PZAufS.1Reden=1..}] ["",{"text":"[1/1]","color":"gray"},{"text":" «","color":"gold","bold":true},{"selector":"@s"},{"text":"» ","color":"gold","bold":true},{"text":"Was? Jones hat dich geschickt um zu wissen wo ich bin? Sag ihm es geht mir gut.","color":"yellow","bold":false}]

# Den jenigen den der Spieler nun ansprechen soll erhält das Etikett und der Spieler erhält das Etikett, dass er Bill gefunden hat
execute if entity @a[distance=..3,tag=EtiAufS.1BillSuchen,tag=!EtiAufS.1BillGefunden,scores={PZAufS.1Reden=1..}] run tag @e[type=minecraft:villager,name=Jones,tag=!EtiAufS.1AuftragVorhanden] add EtiAufS.1AuftragVorhanden
execute if entity @a[distance=..3,tag=EtiAufS.1BillSuchen,tag=!EtiAufS.1BillGefunden,scores={PZAufS.1Reden=1..}] run tag @s[tag=EtiAufS.1AuftragVorhanden] remove EtiAufS.1AuftragVorhanden
tag @a[distance=..3,tag=EtiAufS.1BillSuchen,tag=!EtiAufS.1BillGefunden,scores={PZAufS.1Reden=1..}] add EtiAufS.1BillGefunden
tag @a[distance=..3,tag=EtiAufS.1BillGefunden,scores={PZAufS.1Reden=1..}] remove EtiAufS.1BillSuchen


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.

  • Zeile 2 Wie bei den anderen Aufträgen, wird auch hier die Nachricht hochgezählt
  • Zeile 3 und zurückgesetzt, wenn die maximale Anzahl erreicht wurde
  • Zeile 6 Wenn der Spieler für Bill die Zäune und Zauntore hergestellt hat und nun mit Bill dem Dorfbewohner redet, erhält er zuerst ein Etikett, dass er die Zäune hergestellt hat
  • Zeile 7 Anschließend bekommt Bill den Handel hinzu, dass er Zäune und Zauntor gegen einen Smaragd tauscht.
  • Zeile 8 Danach erhält der Spieler eine Erfolgsnachricht und
  • Zeile 9 der Dorfbewohner erhält das Etikett, dass der Auftrag erledigt ist
  • Zeile 12 Bill gibt insgesamt drei Nachrichten von sich um den Auftrag zu erklären. Die zweite Nachricht [Z13] und die dritte Nachricht [Z14].
  • Zeile 17 Falls der Spieler Bill das erste mal angeklickt hat, wird eine Werkbank und eine Truhe mit den Materialien erstellt[Z18] und der Spieler erhält ein Etikett für diesen Auftrag[Z19].
Editor Icon.png technik_wiki:auftrag-system/v1auftrag_3.mcfunction
# Wenn der Spieler mit dem Dorfbewohner Bill redet, wird sein Punktestand für die Nachricht eingestellt
scoreboard players add @a[distance=..3,scores={PZAufS.1Reden=1..}] PZAufS.1Nachr 1
scoreboard players set @a[distance=..3,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=4..}] PZAufS.1Nachr 1

# Wenn der Spieler für Bill die sechs Zäune und das Zauntor hergestellt hat, besitzt er diese in seinem Inventar und auch das Etikett, dass er dafür den Auftrag bekommen hat
execute if entity @s[tag=!EtiAufS.1AuftragAbgeschlossen] run tag @a[distance=..3,tag=EtiAufS.1BillZaunHerstellen,scores={PZAufS.1Reden=1..},nbt={Inventory:[{id:"minecraft:oak_fence"},{id:"minecraft:oak_fence_gate"}]}] add EtiAufS.1BillZaunHergestellt
execute if entity @s[tag=!EtiAufS.1AuftragAbgeschlossen] if entity @a[distance=..3,tag=EtiAufS.1BillZaunHerstellen,tag=EtiAufS.1BillZaunHergestellt,scores={PZAufS.1Reden=1..}] run data merge entity @s {Offers:{Recipes:[{buy:{id:"minecraft:oak_fence",Count:6b},buyB:{id:"minecraft:oak_fence_gate",Count:1b},sell:{id:"minecraft:emerald",Count:1b},maxUses:1,uses:0} ] } }
execute if entity @s[tag=!EtiAufS.1AuftragAbgeschlossen] run tellraw @a[distance=..3,tag=EtiAufS.1BillZaunHergestellt,scores={PZAufS.1Reden=1..}] ["",{"text":"[1/1]","color":"gray"},{"text":" «","color":"gold","bold":true},{"selector":"@s"},{"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","bold":false}]
execute if entity @a[distance=..3,tag=EtiAufS.1BillZaunHerstellen,tag=EtiAufS.1BillZaunHergestellt,scores={PZAufS.1Reden=1..}] run tag @s[tag=!EtiAufS.1AuftragAbgeschlossen] add EtiAufS.1AuftragAbgeschlossen

# Bill gibt bei einem Rechtsklickt auf ihn drei Nachrichten nacheinander aus, um dem Spieler zu erklären, was er von ihm verlangt
tellraw @a[distance=..3,tag=!EtiAufS.1BillZaunHergestellt,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1}] ["",{"text":"[1/3]","color":"gray"},{"text":" «","color":"gold","bold":true},{"selector":"@s"},{"text":"» ","color":"gold","bold":true},{"text":"Hey du, du siehst aus, als ob du","color":"yellow"},{"text":" [sechs Zäune und ein Zauntor] ","color":"green","hoverEvent":{"action":"show_text","value":{"text":"Stelle 6x Zäune und 1x Zauntor her"} } },{"text":"herstellen könntest.","color":"yellow"} ]
tellraw @a[distance=..3,tag=!EtiAufS.1BillZaunHergestellt,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=2}] ["",{"text":"[2/3]","color":"gray"},{"text":" «","color":"gold","bold":true},{"selector":"@s"},{"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","bold":false}]
tellraw @a[distance=..3,tag=!EtiAufS.1BillZaunHergestellt,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=3}] ["",{"text":"[3/3]","color":"gray"},{"text":" «","color":"gold","bold":true},{"selector":"@s"},{"text":"» ","color":"gold","bold":true},{"text":"Was stehst du hier so ahnungslos herum? Du bekommst das doch bestimmt hin.","color":"yellow","bold":false}]

# Falls der Spieler Bill das erste angeklickt hat, wird die Werkbank und die Truhe mit dem Material platziert. Der Spieler erhält dann das Etikett für den Auftrag
execute if entity @a[distance=..3,tag=!EtiAufS.1BillZaunHerstellen,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1..}] run setblock ~ ~ ~-5 minecraft:crafting_table replace
execute if entity @a[distance=..3,tag=!EtiAufS.1BillZaunHerstellen,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1..}] run setblock ~ ~ ~-6 minecraft:chest[facing=north]{Items:[{Slot:12b,id:"minecraft:oak_planks",Count:10b},{Slot:13b,id:"minecraft:stick",Count:8b}]} replace
tag @a[distance=..3,tag=!EtiAufS.1BillZaunHerstellen,scores={PZAufS.1Reden=1..,PZAufS.1Nachr=1..}] add EtiAufS.1BillZaunHerstellen


Variante 1: Auftrag-3-Handel-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.

  • Zeile 2 Wenn der Spieler mit Bill Handel getrieben hat und den Auftrag dazu hatte, wird Bill keine weiteren Angebote mehr anbieten
  • Zeile 3 Anschließend wird eine Nachricht über den Erfolg des Auftrages ausgegeben,
  • Zeile 4 das entsprechende Etikett für den Auftrag wird entfernt,
  • Zeile 5 ein Erfolgsgeräusch wird abgespielt und
  • Zeile 6 ein Zustimmungsgeräusch des Dorfbewohners wird abgespielt
  • Zeile 9 der Spieler bekommt den vierten Auftrag, auch wenn es diesen nicht gibt, aber damit ist dieser Auftrag abgeschlossen
  • Zeile 10 Der Spieler bekommt seine Nachricht auf null gesetzt sowie
  • Zeile 11 die Handelsanzahl mit diesem Dorfbewohner
  • Zeile 14 Das Etikett für diesen Auftrag wird entfernt,
  • Zeile 15 wie auch das für das Beenden des Auftrages
Editor Icon.png technik_wiki:auftrag-system/v1auftrag_3_handel.mcfunction
# Wenn der Spieler mit Bill den Handel abgeschlossen hat, wird Bill seinen Handel wieder einstellen und dem Spieler seine Belohnung geben
execute if entity @a[distance=..3,tag=EtiAufS.1BillZaunHergestellt,scores={PZAufS.1Handel=1..}] run data merge entity @s {Offers:{Recipes:[] } }
tellraw @a[distance=..3,tag=EtiAufS.1BillZaunHergestellt,scores={PZAufS.1Handel=1..}] ["",{"text":"[1/1]","color":"gray"},{"text":" «","color":"gold","bold":true},{"selector":"@s"},{"text":"» ","color":"gold","bold":true},{"text":"Prima, jetzt kann ich meinen Bereich einzäunen.","color":"gray"}]
execute if entity @a[distance=..3,tag=EtiAufS.1BillZaunHergestellt,scores={PZAufS.1Handel=1..}] run tag @s[tag=EtiAufS.1AuftragVorhanden] remove EtiAufS.1AuftragVorhanden
playsound minecraft:entity.player.levelup master @a[distance=..3,tag=EtiAufS.1BillZaunHergestellt,scores={PZAufS.1Handel=1..}] ~ ~ ~ 1 0.5 1
playsound minecraft:entity.villager.yes master @a[distance=..3,tag=EtiAufS.1BillZaunHergestellt,scores={PZAufS.1Handel=1..}] ~ ~ ~ 1 0.5 1

# Wenn der Spieler dem Dorfbewohner Bill die Auftragsmaterialien gegeben hat, werden die entsprechenden Punktestand-Ziele angepasst
scoreboard players set @a[distance=..3,tag=EtiAufS.1BillZaunHergestellt,scores={PZAufS.1Handel=1..}] PZAufS.1Auftrag 4
scoreboard players set @a[distance=..3,tag=EtiAufS.1BillZaunHergestellt,scores={PZAufS.1Handel=1..}] PZAufS.1Nachr 0
scoreboard players set @a[distance=..3,tag=EtiAufS.1BillZaunHergestellt,scores={PZAufS.1Handel=1..}] PZAufS.1Handel 0

# Die Etiketten für das Herstellen der Auftragsmaterialien werden entfernt
tag @a[distance=..3,tag=EtiAufS.1BillZaunHergestellt,scores={PZAufS.1Nachr=0}] remove EtiAufS.1BillZaunHerstellen
tag @a[distance=..3,tag=EtiAufS.1BillZaunHergestellt,scores={PZAufS.1Nachr=0}] remove EtiAufS.1BillZaunHergestellt


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.

  • Zeile 2 Die Punktestand-Ziele werden gelöscht fürs Reden, fürs Handeln [Z3], für die Nachrichten [Z4] und für die Aufträge [Z5].
  • Zeile 8 Die Spieler werden wieder in den Kreativmodus gesetzt
  • Zeile 11 Von der Position der Dorfbewohner aus, werden alle Blöcke die bei den Aufträgen platziert wurden, wieder gelöscht.
  • Zeile 14 Alle Dorfbewohner werden entfernt
  • Zeile 17 Alle Gegenstände werden entfernt [Z18] und 15 Erfahrungspunkte werden entfernt [Z19]
  • Zeile 22 Als letztes werden sämtliche Etiketten entfernt, die man im Laufe der Aufträge besessen hatte.
Editor Icon.png technik_wiki:auftrag-system/v1stopp.mcfunction
# Die Punktestand-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

# Alle Dorfbewohner werden entfernt
kill @e[tag=EtiAufS.1Alle]

# 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 eventuell noch vorhandenen Etiketten werden entfernt
tag @a[tag=EtiAufS.1JonesSuppeHolen] remove EtiAufS.1JonesSuppeHolen
tag @a[tag=EtiAufS.1BillSuchen] remove EtiAufS.1BillSuchen
tag @a[tag=EtiAufS.1BillGefunden] remove EtiAufS.1BillGefunden
tag @a[tag=EtiAufS.1BillZaunHerstellen] remove EtiAufS.1BillZaunHerstellen
tag @a[tag=EtiAufS.1BillZaunHergestellt] remove EtiAufS.1BillZaunHergestellt