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.
我正在制作一个权限插件,想用他们的排名标签替换玩家的名字。为此,我有以下代码:
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.