Bukkit Custom Prefix插件不适用于Essentials

时间:2016-04-16 07:52:49

标签: java plugins minecraft bukkit

我正在制作一个在不久的将来会有排名的插件,但我决定首先获得前缀。我有这段代码:

    Essentials ess = (Essentials) Bukkit.getServer().getPluginManager().getPlugin("Essentials");
    User user = ess.getUserMap().getUser(p.getName());
    //nickname
    String nick = user.getDisplayName();
    String prisoner = ColourMsg("&5<<&bPrisoner&5>>&r>" + " <");

    p.setDisplayName(prisoner + nick);

由于某种原因,此代码不起作用!它只显示昵称,而不是前缀(我希望它能同时显示)。此外,我收到的唯一错误消息来自essentials聊天,我的插件不需要,而且/ nick仍然有效。

如果有人可以提供帮助,请告诉我。

提前致谢!

1 个答案:

答案 0 :(得分:0)

你不需要Essentials(Essentials是一个糟糕的插件,因为1.8)。 您只需在PlayerJoinEvent中使用记分板前缀/后缀来设置标记。

 Scoreboard sb = Bukkit.getScoreboardManager().getNewScoreboard();
 Objective ob = sb.registerNewObjective("objName", "dummy");

    public void onEnable() {
        // Set Display slot
        ob.setDisplaySlot(DisplaySlot.PLAYER_LIST);
    }

    public void onJoin(PlayerJoinEvent e) {
        // Delay a task
        Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
            @Override
            public void run() {
                if (e.getPlayer().hasPermission("tags.example")) {
                    sb.registerNewTeam("Example");
                    Team team = sb.getTeam("Example");
                    team.setPrefix(ChatColor.RED + "[Example]");
                    team.addEntry(e.getPlayer().getName());
                } else if (e.getPlayer().hasPermission("tags.otherTag")) {
                    sb.registerNewTeam("OtherTag");
                    Team team = sb.getTeam("OtherTag");
                    team.setPrefix(ChatColor.GREEN + "[OtherTag]");
                    team.addEntry(e.getPlayer().getName());
                }
            }
        }, 20 * 1); // The 1 is the number of seconds to delay, 1 is fine
    }