• 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!

Chat Nachricht

gmb32

Kuhfänger
Registriert
17 Juni 2014
Beiträge
84
Diamanten
0
Hey ho,
Ich habe ein Notruf Plugin programmiert was auch Super Funktioniert bis auf den Async Chat zwischen Anrufer und Helfer. Die Nachricht soll mit @arzt NACHRICHT anfangen das soll gecancelt werden und als Prefix [Notruf] NAME: NACHRICHT an den Anrufer bzw Helfer geschickt werden. Ich habe es mit startwith , e.setcancelled usw probiert , es hat zwar abgeschickt aber nur in den Chat für mich und nicht für die andere Person

Skript:
Java:
@EventHandler
       public void on(AsyncPlayerChatEvent e){
           Player p = e.getPlayer();
          
        
          
           if(Methoden.isInNotruf(p)){
              String msg = e.getMessage();
               if(e.getMessage().startsWith("@arzt")){
                
                
                  for(Player arzt : Bukkit.getOnlinePlayers()){
                      if(arzt.hasPermission("axt.arzt")){
                          e.setCancelled(true);
                          Bukkit.dispatchCommand(arzt, "tell " + p + msg);
                        
                
                        
                      } else {
                          e.setCancelled(true);
                          //p.sendMessage("§7[§cNotruf§7] §4" +p.getName() + ":§7"+ msg.replaceAll("@arzt", ""));
                          Bukkit.dispatchCommand(p, "msg " + arzt + msg);
                      }
                  }
                   }
      
           } else if(e.getMessage().startsWith("@team")) {
                String message = e.getMessage();
                for(Player team : Bukkit.getOnlinePlayers()){
                    if(team.hasPermission("axt.tc")){
                        e.setCancelled(true);
                        team.sendMessage("§7[§4TeamChat§7] §4" +p.getName() + ": §7"+ message.replaceAll("@team", ""));
                      
                    }
                }
            } else if(e.getMessage().startsWith("@sanni")) {
                String message3 = e.getMessage();
                for(Player team3 : Bukkit.getOnlinePlayers()){
                    if(team3.hasPermission("axt.arzt")){
                        e.setCancelled(true);
                        team3.sendMessage("§7[§cArzt§7] §4" +p.getName() + ": §7"+ message3.replaceAll("@sanni", ""));
                      
                    } else {
                        p.sendMessage("§[§cArzt§7] §cDu bist kein Arzt!");
                        e.setCancelled(true);
                      
                    }
                }
            } else if(e.getMessage().startsWith("@polizisten")) {
                String message2 = e.getMessage();
                for(Player team2 : Bukkit.getOnlinePlayers()){
                    if(team2.hasPermission("axt.polizei")){
                        e.setCancelled(true);
                        team2.sendMessage("§7[§3Polizei§7] §4" +p.getName() + ": §7"+ message2.replaceAll("@polizisten", ""));
                      
                    } else {
                        p.sendMessage("§7[§3Polizei§7] &cDu bist kein Polizist!");
                        e.setCancelled(true);
                    }
                }
            }
           }
 
Zuletzt bearbeitet von einem Moderator:

monst12

Minecrafter
Registriert
22 Januar 2013
Beiträge
4
Diamanten
0
Minecraft
monst12
Hey,

generell kann ich dir beim Versenden von Nachrichten an einen Spieler empfehlen die vorhandene Methode #sendMessage(String msg) zu verwenden. Damit warst du auch bspw. bei deinem Code-Teil @team eigentlich ganz richtig gelegen.

Hier mal ein, an dein ChatEvent angepassten Vorschlag:

Code:
@EventHandler
public void onAsyncChatEvent(AsyncPlayerChatEvent e){
    Player p = e.getPlayer();

    //Da scheinbar nichts mit dem Chat passiert, wenn es kein Notruf ist können wir getrost gleich wieder aus der Methode "springen", falls dem so ist.
    if(!Methoden.isInNotruf(p)) return;

    if(e.getMessage().startsWith("@arzt")){   
        //Wollen ja nicht, dass irgendjemand dann die Standard-Nachricht bekommt, also gleich mal Event canceln
        e.setCancelled(true);
        //Vielleicht eine kleine Info-Nachricht für den Notruf-Absender?
        p.sendMessage("Alle Ärzte wurden informiert.");

        //Hier von allen Online Spielern nach Ärzten suchen (Spieler mit der Permission "axt.arzt")
        for(Player arzt : Bukkit.getOnlinePlayers()){
            if(arzt.hasPermission("axt.arzt")){
                //Dem Arzt eine Nachricht hinterlassen
                arzt.sendMessage("§7[§cNotruf§7] §4" +p.getName()+ " §7: "+ e.getMessage().replaceAll("@arzt", "");
            }
        }
     }
}
 
Oben