Need help with Inventoryclickevent

Discussion in 'Plugin Development' started by SneakyLegend, Sep 27, 2013.

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

    SneakyLegend

    hey guys im trying to make a plugin that if you click something inventory it does a command for you.
    when you right clicked a feather
    it opens a inventory but when i click something it works but when i dont used the feather but click the same item in my normal inventory it also does the command
    can someone please fix this


    Code:
        @EventHandler
          public void onKit(PlayerInteractEvent e){
              if(e.getItem() !=null && e.getItem().getTypeId() == Material.PAPER.getId()
                        && (e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.LEFT_CLICK_AIR &&
                              e.getAction() == Action.RIGHT_CLICK_BLOCK && e.getAction() == Action.LEFT_CLICK_BLOCK &&
                              e.getAction() !=null)) {
          Inventory inv = Bukkit.createInventory(null, 27, ChatColor.RED + ChatColor.BOLD.toString() + "Kits");{
                ItemStack istack = new ItemStack(Material.DIAMOND_SWORD, 1);
                ItemMeta istackMeta = istack.getItemMeta();
                istackMeta.setDisplayName("PvP");
                istack.setItemMeta(istackMeta);
               
                ItemStack istack1 = new ItemStack(Material.BOW, 1);
                ItemMeta istackMeta1 = istack1.getItemMeta();
                istackMeta1.setDisplayName("Archer");
                istack1.setItemMeta(istackMeta1);
     
                ItemStack istack2 = new ItemStack(Material.SPIDER_EYE, 1);
                ItemMeta istackMeta2 = istack2.getItemMeta();
                istackMeta2.setDisplayName("Viper");
                istack2.setItemMeta(istackMeta2);
     
                ItemStack istack3 = new ItemStack(Material.TNT, 1);
                ItemMeta istackMeta3 = istack3.getItemMeta();
                istackMeta3.setDisplayName("Bomber");
                istack3.setItemMeta(istackMeta3);
               
                inv.setItem(0, istack);
                inv.setItem(1, istack1);
                inv.setItem(2, istack2);
                inv.setItem(3, istack3);
          }
          e.getPlayer().playSound(e.getPlayer().getLocation(), Sound.FALL_SMALL, 3, 3);
          e.getPlayer().openInventory(inv);
          }
          }
     
        @EventHandler
        public void Inventory(InventoryClickEvent event){
            Player p = (Player) event.getWhoClicked();
     
            event.setCancelled(true);
     
                if(event.getCurrentItem().getType() == Material.DIAMOND_SWORD){
                    p.performCommand("pvp");
                    event.getView().close();
               
                } else if(event.getCurrentItem().getType() == Material.BOW){
                        p.performCommand("archer");
                        event.getView().close();
                       
                } else if(event.getCurrentItem().getType() == Material.SPIDER_EYE){
                            p.performCommand("viper");
                            event.getView().close();
                           
                } else if(event.getCurrentItem().getType() == Material.TNT){
                                p.performCommand("bomber");
                                event.getView().close();
                   
     
     
                    event.getView().close();
     
     
     
     
                }
    }
    
     
  2. SneakyLegend
    Inside your InventoryClickEvent, check if the inventory title is ChatColor.RED + ChatColor.BOLD.toString() + "Kits", if so, continue by checking what the clicked item is.
     
  3. Offline

    SneakyLegend

    how?
     
  4. Offline

    CakeProgrammer

    if(event.getInventory().getTitle().equals("YOUSTRING")){
    //Your thing
    }
     
Thread Status:
Not open for further replies.

Share This Page