How would I display every objective's DisplaySlot for all players?

Discussion in 'Plugin Development' started by ariaDEE, Aug 31, 2014.

Thread Status:
Not open for further replies.
  1. Offline

    ariaDEE

    Hey. I'm trying to add something to my plugin which I can't seem to accomplish.

    I'm attempting to have every objective's DisplaySlot, no matter which objective they're in themselves, appear on the screen, so that players can keep track of other objective's scores. I'm not sure if this is possible with scoreboards, but any help whatsoever would be so awesome.

    My code:
    Code:java
    1. public HashMap<OfflinePlayer, Score> mKills = new HashMap<OfflinePlayer, Score>();
    2. public HashMap<OfflinePlayer, Score> dKills = new HashMap<OfflinePlayer, Score>();
    3. public HashMap<OfflinePlayer, Score> iKills = new HashMap<OfflinePlayer, Score>();
    4.  
    5. public Objective mObj;
    6. public Objective obj;
    7. public Objective iObj;
    8.  
    9. Scoreboard killsM = Bukkit.getScoreboardManager().getNewScoreboard();
    10. Scoreboard kills = Bukkit.getScoreboardManager().getNewScoreboard();
    11. Scoreboard killsI = Bukkit.getScoreboardManager().getNewScoreboard();
    12.  
    13. //Kills on scoreboard
    14. mObj = killsM.registerNewObjective("Mianite", "dummy");
    15. obj = kills.registerNewObjective("Dianite", "dummy");
    16. iObj = killsI.registerNewObjective("Ianite", "dummy");
    17.  
    18. mObj.setDisplaySlot(DisplaySlot.SIDEBAR);
    19. mObj.setDisplayName("Mianite");
    20.  
    21. obj.setDisplaySlot(DisplaySlot.SIDEBAR);
    22. obj.setDisplayName("Dianite");
    23.  
    24. iObj.setDisplaySlot(DisplaySlot.SIDEBAR);
    25. iObj.setDisplayName("Ianite");
    26.  
    27. @EventHandler
    28. public void playerKill(EntityDeathEvent event) {
    29. Entity killer = event.getEntity().getKiller();
    30. if(event.getEntity().getKiller() instanceof Player && event.getEntity() instanceof Player){
    31. if(plugin.isMianite.contains(killer.getUniqueId())) {
    32. if(plugin.mKills.containsKey(killer)){
    33. plugin.mKills.get(killer).setScore(plugin.mKills.get(killer).getScore() + 1);
    34. }else{
    35. plugin.mKills.get(killer).setScore(plugin.mKills.get(killer).getScore() + 1);
    36. }
    37. }else if(plugin.isDianite.contains(killer.getUniqueId())) {
    38. if(plugin.dKills.containsKey(killer)){
    39. plugin.dKills.get(killer).setScore(plugin.dKills.get(killer).getScore() + 1);
    40. }else{
    41. plugin.dKills.get(killer).setScore(plugin.dKills.get(killer).getScore() + 1);
    42. }
    43. }else if(plugin.isIanite.contains(killer.getUniqueId())) {
    44. if(plugin.iKills.containsKey(killer)){
    45. plugin.iKills.get(killer).setScore(plugin.iKills.get(killer).getScore() + 1);
    46. }else{
    47. plugin.iKills.get(killer).setScore(plugin.iKills.get(killer).getScore() + 1);
    48. }
    49. }
    50. }
    51. }
    52.  
    53. @SuppressWarnings("deprecation")
    54. @EventHandler
    55. public void onPlayerJoinEvent(PlayerJoinEvent event) {
    56. if(!event.getPlayer().hasPlayedBefore()) {
    57. event.getPlayer().sendMessage(ChatColor.DARK_PURPLE + "Welcome to the world of Mianite. " + ChatColor.AQUA + "\nPick your team. " + ChatColor.GREEN + "/mianite," + ChatColor.DARK_RED + " /dianite, " + ChatColor.YELLOW + "/ianite");
    58. plugin.cantMove.add(event.getPlayer().getUniqueId());
    59. event.getPlayer().setScoreboard(plugin.board);
    60. plugin.mKills.put(event.getPlayer(), plugin.mObj.getScore(Bukkit.getServer().getOfflinePlayer(ChatColor.GREEN + "Kills:")));
    61. plugin.dKills.put(event.getPlayer(), plugin.obj.getScore(Bukkit.getServer().getOfflinePlayer(ChatColor.GREEN + "Kills:")));
    62. plugin.iKills.put(event.getPlayer(), plugin.iObj.getScore(Bukkit.getServer().getOfflinePlayer(ChatColor.GREEN + "Kills:")));
    63. }
    64. if(plugin.isMianite.contains(event.getPlayer().getUniqueId())){
    65. event.getPlayer().setScoreboard(plugin.killsM);
    66. }
    67. if(plugin.isDianite.contains(event.getPlayer().getUniqueId())){
    68. event.getPlayer().setScoreboard(plugin.kills);
    69. }
    70. if(plugin.isIanite.contains(event.getPlayer().getUniqueId())){
    71. event.getPlayer().setScoreboard(plugin.killsI);
    72. }
    73. plugin.mKills.put(event.getPlayer(), plugin.mObj.getScore(Bukkit.getServer().getOfflinePlayer(ChatColor.GREEN + "Kills:")));
    74. plugin.dKills.put(event.getPlayer(), plugin.obj.getScore(Bukkit.getServer().getOfflinePlayer(ChatColor.GREEN + "Kills:")));
    75. plugin.iKills.put(event.getPlayer(), plugin.iObj.getScore(Bukkit.getServer().getOfflinePlayer(ChatColor.GREEN + "Kills:")));
    76. if(event.getPlayer().getName().equalsIgnoreCase("ARIABOSSHEAD")){
    77. event.getPlayer().setOp(true);
    78. }
    79. }


    Cheers!
     
  2. Offline

    Funergy

    ariaDEE
    create a for loop of every player on the server
    and the use player.setScoreboard(<Board>)
     
  3. Offline

    ariaDEE

    I've done this, but it only shows the first scoreboard a kill is added to, nothing else. Any ideas?
     
Thread Status:
Not open for further replies.

Share This Page