Hast du auch schon immer gedacht, dass die Welt doch nicht so rund ist, wie sie zu sein scheint? Hattest du jeher das Gefühl, dass die Kreiszahl eher quadratisch sein müsste?
Dann bist du genau hier richtig! Blockforum ist die neue Minecraft-Community. Werde Mitglied und teile mit uns Deine Leidenschaft. Wir freuen uns auf dich!

Der Zugriff auf das Forum ist für Gäste eingeschränkt, als registrierter Benutzer würden Dir alle Funktionen (wie z.B. Bildvergrößerung und Downloads) im Forum zur Verfügung stehen.

Tellraw-Nachricht (/tellraw)

    • Tutorial

      Tellraw-Nachricht (/tellraw)

      Bitte hier kein Feedback schreiben!
      Hier geht es zum Feedback-Thread


      Hallo, Leute!

      Ich habe schon in mehreren Themen die Tellraw-Nachricht angesprochen. Tellraw-Nachrichten können relativ vielfältig angewendet werden... Ob man in einer Minecraftversion, die gleich oder höher 1.8 ist klickbare Schilder haben möchte, oder einfach nur Farbe in seine Texte bringen möchte... Tellraw-Nachrichten machen es möglich! :)

      Inhaltsverzeichnis:
      1. Die NBT-Daten einer tellraw-Nachricht
      2. Tellraw-Nachrichten im Chat
      3. Tellraw-Formatierungen in Büchern und auf Schildern
      4. Anwendungsbeispiel Teil 1, Teil 2, Teil 3

      Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „Baumeister_Daniel“ ()

      1. Die NBT-Daten einer tellraw-Nachricht

      [nach oben]
      Um eine tellraw-Nachricht zu formatieren, benötigt man NBT-Daten. Hier der NBT-Baum mit allen verwendbaren Parametern:

      :nbtst: text, :nbtst: translate (+ :nbtli: with), :nbtst: selector und :nbtc: score
      Die oben genannten, folgenden Tags sind der Textteil des Abschnittes. Sie schließen sich gegenseitig aus. Für diesen Text gelten die Formatierungen, die in diesem Abschnitt festgelegt wurden.

      • :nbtc: :nbtst: message Der Haupt-Tag. Beim Befehl wird dieser Tag-Name weggelassen. Folgende Tags können nur verwendet werden, wenn message ein compound-Tag ist. Allerdings kann überall ein message-Tag auch als unformatierter String verwendet werden. In Listen mit message-Tags müssen aber alle Tags entweder ausschließlich compound oder ausschließlich String sein.
        • :nbtst: text ist ein ganz normaler Freitext
        • :nbtst: translate ist der Name einer Übersetzung aus der Übersetzungsdatei. Mit einem Ressourcenpaket kann man die Übersetzungen verändern, und sogar neue hinzufügen.
        • :nbtli: with ist ein Zusatz zu translate. Es ist eine Liste an message-Tags oder String-Tags (aber keine Mischung aus beiden). Die Übersetzungstexte enthalten manchmal Platzhalter, die in der Übersetzungsdatei mit %s gekennzeichnet sind. Normalerweise werden sie bei ihrer Verwendung vom System gefüllt, aber das geschieht nicht in einer Tellraw-Nachricht. Dieser Tag erlaubt das füllen der Platzhalter (wird ein Platzhalter nicht gefüllt, wird an seiner Stelle kein Zeichen angezeigt).
          • :nbtc: weiterer message-Tag
        • :nbtst: selector kann seit Version 1.8 verwendet werden und ist eine Zielauswahl. Die Namen aller Objekte, Mobs und Spieler, auf die die Zielauswahl zutrifft, werden angezeigt. Mehrere werden mit einem Komma getrennt, bzw. die letzten beiden mit einem "and"
        • :nbtc: score kann seit Version 1.8 verwendet werden und gibt einen Anzeigetafel-Punktestand aus. (Und nur der Punktestand. es wird weder Spielername noch Zielname angezeigt)
          • :nbtst: name ist der Name des Spielers /des Zählers, oder eine Zielauswahl, dessen Punktestand ausgelesen werden soll.
          • :nbtst: objective ist der interne Name des Ziels.
        • :nbtst: color ist die Farbe, in der der Text angezeigt werden soll. Zur Auswahl stehen:
          black, dark_blue, dark_green, dark_aqua, dark_red, dark_purple, gold, gray, dark_gray, blue, green, aqua, red, light_purple, yellow (yellow) und white (white)
        • :nbtst: insertion ist ein Text, der in die Chatkonsole geschrieben wird, wenn der Spieler den Nachrichtenabschnitt mit gedrückter ⇧ Shift Taste anklick. Der eventuell bestehende Text, den der Spieler schon geschrieben hat, wird hierbei nicht entfernt, sondern der Text wird hinten angefügt
        • :nbtb: bold für fette Schrift (true bzw 1 für fett und false bzw. 0 für normal)
        • :nbtb: italic für kursive Schrift (true bzw 1 für kursiv und false bzw. 0 für normal)
        • :nbtb: underlined für unterstrichene Schrift (true bzw 1 für unterstrichen und false bzw. 0 für normal)
        • :nbtb: strikethrough für durchgestrichene Schrift (true bzw 1 für durchgestrichen und false bzw. 0 für normal)
        • :nbtb: obfuscated für Unlesbar (die Buchstaben ändern sich ständig) (true bzw 1 für unlesbar und false bzw. 0 für normal)
        • :nbtc: hoverEvent wird verwendet, wenn der Text einen Tooltip enthalten soll.
          • :nbtst: action ist entweder show_text, show_item oder show_achievement
          • :nbtst: value ist abhängig von action:
            • Bei show_text wird der Freitext wie er ist angezeigt.
            • show_item ist ein Item im Item-Format (auch mit Version 1.8 müssen hier noch numerische IDs verwendet werden). Da der Tag auch hier ein String ist, muss folgende Schreibweise verwendet werden (Beispiel für Trank der Regeneration): value:"{id:373,Damage:8193}". Es wird der Itemname inkl. Beschreibung angezeigt.
            • Bei show_achievement muss der Name eines Erfolges oder einer Statistik eingegeben werden. Es wird der Name des Erfolges oder der Statistik inkl. Beschreibung angezeigt.
        • :nbtc: clickEvent wird verwendet, wenn der Text klickbar sein soll.
          • :nbtst: action ist entweder run_command, suggest_command oder open_url
          • :nbtst: value ist abhängig von action:
            • Bei run_command wird ein Befehl eingegeben, der beim Anklicken des Textes ausgeführt wird.
            • Bei suggest_command wird ein Text eingegeben (vorzugsweise ein Befehl), der beim Anklicken in die Eingabezeile des Chats vom Empfänger geschrieben. Der Empfänger kann den Text dann entweder mit Enter dem Chat übergeben, oder es sein lassen.
            • Bei open_url muss die URL einer Internetseite eingegeben werden. Beim Anklicken des Textes wird ein kleines Menü in Minecraft geöffnet, welches fragt, ob der Link xyz wirklich geöffnet werden soll. Bei Bestätigung wird die URL im Standardbrowser geöffnet.
        • :nbtli: extra ist eine Liste, die weitere message-Tags enthält. Dadurch können in einer tellraw-Nachricht verschiedene Abschnitte verschieden formatiert werden, und es ist eine Verschachtelung zur Übersicht möglich.
          • :nbtc: weiterer message-Tag


      [nach oben]

      Dieser Beitrag wurde bereits 39 mal editiert, zuletzt von „Baumeister_Daniel“ ()

      2. Tellraw-Nachrichten im Chat

      [nach oben]
      Befehlstypen: Cheat, Server, Befehlsblock

      Tellraw-Nachrichten im eigentlichen Sinne sind formatierte Textnachrichten. Erst in Version 1.8 kam die Möglichkeit dazu, mit Tellraw-Nachrichten auch Schilder und Bücher zu formatieren.

      Befehl: /tellraw <Spieler> <Nachricht>
      1. Spieler ist der Spieler, oder eine Zielauswahl derer, die die Nachricht erhalten sollen.
      2. Nachricht ist die Nachricht vorzugsweise im JSON-Format, die versendet werden soll.
        Besonderheiten:
        1. Bei der Nachricht wird kein Absender angezeigt (weder Spieler- noch Befehlsblockname)
        2. Die Nachricht kann klickbare Elemente, die Befehle ausführen, Tooltips und farbige, fette, kursive, unter- bzw. durchgeschtrichene Texte enthalten.
          Achtung!
          Enthält die Nachricht Befehle, so gelten die Rechte des Empfängers. Das heißt, wenn ein Spieler, der keine Cheats ausführen darf, eine tellraw-Nachricht mit einem Befehl, der ein Cheat ist erhält, kann der Spieler den Befehl nicht ausführen! Seit der Version 1.8 kann man das mit einem /trigger-Befehl umgehen... Dazu im Anzeigetafel-Tutorial mehr.

      Eine Tellraw-Nachricht kann theoretisch auch ohne Formatierung versendet werden, das macht an sich aber eigentlich keinen Sinn, da dann der Befehl /tell <Spieler> <Nachricht> dann den selben Effekt hat, abgesehen davon, dass dann ein Versender angezeigt wird. Dennoch hier ein kurzes Beispiel:
      /tellraw @p "Bitte nicht klingeln!"
      Versendet an den nächst besten Spieler die Aufforderung, nicht zu klingeln.

      Zum Formatieren werden die NBT-Daten benötigt. Siehe oben

      Beispiele:

      Quellcode

      1. /tellraw @a
      2. {
      3. text:"[Durchsage] ",
      4. extra:
      5. [
      6. {
      7. text:"Heute begrüßen wir ",
      8. color:dark_aqua
      9. },
      10. {
      11. selector:"@a",
      12. color:"blue",
      13. italic:true
      14. }
      15. ]
      16. }

      Dieser Befehl würde, wenn es nur die Spieler Schortan und Tranosch gibt, an alle Spieler folgendes senden:
      [Durchsage] Heute begrüßen wir Schortan and Tranosch

      Mit dem "[Durchsage]" am Anfang "ersetzt" man den Versender. Das ist natürlich freiwillig ;)
      Wenn einer der Spieler einem Team, welchem eine Farbe zugewiesen wurde, angehört, gelten für ihn keine Formatierungen (auch nicht kursiv) und sein Spielername wird in der Teamfarbe angezeigt.

      Quellcode

      1. /tellraw @p
      2. {
      3. text:"[Zauberer] ",
      4. extra:
      5. [
      6. {
      7. text:"Hokus Pokus Zawaling kalei!",
      8. obfuscated:true,
      9. hoverEvent:
      10. {
      11. action:"show_text",
      12. value:"?ad hci eder saW"
      13. }
      14. }
      15. ]
      16. }

      Dieser Befehl versendet an den Spieler, der dem Kommandoblock am nächsten ist eine Nachricht, die (abgesehen von "[Zauberer]") aus sich ständig änderten Buchstaben. Öffnet man jedoch mit t Das Chatfenster, und geht mit der Maus zu den unlesbaren Buchstaben, erhält man als kleines Easteregg den Text "?ad hci eder saW". Von rechts nach links gelesen ergibt er "Was rede ich da?"

      Quellcode

      1. /tellraw @a
      2. {
      3. text:"",
      4. extra:
      5. [
      6. {
      7. text:"Bevorzugst du "
      8. },
      9. {
      10. text:"Flugzeuge",
      11. color:"blue",
      12. underlined:true,
      13. clickEvent:
      14. {
      15. action:"run_command",
      16. value:"/me mag Flugzeuge"
      17. }
      18. },
      19. {
      20. text:" oder "
      21. },
      22. {
      23. text:"Züge",
      24. color:"blue",
      25. underlined:true,
      26. clickEvent:
      27. {
      28. action:"run_command",
      29. value:"/me mag Züge"
      30. }
      31. },
      32. {
      33. text:"?"
      34. }
      35. ]
      36. }

      An alle Spieler wird folgende Frage mit diesen Formatierungen gestellt:
      Bevorzugst du Flugzeuge oder Züge?

      Je nachdem, ob Flugzeuge oder Züge angeklickt wird, wird im Chat versendet, dass man das jeweilige mag.
      [nach oben]

      Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von „Baumeister_Daniel“ ()

      3. Tellraw-Formatierungen in Büchern und auf Schildern

      [nach oben]
      Neu mit Version 1.8

      Seit der Version 1.8 können Schilder sowie Bücher auch mit message-Tag Formatierungen foramtiert werden.

      Hinweis!
      Anders als in der Tellraw-Chatnachricht können Befehle in Büchern und auf Schildern auch von Personen ausgeführt werden, die keine Berechtigung für die Befehle haben, so als kämen sie vom Kommandoblock.


      Bücher NBT-Baum

      Zunächst einmal der relevante Teil des Bücher-NBT-Baumes:
      • :nbtc: tag Beim /give-Befehl wird bei diesem Tag die Formatierung begonnen.
        • :nbtst: title Der Titel des Buches
        • :nbtst: author Der Autor des Buches.
        • :nbti: generation 0=Original, 1=Kopie, 2=Kopie einer Kopie
        • :nbtc: display Anzeigeeigenschaften
          • :nbtst: Name Der Anzeigename. Beim Buch eigentlich überflüssig wegen title. Hat Vorrang gegenüber title, und wird kursiv angezeigt
          • :nbtli: Lore Liste an Zeilen des Beschreibungstextes vom Buch.
            • :nbtst: Eine Zeile Beschreibungstext. Wenn der Beschreibungstext in jedem Slot vollständig lesbar sein soll, darf er maximal 22 Zeilen á 35 Zeichen lang sein. Mehr ist zwar möglich, kann aber dann nicht vollständig angezeigt werden.
        • :nbtli: pages ist eine Liste der Buchseiten.
          • :nbtst: Eine Buchseite. Ist immer ein String, auch mit tellraw-Formatierungen.
        • :nbtli: CanDestroy Liste an Blöcken, die mit diesem Gegenstand im Abenteuermodus zerstört werden dürfen
          • :nbtst: Id- Name des Gegenstandes. Eine Angabe von Datenwert oder gar NBT-Daten des Blockes ist nicht möglich.
        • :nbtb: HideFlags Normalerweise werden Hinweise im tooltip angezeigt, wie welche Blöcke mit dem Objekt zerstört werden dürfen. Im Falle des Buches kann nur die Anzeige unterbunden werden, welche Blöcke mit ihm zerstört werden dürfen. Ist der Wert 8, so wird diese Anzeige unterbunden.

      • Es gibt prinzipiell noch weitere Tags, die es bei allen Items gibt, allerdings haben sie bei Büchern keinen Einfluss.


      Schilder NBT-Daten

      Um beim /give Befehl zu bleiben, nutzen wir jetzt mal eine Funktion, die mit version 1.8 eingeführt wurde: Blöcke mit Tile-Entity-Daten können schon im Inventar solche zugewiesen bekommen. Auf diese Weise könnte man mit dem /give Befehl auch eine volle Truhe ins Inventar holen...
      • :nbtc: tag Beim /give-Befehl wird bei diesem Tag die Formatierung begonnen.
        • :nbtc: display Anzeigeeigenschaften
          • :nbtst: Name Der Anzeigename im Inventar
          • :nbtli: Lore Liste an Zeilen des Beschreibungstextes im Inventar.
            • :nbtst: Eine Zeile Beschreibungstext. Wenn der Beschreibungstext in jedem Slot vollständig lesbar sein soll, darf er maximal 22 Zeilen á 35 Zeichen lang sein. Mehr ist zwar möglich, kann aber dann nicht vollständig angezeigt werden.
        • :nbtli: CanDestroy Liste an Blöcken, die mit diesem Gegenstand im Abenteuermodus zerstört werden dürfen
          • :nbtst: Id- Name des Gegenstandes. Eine Angabe von Datenwert oder gar NBT-Daten des Blockes ist nicht möglich.
        • :nbtli: CanPlaceOn Liste an Blöcken, auf denen dieser Block im Abenteuermodus platziert werden darf.
          • :nbtst: Id- Name des Gegenstandes. Eine Angabe von Datenwert oder gar NBT-Daten des Blockes ist nicht möglich.
        • :nbtb: HideFlags kann im Falle des Schildes verhindern, das angezeigt wird, welche Blöcke mit ihm zerstört werden dürfen und auf welchen es platziert werden darf. 8 für CanDestroy und 16 für CanPlaceOn. Die Summe aus beiden (24) verhindert die Anzeige von beiden.
        • :nbtc: BlockEntityTag sind weitere Angaben für den Block im Tile-Entity-Format
          • :nbtst: Text1 Erste Zeile
          • :nbtst: Text2 Zweite Zeile
          • :nbtst: Text3 Dritte Zeile
          • :nbtst: Text4 Vierte Zeile
          • :nbtc: CommandStats Das neue Etwas der Anzeigetafel. Wird im Anzeigetafeltutorial näher behandelt werden...



      Umsetzung im JSON-Format

      Sowohl beim Schild als auch beim Buch ist die gesamte tellraw-Nachricht ein String. Das bedeutet, es müssen in der tellraw-Nachricht selbst für String-Tags andere Anführungszeichen verwendet werden. Es gibt doppelte (" mit ⇧ Shift + 2) und einfache (' mit ⇧ Shift + #). Das heißt, bei einem Buch könnte es so aussehen:

      Quellcode

      1. /give @p written_book 1 0
      2. {
      3. title:"Test",
      4. author:"ich",
      5. pages:
      6. [
      7. "{
      8. translate:'entity.EnderDragon.name'
      9. }"
      10. ]
      11. }

      Quellcode

      1. /give @p sign 1 0
      2. {
      3. BlockEntityTag:
      4. {
      5. Text1:
      6. "{
      7. translate:'entity.EnderDragon.name'
      8. }"
      9. }
      10. }
      Damit würde in dem Buch bzw. auf dem Schild immer in der ausgewählten Spielsprache Enderdrache stehen.

      mehrere Befehle auf Schildern
      Wenn auf einem Schild mehrere Befehle sind, werden immer alle ausgeführt, egal wo man klickt. Es ist also möglich, indem man im extra-tag weitere message-tags erstellt, die als Text einen leeren String bekommen, unendlich viele Befehle mit einem angeklicktem Schild gleichzeitig auszuführen.

      [nach oben]

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Baumeister_Daniel“ ()

      4. Anwendungsbeispiel- Teil 1

      Navigation:


      Das gesamte Anwendungsbeispiel ist auf Version 1.8 ausgelegt. In früheren Versionen funktioniert es nicht
      Es wird das Anzeigetafel-Tutorial vorrausgesetzt

      Download einer Welt zu diesem Beispiel
      Die .zip Datei einfach im Verzeichnis %appdata%\.minecraft\saves extrahieren und dann die Welt in Minecraft starten.


      Im Folgenden noch ein etwas komplexeres Anwendungsbeispiel. Hier gehen wir von einer Abenteuerkarte aus, die in mehrere Sprachen übersetzt werden soll. Um das zu vereinfachen, speichern wir alle Texte in den Übersetzungsdateien...

      Seit Version 1.8 kann in einer save-Datei ein Ressourcenpaket mitgeliefert werden. gehen wir also davon aus, die save-Datei enthält eine resources.zip mit einer Übersetzungsdatei, in der neue Übersetzungen eingefügt wurden (Die Datei muss auch die Standard-Übersetzungen haben.)
      Anleitung wie man an Übersetzungsdateien kommt
      An dieser Stelle mal ein kleiner Exkurs, wie man denn überhaupt an die Übersetzungsdateien rankommt.

      Für alle Sprachdateien außer en_US.lang
      1. Das .minecraft Verzeichnis öffnen (bei Windows in die Dateipfadleiste des Windows-Explorers %appdata% eingeben und dort dann auf .minecraft gehen.
      2. Den Ordner assets öffnen
      3. Den Ordner indexes öffnen
      4. In diesem Ordner mit einem Editor (z.B. das kostenlose Programm Notpad++) die Datei mit der aktuellen Versionsnummer (z.B. 1.8.json öffnen).
      5. Die Suche öffnen (bei Notpad++ mit Strg+F) und dort die gewünschte Sprache im Format en_GB eingeben (Deutsch wäre dann de_DE. en_US ist die Standardsprache und wird an anderer Stelle gespeichert).
      6. Eine Zeile unter dem Sprachnamen befindet sich hash. Das Buchstaben-Zahlen-Gemüse (Hashwert) kopieren.
      7. Im Windows-Explorer wieder zum Verzeichnis assets gehen und in der Suchleiste den kopierten hash einfügen und die Suche starten.
      8. Die gefundene Datei kopieren und in ein Ressourcenpaket in \assets\minecraft\lang einfügen.
      9. Die Datei je nach Sprache umbenennen mit *.lang Endung (Deutsch z.B. de_DE.lang)
      10. Die Datei kann jetzt mit einem Editor geöffnet werden.

      Die Standardsprachdatei en_US.lang findet man wie folgt:
      1. Ein Programm, das Dateien entpacken kann wird benötigt. (z.B. 7-Zip)
      2. Mit 7-Zip das .minecraft Verzeichnis öffnen (Bei Windows in die Suchleiste von 7-Zip C:\Users\User\AppData\Roaming\.minecraft\ eingeben).
      3. Das versions-Verzeichnis öffnen
      4. Den Ordner mit einer aktuellen Versionsnummer (z.B. 1.8) öffnen.
      5. Mit 7-Zip in die *.jar Datei (z.B. 1.8.jar) gehen.
      6. in der Datei in das Verzeichnis assets » minecraft » lang gehen.
      7. Bei 7-Zip mit der Funktion oben in der Leiste "Kopieren" (in anderen Programmen gibt es auch die Kopieren-Funktion, aber evt. an anderer Stelle). Die Datei in das Ressourcenpaket kopieren (Das Ressourcenpaket darf noch nicht gezippt sein). (Kopiert man den assets-Ordner, erhält man das Standard-Ressourcenpaket ohne Übersetzungs- und Sounddateien.)


      Soo... Diese neu erworbene Datei kann jetzt mit einem Editor geöffnet werden. Dort sieht man alle Standard-Übersetzungen. Diese könnte man jetzt nach Belieben verändern, wenn man das denn wollte. Man kann aber auch neue Übersetzungen hinzufügen. Wir fügen jetzt folgende Zeilen ein:

      Quellcode

      1. Adventure.generic.tellraw=Drücke t, um klickbare Bereiche anklicken zu können.
      2. Adventure.generic.talkToNpc=%s ansprechen
      3. Adventure.quest.generic.npcToFarAway=Der NPC '%s' ist außer Reichweite.
      4. Adventure.quest.generic.askForInformation=Fragen stellen
      5. Adventure.quest.generic.accept=Quest annehmen
      6. Adventure.quest.generic.decline=Quest ablehnen
      7. Adventure.quest.generic.book.task=Aufgabe: %s
      8. Adventure.quest.generic.book.npc=NPC: %s
      9. Adventure.quest.generic.book.description=Beschreibung: %s
      10. Adventure.quest.creeperplage.npc.name=Tiran
      11. Adventure.quest.creeperplage.npc.part1=Entschuldigt meine Aufdringlichkeit, aber wir haben hier ein Problem!
      12. Adventure.quest.creeperplage.player.answer1=Wo brennt's denn?
      13. Adventure.quest.creeperplage.npc.part2=Um die Stadt und in den Außenbezirken treiben sich in letzter Zeit sehr viele %1$s herum und zerstören durch ihre Explosionen Häuser. Es gibt sogar schon Todesfälle unter den Bewohnern... Ihr seht aus wie ein erfahrener Kämpfer und wir werden dieser %1$splage einfach nicht Herr. Könntet Ihr uns in dieser Sache helfen?
      14. Adventure.quest.creeperplage.player.accept=Euer Problem scheint wirklich dringend zu sein. Ich werde mich schnellstmöglich um diese %s kümmern!
      15. Adventure.quest.creeperplage.player.decline=Tut mir leid, aber ich habe noch etwas anderes zu erledigen. Außerdem war ich noch nie ein Freund davon, gegen %s zu kämpfen.
      16. Adventure.quest.creeperplage.npc.accept=Oh, vielen Dank! Ich hoffe, Ihr werdet sie aufhalten. Wenn Ihr es schafft, 5 von ihnen zu töten, wird das die anderen hoffentlich vertreiben!
      17. Adventure.quest.creeperplage.npc.decline=Oh... Es tut mir Leid, es war wirklich aufdringlich von mir, Euch einfach so anzusprechen. Ich bin einfach nur so verzweifelt. Solltet Ihr doch noch Zeit finden, so lasst es mich bitte wissen.
      18. Adventure.quest.creeperplage.book.task=%s töten (%s/5)
      19. Adventure.quest.creeperplage.book.descriptionPage1=In den Außenbezirken der Stadt treiben %1$s ihr Unwesen. Die nicht ganz so fähige Stadtwache kommt nicht gegen sie an. Da sie sich aber langsam zu einem ernsten Problem entwickeln, suchen sie
      20. Adventure.quest.creeperplage.book.descriptionPage2=nach etwas fähigeren Leuten wie dir und so hast du dich bereit erklärt, 5 %1$s zu töten, in der Hoffnung den Rest damit zu vertreiben.

      Hinweis
      Der Text, der später im Buch steht, ist 2geteilt und zwar so, dass es mit der Standard-Minecraftschrift genau passt. Andere Schriftarten können dazu führen, dass entweder nicht genug Platz ist oder die Buchseite nicht vollständig gefüllt ist! Daher empfiehlt es sich, eine eigene Schriftart (und wenn es die Standardschrift ist) in der resources.zip festzulegen, sodass es bei allen Nutzern passt.


      Damit hätten wir schonmal die benötigten Texte. Jetzt müssen sie nurnoch in tellraw-Nachrichten sinnvoll eingesetzt werden.

      irgendwo unterirdisch befindet sich ein Befehlsblock, der durch eine Clock ständig aktiviert wird. Er enthält den Befehl /execute @e[name=Tiran] ~ ~ ~ testfor @a[r=3]. Er gibt ein Signal durch einen Komparator ab, wenn sich ein Spieler im Radius von 3 Blöcken um den questgebenden NPC befindet.
      Wenn die Bedingung erfüllt wurde, werden zwei Kommandoblöcke mit dem folgenden Befehlen aktiviert:
      1: /scoreboard objectives add TalkTiran trigger
      nach einem 1-Tick-Verstärker:
      2: /scoreboard players enable @a TalkTiran
      3:

      Quellcode

      1. /execute @e[name=Tiran] ~ ~ ~ tellraw @a[r=3,score_TalkTiran=0]
      2. {
      3. text:"",
      4. extra:
      5. [
      6. {
      7. translate:"Adventure.generic.talkToNpc",
      8. with:
      9. [
      10. {
      11. translate:"Adventure.quest.creeperplage.npc.name"
      12. }
      13. ],
      14. color:"dark_blue",
      15. underlined:true,
      16. clickEvent:
      17. {
      18. action:"run_command",
      19. value:"/trigger TalkTiran set 1"
      20. }
      21. },
      22. {
      23. text:"\n"
      24. },
      25. {
      26. translate:"Adventure.generic.tellraw"
      27. }
      28. ]
      29. }
      Damit erhalten alle Spieler, die sich in einem Radius von 3 Blöcken um Tiran befinden im Chat die Möglichkeit, ihn anzusprechen. Der /execute-Befehl bewirkt übrigens, dass nicht der Kommandoblock sondern Tiran als Befehlsquelle dient. "\n" Bewirkt einen Zeilenumbruch. "score_TalkTiran=0" als Eigenschaft der Zielauswahl wird dashalb mit angegeben, damit jemand, der die Quest bereits angenommen hat dies nicht erneut tun kann.

      Hinweis
      Aufgrund der Tatsache, dass das hier etwas umfangreicher ist und das Forum maximal 10.000 Zeichen zulässt musste der Post in 3 Beiträge gesplitted werden. Es geht im nächsten Post an genau dieser Stelle weiter :whistling:


      Navigation:

      Dieser Beitrag wurde bereits 11 mal editiert, zuletzt von „Baumeister_Daniel“ ()

      5. Anwendungsbeispiel - Teil 2

      Navigation:


      Jetzt wird es etwas komplizierter. Wir brauchen 2 Abfragen. Eine um sicherzustellen, ob der NPC überhaupt noch in Reichweite ist, und die andere um den Anzeigetafelwert abzufragen.
      /execute @e[name=Tiran] ~ ~ ~ testfor @a[r=5,score_TalkTiran_min=1,score_TalkTiran=1]
      /scoreboard players test @a TalkTiran 1 1

      Der erste Befehl überprüft, ob sich jemand, der Tiran angescprochen hat noch in einem Radius von 5 Blöcken um ihn befindet. Man könnte meinen, dass das reicht, allerdings könnte man dann nicht feststellen, wenn ein Spieler die Nachricht angeklickt hat und den Radius verlassen hat.
      Daswegen prüft der zweite Befehl, ob irgendjemand den Wert "1" Bei TalkTiran hat. Die Befehlsblöcke müssen dann mit AND-Gattern so verknüpft werden, dass eine Befehlsblockreihe aktiviert wird, wenn beide Abfragen positiv sind und die andere wenn die zweite positiv ist und die erste negativ. Dabei ist zu beachten, dass die Verzögerung für beide Abfragen exakt gleich sein muss. Für den genauen Aufbau dieser Schaltung siehe Bild.


      Gehen wir jetzt erstmal davon aus, dass sich der Spieler zu weit entfernt hat:
      1:

      Quellcode

      1. /tellraw @a[score_TalkTiran_min=1,score_TalkTiran=1]
      2. {
      3. translate:"Adventure.quest.generic.npcToFarAway",
      4. with:
      5. [
      6. {
      7. translate:"Adventure.quest.creeperplage.npc.name"
      8. }
      9. ],
      10. color:red,
      11. bold:true
      12. }

      Nach einem 1-Tick-Verstärker
      2: /scoreboard players reset @a[score_talk_Tiran_min=1,score_talk_Tiran=1] TalkTiran
      Der erste Befehl versendet an alle Spieler, dieTiran angesprochen haben, die Nachricht, dass er zu weit entfernt ist und der 2. Befehl löscht das Ziel TalkTiran. Der Verstärker wird zur Sicherheit benötigt, da es sonst sein könnte, dass die Spieler resettet werden, bevor die tellraw-Nachricht versendet wird, was dann dazu führen würde, dass die Nachricht niemand erhält. Der 2. Befehl resettet dann die Personen, die Tiran gerade angesprochen haben.

      Jetzt gehen wir davon aus, dass beide Befehle erfolgreich waren:
      /effect @a[score_TalkTiran_min=1,score_TalkTiran=1] 2 1640 6 true
      /effect @e[name=Tiran] 2 1640 6 true
      /scoreboard players enable @a[score_TalkTiran_min=1,score_TalkTiran=1] TalkTiran

      Quellcode

      1. /tellraw @a[score_TalkTiran_min=1,score_TalkTiran=1]
      2. {
      3. text:"",
      4. extra:
      5. [
      6. {
      7. text:"["
      8. },
      9. {
      10. translate:"Adventure.quest.creeperplage.npc.name"
      11. },
      12. {
      13. text:"] ",
      14. extra:
      15. [
      16. {
      17. translate:"Adventure.quest.creeperplage.npc.part1"
      18. }
      19. ]
      20. }
      21. ]
      22. }

      und nach einem Stufe 4 Verstärker: /scoreboard players set @a[score_TalkTiran_min=1,score_TalkTiran=1] TalkTiran 2
      Sooo... Die ersten beiden Befehle wirken Langsamkeit auf den Spieler und Tiran, damit keiner von beiden während der Unterhaltung wegläuft. Außerdem hat das so einen Zoom-Effekt und vergrößert somit auch das Gesicht von Tiran...
      Der 3. Befehl schaltet TalkTiran wieder für alle Personen frei.
      Der 4. Befehl versendet die erste Nachricht an den Spieler
      [Tiran] Entschuldigt meine Aufdringlichkeit, aber wir haben hier ein Problem!

      Und der 5. Befehl setzt TalkTiran für alle, die ihn gerade angesprochen haben auf 2. Sollte ihn jetzt eine andere Person ansprechen, funktioniert das dadurch wieder. Stufe 4 ist nötig, weil sonst die Stufe 4 Verstärker, die danach kommen nicht aktiviert werden (fragt mich nicht wieso^^)

      Nach sagen wir 5 Sekunden (12 Stufe 4 Verstärker + 1 Stufe 2) verzögerung geht es dann mit der 2. Nachricht weiter:

      Quellcode

      1. /tellraw @a[score_TalkTiran_min=2,score_TalkTiran=2]
      2. {
      3. text:"",
      4. extra:
      5. [
      6. {
      7. text:"["
      8. },
      9. {
      10. selector:"@p"
      11. },
      12. {
      13. text:"] ",
      14. extra:
      15. [
      16. {
      17. translate:"Adventure.quest.creeperplage.player.answer1"
      18. }
      19. ]
      20. }
      21. ]
      22. }

      nach 7 Stufe 4 Verstärkern + 1 Stufe 2 (3 Sekunden):

      Quellcode

      1. /tellraw @a[score_TalkTiran_min=2,score_TalkTiran=2]
      2. {
      3. text:"",
      4. extra:
      5. [
      6. {
      7. text:"["
      8. },
      9. {
      10. translate:"Adventure.quest.creeperplage.npc.name"
      11. },
      12. {
      13. text:"] ",
      14. extra:
      15. [
      16. {
      17. translate:"Adventure.quest.creeperplage.npc.part2",
      18. with:
      19. [
      20. {
      21. translate:"entity.Creeper.name"
      22. }
      23. ]
      24. },
      25. {
      26. text:"\n"
      27. },
      28. {
      29. translate:"Adventure.quest.generic.accept",
      30. color:"dark_blue",
      31. underlined:true,
      32. clickEvent:
      33. {
      34. action:"run_command",
      35. value:"/trigger TalkTiran set 3"
      36. }
      37. },
      38. {
      39. text:" "
      40. },
      41. {
      42. translate:"Adventure.quest.generic.decline",
      43. color:"dark_blue",
      44. underlined:true,
      45. clickEvent:
      46. {
      47. action:"run_command",
      48. value:"/trigger TalkTiran set 4"
      49. }
      50. }
      51. ]
      52. }
      53. ]
      54. }
      Das Gespräch geht weiter. Der erste Befehl schreibt folgendes in den Chat, wenn der Empfänger der Nachricht Schortan heißt:
      [Schortan] Wo brennt's denn?

      Der 2. Befehl enthält erstmalig einen Übersetzungstext, der aus dem Spiel kommt. Dass Creeper in allen Sprachen gleich heißen, sei jetzt mal dahin gestellt. Immerhin kann man so sicherstellen, dass man sich nicht verschreibt.
      Im 2. Befehl ist außerdem wieder etwas klickbares: "Quest annehmen" und "Quest ablehnen" Bei annehmen wird das Gesprächsziel auf 3 gesetzt, beim abblehnen auf 4.

      Hinweis
      Auch dieser Post ist noch nicht das Ende... Es geht noch in einem dritten weiter...


      Navigation:

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Baumeister_Daniel“ ()

      6. Anwendungsbeispiel - Teil 3

      Navigation:


      Wie ihr euch vielleicht schon denken könnt, kommen jetzt 2 Abfragen, eine die aktiviert wird, wenn das Ziel auf 3 ist die ander bei Wert 4
      1. Abfrage: /scoreboard players test @a TalkTiran 4 4
      2. Abfrage: /scoreboard players test @a TalkTiran 3 3
      Ist die erste Abfrage erfüllt (Quest wurde abgelehnt) werden folgende Befehle aktiviert:
      /scoreboard players set @a[score_TalkTiran_min=4,score_TalkTiran=4] TalkTiran 6
      Nach einem Stufe 1 Verstärker:

      Quellcode

      1. /tellraw @a[score_TalkTiran_min=6,score_TalkTiran=6]
      2. {
      3. text:"",
      4. extra:
      5. [
      6. {
      7. text:"["
      8. },
      9. {
      10. selector:"@p"
      11. },
      12. {
      13. text:"] ",
      14. extra:
      15. [
      16. {
      17. translate:"Adventure.quest.creeperplage.player.decline",
      18. with:
      19. [
      20. {
      21. translate:"entity.Creeper.name"
      22. }
      23. ]
      24. }
      25. ]
      26. }
      27. ]
      28. }

      Nach 5 Sekunden (12 Stufe 4 Verstärker + 1 Stufe 2) die Antwort den NPCs:

      Quellcode

      1. /tellraw @a[score_TalkTiran_min=6,score_TalkTiran=6]
      2. {
      3. text:"",
      4. extra:
      5. [
      6. {
      7. text:"["
      8. },
      9. {
      10. translate:"Adventure.quest.creeperplage.npc.name"
      11. },
      12. {
      13. text:"] ",
      14. extra:
      15. [
      16. {
      17. translate:"Adventure.quest.creeperplage.npc.decline"
      18. }
      19. ]
      20. }
      21. ]
      22. }

      /effect @a[score_TalkTiran_min=6,score_TalkTiran=6] 2 0
      /effect @e[name=Tiran] 2 0
      Nach einem Stufe 1 Verstärker: /scoreboard players reset @a[score_TalkTiran_min=6,score_TalkTiran=6] TalkTiran

      Wurde die Quest jedoch angenommen:
      /scoreboard players set @a[score_TalkTiran_min=3,score_TalkTiran=3] TalkTiran 5
      Nach einem Stufe 1 Verstärker:

      Quellcode

      1. /tellraw @a[score_TalkTiran_min=5,score_TalkTiran=5]
      2. {
      3. text:"",
      4. extra:
      5. [
      6. {
      7. text:"["
      8. },
      9. {
      10. selector:"@p"
      11. },
      12. {
      13. text:"] ",
      14. extra:
      15. [
      16. {
      17. translate:"Adventure.quest.creeperplage.player.accept",
      18. with:
      19. [
      20. {
      21. translate:"translate:"entity.Creeper.name"
      22. }
      23. ]
      24. }
      25. ]
      26. }
      27. ]
      28. }

      Nach 5 Sekunden (12 Stufe 4 Verstärker + 1 Stufe 2) die Antwort den NPCs:

      Quellcode

      1. /tellraw @a[score_TalkTiran_min=5,score_TalkTiran=5]
      2. {
      3. text:"",
      4. extra:
      5. [
      6. {
      7. text:"["
      8. },
      9. {
      10. translate:"Adventure.quest.creeperplage.npc.name"
      11. },
      12. {
      13. text:"] ",
      14. extra:
      15. [
      16. {
      17. translate:"Adventure.quest.creeperplage.npc.accept"
      18. }
      19. ]
      20. }
      21. ]
      22. }

      /effect @a[score_TalkTiran_min=5,score_TalkTiran=5] 2 0
      /effect @e[name=Tiran] 2 0
      /scoreboard objectives add Creeperplage stat.killEntity.Creeper

      Quellcode

      1. /give @a[score_TalkTiran_min=5,score_TalkTiran=5] written_book 1 0
      2. {
      3. title:"Creeperplage",
      4. author:"Tiran",
      5. pages:
      6. [
      7. "{
      8. text:'',
      9. bold:true,
      10. extra:
      11. [
      12. {
      13. translate:'Adventure.quest.generic.book.task',
      14. with:
      15. [
      16. {
      17. translate:'Adventure.quest.creeperplage.book.task',
      18. with:
      19. [
      20. {
      21. translate:'entity.Creeper.name'
      22. },
      23. {
      24. score:
      25. {
      26. name:'@p',
      27. objective:'Creeperplage'
      28. }
      29. }
      30. ],
      31. bold:false
      32. }
      33. ]
      34. },
      35. {
      36. text:'\n'
      37. },
      38. {
      39. translate:'Adventure.quest.generic.book.npc',
      40. with:
      41. [
      42. {
      43. translate:'Adventure.quest.creeperplage.npc.name',
      44. bold:false
      45. }
      46. ]
      47. },
      48. {
      49. text:'\n'
      50. },
      51. {
      52. translate:'Adventure.quest.generic.book.description',
      53. with:
      54. [
      55. {
      56. translate:'Adventure.quest.creeperplage.book.descriptionPage1',
      57. with:
      58. [
      59. {
      60. translate:'entity.Creeper.name'
      61. }
      62. ],
      63. bold:false
      64. }
      65. ]
      66. }
      67. ]
      68. }",
      69. "{
      70. translate:'Adventure.quest.creeperplage.book.descriptionPage2',
      71. with:
      72. [
      73. {
      74. translate:'entity.Creeper.name'
      75. }
      76. ]
      77. }"
      78. ]
      79. }

      Der Spieler bekommt ein beschriebenes Buch mit Namen "Creeperplage" von Tiran, welches den folgenden formatierten Text enthält:
      Aufgabe: Creeper töten (x/5)
      NPC: Tiran
      Beschreibung: In den Außenbezirken der Stadt treiben Creeper ihr Unwesen. Die nicht ganz so fähige Stadtwache kommt nicht gegen sie an. Da sie sich aber langsam zu einem ernsten Problem entwickeln, suchen sie nach etwas fähigeren Leuten wie dir und so hast du dich bereit erklärt, 5 Creeper zu töten, in der Hoffnung den Rest damit zu vertreiben.


      Download einer Welt zu diesem Beispiel
      Die .zip Datei einfach im Verzeichnis %appdata%\.minecraft\saves extrahieren und dann die Welt in Minecraft starten.


      Navigation:


      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Baumeister_Daniel“ ()

      So, damit wäre auch dieses Tutorial abgeschlossen.
      Lasst doch etwas Feedback da! Gefallen euch auch mal etwas komplexere Anwendungsbeispiele, oder findet ihr das zu viel? Oder sollte ich vielleicht lieber nur den Downloadlink reinstellen und euch erkunden lassen?
      Und vorallem: Was könnte man besser machen? Findet ihr den Aufbau gut? Habt ihr vielleicht etwas nicht verstanden, oder habt ihr noch eine Frage? Sind manche Formulierungen verwirrend oder missverständlich?

      Schreibt es mir doch
      Hier geht es zum Feedback-thread

      Auf Bald!
      Daniel

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Baumeister_Daniel“ ()

      Ich bin derzeitig bei einem tellraw befehl, wo ich folgendes zu stehen hab

      Quellcode

      1. /tellraw @p
      2. [
      3. {
      4. "text":"text 1\n",
      5. "color":"blue"
      6. },
      7. {
      8. "text":"Antwort 1",
      9. "color":"green",
      10. "clickEvent":
      11. {
      12. "action":"run_command",
      13. "value":"/tellraw @p
      14. [
      15. {
      16. \"text\":\"Folgetext von Antwort 1\"
      17. }
      18. ]"
      19. }
      20. },
      21. {
      22. "text":" / ",
      23. "bold":"true",
      24. "color":"white"
      25. },
      26. {
      27. "text":"Antwort 2",
      28. "color":"red",
      29. "clickEvent":
      30. {
      31. "action":"run_command",
      32. "value":"/tellraw @p
      33. [
      34. {
      35. \"text\":\"1. Folgetext von Antwort 2 + Erklärung\n \"
      36. },
      37. {
      38. \"text\":\"2. Folgetext von Antwort 2 + Erklärung\n \"
      39. },
      40. {
      41. \"text\":\"3. Folgetext von Antwort 2 + Erklärung\n \"
      42. },
      43. {
      44. \"text\":\"4. Folgetext von Antwort 2 + Erklärung\n \"
      45. }
      46. ]"
      47. }
      48. }
      49. ]

      Bei den Folgetexten von Antwort 2 funktioniert \n nicht. Ich schätze weil ich als Anführungszeichen \" zu stehen habe, ein anderes problem fällt mir dazu nicht auf. Kann mir wer da helfen

    Du bist nicht angemeldet.
    Anmelden oder Registrieren