Inventory Click Error.

Discussion in 'Plugin Development' started by zDubsCrazy, Dec 22, 2014.

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

    zDubsCrazy

    In my plugin, I have an inventory with 54 slots, and if I click an item in the last row, this error occurs:

    Code:
    17:33:35 [WARNING] Failed to handle packet for zDubsCrazy/25.129.36.116: java.lang.IndexOutOfBoundsException: Index: 51, Size: 45
    I hope someone can help me. Thanks in advance.
     
  2. Offline

    mine-care

    Index out of bounds exception occurred, can we see your code?
    Also for your safety it's a good idea to avoid showing your ip publicly ;)
     
  3. Offline

    Jaaakee224

    It's probably because you are putting an item in an invalid slot, or you created the inventory wrong. Please show us your full code.
     
  4. Offline

    zDubsCrazy

    @mine-care
    This IP is not my internet ip, this is a Hamachi IP.

    @Jaaakee224
    I created an inventory of 54 slots, because I put 54 items.

    <Edit by mrCookieSlime: Merged posts.>
     
    Last edited by a moderator: Dec 23, 2014
  5. Offline

    nverdier

    @zDubsCrazy We need to see your code or we can't help you any further.
     
  6. Offline

    zDubsCrazy

    @nverdier
    What part of my code? Where the inventory is created or where the error happens when you click the item?
     
  7. Offline

    nverdier

    Just give us all the code.
     
  8. Offline

    zDubsCrazy

    @nverdier

    MenuInvListener.class (open)

    Code:
    package myPackage;
    
    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;
    
    public class MenuInvListener implements Listener {
       
    @EventHandler
      public void onPlayerCLickInventry(InventoryClickEvent e)
      {
        Player p = (Player)e.getWhoClicked();
        if (e.getInventory().getTitle().equalsIgnoreCase(ChatColor.DARK_GREEN + "" + ChatColor.BOLD + "Your Kits")) {
          if ((e.getCurrentItem() != null) && (e.getCurrentItem().getTypeId() != 0))
          {
            e.setCancelled(true);
            if (e.getCurrentItem().getType() == Material.STONE_SWORD)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit pvp");
              return;
            }
            if (e.getCurrentItem().getType() == Material.FIREWORK_CHARGE)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit pyro");
              return;
            }
            if (e.getCurrentItem().getType() == Material.FIRE)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit berserker");
              return;
            }
            if (e.getCurrentItem().getType() == Material.IRON_CHESTPLATE)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit soldado");
              return;
            }
            if (e.getCurrentItem().getType() == Material.NETHER_STAR)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit shooter");
              return;
            }
            if (e.getCurrentItem().getType() == Material.COMPASS)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit ninja");
              return;
            }
            if (e.getCurrentItem().getType() == Material.SAPLING)
            {
                e.setCancelled(true);
                p.closeInventory();
                p.chat("/kit rhino");
                return;
            }
            if (e.getCurrentItem().getType() == Material.DIAMOND_CHESTPLATE)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit trocador");
              return;
            }
            if (e.getCurrentItem().getType() == Material.REDSTONE_BLOCK)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit urgal");
              return;
            }
            if (e.getCurrentItem().getType() == Material.BOW)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit arqueiro");
              return;
            }
            if (e.getCurrentItem().getType() == Material.MUSHROOM_SOUP)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit vitality");
              return;
            }
            if (e.getCurrentItem().getType() == Material.COAL)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit darkmage");
              return;
            }
            if (e.getCurrentItem().getType() == Material.WATER_BUCKET)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit poseidon");
              return;
            }
            if (e.getCurrentItem().getType() == Material.LAVA_BUCKET)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit fireman");
              return;
            }
            if (e.getCurrentItem().getType() == Material.REDSTONE_TORCH_ON)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit flash");
              return;
            }
            if (e.getCurrentItem().getType() == Material.ANVIL)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit anchor");
              return;
            }
            if (e.getCurrentItem().getType() == Material.SPONGE)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit launcher");
              return;
            }
            if (e.getCurrentItem().getType() == Material.LEATHER_CHESTPLATE)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit turtle");
              return;
            }
            if (e.getCurrentItem().getType() == Material.BONE)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit skeleton");
              return;
            }
            if (e.getCurrentItem().getType() == Material.MILK_BUCKET)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit milkman");
              return;
            }
            if (e.getCurrentItem().getType() == Material.FISHING_ROD)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit fisherman");
              return;
            }
            if (e.getCurrentItem().getType() == Material.SAND)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit camel");
              return;
            }
            if (e.getCurrentItem().getType() == Material.STONE_AXE)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit thor");
              return;
            }
            if (e.getCurrentItem().getType() == Material.EXP_BOTTLE)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit specialist");
              return;
            }
            if (e.getCurrentItem().getType() == Material.SNOW_BLOCK)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit frosty");
              return;
            }
            if (e.getCurrentItem().getType() == Material.WATCH)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit timelord");
              return;
            }
            if (e.getCurrentItem().getType() == Material.FIREWORK)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit Kangaroo");
              return;
            }
            if (e.getCurrentItem().getType() == Material.PORTAL)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit endermage");
              return;
            }
            if (e.getCurrentItem().getType() == Material.IRON_BOOTS)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit stomper");
              return;
            }
            if (e.getCurrentItem().getType() == Material.LEATHER_CHESTPLATE)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit turtle");
              return;
            }
            if (e.getCurrentItem().getType() == Material.WOOD_HOE)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit reaper");
              return;
            }
            if (e.getCurrentItem().getType() == Material.SPIDER_EYE)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit viper");
              return;
            }
            if (e.getCurrentItem().getType() == Material.SOUL_SAND)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit snail");
              return;
            }
            if (e.getCurrentItem().getType() == Material.BLAZE_ROD)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit monk");
              return;
            }
            if (e.getCurrentItem().getType() == Material.SNOW_BALL)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit switcher");
              return;
            }
            if (e.getCurrentItem().getType() == Material.SKULL_ITEM)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit wither");
              return;
            }
            if (e.getCurrentItem().getType() == Material.TNT)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit granadier");
              return;
            }
            if (e.getCurrentItem().getType() == Material.IRON_FENCE)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit gladiator");
              return;
            }
            if (e.getCurrentItem().getType() == Material.TRAP_DOOR)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit jumper");
              return;
            }
            if (e.getCurrentItem().getType() == Material.JACK_O_LANTERN)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit madman");
              return;
            }
            if (e.getCurrentItem().getType() == Material.GOLD_AXE)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit viking");
              return;
            }
            if (e.getCurrentItem().getType() == Material.STICK)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit grandpa");
              return;
            }
            if (e.getCurrentItem().getType() == Material.IRON_HOE)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit ghost");
              return;
            }
            if (e.getCurrentItem().getType() == Material.BOWL)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit quickdropper");
              return;
            }
            if (e.getCurrentItem().getType() == Material.ENDER_PEARL)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit teleporter");
              return;
            }
            if (e.getCurrentItem().getType() == Material.WEB)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit spiderman");
              return;
            }
            if (e.getCurrentItem().getType() == Material.IRON_ORE)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit barbarian");
              return;
            }
            if (e.getCurrentItem().getType() == Material.REDSTONE)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit berserker");
              return;
            }
            if (e.getCurrentItem().getType() == Material.PUMPKIN_SEEDS)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit indio");
              return;
            }
            if (e.getCurrentItem().getType() == Material.ICE)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit freezer");
              return;
            }
            if (e.getCurrentItem().getType() == Material.BEACON)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit ryu");
              return;
            }
            if (e.getCurrentItem().getType() == Material.EYE_OF_ENDER)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit neji");
              return;
            }
            if (e.getCurrentItem().getType() == Material.MONSTER_EGG)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit lobisomem");
              return;
            }
            if (e.getCurrentItem().getType() == Material.ENDER_PORTAL_FRAME)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit alien");
              return;
            }
            if (e.getCurrentItem().getType() == Material.SADDLE)
            {
              e.setCancelled(true);
              p.closeInventory();
              p.chat("/kit hulk");
              return;
            }
          }
        }
      }
    }


    Inv Code (open)
    Code:
    Inventory inv = Bukkit.getServer().createInventory(player, 54, ChatColor.DARK_GREEN + "" + ChatColor.BOLD + "Your Kits");
     
  9. Offline

    mine-care

    @zDubsCrazy oh god... so many ifs! the way your code is now, every time someone pics something, it does all those ifs. despite the fact that the coresponding if might be the 2nd, it will pass through all of them , instead you could use a nested if, a switch or even assign a value to each material you want in a map and then try geting the material from the map directly you can even create your own enum.
    408 lines of if XD

    Does the full stacktrace exist or is it just this line shown on your main post? if it exists please let us know
    do you use any array/list/map ?
     
  10. Offline

    Experminator

    Even it's better to use, like this: (I think this works, correct me if it doesn't).
    InventoryClickEvent (open)

    Code:
      @EventHandler
      public void onPlayerCLickInventry(InventoryClickEvent e){
         Player p = (Player)e.getWhoClicked();
         if (e.getInventory().getTitle().equalsIgnoreCase(ChatColor.DARK_GREEN + "" + ChatColor.BOLD + "Your Kits")) {
             if(e.getCurrentItem() != null || e.getCurrentItem().getType() != Material.AIR){ 
                e.setCancelled(true);
              
                switch(e.getCurrentItem().getType()){
                   case Material.STONE_SWORD:
                        // Do stuff.
                        // Like p.sendMessage("You have chosen kit: PVP.");
                        break;
                   default: Material.AIR;
                }
               
                p.closeInventory();
             }
         }
      }
     
    Last edited: Dec 23, 2014
  11. Offline

    zDubsCrazy

  12. Offline

    Experminator

    @zDubsCrazy I don't think that the problem is. But it's maybe possible.
    Also i give as suggestion to use a switch (That is maybe better). A switch example is in the previous post of me.

    If you don't know what a switch is,
    It's basically a java built-in method for multiple if statements.

    Example:
    Code:
    public Material getType(Material material){
         switch(material)[
              case Material.MELON: return Material.MELON;
              default: return Material.AIR;
            /*  Information about switch statements:
                   - Can have multiple 'if's.
                   - If it's return a value, you do not add a break.
                   Only a break if a value is not returned.
    
                  -  You MUST add a default statement.
           */
         }
    }
    But this is a example. that 'if' returned a dead code. because the requested if is also the value.
     
    Last edited: Dec 23, 2014
  13. Offline

    zDubsCrazy

    @Experminator
    I will test soon and will give results. Thanks for helping .
     
  14. Offline

    Experminator

    @zDubsCrazy No Problem.
    You can always ask me for help. (But even it's not the best idea to ask me, there are better java programmers.)
     
Thread Status:
Not open for further replies.

Share This Page