Solved Inventory GUI's!

Discussion in 'Plugin Development' started by BechGameplay, Jan 21, 2015.

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

    Im trying to make this Inventory GUI Plugin, where you can click on an item and then it opens a new Menu.
    I Cant figure out to open a new menu if you click on an Item ;(

    I have already made another Inventory GUI! But i cant implement it in my Main GUI!

    Just an Example:
    Master Menu => Menu => Under Menu => Last Menu

    Main GUI - Where The Other GUI needs to Open!;
    Code:
    package com.BechGameplay.menuplus;
    
    import java.util.Arrays;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.GameMode;
    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{
      
      
        private 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);
    
                //WHEN YOU CLICK ON A DISPLAY NAME THAT CONTAINS "MINING TING" 
                  THEN IT SHOULD OPEN THE GUI "MININGMENU"
              
            }
            if(e.getCurrentItem().getItemMeta() == null) return;
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Redstone Materialer")){
                e.setCancelled(true);
                e.getWhoClicked().setGameMode(GameMode.SURVIVAL);
            }
          
            if(e.getCurrentItem().getItemMeta() == null) return;
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Bygge Blocks")){
                e.setCancelled(true);
                e.getWhoClicked().setGameMode(GameMode.CREATIVE);
            }
          
        }
    
    }
    
    Second GUI:
    Code:
    package com.BechGameplay.menuplus;
    
    import java.util.Arrays;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.GameMode;
    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 MiningMenu implements Listener {
    
        private Inventory MiningMenu;
        private ItemStack Diamond, Jern, Guld, DiamondPickaxe, DiamondSkovl;
    
        public MiningMenu(Plugin p) {
            MiningMenu = Bukkit.getServer().createInventory(null, 27, ChatColor.DARK_BLUE.toString() + ChatColor.BOLD.toString() +  "=======XENA-SHOP=======");
       
            Diamond = Diamond(Material.DIAMOND, "Diamond = 250 ,-");
            Jern = Jern(Material.STRING, "Jern = 500 ,-");
            Guld = Guld(Material.WHEAT, "Guld = 1500 ,-");
            DiamondPickaxe = DiamondPickaxe(Material.BRICK, "Diamond Pickaxe = 800 ,-");
            DiamondSkovl = DiamondSkovl(Material.REDSTONE, "Diamond Skovl = 300 ,-");
       
            MiningMenu.setItem(0, Diamond);
            MiningMenu.setItem(2, Jern);
            MiningMenu.setItem(4, Guld);
            MiningMenu.setItem(6, DiamondPickaxe);
            MiningMenu.setItem(8, DiamondSkovl);
       
            Bukkit.getServer().getPluginManager().registerEvents(this, p);
       
        }
        private ItemStack Diamond(Material mat, String name) {
            ItemStack i = new ItemStack(Material.DIAMOND, 1);
            ItemMeta im = i.getItemMeta();
            im.setDisplayName(name);
            im.setLore(Arrays.asList("1x Diamond = 250 ,-"));
            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);
            im.setLore(Arrays.asList("16x Jern = 500 ,-"));
            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);
            im.setLore(Arrays.asList("16x Guld = 1500 ,-"));
            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);
            im.setLore(Arrays.asList("1x Diamond Pickaxe = 800 ,-"));
            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);
            im.setLore(Arrays.asList("1x Diamond Skovl = 300 ,-"));
            i.setItemMeta(im);
            return i;
        }
    
    
    
    
    
    
        public void showminingmenu(Player p){
            p.openInventory(MiningMenu);
        }
    
    
        @EventHandler
        public void onInventoryClickE(InventoryClickEvent e) {
            if (!e.getInventory().getName().equalsIgnoreCase(MiningMenu.getName())) return;
       
            if(e.getCurrentItem().getItemMeta() == null) return;
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Diamond = 250 ,-")){
                e.setCancelled(true);
    
                e.getWhoClicked().setGameMode(GameMode.CREATIVE);
           
            }
            if(e.getCurrentItem().getItemMeta() == null) return;
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Redstone Materialer")){
                e.setCancelled(true);
                e.getWhoClicked().setGameMode(GameMode.SURVIVAL);
            }
       
            if(e.getCurrentItem().getItemMeta() == null) return;
            if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Bygge Blocks")){
                e.setCancelled(true);
                e.getWhoClicked().setGameMode(GameMode.CREATIVE);
            }
       
        }
    
    }
    
     
    Last edited: Jan 21, 2015
  2. @BechGameplay Your InventoryClickEvent is missing a few things.
    It would be a lot easier to check the inventory's name to make sure if you have the correct inventory.
    Code:
    if (!ChatColor.stripColor(event.getInventory().getName())
                    .equalsIgnoreCase("GUI Title Goes Here"))
                return;
    Use a switch so you can set what the item will do when clicked on.
    Code:
    // Getting the current item type.
    switch (event.getCurrentItem().getType()) {
    // Setting what will happen when you click on an item.
            case ITEM:
                player.closeInventory();
                            // Open your second GUI here.
                break;
                    // Setting the default for an item being clicked on.
            default:
                player.closeInventory();
                break;
    }
    Hope this helped a little. :)
     
  3. Thanks, Helped alot!

    How do i inplement the other inventory? and open it?

    I tried someting like dis:
    Code:
    menumain.openMiningMenu(Player p);
    But it didnt work ;)
    Hope your can help
     
  4. @BechGameplay Make sure you tag me with @CodePlaysMinecraft so I know that you replied. Just do player.openInventory(invName); or, if the inventory is in another class, make the inventory static and do player.openInventory(className.invName);
    Hope this helped. :)
     
  5. CodePlaysMinecraft likes this.
Thread Status:
Not open for further replies.

Share This Page