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 Login
Frage
Frage
von _otteo am 04.01.2023, 20.42 Uhr

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 am 05.01.2023, 13.35 Uhr
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.
Kommentar von _otteo am 05.01.2023, 18.16 Uhr
Vielen Dank!


Antwort
Antwort
von opinioncounts am 05.01.2023, 09.29 Uhr
Du musst den Code in eine Schleife packen, damit es für alle Player ausgeführt wird, anstatt nur ein einziges Mal.
Ähnliche Fragen
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 ...
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 ...
Ich bin neulich mal auf den Begriff Thermografie gestoßen und kann damit nichts anfangen. Deshalb stelle ich die Frage hier und fände es toll, wenn es ...
Habe mich gerade gefragt, wie eine Funkuhr eigentlich funktioniert. Letzte Nacht war ja Zeitumstellung und meine Funkuhr hat sich natürlich automatisch um ...
Hallo zusammen! Meine Schwester beendet dieses Jahr ihr Studium und ich brauche noch ein Geschenk für sie. Kann mir da jemand weiterhelfen, ich bin ...
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.