2017-07-06 1 views
0

Je fais un plugin d'autorisations, et je veux remplacer le nom d'un joueur avec leur marque de rang. Pour cela, j'ai le code suivant:Minecraft Chat Message de remplacement

public void playerChat(AsyncPlayerChatEvent e) { 
    Player target = e.getPlayer(); 

    String message = e.getMessage().replaceAll(target.getName(), colorize(rFile.getString("players." + target)) + " " + target.getName()); 
    e.setMessage(message); 
} 

Chaque fois que j'envoie un message à discuter, il apparaît comme il le ferait normalement. Qu'est-ce que je fais mal ici?

De plus, j'utilise un fichier de configuration (cFile) et un fichier ranks.yml (rFile).

+0

Vous devez utiliser AsyncPlayerChatEvent # setFormat pour formater les messages de discussion! – Luftbaum

+1

Avez-vous ajouté l'annotation '@ EventHandler'? Est-ce que votre auditeur est enregistré? – AscendedKitten

+0

J'ai ajouté @eventHandler, mais cela ne fonctionne toujours pas. –

Répondre

0

Tout d'abord, assurez-vous d'inclure l'annotation @EventHandler.

@EventHandler 
public void playerChat(AsyncPlayerChatEvent e) { 
    [...] 
} 

Ensuite, vérifiez si l'auditeur est inscrit dans votre méthode onEnable(). getServer().getPluginManager().registerEvents(new YourListener(...), this);

(Remplacer le YourListener avec this dans le cas où il est votre classe principale)

Enfin, comme Luftbaum dit, utilisez AsyncPlayerChatEvent#setFormat dans l'événement. Exemple d'utilisation:

e.setFormat(colorize(rFile.getString("players." + target)) + ": " + e.getMessage()); 

Edit:

Afin de traduire les codes de couleur tels que '& 3' au format de Bukkit ChatColor, vous pouvez utiliser la méthode ChatColor#translateAlternativeColorCodes.

ChatColor.translateAlternateColorCodes('&', stringThatContainsCodes); 
+0

Qu'est-ce que je répète YourListener avec? J'ai essayé Listener(), mais cela ne fonctionnera pas. –

+0

Dépend; est votre auditeur dans votre classe principale? Alors écrivez juste ceci. Sinon, le nom de votre classe d'écouteur. – AscendedKitten

+0

Ça va sembler très bête. À quoi ressemblerait l'auditeur? Est-ce playerChat()? –

0

Utilisez event.setFormat(playerRank + ": " + event.getMessage());

Formate essentiellement le message à la façon dont vous voulez. Vous pouvez utiliser ChatColor pour faire des couleurs. Assurez-vous également d'avoir @EventHandler.