Team kills in scoreboard.

Discussion in 'Plugin Development' started by ariaDEE, Sep 23, 2014.

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

    ariaDEE

    Hey. So basically, I'm trying to make a scoreboard which shows teams and their scores. Depending on which team the player is on (I'm using hashmaps for the teams), when they get a kill, their teams score is increased by one. Every player should see every teams scoreboard. How would I go about doing this?
     
  2. Offline

    ProMCKingz

    ok.. So first get the team, with a string or whatever you have used. Then get or make a kill string, and make an if statement for every kill in the team add
    Code:java
    1. kill++
     
  3. Offline

    ariaDEE

    This is my current attempt:
    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. }

    Although it only shows the kills of the team the player is in, not the two other teams. Do you have any idea how I would change this so that it would show all three teams for every player?
     
  4. Offline

    ProMCKingz

    ariaDEE
    You cannot create multiple scoreboards, and expect them to display together. You may only display a single scoreboard.
    Therefore I recommend showing all the scores in one scoreboard.
     
  5. Offline

    ariaDEE

    Okay, so should I just make three separate objectives for each team in one scoreboard and update the respective objective when a player kills another player?
     
  6. Offline

    ariaDEE

    Hey. I'm still pretty lost :( I'm pretty new to scoreboards so I get confused often. Can anyone possibly give me an in-depth guide to achieving this? I've been stuck for a while now. Some pseudo code could be awesome as well.
     
Thread Status:
Not open for further replies.

Share This Page