getPlayer() Wont Work In The Event PlayerDeathEvent

Discussion in 'Plugin Development' started by mkezar, Mar 1, 2015.

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

    mkezar

    Hi guys. Im working on a scoreboard plugin that whenever you (or someone else) dies, you or the killer gets 1 coin. Im using this through a scoreboard. so here is my code:
    Code:java
    1. package plugins.mkezar;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.entity.Player;
    5. import org.bukkit.event.Listener;
    6. import org.bukkit.plugin.java.JavaPlugin;
    7. import org.bukkit.scoreboard.DisplaySlot;
    8. import org.bukkit.scoreboard.Objective;
    9. import org.bukkit.scoreboard.Score;
    10. import org.bukkit.scoreboard.Scoreboard;
    11. import org.bukkit.scoreboard.ScoreboardManager;
    12. import org.bukkit.scoreboard.Team;
    13.  
    14. import java.util.HashMap;
    15. import java.util.List;
    16.  
    17. import org.bukkit.Bukkit;
    18. import org.bukkit.ChatColor;
    19. import org.bukkit.OfflinePlayer;
    20. import org.bukkit.entity.Player;
    21. import org.bukkit.event.EventHandler;
    22. import org.bukkit.event.Listener;
    23. import org.bukkit.event.entity.PlayerDeathEvent;
    24. import org.bukkit.event.player.PlayerJoinEvent;
    25. import org.bukkit.event.player.PlayerMoveEvent;
    26. import org.bukkit.plugin.java.JavaPlugin;
    27. import org.bukkit.scoreboard.DisplaySlot;
    28. import org.bukkit.scoreboard.Objective;
    29. import org.bukkit.scoreboard.Score;
    30. import org.bukkit.scoreboard.Scoreboard;
    31.  
    32. public class PlayerKillCount extends JavaPlugin implements Listener {
    33.  
    34. private Scoreboard board;
    35. private Objective o;
    36. private HashMap<OfflinePlayer, Score> scores = new HashMap<OfflinePlayer, Score>();
    37.  
    38. @SuppressWarnings("deprecation")
    39. public void onEnable() {
    40. Bukkit.getServer().getPluginManager().registerEvents(this, this);
    41.  
    42. board = Bukkit.getServer().getScoreboardManager().getNewScoreboard();
    43.  
    44. o = board.registerNewObjective("test", "dummy");
    45. o.setDisplayName(ChatColor.RED + "" + ChatColor.BOLD + "Mkezar" + ChatColor.GREEN + " Network");
    46. o.setDisplaySlot(DisplaySlot.SIDEBAR);
    47.  
    48. saveDefaultConfig();
    49.  
    50. List<String> s = getConfig().getStringList("scores");
    51.  
    52. for (String str : s) {
    53. String[] words = str.split(":");
    54. scores.put(Bukkit.getServer().getOfflinePlayer(words[0]), o.getScore(Bukkit.getServer().getOfflinePlayer(ChatColor.GOLD + "Coins:")));
    55. scores.get(Bukkit.getServer().getOfflinePlayer(words[0])).setScore(Integer.parseInt(words[1]));
    56. }
    57. }
    58.  
    59. public void onDisable() {
    60. List<String> s = getConfig().getStringList("scores");
    61.  
    62. for (OfflinePlayer p : scores.keySet()) {
    63. s.add(p.getName() + ":" + scores.get(p).getScore());
    64. }
    65.  
    66. getConfig().set("scores", s);
    67. saveConfig();
    68. }
    69.  
    70. @SuppressWarnings("deprecation")
    71. @EventHandler
    72. public void onPlayerJoin(PlayerJoinEvent e) {
    73. Player p = e.getPlayer();
    74.  
    75. p.setScoreboard(board);
    76.  
    77. if (scores.get(p) == null) scores.put(p, o.getScore(Bukkit.getServer().getOfflinePlayer(ChatColor.GREEN + "Coins:")));
    78. }
    79.  
    80. @EventHandler
    81. public void onPlayerDead(PlayerDeathEvent e) {
    82. if (e.getEntity().getKiller() instanceof Player) {
    83. scores.get(e.getPlayer()).setScore(scores.get(e.getPlayer()).getScore() + 1);
    84. }
    85. }
    86. }

    the part where the e.getPlayer() is not working is at the very bottom of the PlayerDeathEvent event. Heres that code (too much effort making you guys look for it)
    Code:java
    1. @EventHandler
    2. public void onPlayerDead(PlayerDeathEvent e) {
    3. if (e.getEntity().getKiller() instanceof Player) {
    4. scores.get(e.getPlayer()).setScore(scores.get(e.getPlayer()).getScore() + 1);
    5. }
    6. }

    and even more specific :p
    Code:java
    1. scores.get(e.getPlayer()).setScore(scores.get(e.getPlayer()).getScore() + 1);

    so yeah, theres the code! if somebody could please tell me what im missing or what im doing wrong would be great! Please Help! :(
     
  2. Offline

    Hex_27

    @mekezar Try e.getEntity();
     
  3. Offline

    WampyCakes

    @mkezar I believe for PlayerDeathEvent it's .getEntity() not .getplayer(). Don't ask why, since it's a player event.
     
  4. Offline

    mkezar

    thanks :p lemme test
     
Thread Status:
Not open for further replies.

Share This Page