Null Pointer Exception

Discussion in 'Plugin Development' started by BurnerDiamond, Mar 4, 2015.

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

    BurnerDiamond

    I currently have this code:

    Code:
    package mc.ecombat;
    
    import org.bukkit.ChatColor;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.bukkit.plugin.Plugin;
    
    import java.util.HashMap;
    
    /**
    * Created by maxmigliorini on 03/03/15.
    */
    public class CombatTag implements Listener {
    
        private static Main main;
        public CombatTag(Main main) {
            this.main = main;
        }
    
        @EventHandler
        public void onHit(EntityDamageByEntityEvent e) {
    
            int first = 0;
            int second = 0;
    
            HashMap<Player, Boolean> walls = new HashMap<Player, Boolean>();
            final HashMap<Player, Integer> seconds = new HashMap<Player, Integer>();
    
            if(e.getDamager() instanceof Player) {
                if(e.getEntity() instanceof Player) {
    
                    final Player damager = (Player) e.getDamager();
                    final Player receiver = (Player) e.getEntity();
    
                    walls.put(damager, true); walls.put(receiver, true);
    
                    damager.sendMessage(ChatColor.YELLOW + "You have combat tagged " + ChatColor.RED + receiver.getName());
                    receiver.sendMessage(ChatColor.YELLOW + "You have been combat tagged " + ChatColor.RED + damager.getName());
    
    
                    if(walls.get(damager) == false) {
                        Walls.Walls(damager);
                        walls.put(damager, true);
                        seconds.put(damager, 20);
                    }
    
                    if(walls.get(receiver) == false) {
                        Walls.Walls(receiver);
                        walls.put(receiver, true);
                        seconds.put(receiver, 20);
                    }
    
                    if(walls.get(damager) == true) {
                        if(seconds.get(damager) == 20) {
                            first = main.getServer().getScheduler().scheduleSyncRepeatingTask(main, new Runnable() {
                                @Override
                                public void run() {
                                    if(seconds.get(damager) != 0) {
                                        int timeLeft = seconds.get(damager);
                                        timeLeft--;
                                        seconds.put(damager, timeLeft);
                                    }
                                }
                            },0,20L);
                        }
                        if(seconds.get(damager) == 0) {
                            main.getServer().getScheduler().cancelTask(first);
                            damager.sendMessage("You are no longer combat tagged you can now leave the server!");
                        }
                    }
    
                    if(walls.get(receiver) == true) {
                        if(seconds.get(receiver) == 20) {
                            main.getServer().getScheduler().scheduleSyncRepeatingTask(main, new Runnable() {
                                @Override
                                public void run() {
                                    if(seconds.get(receiver) != 0) {
                                        int timeLeft = seconds.get(receiver);
                                        timeLeft--;
                                        seconds.put(receiver, timeLeft);
                                    }
                                }
                            },0,20L);
                        }
    
                        if(seconds.get(receiver) == 0) {
                            main.getServer().getScheduler().cancelTask(second);
                            receiver.sendMessage("You are no longer combat tagged you can now leave the server!");
                        }
    
                    }
    
    
                }
            }
        }
    }
    
    The errors is on line 56 which is this one:

    Code:
    if(seconds.get(damager) == 20) {
    Which means seconds is null.

    But it is not null since I do this in the code:

    Code:
    seconds.put(damager, 20);
    Here is the error:

    Code:
    [15:39:25 ERROR]: Could not pass event EntityDamageByEntityEvent to ECombat v1.0
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:294) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.callEvent(CraftEventFactory.java:107) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:537) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:450) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.handleLivingEntityDamageEvent(CraftEventFactory.java:569) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityLiving.d(EntityLiving.java:1031) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityHuman.d(EntityHuman.java:817) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityLiving.damageEntity(EntityLiving.java:675) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityHuman.damageEntity(EntityHuman.java:758) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityPlayer.damageEntity(EntityPlayer.java:448) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityHuman.attack(EntityHuman.java:943) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java:1107) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.PacketPlayInUseEntity.a(SourceFile:55) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.PacketPlayInUseEntity.handle(SourceFile:10) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:157) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.ServerConnection.c(SourceFile:134) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:667) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:258) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:558) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:469) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
    Caused by: java.lang.NullPointerException
        at mc.ecombat.CombatTag.onHit(CombatTag.java:56) ~[?:?]
        at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_31]
        at java.lang.reflect.Method.invoke(Method.java:483) ~[?:1.8.0_31]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:292) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        ... 23 more
    I'm not sure, if it's 2 errors or only one.

    EDIT by Timtower: merged posts
     
    Last edited by a moderator: Mar 4, 2015
  2. Offline

    greyhunter99

    At line 37, you put both walls(reciever) and walls(damager) to true and the seconds is only changed from null when these are false. And since you set them to true no matter what they never change value.
     
  3. Offline

    BurnerDiamond

    @greyhunter99

    What a stupid mistake on my part.

    Will test it out now!
     
Thread Status:
Not open for further replies.

Share This Page