[GUI] on Item Click Open Inventory Error!

Discussion in 'Plugin Help/Development/Requests' started by BechGameplay, Jan 25, 2015.

Thread Status:
Not open for further replies.
  1. Hi Guys!

    Im trying to make this plugin, were you can do /shop and then it opens a GUI. When you get in there is some main Menus and when you get into the Main Menus there is Under Menus
    I Figured out how open a Under Menu when i click on the first item in a GUI.
    But when i use the Exact same code in a new Class and click on the second item it just gives me an error.
    Please Help ;)

    My under menus are in diffrent classes.

    MAIN MENU CODE (Look at the bottom of the code):
    Code:
    package com.BechGameplay.menuplus;
    
    import java.util.Arrays;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    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;
    
    public class mainmenu implements Listener{
       
       
        static Inventory mainmenu;
        private ItemStack Random, Mining, Farming, ByggeBlocks, Redstone, BaseMaterialer, Spawners, PvP, PotionMaterialer, Mad, RaidMaterialer;
       
        public mainmenu(Plugin p) {
            mainmenu = Bukkit.getServer().createInventory(null, 27, ChatColor.DARK_BLUE.toString() + ChatColor.BOLD.toString() +  "=======XENA-SHOP=======");
           
            Mining = Mining(Material.DIAMOND, "Mining Ting");
            Random = Random(Material.STRING, "Random Ting");
            Farming = Farming(Material.WHEAT, "Farming Ting!");
            ByggeBlocks = ByggeBlocks(Material.BRICK, "Bygge Blocks");
            Redstone = Redstone(Material.REDSTONE, "Redstone Materialer");
            BaseMaterialer = BaseMaterialer(Material.BEACON, "Base Materialer");
            Spawners = Spawners(Material.MOB_SPAWNER, "Spawners");
            PvP = PvP(Material.DIAMOND_SWORD, "PvP Ting");
            PotionMaterialer = PotionMaterialer(Material.NETHER_WARTS, "Potion Materialer");
            Mad = Mad(Material.COOKED_BEEF, "Mad");
            RaidMaterialer = RaidMaterialer(Material.TNT, "Raid Materialer");
           
            mainmenu.setItem(0, Mining);
            mainmenu.setItem(2, ByggeBlocks);
            mainmenu.setItem(4, Redstone);
            mainmenu.setItem(6, BaseMaterialer);
            mainmenu.setItem(8, Spawners);
            mainmenu.setItem(10, PvP);
            mainmenu.setItem(12, PotionMaterialer);
            mainmenu.setItem(14, Mad);
            mainmenu.setItem(16, RaidMaterialer);
            mainmenu.setItem(20, Farming);
            mainmenu.setItem(24, Random);
           
           
            Bukkit.getServer().getPluginManager().registerEvents(this, p);
           
        }
        private ItemStack Mining(Material mat, String name) {
            ItemStack i = new ItemStack(Material.DIAMOND, 1);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            im.setLore(Arrays.asList("Køb dine Mining Ting her!"));
            i.setItemMeta(im);
            return i;
        }
        private ItemStack Random(Material mat, String name) {
            ItemStack i = new ItemStack(Material.STRING, 1);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            im.setLore(Arrays.asList("Køb dine Random Items her!"));
            i.setItemMeta(im);
            return i;
        }
       
        private ItemStack ByggeBlocks(Material mat, String name) {
            ItemStack i = new ItemStack(Material.BRICK, 1);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            im.setLore(Arrays.asList("Køb dine Bygge Blocks her!"));
            i.setItemMeta(im);
            return i;
        }
       
        private ItemStack Redstone(Material mat, String name) {
            ItemStack i = new ItemStack(Material.REDSTONE, 1);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            im.setLore(Arrays.asList("Køb alt dit Redstone her!"));
            i.setItemMeta(im);
            return i;
        }
        private ItemStack BaseMaterialer(Material mat, String name) {
            ItemStack i = new ItemStack(Material.BEACON, 1);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            im.setLore(Arrays.asList("Køb alt til din Base her!"));
            i.setItemMeta(im);
            return i;
        }
        private ItemStack Spawners(Material mat, String name) {
            ItemStack i = new ItemStack(Material.MOB_SPAWNER, 1);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            im.setLore(Arrays.asList("Køb Mob-Spawners her!"));
            i.setItemMeta(im);
            return i;
        }
        private ItemStack PvP(Material mat, String name) {
            ItemStack i = new ItemStack(Material.DIAMOND_SWORD, 1);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            im.setLore(Arrays.asList("Køb PVP Items her!"));
            i.setItemMeta(im);
            return i;
        }
        private ItemStack PotionMaterialer(Material mat, String name) {
            ItemStack i = new ItemStack(Material.GLOWSTONE_DUST, 1);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            im.setLore(Arrays.asList("Køb alt til Potions her!"));
            i.setItemMeta(im);
            return i;
        }
        private ItemStack Mad(Material mat, String name) {
            ItemStack i = new ItemStack(Material.COOKED_BEEF, 1);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            im.setLore(Arrays.asList("Køb alt dit Mad her!"));
            i.setItemMeta(im);
            return i;
        }
        private ItemStack RaidMaterialer(Material mat, String name) {
            ItemStack i = new ItemStack(Material.TNT, 1);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            im.setLore(Arrays.asList("Køb alle dine Raid materialer her!"));
            i.setItemMeta(im);
            return i;
        }
        private ItemStack Farming(Material mat, String name) {
            ItemStack i = new ItemStack(Material.WHEAT, 1);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            im.setLore(Arrays.asList("Køb alt til din Baghave her!"));
            i.setItemMeta(im);
            return i;
        }
       
       
       
       
       
       
        public void showmainmenu(Player p){
            p.openInventory(mainmenu);
        }
       
       
        @EventHandler
        public void onInventoryClickE(InventoryClickEvent e) {
            if (!e.getInventory().getName().equalsIgnoreCase(mainmenu.getName())) return;
           
            if(e.getCurrentItem().getItemMeta() == null) return;
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Mining Ting")){
                e.setCancelled(true);
    
              //THIS WORKS JUST FINE!
    
                e.getWhoClicked().openInventory(MiningMenu.menu);
               
            }
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Base Materialer")){
                e.setCancelled(true);
               
    
                  //ITS FAILING HERE! IT CANT OPEN THE MENU
                e.getWhoClicked().openInventory(BaseMenu.menu);
               
            }
           
        }
    
    }
    
    UNDER MENU 1 (THIS ONE WORKS):
    Code:
    package com.BechGameplay.menuplus;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    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;
    
    public class MiningMenu implements Listener{
       
       
        static Inventory menu;
        private ItemStack Back, Exit, Diamond, Jern, Guld, DiamondPickaxe, DiamondSkovl;
       
        public MiningMenu(Plugin p) {
            menu = Bukkit.getServer().createInventory(null, 27, ChatColor.DARK_BLUE.toString() + ChatColor.BOLD.toString() +  "=======XENA MINING=======");
           
            Back = Back(Material.MAP, "Tilbage til MainMenu");
            Exit = Exit(Material.SLIME_BALL, "Luk Menuen");
            Diamond = Diamond(Material.DIAMOND, "Diamond - 250,-");
            Jern = Jern(Material.IRON_INGOT, "Jern - 500,-");
            Guld = Guld(Material.WHEAT, "Guld - 1500,-");
            DiamondPickaxe = DiamondPickaxe(Material.BRICK, "Diamond Pickaxe - 800,-");
            DiamondSkovl = DiamondSkovl(Material.REDSTONE, "Diamond Skovl - 300,-");
           
            menu.setItem(21, Back);
            menu.setItem(23, Exit);
            menu.setItem(2, Diamond);
            menu.setItem(0, Jern);
            menu.setItem(4, Guld);
            menu.setItem(6, DiamondPickaxe);
            menu.setItem(8, DiamondSkovl);
           
           
            Bukkit.getServer().getPluginManager().registerEvents(this, p);
           
        }
        private ItemStack Back(Material mat, String name) {
            ItemStack i = new ItemStack(Material.MAP, 1);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            i.setItemMeta(im);
            return i;
        }
        private ItemStack Exit(Material mat, String name) {
            ItemStack i = new ItemStack(Material.SLIME_BALL, 1);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            i.setItemMeta(im);
            return i;
        }
        private ItemStack Diamond(Material mat, String name) {
            ItemStack i = new ItemStack(Material.DIAMOND, 1);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            i.setItemMeta(im);
            return i;
        }
        private ItemStack Jern(Material mat, String name) {
            ItemStack i = new ItemStack(Material.IRON_INGOT, 16);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            i.setItemMeta(im);
            return i;
        }
       
        private ItemStack Guld(Material mat, String name) {
            ItemStack i = new ItemStack(Material.GOLD_INGOT, 16);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            i.setItemMeta(im);
            return i;
        }
       
        private ItemStack DiamondPickaxe(Material mat, String name) {
            ItemStack i = new ItemStack(Material.DIAMOND_PICKAXE, 1);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            i.setItemMeta(im);
            return i;
        }
        private ItemStack DiamondSkovl(Material mat, String name) {
            ItemStack i = new ItemStack(Material.DIAMOND_SPADE, 1);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            i.setItemMeta(im);
            return i;
        }
       
       
        public void showmainmenu(Player p){
            p.openInventory(menu);
        }
       
       
        @EventHandler
        public void onInventoryClickE(InventoryClickEvent e) {
            if (!e.getInventory().getName().equalsIgnoreCase(menu.getName())) return;
           
            if(e.getCurrentItem().getItemMeta() == null) return;
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Diamond - 250,-")){
                e.setCancelled(true);
    
                e.getWhoClicked().getInventory().addItem(new ItemStack(Material.DIAMOND, 1));
               
            }
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Tilbage til MainMenu")){
                e.setCancelled(true);
    
                e.getWhoClicked().openInventory(mainmenu.mainmenu);
               
            }
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Jern - 500,-")){
                e.setCancelled(true);
    
                e.getWhoClicked().getInventory().addItem(new ItemStack(Material.IRON_INGOT, 16));
               
            }
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Guld - 1500,-")){
                e.setCancelled(true);
    
                e.getWhoClicked().getInventory().addItem(new ItemStack(Material.GOLD_INGOT, 16));
               
            }
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Diamond Pickaxe - 800,-")){
                e.setCancelled(true);
    
                e.getWhoClicked().getInventory().addItem(new ItemStack(Material.DIAMOND_PICKAXE, 1));
               
            }
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Diamond Skovl - 300,-")){
                e.setCancelled(true);
    
                e.getWhoClicked().getInventory().addItem(new ItemStack(Material.DIAMOND_SPADE, 1));
               
            }
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Luk Menuen")){
                e.setCancelled(true);
    
                e.getWhoClicked().closeInventory();
               
            }
           
        }
    
    }
    
    UNDER MENU 2 (Exact Same code as "Under Menu 1", but it doesent work when im trying to open it, in the main menu):
    Code:
    package com.BechGameplay.menuplus;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    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;
    
    public class BaseMenu implements Listener{
       
       
        static Inventory menu;
        private ItemStack Back, Exit, Diamond, Jern, Guld, DiamondPickaxe, DiamondSkovl;
       
        public BaseMenu(Plugin p) {
            menu = Bukkit.getServer().createInventory(null, 27, ChatColor.DARK_BLUE.toString() + ChatColor.BOLD.toString() +  "=======XENA BASE=======");
           
            Back = Back(Material.MAP, "Tilbage til MainMenu");
            Exit = Exit(Material.SLIME_BALL, "Luk Menuen");
            Diamond = Diamond(Material.DIAMOND, "Diamond - 250,-");
            Jern = Jern(Material.IRON_INGOT, "Jern - 500,-");
            Guld = Guld(Material.WHEAT, "Guld - 1500,-");
            DiamondPickaxe = DiamondPickaxe(Material.BRICK, "Diamond Pickaxe - 800,-");
            DiamondSkovl = DiamondSkovl(Material.REDSTONE, "Diamond Skovl - 300,-");
           
            menu.setItem(21, Back);
            menu.setItem(23, Exit);
            menu.setItem(2, Diamond);
            menu.setItem(0, Jern);
            menu.setItem(4, Guld);
            menu.setItem(6, DiamondPickaxe);
            menu.setItem(8, DiamondSkovl);
           
           
            Bukkit.getServer().getPluginManager().registerEvents(this, p);
           
        }
        private ItemStack Back(Material mat, String name) {
            ItemStack i = new ItemStack(Material.MAP, 1);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            i.setItemMeta(im);
            return i;
        }
        private ItemStack Exit(Material mat, String name) {
            ItemStack i = new ItemStack(Material.SLIME_BALL, 1);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            i.setItemMeta(im);
            return i;
        }
        private ItemStack Diamond(Material mat, String name) {
            ItemStack i = new ItemStack(Material.DIAMOND, 1);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            i.setItemMeta(im);
            return i;
        }
        private ItemStack Jern(Material mat, String name) {
            ItemStack i = new ItemStack(Material.IRON_INGOT, 16);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            i.setItemMeta(im);
            return i;
        }
       
        private ItemStack Guld(Material mat, String name) {
            ItemStack i = new ItemStack(Material.GOLD_INGOT, 16);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            i.setItemMeta(im);
            return i;
        }
       
        private ItemStack DiamondPickaxe(Material mat, String name) {
            ItemStack i = new ItemStack(Material.DIAMOND_PICKAXE, 1);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            i.setItemMeta(im);
            return i;
        }
        private ItemStack DiamondSkovl(Material mat, String name) {
            ItemStack i = new ItemStack(Material.DIAMOND_SPADE, 1);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            i.setItemMeta(im);
            return i;
        }
       
       
        public void showmainmenu(Player p){
            p.openInventory(menu);
        }
       
       
        @EventHandler
        public void onInventoryClickE(InventoryClickEvent e) {
            if (!e.getInventory().getName().equalsIgnoreCase(menu.getName())) return;
           
            if(e.getCurrentItem().getItemMeta() == null) return;
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Diamond - 250,-")){
                e.setCancelled(true);
    
                e.getWhoClicked().getInventory().addItem(new ItemStack(Material.DIAMOND, 1));
               
            }
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Tilbage til MainMenu")){
                e.setCancelled(true);
    
                e.getWhoClicked().openInventory(mainmenu.mainmenu);
               
            }
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Jern - 500,-")){
                e.setCancelled(true);
    
                e.getWhoClicked().getInventory().addItem(new ItemStack(Material.IRON_INGOT, 16));
               
            }
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Guld - 1500,-")){
                e.setCancelled(true);
    
                e.getWhoClicked().getInventory().addItem(new ItemStack(Material.GOLD_INGOT, 16));
               
            }
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Diamond Pickaxe - 800,-")){
                e.setCancelled(true);
    
                e.getWhoClicked().getInventory().addItem(new ItemStack(Material.DIAMOND_PICKAXE, 1));
               
            }
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Diamond Skovl - 300,-")){
                e.setCancelled(true);
    
                e.getWhoClicked().getInventory().addItem(new ItemStack(Material.DIAMOND_SPADE, 1));
               
            }
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Luk Menuen")){
                e.setCancelled(true);
    
                e.getWhoClicked().closeInventory();
               
            }
           
        }
    
    }
    

    The ERROR:
    Code:
    [15:45:47 ERROR]: Could not pass event InventoryClickEvent to MenuPlus v1.0
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:299) ~[spigot.jar:git-Spigot-1545]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62) ~[spigot.jar:git-Spigot-1545]
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:502) [spigot.jar:git-Spigot-1545]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:487) [spigot.jar:git-Spigot-1545]
            at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java
    :1434) [spigot.jar:git-Spigot-1545]
            at net.minecraft.server.v1_7_R4.PacketPlayInWindowClick.a(SourceFile:32)
    [spigot.jar:git-Spigot-1545]
            at net.minecraft.server.v1_7_R4.PacketPlayInWindowClick.handle(SourceFil
    e:10) [spigot.jar:git-Spigot-1545]
            at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:184
    ) [spigot.jar:git-Spigot-1545]
            at net.minecraft.server.v1_7_R4.ServerConnection.c(ServerConnection.java
    :81) [spigot.jar:git-Spigot-1545]
            at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:7
    31) [spigot.jar:git-Spigot-1545]
            at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:2
    89) [spigot.jar:git-Spigot-1545]
            at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:5
    84) [spigot.jar:git-Spigot-1545]
            at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java
    :490) [spigot.jar:git-Spigot-1545]
            at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:6
    28) [spigot.jar:git-Spigot-1545]
    Caused by: java.lang.NullPointerException
            at org.bukkit.craftbukkit.v1_7_R4.entity.CraftHumanEntity.openInventory(
    CraftHumanEntity.java:185) ~[spigot.jar:git-Spigot-1545]
            at com.BechGameplay.menuplus.mainmenu.onInventoryClickE(mainmenu.java:16
    9) ~[?:?]
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0
    _31]
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0
    _31]
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1
    .8.0_31]
            at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_31]
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:296) ~[spigot.jar:git-Spigot-1545]
            ... 13 more
    >
     
  2. Offline

    FerusGrim

  3. Offline

    Funergy

    @BechGameplay Wrong Section. Post this in the bukkit alternatives section
     
  4. Offline

    FerusGrim

    I don't think Curse cares about that, all things considered. Spigot is the only 1.8 available download. We expect to see questions for it here.
     
  5. Moved to Bukkit Alternates.

    @FerusGrim It is 1.8 which is unofficial so we do care.
     
  6. Offline

    Funergy

    @FerusGrim Yeah but hes using Spigot 1.8 =and they have made a special section in this forum for spigot/couldron,...
     
Thread Status:
Not open for further replies.

Share This Page