Help i have an error i cant solve

Discussion in 'Plugin Development' started by GhostHack, Feb 4, 2014.

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

    GhostHack

    im creating a protect player on teleport plugin but i am getting the can not pass on PleyerTeleportEvent error
    here is my code for the main class
    Code:java
    1. public void onEnable(){
    2. getLogger().info(prefix+"PVPDelay Enabling");
    3. getConfig().options().copyDefaults(true);
    4. saveConfig();
    5. delay=getConfig().getInt("Seconds", delay);
    6. Bukkit.broadcastMessage(prefix+"PvpDelay Enabled");
    7. Bukkit.getServer().getPluginManager().registerEvents(new Pvpdelaylistener(this), this);


    and here's the code of the listener class

    Code:java
    1. public class Pvpdelaylistener implements Listener {
    2.  
    3. public static int delay;
    4. public static Player player;
    5. public static Entity damager;
    6. private PvpDelaystart plugin;
    7. public Pvpdelaylistener(PvpDelaystart instance){
    8. this.plugin = instance;
    9. }
    10.  
    11. @SuppressWarnings("unused")
    12. @EventHandler(priority = EventPriority.LOW)
    13. public void onPlayerTeleport(final PlayerTeleportEvent e){
    14. Player player= ((Player)e).getPlayer();
    15. delay=plugin.getConfig().getInt("Seconds:",delay);
    16. Bukkit.broadcastMessage(prefix+"Got player teleport");
    17.  
    18. }
    19. @EventHandler(priority = EventPriority.HIGH)
    20. public void OnPlayerDamage(final EntityDamageByEntityEvent event){
    21. Entity damager= event.getDamager();
    22. Bukkit.broadcastMessage(prefix+"Got all varriables");
    23. while(delay>0){
    24. if(player.hasPermission("pvpdelay.protected")||player.isOp()){
    25. player.sendMessage(prefix+"Your protected");
    26. Bukkit.broadcastMessage(prefix+"entered loop");
    27. player.sendMessage(prefix +"You Cant pvp for another"+delay+"Seconds");
    28. event.setCancelled(true);
    29. player.sendMessage(prefix+"You have "+delay+"until you can take damage");
    30. if(damager instanceof Player){
    31. event.setCancelled(true);
    32. ((Player) damager).sendMessage(prefix+"You are under Pvpdelay Protection you may mot pvp for anoter "+delay+" Seconds");
    33. }
    34. Bukkit.broadcastMessage(prefix+"exeted loops");
    35. }
    36. delay--;
    37. }
    38. }
    39.  
    40. }
    41.  
     
  2. Offline

    Superckl1

    You cast the event to a Player...
    Code:java
    1. Player player= ((Player)e).getPlayer();
     
  3. Offline

    GhostHack

    Thank you i must have read over that 25 times and never caught it

    Superckl1
    any idea why im getting cant pass on entitydamagebyentityevent now? some other mistake i cant see when i read over this

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 6, 2016
  4. Offline

    Superckl1

    You'll have to post the error here.
     
  5. Offline

    GhostHack

    Superckl1
    I get this error
    Code:
    [19:04:32 ERROR]: Could not pass event EntityDamageByEntityEvent to PvpDelay v1.
    1
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:320) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:481) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:466) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at org.bukkit.craftbukkit.v1_7_R1.event.CraftEventFactory.callEvent(Craf
    tEventFactory.java:98) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995j
    nks]
            at org.bukkit.craftbukkit.v1_7_R1.event.CraftEventFactory.callEntityDama
    geEvent(CraftEventFactory.java:386) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2
    f3dbd3-b2995jnks]
            at org.bukkit.craftbukkit.v1_7_R1.event.CraftEventFactory.handleEntityDa
    mageEvent(CraftEventFactory.java:414) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-
    g2f3dbd3-b2995jnks]
            at net.minecraft.server.v1_7_R1.EntityLiving.damageEntity(EntityLiving.j
    ava:656) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at net.minecraft.server.v1_7_R1.EntityHuman.damageEntity(EntityHuman.jav
    a:746) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at net.minecraft.server.v1_7_R1.EntityPlayer.damageEntity(EntityPlayer.j
    ava:446) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at net.minecraft.server.v1_7_R1.EntityArrow.h(EntityArrow.java:228) [cra
    ftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at net.minecraft.server.v1_7_R1.World.entityJoinedWorld(World.java:1338)
    [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at net.minecraft.server.v1_7_R1.World.playerJoinedWorld(World.java:1319)
    [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at net.minecraft.server.v1_7_R1.World.tickEntities(World.java:1207) [cra
    ftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at net.minecraft.server.v1_7_R1.WorldServer.tickEntities(WorldServer.jav
    a:480) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:6
    37) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:2
    50) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:5
    45) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java
    :457) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:6
    17) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
    Caused by: java.lang.NullPointerException
            at us.Cheapcoders.PvpDelay.Pvpdelaylistener.OnPlayerDamage(Pvpdelayliste
    ner.java:36) ~[?:?]
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0
    _51]
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0
    _51]
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1
    .7.0_51]
            at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_51]
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:318) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
            ... 19 more
     
  6. Offline

    xTigerRebornx

    GhostHack your 'delay' is always null, so it gives a NPE.
     
  7. Offline

    Superckl1

    Primitive integers can't be null...

    GhostHack
    Can you post the whole class, imports and everything? We need the code on line 36.
     
  8. Offline

    xTigerRebornx

    Superckl1 The EntityDamageEventByEntity could be fired before the PlayerTeleportEvent, causing it to be null. Also, there could be no value in the config.
     
  9. Offline

    GhostHack

    my main class
    Code:java
    1.  
    2.  
    3. import org.bukkit.command.Command;
    4. import org.bukkit.command.CommandSender;
    5. import org.bukkit.entity.Entity;
    6. import org.bukkit.entity.Player;
    7. import org.bukkit.event.EventHandler;
    8. import org.bukkit.event.EventPriority;
    9. import org.bukkit.event.entity.EntityDamageByEntityEvent;
    10. import org.bukkit.event.entity.EntityTeleportEvent;
    11. import org.bukkit.Bukkit;
    12. import org.bukkit.ChatColor;
    13. import org.bukkit.OfflinePlayer;
    14. import org.bukkit.plugin.PluginManager;
    15. import org.bukkit.plugin.java.JavaPlugin;
    16.  
    17.  
    18.  
    19. @SuppressWarnings("unused")
    20. public class PvpDelaystart extends JavaPlugin {
    21. public static String prefix = (ChatColor.AQUA+"[pvp"+ChatColor.RED+"delay]"+ChatColor.GREEN);
    22. public static int delay;
    23. public static boolean over;
    24.  
    25.  
    26. public void onEnable(){
    27. getLogger().info(prefix+"PVPDelay Enabling");
    28. getConfig().options().copyDefaults(true);
    29. saveConfig();
    30. delay=getConfig().getInt("Seconds", delay);
    31. Bukkit.broadcastMessage(prefix+"PvpDelay Enabled");
    32. Bukkit.getServer().getPluginManager().registerEvents(new Pvpdelaylistener(this), this);
    33. getLogger().info(" "+delay);
    34. }
    35. public void onDisable(){
    36. getLogger().info(prefix+"PvpDelay Disabled");
    37. }
    38.  
    39. public static String help;
    40. @Override
    41. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
    42. if(sender.hasPermission("pvpdelay.reload")||sender.isOp()){
    43. if(cmd.getName().equalsIgnoreCase("pdreload")){
    44. reloadConfig();
    45. sender.sendMessage(prefix+"Config.yml reloaded");
    46. getLogger().info(prefix+"Pvpdelay Config.yml reloaded");
    47. return true;
    48. }
    49. }
    50. return false;
    51. }
    52.  
    53. }
    54.  
    55.  
    56.  


    there is a value in the config it is set at 15 i checked that
    listener class

    Code:java
    1.  
    2.  
    3. import org.bukkit.ChatColor;
    4. import org.bukkit.entity.Entity;
    5. import org.bukkit.entity.Player;
    6. import org.bukkit.event.EventHandler;
    7. import org.bukkit.event.EventPriority;
    8. import org.bukkit.event.Listener;
    9. import org.bukkit.event.entity.EntityDamageByEntityEvent;
    10. import org.bukkit.event.player.PlayerTeleportEvent;
    11.  
    12. public class Pvpdelaylistener implements Listener {
    13. public static String prefix = (ChatColor.AQUA+"[pvp"+ChatColor.RED+"delay]"+ChatColor.GREEN);
    14. public static int delay;
    15. public static Player player;
    16. public static Entity damager;
    17. public static boolean protect;
    18. private PvpDelaystart plugin;
    19. public Pvpdelaylistener(PvpDelaystart instance){
    20. this.plugin = instance;
    21. }
    22.  
    23. @SuppressWarnings("unused")
    24. @EventHandler(priority = EventPriority.LOW)
    25. public void onPlayerTeleport(final PlayerTeleportEvent e){
    26. Player player= (Player)e.getPlayer();
    27. protect=true;
    28. plugin.getLogger().info(prefix+"Got player teleport "+delay);
    29.  
    30. }
    31. @EventHandler(priority = EventPriority.LOW)
    32. public void OnPlayerDamage(final EntityDamageByEntityEvent event){
    33. Entity damager= event.getDamager();
    34. delay=plugin.getConfig().getInt("Seconds:");
    35. plugin.getLogger().info(prefix+"Got all varriables");
    36. while(protect==true){
    37. if(delay>0){
    38. if(player.hasPermission("pvpdelay.protected")||player.isOp()){
    39. player.sendMessage(prefix+"Your protected");
    40. plugin.getLogger().info(prefix+"entered loop");
    41. player.sendMessage(prefix +"You Cant pvp for another"+delay+"Seconds");
    42. event.setCancelled(true);
    43. player.sendMessage(prefix+"You have "+delay+"until you can take damage");
    44. if(damager instanceof Player){
    45. event.setCancelled(true);
    46. ((Player)damager).sendMessage(prefix+"You are under Pvpdelay Protection you may mot pvp for anoter "+delay+" Seconds");
    47. }
    48. plugin.getLogger().info(prefix+"exeted loops");
    49. }else if(delay==0){
    50. protect=false;
    51. }
    52. delay--;
    53. }
    54. }
    55. }
    56.  
    57. }
    58.  


    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 6, 2016
  10. Offline

    Superckl1

    You don't understand. They can't be null, as in it's impossible. They are defaulted to 0 by the JVM.

    GhostHack
    Why do you have a static reference to a player...
     
  11. Offline

    GhostHack

    config file holds the following
    #This Is Where The Seconds of Delay will be set default is 15 seconds, or 300 ticks.
    #More Configurations can/will be added later
    Seconds: 15

    Superckl1
    i posted both my main and my listener

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 6, 2016
  12. Offline

    Superckl1

    Yeah, I didn't see your post. The teleport event isn't fired before the damage event, so the player is null.
     
  13. Offline

    GhostHack

    how can i fix it the only way i know wont work id have to make it a static Superckl1
     
  14. Offline

    Superckl1

    You would have to use a Set to keep track of players. If you don't know how to properly use a Set, I suggest you take the time to learn some more about Java.
     
  15. Offline

    MoeMix

    GhostHack,
    Code:java
    1. public static String prefix = (ChatColor.AQUA+"[pvp"+ChatColor.RED+"delay]"+ChatColor.GREEN);
    2.  


    shouldn't there be spaces between the pluses in line 13?? Idk it just looks wierd...
     
  16. Offline

    GhostHack

    i know sets ive programmed several things and im currently working on a java rpg game for a competition, but this is the first bukkit plugin ive done

    MoeMix
    really there should be but its not essential to have them

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 6, 2016
Thread Status:
Not open for further replies.

Share This Page