Frage von MCmaster9975, 50

msg befehl mit Config Verknüpfung?

Hi, ich bin Anfänger im bereich Minecraft Plugins programmieren und habe Probleme mit dem /msg Befehl! Ich habe im Internet gesucht und was gefunden: 

for(int i = 1; i < args.length; i++){ 
  message = message + args[i] + " "; 
}

mein Problem wie kann ich das in eine Config einbauen, ich weiß ja nicht mal was genau das bewirkt, außer das es eine schleife ist, hab dazu leider auch nichts gefunden. Mit der Config Verbindung meine ich: 

String bsp = cfg.getString("Message.BSP"); 
bsp = bsp .replace("[Sender]", sender.getName()); 
bsp = bsp .replace("[Player]", t.getName()); 
bsp = bsp .replce("[Message]", message); 
sender.sendMessage(prefix + ChatColor.translateAlternateColorCodes('&', msg + message));
Expertenantwort
von KnusperPudding, Community-Experte für Java, 28

Wie du was irgendwo einbauen sollst, kann ich dir schlecht sagen. Jedenfalls nicht anhand des kleinen Codesnippets. Aber ich kann dir erklären was dein Code so bewirkt.

Die Schleife:

mit args ist sicherlich eine Stringarray gemeint die so aussieht:

String[] args;

D.h. eine Liste bestehened aus mehreren Strings.

Die Schleife zählt von 1 hoch bis zur Anzahl an Einträgen in der Array.

Dabei wird der String: message um den jeweiligen Wert aus der Array erweitert (hinten angehängt).

Der zweite Teil des Codes:

Der String: "bsp" wird mit dem Wert aus cfg.getString("Message.BSP"); aufgefüllt.

Nachdem ich den Rest außenrum nicht kenne, nehme ich einfach mal an, dass hier ein Wert enthalten ist, der in deinen String gespeichert wird. - Vermutlich der Wert aus einer Config-Datei.

Im nächsten Schritt werden Platzhalter wie [Sender] durch andere Werte ersetzt.

Ich nehme mal an, dass sender ein Objekt ist, an den man eine Nachricht übermitteln kann. Denn das scheint so im letzten Teil des Codes zu geschehen.

Kommentar von MCmaster9975 ,

Der erste Teil war der den ich nicht verstanden hab, danke für die Erklärung! ;) Der zweite Teil ist die Config Verbindung, dabei ersetze ich [Sender] durch den Namen von demjenigen der den Befehl eingegeben hat, [Player] durch den namen an dem die Msg. gesendet wird, und [Message] soll die Nachricht beinhalten, bei Msg liegt auch mein Problem, es wird nicht eingesetzt :/

Kommentar von KnusperPudding ,

Falls hier nichts ersetzt werden sollte.

Schau bitte mal in den Ursprungswert, ob du dich ggf. bei dem Ursprünglichen Text verschrieben hast.

z.B.:

"Der [Sender] sendet an [Player] die Nachricht [Message]";

Wenn der Platzhalter im ursprünglichem String nicht mit deinem Platzhalter übereinstimmt, wird er nicht ersetzt.

Kommentar von MCmaster9975 ,

alles richtig hab mich nicht verschrieben, und aus irgend einem Grund Krieg ich jetzt ne Error Meldung und i++ wird als "dead code" angezeigt :/

Kommentar von KnusperPudding ,

das kann eigentlich nicht sein.. - außer es ist ein Syntax-Fehler zuvor aufgetreten. Stell mal bitte die gesamte Klasse Bereit, z.b. via Pastie.org oder pastebin.com.

Mit welcher IDE entwickelst du? ich nehme mal an eclipse...

Kommentar von MCmaster9975 ,

so, neuer Tag, neue Energie :D

Ja, Eclipse.

Link: http://pastebin.com/muYUjdFV

Kommentar von KnusperPudding ,

War im Urlaub. - Daher: 

Ich vermute mal eher, dass dein Problem ein anderes ist, nämlich dein IF-Zweig.

if (t != null){
...
}

Du ersetzt sowohl hier Code als auch in dessen else Zweig.

des weiteren:

 msg = msg.replace("[Sender]", sender.getName()); msg = msg.replace("[Player]", t.getName());
 msg = msg.replace("[Message]", "TEST!");

Ersetze Message erstmal durch einen Beliebigen Test-String. Um zu schauen ob es voran geht.

Kannst du deine Message-Datei vielleicht auch noch posten?

Kommentar von MCmaster9975 ,

Hi,

danke aber ich habe das Problem mittlerweile behoben, waren nur ein paar kleine Fehler drin ;) 

Kommentar von KnusperPudding ,

alles klar. Freut mich, viel Spass.

Keine passende Antwort gefunden?

Fragen Sie die Community