我正在制作权限插件,并希望用其排名标记替换播放器的名称。为此,我有以下代码:
{{1}}
每当我向聊天发送消息时,它似乎正常。 我在这里做错了什么?
此外,我正在使用配置文件(cFile)和rank.yml文件(rFile)。
答案 0 :(得分:0)
首先,请确保包含@EventHandler
注释。
@EventHandler
public void playerChat(AsyncPlayerChatEvent e) {
[...]
}
接下来,检查是否已在onEnable()
方法中注册了侦听器。
getServer().getPluginManager().registerEvents(new YourListener(...), this);
(如果您是主要班级,请将YourListener
替换为this
最后,正如Luftbaum所说,在事件中使用AsyncPlayerChatEvent#setFormat。 用法示例:
e.setFormat(colorize(rFile.getString("players." + target)) + ": " + e.getMessage());
修改强>
为了翻译颜色代码,例如'& 3'对于Bukkit的ChatColor格式,您可以使用ChatColor#translateAlternativeColorCodes方法。
ChatColor.translateAlternateColorCodes('&', stringThatContainsCodes);
答案 1 :(得分:0)
使用event.setFormat(playerRank + ": " + event.getMessage());
这基本上将消息格式化为您想要的方式。您可以使用ChatColor来执行颜色。还要确保你有@EventHandler。