代码之家  ›  专栏  ›  技术社区  ›  Xaaf Code

Minecraft聊天消息替换

  •  0
  • Xaaf Code  · 技术社区  · 7 年前

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

    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)和列组。yml文件(rFile)。

    2 回复  |  直到 7 年前
        1
  •  0
  •   Cath    7 年前

    首先,确保包括 @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's ChatColor 格式,您可以使用 ChatColor#translateAlternativeColorCodes 方法

    ChatColor.translateAlternateColorCodes('&', stringThatContainsCodes);
    
        2
  •  0
  •   BillehBawb    7 年前

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

    这基本上将消息格式化为您想要的方式。你可以用ChatColor做颜色。还要确保您有@EventHandler。