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

[ABANDONED] Chat Format Changer

jens1o

Workaholic
Registriert
28 Juli 2015
Beiträge
644
Alter
23
Diamanten
254
Minecraft
jens1o
Hey,

ich hab mir mal dein Plugin angeschaut und möchte dir ein paar Tipps geben...
Dein Code ...
Code:
if(x.hasPermission("cfc.name.grey")){
   // x ist der Player
   e.setCancelled(true);Bukkit.broadcastMessage((String)("\u00a77 "+ x.getName()+"\u00a7b -> \u00a7e"+ e.getMessage()+" "));}
}
... ist relativ unsauber. Aber wenn das dein erstes Plugin ist möchte ich dir helfen:

1. benutze nicht für jede Farbe eine Abfrage, sondern mache ein switch/case statement if/else statement. Somit hast du keine Probleme mehr das alles mehrmals gesendet wird wenn man alle Rechte hat.
2. Benutze die richtigen Events. In diesem Falle wäre das AsyncPlayerChatEvent. Dieses hat nämlich auch die Funktion setFormat(). (Also das was du brauchst.)

Hier mal ein Beispielcode(ohne Switch/Case) damit du verstehst was ich mit dem Event meine:
Code:
@EventHandler
public void onChat(AsyncPlayerChatEvent e) {
        Player p = e.getPlayer();
        if (p.isOp()) {
            e.setFormat(ChatColor.GRAY + "[" + ChatColor.RED + "Owner" + ChatColor.GRAY + "] " + "%s"
                    + ChatColor.DARK_GRAY + " >> " + ChatColor.RESET + "%s");
        } else {
            e.setFormat(ChatColor.GRAY + "[" + ChatColor.BLUE + "Member" + ChatColor.GRAY + "] " + "%s"
                    + ChatColor.DARK_GRAY + " >> " + ChatColor.RESET + "%s");
        }
        // Falls du Sound haben willst:
        // Nicht wundern, ich mache mit dem p nichts, benutze das Event hier nur als Trigger
        for(Player player : Bukkit.getOnlinePlayers()){
            player.playSound(player.getLocation(), Sound.FIREWORK_BLAST, 10, 1);
        }
}
3. wie du villeicht gesehen hast gibt es die Klasse ChatColor. Damit kannst du \u00a77 vermeiden und dein Code ist lesbarer.

Danke fürs lesen :)

jens1o

Schön das du mal deine ersten Ergebnisse offen stellst, so kann man dir helfen.

Edit:
Switch -> if/else
 
Zuletzt bearbeitet:

JTK222

Threadripper
Registriert
5 September 2013
Beiträge
1.150
Diamanten
323
Minecraft
JTK222
1. benutze nicht für jede Farbe eine Abfrage, sondern mache ein switch/case statement. Somit hast du keine Probleme mehr das alles mehrmals gesendet wird wenn man alle Rechte hat.
Wenn du schon so gut programieren kannst dass du leuten helfen willst sollte dir clar sein das ein switch statement nur mit Enums,integern, und chars funktioniert. Von daher ist dies relativ umständlich und würde den Code unsauberer machen.
Mit hilfe von Else if kann man jedoch das gleiche Ergebnis erzielen.
 
Oben