Could not pass event InventoryClickEvent

Discussion in 'Plugin Development' started by abdalakdade, Jan 4, 2018.

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

    abdalakdade

    Plz help i want to make a menu for teleport to Different Games and im getting this error on my console:


    Code:
    [10:34:50 ERROR]: Could not pass event InventoryClickEvent to pvp v1.0 org.bukkit.event.EventException: null         at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:298) ~[craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:498) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:483) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:1808) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at net.minecraft.server.v1_12_R1.PacketPlayInWindowClick.a(SourceFile:33) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at net.minecraft.server.v1_12_R1.PacketPlayInWindowClick.a(SourceFile:10) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at net.minecraft.server.v1_12_R1.PlayerConnectionUtils$1.run(SourceFile:13) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_112]         at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_112]         at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:695) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:370) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:650) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:554) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at java.lang.Thread.run(Thread.java:745) [?:1.8.0_112] Caused by: java.lang.NullPointerException         at org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer.teleport(CraftPlayer.java:528) ~[craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at org.bukkit.craftbukkit.v1_12_R1.entity.CraftEntity.teleport(CraftEntity.java:271) ~[craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at me.abd123.gui2.gui2.onClick(gui2.java:93) ~[?:?]         at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) ~[?:?]         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_112]         at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_112]         at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:296) ~[craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         ... 15 more [10:34:51 ERROR]: Could not pass event InventoryClickEvent to pvp v1.0 org.bukkit.event.EventException: null         at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:298) ~[craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:498) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:483) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:1808) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at net.minecraft.server.v1_12_R1.PacketPlayInWindowClick.a(SourceFile:33) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at net.minecraft.server.v1_12_R1.PacketPlayInWindowClick.a(SourceFile:10) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at net.minecraft.server.v1_12_R1.PlayerConnectionUtils$1.run(SourceFile:13) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_112]         at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_112]         at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:695) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:370) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:650) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:554) [craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at java.lang.Thread.run(Thread.java:745) [?:1.8.0_112] Caused by: java.lang.NullPointerException         at org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer.teleport(CraftPlayer.java:528) ~[craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at org.bukkit.craftbukkit.v1_12_R1.entity.CraftEntity.teleport(CraftEntity.java:271) ~[craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         at me.abd123.gui2.gui2.onClick(gui2.java:93) ~[?:?]         at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) ~[?:?]         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_112]         at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_112]         at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:296) ~[craftbukkit-1.12.jar:git-Bukkit-9a1fc1e]         ... 15 more
    
    and this is my code
    Code:
    package me.abd123.gui2;
    
    import java.util.ArrayList;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.Sound;
    import org.bukkit.World;
    import org.bukkit.entity.Item;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.inventory.InventoryClickEvent;
    import org.bukkit.event.player.PlayerDropItemEvent;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    
    public class gui2 implements Listener {
       
        public void onjoin(PlayerJoinEvent e){
           
            Player p = e.getPlayer();
            ItemStack com = new ItemStack(Material.COMPASS);
            p.getInventory().addItem(com);
        }
       
    
        public void openGUI(Player p){
           
            Inventory inv  = Bukkit.createInventory(null, 27, (ChatColor.translateAlternateColorCodes('&', "&2----------------&4GAMES&2----------------")));
            ItemStack Hub = new ItemStack(Material.SLIME_BALL);
            ItemMeta Hubm = Hub.getItemMeta();
            Hubm.setDisplayName("Hub");
            ArrayList<String> Slore = new ArrayList<String>();
            Slore.add(ChatColor.translateAlternateColorCodes('&', "&6Telepot to The Main HUb"));
            Slore.add(ChatColor.AQUA.toString());
            Hubm.setLore(Slore);
            Hub.setItemMeta(Hubm);
           
            ItemStack pvp = new ItemStack(Material.DIAMOND_SWORD);
            ItemMeta pvpm = pvp.getItemMeta();
            pvpm.setDisplayName("Kit PVP");
            ArrayList<String> plore = new ArrayList<String>();
            plore.add(ChatColor.translateAlternateColorCodes('&', "&6Telepot to Kit PVP"));
            plore.add(ChatColor.AQUA.toString());
            pvpm.setLore(plore);
            pvp.setItemMeta(pvpm);
           
            inv.setItem(5, Hub);
            p.openInventory(inv);
           
            inv.setItem(2, pvp);
            p.openInventory(inv);
        }
       
        @EventHandler
       
        public void onClick(InventoryClickEvent event){
            if(event.getWhoClicked() instanceof Player){
               
    
           
            Player p = (Player)event.getWhoClicked();
           
            ItemStack item =event.getCurrentItem();
        if(item.hasItemMeta()) {
           
            if(event.getRawSlot() == 2){
                p.getInventory().clear();
                    p.sendMessage(ChatColor.translateAlternateColorCodes('&',"&1Teleporting you to KitPvP"));
                    ItemStack c = new ItemStack(Material.COMPASS);
                    p.getInventory().setItem(2, c);
    
                    Location pvp = new Location(Bukkit.getWorld("pvp"), 1307, 4, -928);
                    p.teleport(pvp);
                   
             
            }
      
        if(event.getRawSlot() == 5){
            p.getInventory().clear();
                p.sendMessage(ChatColor.translateAlternateColorCodes('&',"&1Teleporting you to Hub"));
                ItemStack c = new ItemStack(Material.COMPASS);
                p.getInventory().setItem(2, c);
    
                Location location = new Location(Bukkit.getWorld("Hub"), 293, 5, 223);
                p.teleport(location);
               
         
        }
        }
            }
            }
           
         
            @EventHandler
            public void onPunch(PlayerInteractEvent event){
               
                Player p = event.getPlayer();
                if(p.getItemInHand().getType().equals(Material.COMPASS)){
                openGUI(p);
                p.playSound(p.getLocation(), Sound.ENTITY_BAT_TAKEOFF, 10, 1);
               
               
            }else if(p.getItemInHand().hasItemMeta() && p.getItemInHand().getItemMeta().getDisplayName().equals("Open GUI") && p.getItemInHand().getType().equals(Material.ARROW)) { 
                openGUI(p);
                p.playSound(p.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 10, 1);
          }
         
       
               
    }
            @EventHandler
            public void onJon(PlayerJoinEvent e){
                Player p = e.getPlayer();
                ItemStack d = new ItemStack(Material.COMPASS);
                p.getInventory().addItem(d);
               
            }
       
    
              @EventHandler
                public void onPlayerDropItem(PlayerDropItemEvent e) {
                    Item item = e.getItemDrop();
                    if (item.getItemStack().getType().equals(Material.COMPASS)) {
                        e.setCancelled(true);
                    }
                }
    
    
    }
    
     
  2. Offline

    nullYoung

    You don't need to execute cast from HumanEntity to Player. Maybe it's the problem.
     
  3. Offline

    Max8801

    That would throw a ClassCastException but in this case we have a NullPointerException.

    @abdalakdade Could you please tell me what line 93 of the class gui2 looks like? According to the error stack, the NullPointerException seems to originate from there. Also, you seem to have forgotten to add the @EventHandler annotation to the onJoin method.
     
  4. Offline

    abdalakdade

    OK i can do plz tell how to fix the problem

    i post the code up here is the line 93 of gui2:

    p.teleport(pvp);

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jan 4, 2018
  5. Offline

    Drkmaster83

    Well, your code has a lot of problems. You don't null-check the ItemStack in the click event, you don't make sure that the inventory is the inventory GUI you want to listen to, you create Items over and over again instead of storing one instance and not modifying it, and you have two onJoin events that do the same thing, yet one does not have an EventHandler annotation.

    Click 4 spoonfeeding lol (open)
    Code:
    package me.abd123.gui2;
    
    import java.util.ArrayList;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.Sound;
    import org.bukkit.entity.Item;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.inventory.InventoryClickEvent;
    import org.bukkit.event.player.PlayerDropItemEvent;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    
    public class gui2 implements Listener {
    
        private ItemStack com, hub, pvp;
        private Location hubLoc, pvpLoc;
     
        public gui2() {
            com = new ItemStack(Material.COMPASS);
            ItemMeta im = com.getItemMeta();
            im.setDisplayName(ChatColor.GOLD + "GUI Menu Compass");
            com.setItemMeta(im);
         
            hub = new ItemStack(Material.SLIME_BALL);
            ItemMeta hubMeta = hub.getItemMeta();
            hubMeta.setDisplayName("Hub");
            ArrayList<String> hLore = new ArrayList<String>();
            hLore.add(ChatColor.GOLD + "Teleport to The Main Hub");
            hLore.add(ChatColor.AQUA.toString());
            hubMeta.setLore(hLore);
            hub.setItemMeta(hubMeta);
         
            pvp = new ItemStack(Material.DIAMOND_SWORD);
            ItemMeta pvpMeta = pvp.getItemMeta();
            pvpMeta.setDisplayName("Kit PVP");
            ArrayList<String> pLore = new ArrayList<String>();
            pLore.add(ChatColor.GOLD + "Teleport to Kit PVP");
            pLore.add(ChatColor.AQUA.toString());
            pvpMeta.setLore(pLore);
            pvp.setItemMeta(pvpMeta);
         
            pvpLoc = new Location(Bukkit.getWorld("pvp"), 1307, 4, -928);
            hubLoc = new Location(Bukkit.getWorld("Hub"), 293, 5, 223);
        }
     
        @EventHandler
        public void onJoin(PlayerJoinEvent e){
            Player p = e.getPlayer();
            p.getInventory().addItem(com);
        }
    
        public void openGUI(Player p){
            Inventory inv  = Bukkit.createInventory(null, 27, (ChatColor.translateAlternateColorCodes('&', "&2----------------&4GAMES&2----------------")));
    
            inv.setItem(5, hub);
            p.openInventory(inv);
    
            inv.setItem(2, pvp);
            p.openInventory(inv);
        }
    
        @EventHandler
    
        public void onClick(InventoryClickEvent event){
            if(!(event.getWhoClicked() instanceof Player)) return;
            if(event.getInventory().getTitle() != null) {}
            Player p = (Player)event.getWhoClicked();
    
            ItemStack item =event.getCurrentItem();
            if(item == null) return;
            if(!item.hasItemMeta()) return;
            if(event.getRawSlot() == 2){
                p.getInventory().clear();
                p.sendMessage(ChatColor.DARK_BLUE + "Teleporting you to KitPvP");
                p.getInventory().setItem(2, com);
    
                p.teleport(pvpLoc);
            }
            else if(event.getRawSlot() == 5){
                p.getInventory().clear();
                p.sendMessage(ChatColor.DARK_BLUE + "Teleporting you to Hub");
                p.getInventory().setItem(2, com);
             
                p.teleport(hubLoc);
            }
        }
    
        @EventHandler
        public void onPunch(PlayerInteractEvent event){
            Player p = event.getPlayer();
            if(p.getItemInHand() == null) return;
            ItemStack clicked = p.getItemInHand();
            if(clicked.isSimilar(com)){
                openGUI(p);
                p.playSound(p.getLocation(), Sound.ENTITY_BAT_TAKEOFF, 10, 1);
            }
            else if(clicked.getType() == Material.ARROW && clicked.hasItemMeta() && clicked.getItemMeta().hasDisplayName() && clicked.getItemMeta().getDisplayName().equals("Open GUI")) {
                openGUI(p);
                p.playSound(p.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 10, 1);
            }
        }
    
        @EventHandler
        public void onPlayerDropItem(PlayerDropItemEvent e) {
            Item item = e.getItemDrop();
            if (item.getItemStack().isSimilar(com)) {
                e.setCancelled(true);
            }
        }
    }

    Also formatted your code, it was hard to see what was going on. Added some null checks for the PlayerInteractEvent as well.

    Edit: put "spoonfeed" in spoilers
     
    Last edited: Jan 5, 2018
  6. Offline

    abdalakdade

    also not work i think the the error from the world because when i click the item it do every thing but he not teleport
    so.. how can i fix the world 100% working i try it on offline mode but in server it not work plz help
     
  7. Offline

    Max8801

    Spoonfeeding...
     
  8. Offline

    Drkmaster83

    Boo-hoo, I also explain the issues that were wrong with the code.

    From the error, it looks like either "Hub" or "pvp" is not a world; they're a null world.
     
  9. Offline

    Max8801

    For this, I'd like to quote @Zombie_Striker s guide to making a thread in this sub-forum. He wrote the following about spoonfeeding:
    (Original)

    That being said, I'd like to add that taking @abdalakdade s whole class, correcting its errors and handing it back to him is the worst form of spoonfeeding. Your post can even get deleted by a moderator for it (Talking from my own experience).
     
    Zombie_Striker likes this.
  10. Offline

    Drkmaster83

    I've had one of my posts deleted in the past for such a thing, however their reason was it had no explanation. Adding an explanation as to what was wrong doesn't make it entirely spoonfeeding. Most I'll do different is put the corrected code in a spoiler.

    All I'm saying is two things:
    Everyone starts somewhere, for me, it helped when I was able to compare the differences in code, but that could just be me.
    Granted there are some types of people that should really not be making plugins, trust me when I say there are also people who will keep trying their damnedest even if they're clearly not getting it.
     
  11. Offline

    Max8801

    It's a NullPointerException. Every quick Google search result will tell you how to narrow it down and fix it. If someone else keeps on doing the debugging for him, he he will never learn to find errors by himself.
     
    Zombie_Striker likes this.
Thread Status:
Not open for further replies.

Share This Page