Minecraft 聊天消息替换

Minecraft Chat Message Replacement

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

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().getPluginManager().registerEvents(new YourListener(...), this);

(将 YourListener 替换为 this,以防它是您的主要 class)

最后,作为Luftbaum said, use AsyncPlayerChatEvent#setFormat参加活动。 用法示例:

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

编辑:

为了将“&3”等颜色代码转换为 Bukkit 的 ChatColor format, you can use the ChatColor#translateAlternativeColorCodes 方法。

ChatColor.translateAlternateColorCodes('&', stringThatContainsCodes);

使用event.setFormat(playerRank + ": " + event.getMessage());

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