Java Minecraft聊天信息替换

Java Minecraft聊天信息替换,java,minecraft,bukkit,Java,Minecraft,Bukkit,我正在制作一个权限插件,想用他们的排名标签替换一个玩家的名字。为此,我有以下代码: public void playerChat(AsyncPlayerChatEvent e) { Player target = e.getPlayer(); String message = e.getMessage().replaceAll(target.getName(), colorize(rFile.getString("players." + target)) + " " + tar

我正在制作一个权限插件,想用他们的排名标签替换一个玩家的名字。为此,我有以下代码:

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);
}
每当我发送一条信息聊天时,它看起来就像正常情况一样。 我做错了什么


此外,我正在使用配置文件(cFile)和ranks.yml文件(rFile)。

首先,请确保包含
@EventHandler
注释

@EventHandler
public void playerChat(AsyncPlayerChatEvent e) {
   [...]
}
接下来,检查侦听器是否已在
onEnable()方法中注册。
getServer()

(如果这是您的主类,请将
YourListener
替换为
this

最后,如前所述,在事件中使用。 用法示例:

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

为了将颜色代码(如“&3”)转换为Bukkit的格式,可以使用以下方法

使用
event.setFormat(playrerak+:“+event.getMessage())


这基本上是按照您想要的方式格式化消息。您可以使用ChatColor来制作颜色。还要确保您有@EventHandler。

您应该使用AsyncPlayerChatEvent#setFormat格式化聊天信息!您是否添加了
@EventHandler
注释?你的侦听器注册了吗?我添加了@eventHandler,但它仍然不起作用。我用什么回复你的侦听器?我尝试了Listener(),但那不起作用。取决于;你的听众在你的主课上吗?然后写下这个
。否则,你的侦听器类的名称。这听起来很愚蠢。听众看起来怎么样?是playerChat()吗?本例中的侦听器是您的类;如果您的事件(本例中的聊天事件)位于扩展了
JavaPlugin
的类中,那么您可以使用
this
。不过,您可能已经将事件放入了一个单独的类,一个侦听器。在这种情况下,您必须用[…]
newyourclassnamehere()以这种方式注册它这就是我现在拥有的:
getServer().getPluginManager().registerEvents(这个,这个)它向我抛出一个错误:PluginManager类型中的registerEvents不适用于参数(Main,Main)
ChatColor.translateAlternateColorCodes('&', stringThatContainsCodes);