Solved Events aren't working

Discussion in 'Plugin Development' started by ZodiacTheories, Jul 20, 2014.

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

    ZodiacTheories

    Hi, for some reason, none of these events are working.

    Code:java
    1. package org.zodiactheories.pandorm;
    2.  
    3. import org.bukkit.ChatColor;
    4. import org.bukkit.Material;
    5. import org.bukkit.entity.Entity;
    6. import org.bukkit.entity.Player;
    7. import org.bukkit.event.EventHandler;
    8. import org.bukkit.event.Listener;
    9. import org.bukkit.event.entity.EntityDamageByEntityEvent;
    10. import org.bukkit.event.entity.PlayerDeathEvent;
    11. import org.bukkit.event.inventory.CraftItemEvent;
    12.  
    13. public class GainingPoints implements Listener {
    14.  
    15. @EventHandler
    16. public void onKill(EntityDamageByEntityEvent e) {
    17. Entity ent = e.getEntity();
    18. Entity kil = e.getDamager();
    19. if(ent.isDead()) {
    20. if(kil instanceof Player) {
    21. Player p = (Player) e.getDamager();
    22. p.sendMessage(Core.getInstance().PREFIX + ChatColor.RED + " You gained some points!");
    23. LevelMethods.setPoints(p, LevelMethods.getPoints(p) + 5);
    24. Core.getInstance().saveConfig();
    25. }
    26. }
    27. }
    28.  
    29. @EventHandler
    30. public void onCraft(CraftItemEvent e) {
    31. if(e.getRecipe().getResult().getType() == Material.DIAMOND_CHESTPLATE) {
    32. if(e.getWhoClicked() instanceof Player) {
    33. Player p = (Player) e.getWhoClicked();
    34. LevelMethods.setPoints(p, LevelMethods.getPoints(p) + 5);
    35. }
    36. }
    37. }
    38. @EventHandler
    39. public void onCraft1(CraftItemEvent e) {
    40. if(e.getRecipe().getResult().getType() == Material.DIAMOND_LEGGINGS) {
    41. if(e.getWhoClicked() instanceof Player) {
    42. Player p = (Player) e.getWhoClicked();
    43. LevelMethods.setPoints(p, LevelMethods.getPoints(p) + 5);
    44. }
    45. }
    46. }
    47. @EventHandler
    48. public void onCraft2(CraftItemEvent e) {
    49. if(e.getRecipe().getResult().getType() == Material.DIAMOND_HELMET) {
    50. if(e.getWhoClicked() instanceof Player) {
    51. Player p = (Player) e.getWhoClicked();
    52. LevelMethods.setPoints(p, LevelMethods.getPoints(p) + 5);
    53. }
    54. }
    55. }
    56. @EventHandler
    57. public void onCraft3(CraftItemEvent e) {
    58. if(e.getRecipe().getResult().getType() == Material.DIAMOND_BOOTS) {
    59. if(e.getWhoClicked() instanceof Player) {
    60. Player p = (Player) e.getWhoClicked();
    61. LevelMethods.setPoints(p, LevelMethods.getPoints(p) + 5);
    62. }
    63. }
    64. }
    65. @EventHandler
    66. public void onDeath(PlayerDeathEvent e) {
    67. Entity ent = e.getEntity();
    68. if(ent instanceof Player) {
    69. Player p = (Player) e.getEntity();
    70. if(p.getKiller() instanceof Player) {
    71. Player k = (Player) p.getKiller();
    72. k.sendMessage(Core.getInstance().PREFIX + ChatColor.RED + " You killed a level " + LevelMethods.getLevel(p) + " !");
    73. LevelMethods.setPoints(k, LevelMethods.getPoints(k) + 25);
    74. }
    75. }
    76. }
    77. }
    78.  
    79.  
    80.  


    Stack-Trace:

    http://gyazo.com/b30c489f2004fd1a390ab00c3595dd10

    LevelMethods:

    Code:java
    1. package org.zodiactheories.pandorm;
    2.  
    3. import org.bukkit.ChatColor;
    4. import org.bukkit.entity.Player;
    5.  
    6. public class LevelMethods {
    7.  
    8. public static int getLevel(Player p) {
    9. return Core.getInstance().getConfig().getInt("players." + p.getName() + ".level");
    10. }
    11.  
    12. public static void setLevel(Player p, int level) {
    13. Core.getInstance().getConfig().set("players." + p.getName() + ".level", level);
    14. Core.getInstance().saveConfig();
    15. return;
    16. }
    17.  
    18. public static int getPoints(Player p) {
    19. return Core.getInstance().getConfig().getInt("players." + p.getName() + ".points");
    20. }
    21.  
    22. public static void setPoints(Player p, int points) {
    23. Core.getInstance().getConfig().set("players." + p.getName() + ".points", points);
    24. Core.getInstance().saveConfig();
    25. return;
    26. }
    27.  
    28. public static void levelup(Player p) {
    29. setLevel(p, getLevel(p) + 1);
    30. setPoints(p, 0);
    31. p.sendMessage(Core.getInstance().PREFIX + ChatColor.RED + " You have leveled up!");
    32. return;
    33. }
    34. }
    35.  


    I can't seem to get it working

    Thanks
     
  2. Offline

    Dragonphase

  3. Offline

    ZodiacTheories

    Dragonphase

    I know how to read stack-traces, I just don't see what is wrong with my LevelMethods class
     
  4. Offline

    Gater12

    ZodiacTheories
    Error is complaining that it cannot find your LevelsMethod class. Did you include it while compiling?
     
  5. Offline

    ZodiacTheories

  6. Offline

    Gater12

    ZodiacTheories
    Error suggests otherwise. Try look into the jar (Using any ZIP file opener) and see if you can your LevelsMethod class.
     
  7. Offline

    xTigerRebornx

    ZodiacTheories Perhaps you have another plugin that is using the same classpath?
     
  8. Offline

    ZodiacTheories

    Gater12
    xTigerRebornx

    Thanks, now the CraftItemEvents work, but not this event :/

    Code:java
    1. @EventHandler
    2. public void onKill(EntityDamageByEntityEvent e) {
    3. Entity ent = e.getEntity();
    4. Entity kil = e.getDamager();
    5. if(ent.isDead()) {
    6. if(kil instanceof Player) {
    7. Player p = (Player) e.getDamager();
    8. p.sendMessage(Core.getInstance().PREFIX + ChatColor.RED + " You gained some points!");
    9. LevelMethods.setPoints(p, LevelMethods.getPoints(p) + 5);
    10. Core.getInstance().saveConfig();
    11. }
    12. }
    13. }
    14.  
     
  9. Offline

    xTigerRebornx

    ZodiacTheories What doesn't work? Does it get stuck at a point? No Messages? Errors?
     
  10. Offline

    ZodiacTheories

  11. Offline

    xTigerRebornx

    ZodiacTheories Debug your code, see where it gets stuck (I suspect the isDead() check may be causing problems)
     
  12. Offline

    Shevchik

    Events are executed before action actually happens.
     
  13. Offline

    ZodiacTheories

    Shevchik xTigerRebornx

    It said debug but not debugger:

    Code:java
    1. @EventHandler
    2. public void onKill(EntityDamageByEntityEvent e) {
    3. Entity ent = e.getEntity();
    4. Entity kil = e.getDamager();
    5. Core.getInstance().getLogger().info("DEBUG");
    6. if(ent.isDead()) {
    7. if(kil instanceof Player) {
    8. Player p = (Player) e.getDamager();
    9. p.sendMessage(Core.getInstance().PREFIX + ChatColor.RED + " You gained some points!");
    10. Core.getInstance().getLogger().info("DEBUGGER");
    11. LevelMethods.setPoints(p, LevelMethods.getPoints(p) + 5);
    12. Core.getInstance().saveConfig();
    13. }
    14. }
    15. }
    16.  
     
  14. Offline

    daavko

    ZodiacTheories As Shevchik stated, events are called before something happens, so your "ent" is not dead.
     
  15. Offline

    ZodiacTheories

    daavko

    I tried using the EntityDeathEvent, but I cannot seem to get the killer
     
  16. Offline

    daavko

    ZodiacTheories Try this:
    Code:java
    1. @EventHandler
    2. public void onKill(EntityDeathEvent e) {
    3. Entity ent = e.getEntity();
    4. if (ent.getLastDamageCause instanceof EntityDamageByEntityEvent) {
    5. EntityDamageByEntityEvent damageEvent = (EntityDamageByEntityEvent) ent.getLastDamageCause;
    6. Entity kil = damageEvent.getDamager();
    7. if(kil instanceof Player) {
    8. Player p = (Player) kil;
    9. p.sendMessage(Core.getInstance().PREFIX + ChatColor.RED + " You gained some points!");
    10. LevelMethods.setPoints(p, LevelMethods.getPoints(p) + 5);
    11. Core.getInstance().saveConfig();
    12. }
    13. }
    14. }


    Note: That code was created off top of my head, might not work!
     
  17. Offline

    ZodiacTheories

    daavko

    Thank you so much!
     
  18. Offline

    daavko

    ZodiacTheories likes this.
Thread Status:
Not open for further replies.

Share This Page