Solved InventoryClickEvent

Discussion in 'Plugin Help/Development/Requests' started by redtsch, May 5, 2016.

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

    redtsch

    Hey guys, my InventoryClickEvent is throwing an error:
    Code:
    [14:38:12 ERROR]: Could not pass event InventoryClickEvent to RedHub v1.0
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[bukkit.jar:git-Bukkit-f326992]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[bukkit.jar:git-Bukkit-f326992]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [bukkit.jar:git-Bukkit-f326992]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [bukkit.jar:git-Bukkit-f326992]
        at net.minecraft.server.v1_9_R1.PlayerConnection.a(PlayerConnection.java:1790) [bukkit.jar:git-Bukkit-f326992]
        at net.minecraft.server.v1_9_R1.PacketPlayInWindowClick.a(SourceFile:33) [bukkit.jar:git-Bukkit-f326992]
        at net.minecraft.server.v1_9_R1.PacketPlayInWindowClick.a(SourceFile:10) [bukkit.jar:git-Bukkit-f326992]
        at net.minecraft.server.v1_9_R1.PlayerConnectionUtils$1.run(SourceFile:13) [bukkit.jar:git-Bukkit-f326992]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_60]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_60]
        at net.minecraft.server.v1_9_R1.SystemUtils.a(SourceFile:45) [bukkit.jar:git-Bukkit-f326992]
        at net.minecraft.server.v1_9_R1.MinecraftServer.D(MinecraftServer.java:679) [bukkit.jar:git-Bukkit-f326992]
        at net.minecraft.server.v1_9_R1.DedicatedServer.D(DedicatedServer.java:361) [bukkit.jar:git-Bukkit-f326992]
        at net.minecraft.server.v1_9_R1.MinecraftServer.C(MinecraftServer.java:635) [bukkit.jar:git-Bukkit-f326992]
        at net.minecraft.server.v1_9_R1.MinecraftServer.run(MinecraftServer.java:539) [bukkit.jar:git-Bukkit-f326992]
        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_60]
    Caused by: java.lang.NullPointerException
        at com.redtsch.RedHub.ServerCore.Shop.InvShopEquipClick.onClick(InvShopEquipClick.java:27) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_60]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_60]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_60]
        at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_60]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:300) ~[bukkit.jar:git-Bukkit-f326992]
        ... 15 more
    
    The weird thing is, I copied the code(below) from another class, the pasted it in other class and changed the names of items and inventories but its not working...

    InvShopEquipClick.class:
    Code:
        Utils utils = Utils.getInstance();
        Invs invs = Invs.getInstance();
        Items items = Items.getInstance();
    
        @EventHandler
        public void onClick(InventoryClickEvent event) {
            Player player = (Player) event.getWhoClicked();
    
            if (event.getInventory().getName() != "§lEquipment") {
                return;
            }
    
            if (event.getCurrentItem().getItemMeta().getDisplayName()
                    .equals(Items.shopEquipDiamondSword.getItemMeta().getDisplayName())) {
                event.setCancelled(true);
                player.closeInventory();
            }
        }
    }
    InvShopStartClick.class:
    Code:
        Utils utils = Utils.getInstance();
        Invs invs = Invs.getInstance();
        Items items = Items.getInstance();
       
        @EventHandler
        public void onClick(InventoryClickEvent event) {
            Player player = (Player) event.getWhoClicked();
    
            if (event.getInventory().getName() != "§lShop") {
                return;
            }
           
            if (event.getCurrentItem().getItemMeta().getDisplayName().equals(Items.shopStartEquip.getItemMeta().getDisplayName())) {
                event.setCancelled(true);
                player.closeInventory();
                Utils.setItemInv(Items.shopEquipDiamondSword, Invs.invShopEquip, 0);
                player.openInventory(Invs.invShopEquip);
            }
           
            if (event.getCurrentItem().getItemMeta().getDisplayName().equals(Items.shopStartFood.getItemMeta().getDisplayName())) {
                event.setCancelled(true);
                player.closeInventory();
                player.openInventory(Invs.invShopFood);
            }
    
            if (event.getCurrentItem().getItemMeta().getDisplayName().equals(Items.shopStartMagic.getItemMeta().getDisplayName())) {
                event.setCancelled(true);
                player.closeInventory();
                player.openInventory(Invs.invShopMagic);
            }
    
            if (event.getCurrentItem().getItemMeta().getDisplayName().equals(Items.shopStartBlocks.getItemMeta().getDisplayName())) {
                event.setCancelled(true);
                player.closeInventory();
                player.openInventory(Invs.invShopBlocks);
            }
    
            if (event.getCurrentItem().getItemMeta().getDisplayName().equals(Items.shopStartRareBlocks.getItemMeta().getDisplayName())) {
                event.setCancelled(true);
                player.closeInventory();
                player.openInventory(Invs.invShopRareBlocks);
            }
    
            if (event.getCurrentItem().getItemMeta().getDisplayName().equals(Items.shopStartElectronics.getItemMeta().getDisplayName())) {
                event.setCancelled(true);
                player.closeInventory();
                player.openInventory(Invs.invShopElectronics);
            }
           
            if (event.getCurrentItem().getItemMeta().getDisplayName().equals(Items.closeButton.getItemMeta().getDisplayName())) {
                event.setCancelled(true);
                player.closeInventory();
            }
           
            if (event.getCurrentItem().getItemMeta().getDisplayName().equals(Items.footerBar.getItemMeta().getDisplayName())) {
                event.setCancelled(true);
            }
        }
    }
    
    When you click on the Iron Axe(Pic1) it closes the current inventory and brings you to the equipment inventory, the only item in the equipment inventory right now it a Diamond Sword(Pic2), but when you click on the Diamond Sword, nothing happens.

    What am I doing wrong?
     

    Attached Files:

  2. Offline

    Caedus

    Code:
    if (event.getInventory().getName() != "§lEquipment")
    This isn't the solution to your problem, but you should compare strings using .equals and not !=
     
  3. Offline

    redtsch

    @Caedus
    I figured out the problem, thanks for the response.
    I was using != as a temporary solution because I didn't have much time when I was writing the code.
    Thanks again.
     
Thread Status:
Not open for further replies.

Share This Page