我正在制作一个在不久的将来会有排名的插件,但我决定首先获得前缀。我有这段代码:
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仍然有效。
如果有人可以提供帮助,请告诉我。
提前致谢!
答案 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
}