2016-04-16 51 views
0

我正在製作一個插件,它將在不久的將來進行排名,但我決定先讓前綴過去。我有這樣的代碼:Bukkit自定義前綴插件無法在Essentials中使用

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聊天,這是我的插件不需要和/尼克仍然工作。

如果有人能幫忙,請告訴我。

在此先感謝!

+0

不以什麼方式工作?錯誤信息?結果與預期結果有何不同? – TAM

+0

此代碼在哪裏執行? – bcsb1001

回答

0

你不需要Essentials(從1.8開始,Essentials是一個不好的插件)。 您可以簡單地在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 
    } 
相關問題