malnefrage.de
malnefrage.de
Menü
Facebook
Twitter
E-Mail
Bookmark
weitere
Ratgeber-Community für Fragen & Antworten:
Forum mit Tipps, Hilfe und Ratschläge
Forum Frage stellen! Neue Fragen Neue Antworten Ratgeber Login
Frage
Frage
von _otteo

String replacement in Config.yml funktioniert nicht. Kann mir jemand weiterhelfen?

Hallo,
ich habe vor einiger Zeit dieses Problem schon mal auf dieser Plattform geteilt. Da ich es allerdings nicht lösen konnte, hier noch einmal mein Problem. Ich habe in einem Join Event eines Minecraft Plugins eine Join Nachricht. Diese bezieht sich aus der Config.yml. Der Spielername wird in dieser Methode durch den Spielernamen, der gerade den Server betritt ersetzt. Allerdings funktioniert das nur ein einziges mal. Ohne Config Datei funktioniert das replacement einwandfrei.

Hier der Code:

JoinListener:
@EventHandler
public void onJoin(PlayerJoinEvent e) {
	Player p = e.getPlayer();
	Messages.JoinMessage = Messages.JoinMessage.replace("%player%", p.getName());
	e.setJoinMessage(Messages.JoinMessage);
}
Messages:
public class Messages {
	public static String JoinMessage = ConfigManager.cfg.getString("messages.joinmessage");
}
Config.yml:
messages:
   joinmessage: "%prefix% §9%player% §8hat das Spiel §ebetreten"
   quitmessage: "%prefix% §9%player% §8hat das Spiel §cverlassen"
Über Hilfe wäre ich echt sehr dankbar, da ich echt nicht mehr weiter weiß.

~ otteo

Antwort
Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von AntonBernad
Es sieht so aus, als ob das Problem darin liegt, dass Sie die Nachricht in der Messages-Klasse speichern und dann in der JoinListener-Klasse ersetzen, aber die Änderungen nicht in der Config-Datei gespeichert werden. Das bedeutet, dass jedes Mal, wenn ein Spieler dem Server beitritt, die Nachricht aus der Config-Datei geladen wird und nicht die geänderte Nachricht verwendet wird.

Um das Problem zu lösen, könnten Sie die geänderte Nachricht in der Config-Datei speichern, indem Sie den folgenden Code in der JoinListener-Klasse hinzufügen:
ConfigManager.cfg.set("messages.joinmessage", Messages.JoinMessage);
ConfigManager.saveConfig();
Dies speichert die geänderte Nachricht in der Config-Datei und sorgt dafür, dass sie beim nächsten Mal, wenn ein Spieler dem Server beitritt, verwendet wird.
kommentieren
hilfreich
nicht hilfreich
Kommentar von _otteo
Vielen Dank!


Antwort
Antwort
von opinioncounts
Du musst den Code in eine Schleife packen, damit es für alle Player ausgeführt wird, anstatt nur ein einziges Mal.
kommentieren
hilfreich
nicht hilfreich
Ähnliche Fragen
Guten Tag, Ich arbeite seit langer Zeit an einem Plugin und habe folgendes Problem. Ich habe eine Nachricht in der config.yml gespeichert, wo folgende ...
Hi, kann mir jemand verraten wie ich mit PHP das letzte Zeichen am Ende einer Zeichenkette entfernen kann? Ich hole mir aus einer MySQL-Datenbank ...
Hallo alle, Ich habe mich vor 5 Tagen von meinem Freund getrennt. Wir hatten immer einiges an Streit in der Beziehung aber in den letzten Wochen war es ...
Hallo! Kennt sich jemand mit kaputten Displays von Handys aus? Ich habe nämlich seit letzter Woche folgendes Problem mit meinem Smartphone: Nachdem es ...
Ich bin gerade ein bisschen ratlos und hoffe, dass mir hier vielleicht jemand weiterhelfen kann.. Es geht um meine Mutter, sie ist noch nicht „alt“, aber ...
Nächste Frage

Die auf malnefrage.de veröffentlichten Fragen und Antworten sind Meinungsäußerungen der jeweiligen User. Da die Aussagen nicht geprüft werden, kann die Richtigkeit der Inhalte nicht gewährleistet werden.