Solved Help with null error

Discussion in 'Plugin Development' started by PimpDuck, Dec 8, 2013.

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

    PimpDuck

    So I'm creating this plugin ArrowsPlus and I'm' trying to get when there's already that enchantment on the bow it says "This enchantment is already on this bow" but I'm getting an error :(

    Code:
    Code:java
    1. else if (args[0].equalsIgnoreCase("slowness")) {
    2. if ((sender.hasPermission("arrowsplus.*")) || (sender.hasPermission("arrowsplus.slowness")))
    3. {
    4. if(!(player.getItemInHand().getItemMeta().getLore().contains(ChatColor.GRAY + "Slowness Arrow I"))){
    5. l.add(ChatColor.GRAY + "Slowness Arrow I");
    6. }else{
    7. sender.sendMessage(ChatColor.AQUA + "[ArrowsPlus] " + ChatColor.RED + "This bow already contains this enchantment!");
    8. }
    9. sender.sendMessage(ChatColor.AQUA + "[ArrowsPlus] " + ChatColor.GOLD + "Enchantment added to your bow!");
    10. }
    11. else {
    12. sender.sendMessage(ChatColor.AQUA + "[ArrowsPlus] " + ChatColor.RED + "You dont have the permission to do this!");
    13. }
    14. }


    Error:
    Code:
    [21:37:06 INFO]: PimpDuck issued server command: /arrowsplus slowness
    [21:37:06 ERROR]: null
    org.bukkit.command.CommandException: Unhandled exception executing command 'arro
    wsplus' in plugin ArrowsPlus v1.0
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[cra
    ftbukkit.jar:git-Bukkit-1.6.4-R2.0-21-gcf51e92-b2938jnks]
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:19
    2) ~[craftbukkit.jar:git-Bukkit-1.6.4-R2.0-21-gcf51e92-b2938jnks]
            at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchCommand(CraftServe
    r.java:542) ~[craftbukkit.jar:git-Bukkit-1.6.4-R2.0-21-gcf51e92-b2938jnks]
            at net.minecraft.server.v1_7_R1.PlayerConnection.handleCommand(PlayerCon
    nection.java:925) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-21-gcf51e92-b2938jnks]
            at net.minecraft.server.v1_7_R1.PlayerConnection.a(PlayerConnection.java
    :805) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-21-gcf51e92-b2938jnks]
            at net.minecraft.server.v1_7_R1.PacketPlayInChat.a(PacketPlayInChat.java
    :28) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-21-gcf51e92-b2938jnks]
            at net.minecraft.server.v1_7_R1.PacketPlayInChat.handle(PacketPlayInChat
    .java:47) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-21-gcf51e92-b2938jnks]
            at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:146
    ) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-21-gcf51e92-b2938jnks]
            at net.minecraft.server.v1_7_R1.ServerConnection.c(SourceFile:134) [craf
    tbukkit.jar:git-Bukkit-1.6.4-R2.0-21-gcf51e92-b2938jnks]
            at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:6
    51) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-21-gcf51e92-b2938jnks]
            at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:2
    50) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-21-gcf51e92-b2938jnks]
            at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:5
    41) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-21-gcf51e92-b2938jnks]
            at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java
    :453) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-21-gcf51e92-b2938jnks]
            at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:6
    17) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-21-gcf51e92-b2938jnks]
    Caused by: java.lang.NullPointerException
            at me.PimpDuck.ArrowsPlus.BowEnchants.onCommand(BowEnchants.java:246) ~[
    ?:?]
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[cra
    ftbukkit.jar:git-Bukkit-1.6.4-R2.0-21-gcf51e92-b2938jnks]
            ... 13 more
    > 
    Any help. Please?
     
  2. Offline

    FabeGabeMC

    PimpDuck
    You probably forgot to add the if(...) statement for the enchantments. I am not sure.
    I am not good with enchantment stuff in coding but I think it goes like this:
    Code:java
    1. if(player.getItemInHand().getItemMeta().getEnchantment().contains(<your enchantment goes here>);

    Btw, what does l represent or define?
     
  3. Offline

    PimpDuck

    Bump, please?
     
  4. Offline

    reider45

    I believe above
    Code:java
    1. if(!(player.getItemInHand().getItemMeta().getLore().contains(ChatColor.GRAY + "Slowness Arrow I"))){

    Try adding a null check so like
    Code:java
    1. if(player.getItemInHand() != null){
    2. }
    3.  
    4. // and other checks like
    5.  
    6. if(player.getItemInHand().getItemMeta().getLore() != null){
    7. }



    Just checks like that in your code.
     
    PimpDuck likes this.
  5. Can you paste your entire class, cause its giving the npe on line 246, and from what you posted, we have no idea where that is.

    p.s. Dont bump that often, it shouldent even be off the first page in an hour.

    EDIT:
    What reider45 said
     
    reider45 likes this.
  6. Offline

    PimpDuck

    reider45 I got it. This seems to be working fine. Thanks :)
    Code:java
    1. else if (args[0].equalsIgnoreCase("slowness")) {
    2. if ((sender.hasPermission("arrowsplus.*")) || (sender.hasPermission("arrowsplus.slowness")))
    3. {
    4. if(player.getItemInHand().getItemMeta().getLore() == null){
    5. l.add(ChatColor.GRAY + "Slowness Arrow I");
    6. }else{
    7. sender.sendMessage(ChatColor.AQUA + "[ArrowsPlus] " + ChatColor.RED + "This bow already contains this enchantment!");
    8. return false;
    9. }
    10. sender.sendMessage(ChatColor.AQUA + "[ArrowsPlus] " + ChatColor.GOLD + "Enchantment added to your bow!");
    11. }
    12. else {
    13. sender.sendMessage(ChatColor.AQUA + "[ArrowsPlus] " + ChatColor.RED + "You dont have the permission to do this!");
    14. }
    15. }
     
    reider45 likes this.
  7. Offline

    reider45

    PimpDuck


    No problem :D
    Good luck with your plugin!
     
    PimpDuck likes this.
Thread Status:
Not open for further replies.

Share This Page