Solved Could not pass event ProjectileHitEvent- but plugin works normally

Discussion in 'Plugin Development' started by Krumb069, Apr 24, 2015.

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

    Krumb069

    Plugin works normally but gives error on console when I shoot a bow
    Error:
    Code:
    Could not pass event ProjectileHitEvent to YayArti v2.0
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:297) ~[craftbukkit.jar:git-Bukkit-33d5de3]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit.jar:git-Bukkit-33d5de3]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [craftbukkit.jar:git-Bukkit-33d5de3]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [craftbukkit.jar:git-Bukkit-33d5de3]
        at org.bukkit.craftbukkit.v1_8_R1.event.CraftEventFactory.callProjectileHitEvent(CraftEventFactory.java:728) [craftbukkit.jar:git-Bukkit-33d5de3]
        at net.minecraft.server.v1_8_R1.EntityArrow.s_(EntityArrow.java:213) [craftbukkit.jar:git-Bukkit-33d5de3]
        at net.minecraft.server.v1_8_R1.World.entityJoinedWorld(World.java:1374) [craftbukkit.jar:git-Bukkit-33d5de3]
        at net.minecraft.server.v1_8_R1.World.g(World.java:1352) [craftbukkit.jar:git-Bukkit-33d5de3]
        at net.minecraft.server.v1_8_R1.World.tickEntities(World.java:1222) [craftbukkit.jar:git-Bukkit-33d5de3]
        at net.minecraft.server.v1_8_R1.WorldServer.tickEntities(WorldServer.java:539) [craftbukkit.jar:git-Bukkit-33d5de3]
        at net.minecraft.server.v1_8_R1.MinecraftServer.z(MinecraftServer.java:715) [craftbukkit.jar:git-Bukkit-33d5de3]
        at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:284) [craftbukkit.jar:git-Bukkit-33d5de3]
        at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:609) [craftbukkit.jar:git-Bukkit-33d5de3]
        at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:517) [craftbukkit.jar:git-Bukkit-33d5de3]
        at java.lang.Thread.run(Unknown Source) [?:1.7.0_79]
    Caused by: java.lang.NullPointerException
        at com.yay.Main.okCarptiginda(Main.java:116) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_79]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_79]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_79]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_79]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:295) ~[craftbukkit.jar:git-Bukkit-33d5de3]
        ... 14 more
    Plugin:
    Code:
    package com.yay;
    
    import java.util.HashMap;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    
    import org.bukkit.Bukkit;
    import org.bukkit.GameMode;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Arrow;
    import org.bukkit.entity.Entity;
    import org.bukkit.entity.EntityType;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityShootBowEvent;
    import org.bukkit.event.entity.ProjectileHitEvent;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.plugin.java.JavaPlugin;
    
    
    
    
    public class Main extends JavaPlugin implements Listener{
        HashMap<Player, String> yayk = new HashMap<Player, String>();
         public static final Logger log = Logger.getLogger("Minecraft");
            public void onEnable() {
                Bukkit.getServer().getPluginManager().registerEvents(this, this);
                log.log(Level.INFO, "[Yay+]Yay Plugini Calisiyor!");
            }
            public void onDisable() {
                log.log(Level.INFO, "[Yay+]Yay Plugini Calisiyor!");           
            }
         public boolean onCommand(CommandSender gonderen, Command komut, String label, String[] args) {
             if (komut.getName().equalsIgnoreCase("yay")){
                 Player oyuncu = (Player) gonderen;
                 if (oyuncu.hasPermission("yay.al")) {
                   if(args.length == 0){
                      oyuncu.sendMessage("§7[§6Yay+§7]§aKullanım: §c/yay yayismi");
                      oyuncu.sendMessage("§b8Yay Listesi: §btntyay, isinlayiciyay, patlayiciyay");
    
                   }
                 }
                 if(args.length == 1){
                     if(args[0].equalsIgnoreCase("tntyay")) {
                 ItemStack tntyay = new ItemStack(Material.BOW);
                 ItemMeta tntyayMeta = tntyay.getItemMeta();
                 tntyayMeta.setDisplayName("§cTNT Yay");
                 tntyay.setItemMeta(tntyayMeta);
                 Inventory oyuncuEnvanter = oyuncu.getInventory();
                 oyuncuEnvanter.addItem(tntyay);
                 oyuncu.sendMessage("§7[§6Yay+§7]§aTNT Yay alındı.");
             }
                 }           
                  if(args.length == 1){
                     if(args[0].equalsIgnoreCase("isinlayiciyay")) {
                 ItemStack iy = new ItemStack(Material.BOW);
                 ItemMeta iyMeta = iy.getItemMeta();
                 iyMeta.setDisplayName("§cIşınlayıcı Yay");
                 iy.setItemMeta(iyMeta);
                 Inventory oyuncuEnvanter = oyuncu.getInventory();
                 oyuncuEnvanter.addItem(iy);
                 oyuncu.sendMessage("§7[§6Yay+§7]§aIşınlayıcı Yay alındı.");
             }
                 if(args.length == 1){
                      if(args[0].equalsIgnoreCase("patlayiciyay")) {
                  ItemStack py = new ItemStack(Material.BOW);
                  ItemMeta pyMeta = py.getItemMeta();
                  pyMeta.setDisplayName("§cPatlayıcı Yay");
                  py.setItemMeta(pyMeta);
                  Inventory oyuncuEnvanter = oyuncu.getInventory();
                  oyuncuEnvanter.addItem(py);
                  oyuncu.sendMessage("§7[§6Yay+§7]§aPatlayıcı Yay alındı.");
                  }           
                  }
                    }
             }
             return false;
         }
      @EventHandler
      public void okatilinca(EntityShootBowEvent e){
        if ((e.getEntity() instanceof Player)){
            Player o = (Player) e.getEntity();
            if(o.getInventory().getItemInHand().hasItemMeta()) {
             ItemStack yay = o.getItemInHand();
             ItemMeta yayMeta = yay.getItemMeta();
             if (yayMeta.getDisplayName().equalsIgnoreCase("§cPatlayıcı Yay")) {
                 yayk.put(o, "yayk1");
             }
             if (yayMeta.getDisplayName().equalsIgnoreCase("§cIşınlayıcı Yay")){
                    (e.getProjectile()).setPassenger(o);
                }
             if (yayMeta.getDisplayName().equalsIgnoreCase("§cTNT Yay")){
                 if(o.getGameMode() == GameMode.CREATIVE){
                         Entity ent = o.getWorld().spawnEntity(o.getLocation(), EntityType.PRIMED_TNT);
                         ent.setVelocity(e.getProjectile().getVelocity());
                         e.setProjectile(ent);
                     }
                 else{
                     if (o.getInventory().contains(Material.TNT)){                    
                         o.getInventory().removeItem(new ItemStack(Material.TNT));
                         Entity ent = o.getWorld().spawnEntity(o.getLocation(), EntityType.PRIMED_TNT);
                         ent.setVelocity(e.getProjectile().getVelocity());
                         e.setProjectile(ent);
                     }
                     else{
                         o.sendMessage("§7[§6Yay+§7]§aEnvanterinde TNT yok !");
                     }
                 }       
                }
            }
        }
        }
      @EventHandler
      public void okCarptiginda(final ProjectileHitEvent e){
          if (e.getEntity() instanceof Arrow) {
              final Arrow ok = (Arrow) e.getEntity();
              if (ok.getShooter() instanceof Player){
                  Player o = (Player) ok.getShooter();
                      if (yayk.get(o).equalsIgnoreCase("yayk1")) {
                          ok.getWorld().createExplosion(ok.getLocation().getX(), ok.getLocation().getY(), ok.getLocation().getZ(), 4F, false, false);
                          yayk.remove(o);
                  }
             }             
          }
        }
      }
     
  2. Offline

    teej107

  3. Offline

    Krumb069

    so how can I fix it ?
     
  4. You need to check if the item has a DisplayName:
    meta.hasDisplayName()
     
  5. Offline

    Krumb069

    I tried but still gives error.New code:
    Code:
    package com.yay;
    
    import java.util.HashMap;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    
    import org.bukkit.Bukkit;
    import org.bukkit.GameMode;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Arrow;
    import org.bukkit.entity.Entity;
    import org.bukkit.entity.EntityType;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityShootBowEvent;
    import org.bukkit.event.entity.ProjectileHitEvent;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.plugin.java.JavaPlugin;
    
    
    
    
    public class Main extends JavaPlugin implements Listener{
        HashMap<Player, String> yayk = new HashMap<Player, String>();
         public static final Logger log = Logger.getLogger("Minecraft");
            public void onEnable() {
                Bukkit.getServer().getPluginManager().registerEvents(this, this);
                log.log(Level.INFO, "[Yay+]Yay Plugini Calisiyor!");
            }
            public void onDisable() {
                log.log(Level.INFO, "[Yay+]Yay Plugini Calisiyor!");           
            }
         public boolean onCommand(CommandSender gonderen, Command komut, String label, String[] args) {
             if (komut.getName().equalsIgnoreCase("yay")){
                 Player oyuncu = (Player) gonderen;
                 if (oyuncu.hasPermission("yay.al")) {
                   if(args.length == 0){
                      oyuncu.sendMessage("§7[§6Yay+§7]§aKullanım: §c/yay yayismi");
                      oyuncu.sendMessage("§b8Yay Listesi: §btntyay, isinlayiciyay, patlayiciyay");
    
                   }
                 }
                 if(args.length == 1){
                     if(args[0].equalsIgnoreCase("tntyay")) {
                 ItemStack tntyay = new ItemStack(Material.BOW);
                 ItemMeta tntyayMeta = tntyay.getItemMeta();
                 tntyayMeta.setDisplayName("§cTNT Yay");
                 tntyay.setItemMeta(tntyayMeta);
                 Inventory oyuncuEnvanter = oyuncu.getInventory();
                 oyuncuEnvanter.addItem(tntyay);
                 oyuncu.sendMessage("§7[§6Yay+§7]§aTNT Yay alındı.");
             }
                 }           
                  if(args.length == 1){
                     if(args[0].equalsIgnoreCase("isinlayiciyay")) {
                 ItemStack iy = new ItemStack(Material.BOW);
                 ItemMeta iyMeta = iy.getItemMeta();
                 iyMeta.setDisplayName("§cIşınlayıcı Yay");
                 iy.setItemMeta(iyMeta);
                 Inventory oyuncuEnvanter = oyuncu.getInventory();
                 oyuncuEnvanter.addItem(iy);
                 oyuncu.sendMessage("§7[§6Yay+§7]§aIşınlayıcı Yay alındı.");
             }
                 if(args.length == 1){
                      if(args[0].equalsIgnoreCase("patlayiciyay")) {
                  ItemStack py = new ItemStack(Material.BOW);
                  ItemMeta pyMeta = py.getItemMeta();
                  pyMeta.setDisplayName("§cPatlayıcı Yay");
                  py.setItemMeta(pyMeta);
                  Inventory oyuncuEnvanter = oyuncu.getInventory();
                  oyuncuEnvanter.addItem(py);
                  oyuncu.sendMessage("§7[§6Yay+§7]§aPatlayıcı Yay alındı.");
                  }           
                  }
                    }
             }
             return false;
         }
      @EventHandler
      public void okatilinca(EntityShootBowEvent e){
        if ((e.getEntity() instanceof Player)){
            Player o = (Player) e.getEntity();
            if(o.getInventory().getItemInHand().hasItemMeta()) {
             ItemStack yay = o.getItemInHand();
             ItemMeta yayMeta = yay.getItemMeta();
             if (yayMeta.hasDisplayName()){
             if (yayMeta.getDisplayName().equalsIgnoreCase("§cPatlayıcı Yay")) {
                 yayk.put(o, "yayk1");
             }
             if (yayMeta.getDisplayName().equalsIgnoreCase("§cIşınlayıcı Yay")){
                    (e.getProjectile()).setPassenger(o);
                }
             if (yayMeta.getDisplayName().equalsIgnoreCase("§cTNT Yay")){
                 if(o.getGameMode() == GameMode.CREATIVE){
                         Entity ent = o.getWorld().spawnEntity(o.getLocation(), EntityType.PRIMED_TNT);
                         ent.setVelocity(e.getProjectile().getVelocity());
                         e.setProjectile(ent);
                     }
                 else{
                     if (o.getInventory().contains(Material.TNT)){                    
                         o.getInventory().removeItem(new ItemStack(Material.TNT));
                         Entity ent = o.getWorld().spawnEntity(o.getLocation(), EntityType.PRIMED_TNT);
                         ent.setVelocity(e.getProjectile().getVelocity());
                         e.setProjectile(ent);
                     }
                     else{
                         o.sendMessage("§7[§6Yay+§7]§aEnvanterinde TNT yok !");
                     }
                 }       
                }
             }
            }
        }
        }
      @EventHandler
      public void okCarptiginda(final ProjectileHitEvent e){
          if (e.getEntity() instanceof Arrow) {
              final Arrow ok = (Arrow) e.getEntity();                       
              if (ok.getShooter() instanceof Player);
                  Player o = (Player) ok.getShooter();
                      if (yayk.get(o).equalsIgnoreCase("yayk1")) {
                          ok.getWorld().createExplosion(ok.getLocation().getX(), ok.getLocation().getY(), ok.getLocation().getZ(), 4F, false, false);
                          yayk.remove(o);
                  }
             }             
          }
        }
    Solved - I put yayk0 if item has no display name

    EDIT by Timtower: merged posts
     
    Last edited by a moderator: Apr 24, 2015
Thread Status:
Not open for further replies.

Share This Page