• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Wort im Satz erkennen und ändern

Mrcookie008

Braumeister
Registriert
15 Dezember 2011
Beiträge
380
Diamanten
0
Minecraft
xCookieZz oder Mrcookie008 (Beides Premium)
Hallo,
ich versuche gerade, dass mein Plugin in einem Satz ein bestimmes Wort erkennt und dieses ändert.

Dasshier habe ich bisher:

Code:
    @EventHandler    public void onPlayerYolo(AsyncPlayerChatEvent e)
    {
      Player p = e.getPlayer();
      String y = e.getMessage().toLowerCase();
      if ((y.contains("Server"))) {
          p.sendMessage("§6Deine Nachricht enthielt §e'Server'");
                  // Das p.sendMessage war zum Testen da.
        
        }
      }



Ich möchte jetzt aber, dass er die Nachricht ändert z.B zu "§6§lServer" oder soetwas,
ich habe das schon mit "replace" getestet, hat abernicht ganz hingehauen..

hätte jemand da ein Stück Code oder eine Erklärung?

LG der Javaanfänger ;).
 
H

Hecke29

Guest
Ich hab kaum Ahnung von Java, aber:

Code:
    @EventHandler    public void onPlayerYolo(AsyncPlayerChatEvent e)
    {
      Player p = e.getPlayer();
      String y = e.getMessage().toLowerCase();
      if (y.contains("Server")) {
             y.replace("Server", "Haus");
        }
      }

Müsste das nicht ausreichen? :confused:
 

Plugin00

Kuhfänger
Registriert
3 Februar 2013
Beiträge
71
Diamanten
0
Hm, ich habe kurz mal was gemacht. Aber ich habe es nicht getestet...

Code:
Code:
	@EventHandler
	public void onPlayerChatEvent(AsyncPlayerChatEvent ev) {

		Player pl = ev.getPlayer();
		String message = ev.getMessage().toLowerCase();
		
[COLOR="#FF0000"]		if (!pl.isOp()) {
			ev.setMessage(message);[/COLOR]
			if (message.contains("server")) {
				pl.sendMessage("§6Deine Nachricht enthielt §e'Server'");
				ev.setCancelled(true);
				ev.setMessage(message.replaceAll("§6server", "server"));
			}
[COLOR="#FF0000"]		}[/COLOR]
	}

//Was Rot ist kannste löschen, Es ist nur aus meinen Plugin..
 
Zuletzt bearbeitet:

Mrcookie008

Braumeister
Registriert
15 Dezember 2011
Beiträge
380
Diamanten
0
Minecraft
xCookieZz oder Mrcookie008 (Beides Premium)
Vielen dank an euch alle =)

Falls es zukünftigen Leuten helfen sollte, hier die Lösung:

Code:
package EventHandler;

import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;


public class ChatTester
  implements Listener
{
	@EventHandler
	public void onPlayerChatEvent(AsyncPlayerChatEvent ev) {


		Player pl = ev.getPlayer();
		String message = ev.getMessage().toLowerCase();
		
			if (message.contains("Server")) {
				pl.sendMessage("§6Deine Nachricht enthielt §e'Server'");
				ev.setMessage(ev.getMessage().replaceAll("server", "§r§b§lServer§r"));
			}
		}
}


LG und vielen dank :).
 
G

games6471

Guest
Da ich vermute, dass du noch Anfänger im Bereich regulären Ausdrücken bist, glaube ich dass du die Methode replaceAll irtürmlicherweise gewäwlt hast. ReplaceAll arbeitet nämlich mit regülaren Ausdrücken, da kann es leicht mal zu Fehlern kommen, wenn man dies nicht weiss.

Die normale Methode replace nämlich ersetzt schon alle Stellen mit dem über dem zweiten Parameter festgelegten String. Hierbei wird kein regulärer Ausdruck angwendet. Ich garantiere dir aber, dass regulärer Ausdrücke auch sehr sinnvoll sind und du dir die später auf jeden Fall anschauen und lernen solltest. Schließlich ist es nicht nur in Java vertreten.
replace(char oldChar, char newChar)
Returns a new string resulting from replacing all occurrences of oldChar in this string with newChar.
 
Oben