Could not pass event InventoryClickEvent

Discussion in 'Plugin Development' started by plisov, Jul 23, 2015.

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

    plisov

    I just recently created a particles plugin where you open a gui and click a particle you want to use. Everything works fine. But in the console it keeps giving me this error.
    Error
    Code:
    [13:43:38 ERROR]: Could not pass event InventoryClickEvent to Points v1.0
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:305) ~[spigot.jar:git-Spigot-9a88a38-e2c4f20]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62) ~[spigot.jar:git-Spigot-9a88a38-e2c4f20]
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:502) [spigot.jar:git-Spigot-9a88a38-e2c4f20]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:487) [spigot.jar:git-Spigot-9a88a38-e2c4f20]
            at net.minecraft.server.v1_8_R1.PlayerConnection.a(PlayerConnection.java
    :1554) [spigot.jar:git-Spigot-9a88a38-e2c4f20]
            at net.minecraft.server.v1_8_R1.PacketPlayInWindowClick.a(SourceFile:31)
     [spigot.jar:git-Spigot-9a88a38-e2c4f20]
            at net.minecraft.server.v1_8_R1.PacketPlayInWindowClick.a(SourceFile:9)
    [spigot.jar:git-Spigot-9a88a38-e2c4f20]
            at net.minecraft.server.v1_8_R1.PacketHandleTask.run(SourceFile:13) [spi
    got.jar:git-Spigot-9a88a38-e2c4f20]
            at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [
    ?:1.8.0_51]
            at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_51]
            at net.minecraft.server.v1_8_R1.MinecraftServer.z(MinecraftServer.java:6
    83) [spigot.jar:git-Spigot-9a88a38-e2c4f20]
            at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:3
    16) [spigot.jar:git-Spigot-9a88a38-e2c4f20]
            at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:6
    23) [spigot.jar:git-Spigot-9a88a38-e2c4f20]
            at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java
    :526) [spigot.jar:git-Spigot-9a88a38-e2c4f20]
            at java.lang.Thread.run(Unknown Source) [?:1.8.0_51]
    Caused by: java.lang.NullPointerException
            at me.plisov.inv.GUI.onInventoryClick(GUI.java:203) ~[?:?]
            at sun.reflect.GeneratedMethodAccessor610.invoke(Unknown Source) ~[?:?]
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1
    .8.0_51]
            at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_51]
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:301) ~[spigot.jar:git-Spigot-9a88a38-e2c4f20]
            ... 14 more
    
    I cant figure out why its not working. Here is the class.
    Code:
    package me.plisov.inv;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    import me.plisov.Enable;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.DyeColor;
    import org.bukkit.Effect;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.inventory.InventoryClickEvent;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.plugin.Plugin;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.scheduler.BukkitRunnable;
    
    public class GUI extends BukkitRunnable implements Listener {
    
        static List<String> PlayersThatHaveParticles=new ArrayList<String>();
       
        private Enable plugin;
       
       
    //    private static Player player;
    //   
    //   
    //    public Player getPlayer() {
    //        return player;
    //    }
    //
    //    public void setPlayer(Player player) {
    //        this.player = player;
    //    }
    
        public GUI (Enable plugin) {
            this.plugin = plugin;
            //initializeStuff();
        }
       
        /*public GUI (Enable plugin, Player player) {
            this.plugin = plugin;
            initializeStuff();
            this.player = player;
        }*/
       
        //private void initializeStuff()
       
       
        public Inventory getInventory() {
            return inventory;
        }
    
        private static ItemStack emerald, emeraldstop, fire, firestop, red, green, hearts, heartstop, smoke, smokestop, more;
       
        private static Inventory inventory = Bukkit.createInventory(, 54, ChatColor.RED + "Particles GUI" + ChatColor.GREEN);
       
        static
        {
    //        if (player != null) 
    //        {
    //            Double playerBalance = Main.getBalance(player.getName());
    //            player.closeInventory();
    //            inventory = Bukkit.createInventory(null, 54, ChatColor.DARK_RED + "Particles" + ChatColor.GREEN + " P: " + ChatColor.RED + playerBalance.toString());
    //        }
            emerald = item1(ChatColor.RED + "Emerald");
            emeraldstop = item3(ChatColor.RED + "Stop Emerald");
            fire = item2(ChatColor.RED + "Fire");
            firestop = item4(ChatColor.RED + "Stop Fire");
            red = red(ChatColor.RED + "Off");
            green = green(ChatColor.RED + "On");
            hearts = hearts(ChatColor.RED + "Hearts");
            heartstop = heartstop(ChatColor.RED + "Stop Hearts");
            smoke = smoke(ChatColor.RED + "Smoke");
            smokestop = smokestop(ChatColor.RED + "Stop Smoke");
            more = more(ChatColor.GREEN + "More coming soon!");
           
            inventory.setItem(12, emerald);
            inventory.setItem(14, emeraldstop);
            inventory.setItem(21, fire);
            inventory.setItem(23, firestop);
            inventory.setItem(3, green);
            inventory.setItem(5, red);
            inventory.setItem(30, hearts);
            inventory.setItem(32, heartstop);
            inventory.setItem(39, smoke);
            inventory.setItem(41, smokestop);
           
        }
       
       
        private static ItemStack more(String name){
            ItemStack i = new ItemStack(new ItemStack(Material.IRON_FENCE));
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            im.setLore(Arrays.asList("§aTurn off smoke particles!"));
            i.setItemMeta(im);
            return i;
        }
       
        private static ItemStack smokestop(String name){
            ItemStack i = new ItemStack(new ItemStack(Material.COAL));
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            im.setLore(Arrays.asList("§aTurn off smoke particles!"));
            i.setItemMeta(im);
            return i;
        }
       
        private static ItemStack smoke(String name){
            ItemStack i = new ItemStack(new ItemStack(Material.COAL));
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            im.setLore(Arrays.asList("§aTurn on a 'smokey' particle effect!"));
            i.setItemMeta(im);
            return i;
        }
       
        @SuppressWarnings("deprecation")
        private static ItemStack green(String name){
            ItemStack i = new ItemStack(new ItemStack(Material.WOOL, 1, DyeColor.LIME.getData()));
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            im.setLore(Arrays.asList("§aTurn on"));
            i.setItemMeta(im);
            return i;
        }
       
        private static ItemStack red(String name){
            ItemStack i = new ItemStack(new ItemStack(new ItemStack(Material.BARRIER)));
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            im.setLore(Arrays.asList("§aTurn all particles off!"));
            i.setItemMeta(im);
            return i;
        }
       
        private static ItemStack item1(String name){
            ItemStack i = new ItemStack(new ItemStack(Material.EMERALD, 1));
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            im.setLore(Arrays.asList("§aGet an emerald particle effect!"));
           
            i.setItemMeta(im);
            return i;
        }
       
        private static ItemStack item3(String name){
            ItemStack i = new ItemStack(new ItemStack(Material.EMERALD, 1));
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            im.setLore(Arrays.asList("§aStop the emerald particle effect!"));
            i.setItemMeta(im);
            return i;
        }
       
        private static ItemStack item2(String name){
            ItemStack i = new ItemStack(new ItemStack(Material.FIREBALL, 1));
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            im.setLore(Arrays.asList("§aGet a fire particle effect!"));
            i.setItemMeta(im);
            return i;
        }
       
        private static ItemStack item4(String name){
            ItemStack i = new ItemStack(new ItemStack(Material.FIREBALL, 1));
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            im.setLore(Arrays.asList("§aStop the flame effect!"));
            i.setItemMeta(im);
            return i;
        }
       
        private static ItemStack hearts(String name){
            ItemStack i = new ItemStack(new ItemStack(Material.REDSTONE));
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            im.setLore(Arrays.asList("§aYou are in love!"));
            i.setItemMeta(im);
            return i;
        }
       
        private static ItemStack heartstop(String name){
            ItemStack i = new ItemStack(new ItemStack(Material.REDSTONE));
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            im.setLore(Arrays.asList("§aTurn heart particles off!"));
            i.setItemMeta(im);
            return i;
        }
        @EventHandler
        public void onInventoryClick(InventoryClickEvent e) {
            Player player = (Player) e.getWhoClicked();
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Smoke")) {
                if (!e.getInventory().getName().equalsIgnoreCase(inventory.getName())) return;
                if (e.getCurrentItem().getItemMeta() == null) return;
                    e.setCancelled(true);
                    Location loc = player.getLocation();
                    if (!PlayersThatHaveParticles.contains(player.getName()))
                       PlayersThatHaveParticles.add(player.getName());
                    Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
    
                        @Override
                        public void run() {
                            for (Player p : Bukkit.getServer().getOnlinePlayers()) {
                                loc.getWorld().playEffect(player.getLocation().add(0, 0, 0), Effect.SMOKE, 50000);
                                }
                            }
                           
                        }, 20, 1);
                    e.getWhoClicked().closeInventory();
            }
           
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Stop Smoke")) {               
                    new BukkitRunnable() {
                       public void run() {
                          if (!e.getInventory().getName().equalsIgnoreCase(inventory.getName())) return;
                            if (e.getCurrentItem().getItemMeta() == null) return;
                                Location loc = player.getLocation();
                                PlayersThatHaveParticles.remove(player.getName());
                                e.getWhoClicked().closeInventory();
                              cancel();
                           }
                       }.runTaskTimer(Enable.instance, 0, 20);
                        //if (!e.getInventory().getName().equalsIgnoreCase(inventory.getName())) return;
                        //if (e.getCurrentItem().getItemMeta() == null) return;
                            //e.setCancelled(true);
                            //Location loc = player.getLocation();
                            //PlayersThatHaveParticles.remove(player.getName());
                            //Bukkit.getScheduler().cancelAllTasks();
                            //e.getWhoClicked().closeInventory();
            }
           
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Off")) {
                if (!e.getInventory().getName().equalsIgnoreCase(inventory.getName())) return;
                if (e.getCurrentItem().getItemMeta() == null) return;
                    e.setCancelled(true);
                    Location loc = player.getLocation();
                    PlayersThatHaveParticles.remove(player.getName());
                    Bukkit.getScheduler().cancelAllTasks();
                    e.getWhoClicked().closeInventory();
            }
           
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("On")) {
                if (!e.getInventory().getName().equalsIgnoreCase(inventory.getName())) return;
                if (e.getCurrentItem().getItemMeta() == null) return;
                    e.setCancelled(true);
                    Location loc = player.getLocation();
                    e.getWhoClicked().closeInventory();
            }
           
            if (!e.getInventory().getName().equalsIgnoreCase(inventory.getName())) return;
            if (e.getCurrentItem().getItemMeta() == null) return;
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Emerald")) {
                e.setCancelled(true);
                Location loc = player.getLocation();
                if (!PlayersThatHaveParticles.contains(player.getName()))
                   PlayersThatHaveParticles.add(player.getName());
                Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
    
                    @Override
                    public void run() {
                        for (Player p : Bukkit.getServer().getOnlinePlayers()) {
                        loc.getWorld().playEffect(player.getLocation().add(0, 0, 0), Effect.HAPPY_VILLAGER, 50000);
                            }
                        }
                       
                    }, 0, 1);
                e.getWhoClicked().closeInventory();
            } 
           
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Stop Emerald")) {
                if (!e.getInventory().getName().equalsIgnoreCase(inventory.getName())) return;
                if (e.getCurrentItem().getItemMeta() == null) return;
                    e.setCancelled(true);
                    Location loc = player.getLocation();
                    PlayersThatHaveParticles.remove(player.getName());
                    Bukkit.getScheduler().cancelAllTasks();
                    e.getWhoClicked().closeInventory();
            }
           
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Fire")) {
                if (!e.getInventory().getName().equalsIgnoreCase(inventory.getName())) return;
                if (e.getCurrentItem().getItemMeta() == null) return;
                    e.setCancelled(true);
                    Location loc = player.getLocation();
                    if (!PlayersThatHaveParticles.contains(player.getName()))
                       PlayersThatHaveParticles.add(player.getName());
                    Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
    
                        @Override
                        public void run() {
                            for (Player p : Bukkit.getServer().getOnlinePlayers()) {
                            loc.getWorld().playEffect(player.getLocation().add(0, 0, 0), Effect.MOBSPAWNER_FLAMES, 50000);
                                }
                            }
                           
                        }, 0, 1);
                    e.getWhoClicked().closeInventory();
                   
            }
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Stop Fire")) {
                if (!e.getInventory().getName().equalsIgnoreCase(inventory.getName())) return;
                if (e.getCurrentItem().getItemMeta() == null) return;
                    e.setCancelled(true);
                    Location loc = player.getLocation();
                    PlayersThatHaveParticles.remove(player.getName());
                    Bukkit.getScheduler().cancelAllTasks();
                    e.getWhoClicked().closeInventory();
            }
           
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Hearts")) {
                if (!e.getInventory().getName().equalsIgnoreCase(inventory.getName())) return;
                if (e.getCurrentItem().getItemMeta() == null) return;
                    e.setCancelled(true);
                    Location loc = player.getLocation();
                    if (!PlayersThatHaveParticles.contains(player.getName()))
                       PlayersThatHaveParticles.add(player.getName());
                    Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
    
                        @Override
                        public void run() {
                            for (Player p : Bukkit.getServer().getOnlinePlayers()) {
                                loc.getWorld().playEffect(player.getEyeLocation().add(0, 0.5, 0), Effect.HEART, 1);
                                }
                            }
                           
                        }, 0, 1);
                    e.getWhoClicked().closeInventory();
            }
           
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Stop Hearts")) {
                if (!e.getInventory().getName().equalsIgnoreCase(inventory.getName())) return;
                if (e.getCurrentItem().getItemMeta() == null) return;
                    e.setCancelled(true);
                    Location loc = player.getLocation();
                    PlayersThatHaveParticles.remove(player.getName());
                    Bukkit.getScheduler().cancelAllTasks();
                    e.getWhoClicked().closeInventory();
            }
           
        }
    
        @Override
        public void run() {
            // TODO Auto-generated method stub
           
        }
    
    }
    
    Any help is much appreciated!
     
  2. Offline

    DoggyCode™

    Apparantly, your error is here:
    Code:
    Player player = (Player) e.getWhoClicked();
    Why? Don't know..
     
  3. Offline

    plisov

    Thats what i'm saying. dont know either. lol
     
  4. Offline

    bazsi700

    I'm not so sure. At the beggining before package there is an empty line. Maybe it isn't counted and its the line:

    Code:
    if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Smoke")) {
    If it is, then maybe gives the error because you clicked air and it doesn't really have itemmeta.
     
  5. Offline

    plisov

    What do you mean by "not counted"?
     
  6. Offline

    bazsi700

    I mean the first line isn't the empty line but the package.
     
Thread Status:
Not open for further replies.

Share This Page