Chat Component API
Ein kleines Tutorial wie man mit der Bungeecord Chat API Nachrichten baut und versendet.Basics
KeybindComponent, SelectorComponent, ScoreComponent, TextComponent, und TranslatableComponent sind die verschieden Komponenten welche von der Bungeecord API uns zur Verfügung gestellt werden. Die einfachste Klassen ist die TextComponent. Alle die oben genannten Klassen sind Unterklassen des BaseComponent.Ist die ein einfachste Art Nachrichten zu senden.
Um ein Textcomonent zu erstellen:
Wird angezeigt als "Hallo Nexuscube".
Um ein Textcomonent zu erstellen:
Java:
TextComponent nachricht = new TextComponent("Hallo Nexuscube");
TranslatableComponent wird benutzt, um Nachrichten auf Client Side zu übersetzen. Das hat dem Vorteil das die Nachricht bei Jeden Spieler in seiner Sprache angezeigt wird, welche der Spieler in Minecraft eigestellt hat.
Wird bei mir als "Wurde aus dem Spiel geworfen" angezeigt.
TODO: Blöke, items und Commands, eigentlich sollten alle TranslationKeys funktionieren, doch ich habe es nicht hinbekommen.
Java:
TranslatableComponent nachricht = new TranslatableComponent("disconnect.kicked");
p.spigot().sendMessage(nachricht);
TODO: Blöke, items und Commands, eigentlich sollten alle TranslationKeys funktionieren, doch ich habe es nicht hinbekommen.
Der KeybindComponent wird benutzt, um dem Spieler zu zeigen welche taste er für welche Funktion gebindet hat.
Wird bei mir als "q" angezeigt.
Alle möglichen Keybind könnt ihr im Interface
Hier sind die wichtigsten Keybinds:
Java:
KeybindComponent keybindKomponent = new KeybindComponent("key.drop");
p.spigot().sendMessage(keybindKomponent);
Alle möglichen Keybind könnt ihr im Interface
Keybinds.java
im Package package net.md_5.bungee.api.chat
nachsehen.Hier sind die wichtigsten Keybinds:
Java:
String JUMP = "key.jump";
String SNEAK = "key.sneak";
String SPRINT = "key.sprint";
String LEFT = "key.left";
String RIGHT = "key.right";
String BACK = "key.back";
String FORWARD = "key.forward";
TODO: Add ScoreComponent, SelectorComponent (keine Dokumentation gefunden)
Die Nachricht senden
Um die Nachricht an einen Spieler zu senden kann man folgenden benutzen:Initialisieren des Komponenten:
Java:
BaseComponent komponent = ...
Die Nachricht mittels Bungeecord senden:
Java:
player.sendMessage(komponent);
Die Nachricht mittels Spigot senden:
Java:
player.spigot().sendMessage(komponent);
Farbe und Styling
Die Nachrichten kann man mit Farbe und Styling ganz individuell gestalten. Styling Möglichkeiten sind: Bold, Italic, Underline, Strikethrough, Obfuscate, and Insertion.Dazu ein einfaches Beispiel:
Java:
TextComponent nachricht = new TextComponent("Hello Nexuscube");
nachricht.setColor(net.md_5.bungee.api.ChatColor.GREEN);
nachricht.setBold(true);
Events
Mit der Chat API kann man zwei verschiedene Events mit der Nachricht "mitsenden".- HoverEvent: Kann zusätzliche Informationen anzeigen
- Clickevent: Wir ausgeführt, wenn man auf die Nachricht klickt
Das HoverEvent:
Java:
TextComponent nachricht = new TextComponent("Click me");
nachricht.setColor(ChatColor.BLUE);
nachricht.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new Text("Das ist eine Hover Event")));
Das ClickEvent:
Das ClickEvent kann in verschiedenen Formen angewendet werden, mittels verschiedenen Actions:
Java:
OPEN_URL, /*Öffnet eine URL*/
RUN_COMMAND, /*Ein Minecraft Command wird ausgeführt*/
SUGGEST_COMMAND, /*Ein Minecraft wird vorgeschlagen*/
CHANGE_PAGE, /*Die seite eines Offenen Buches wird gewechselt*/
COPY_TO_CLIPBOARD; /*Das angegebene Argument wird in die Zwischenablage kopiert*/
OPEN_FILE /*Kann nicht benutzt werden*/
Das am meisten verwendete Event ist das
RUN_COMMAND
Event:
Java:
TextComponent nachricht = new TextComponent("Click me");
nachricht.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/help"));
Bei Klicken wird der Befehlt /help ausgeführt.
Die ComponentBuilder API
Für den schnellen und simplen Zusammenbau von Nachrichten kann man die ComponentBuilder API benutzen. Der ComponentBuilder ist ein verkettbares Objekt.
Java:
player.sendMessage(new ComponentBuilder("Hallo ")
.color(net.md_5.bungee.api.ChatColor.RED).bold(true).append("Nexuscube")
.color(net.md_5.bungee.api.ChatColor.DARK_RED).append("!")
.color(net.md_5.bungee.api.ChatColor.RED).create());
wird angezeigt als: "Hallo Nexuscube!"
Häufige Fehler
- Das Erstellen einer direkten Instanz von
BaseComponent
funktioniert nicht (z. B.player.sendMessage(new BaseComponent(){};
). Verwenden daher eine unter Basics genannten Komponenten. - Die Verwendung der alten Farbcodes mit Komponenten (zB
player.sendMessage(new TextComponent(net.md_5.bungee.api.ChatColor.RED + ":-("));
) kann clientseitige Probleme verursachen. - Führe die Legacy-Text Methode immer über
TextComponent.fromLegacyText()
aus.
Ich hoffe ich konnte euch einen guten Einblick in das Thema geben.
Jeder der etwas zu diesem Thema weiß oder ergänzen möchte ist aufgefordert das auch zu tun ^^.
Zuletzt bearbeitet: