Ms_Raven Posted January 12, 2016 Posted January 12, 2016 I have an item that's supposed to basically search the player's hotbar for a specific weapon type, check if it's damaged and repair it if it is. But in the searching-inventory stage it gives me this crash: Time: 11/01/16 21:47 Description: Ticking player java.lang.ArrayIndexOutOfBoundsException: 4 at net.minecraft.entity.player.InventoryPlayer.getStackInSlot(InventoryPlayer.java:646) at ss.khi.content.items.Ether.onEaten(Ether.java:44) at net.minecraft.item.ItemStack.onFoodEaten(ItemStack.java:169) at net.minecraft.entity.player.EntityPlayer.onItemUseFinish(EntityPlayer.java:470) at net.minecraft.entity.player.EntityPlayerMP.onItemUseFinish(EntityPlayerMP.java:970) at net.minecraft.entity.player.EntityPlayer.onUpdate(EntityPlayer.java:281) at net.minecraft.entity.player.EntityPlayerMP.onUpdateEntity(EntityPlayerMP.java:330) at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:329) at net.minecraft.network.play.client.C03PacketPlayer.processPacket(C03PacketPlayer.java:37) at net.minecraft.network.play.client.C03PacketPlayer.processPacket(C03PacketPlayer.java:111) at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Stacktrace: at net.minecraft.entity.player.InventoryPlayer.getStackInSlot(InventoryPlayer.java:646) at ss.khi.content.items.Ether.onEaten(Ether.java:44) at net.minecraft.item.ItemStack.onFoodEaten(ItemStack.java:169) at net.minecraft.entity.player.EntityPlayer.onItemUseFinish(EntityPlayer.java:470) at net.minecraft.entity.player.EntityPlayerMP.onItemUseFinish(EntityPlayerMP.java:970) at net.minecraft.entity.player.EntityPlayer.onUpdate(EntityPlayer.java:281) -- Player being ticked -- Details: Entity Type: null (net.minecraft.entity.player.EntityPlayerMP) Entity ID: 392 Entity Name: Player571 Entity's Exact location: 156.07, 68.00, 265.40 Entity's Block location: World: (156,68,265), Chunk: (at 12,4,9 in 9,16; contains blocks 144,0,256 to 159,255,271), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511) Entity's Momentum: 0.00, -0.08, 0.00 Stacktrace: at net.minecraft.entity.player.EntityPlayerMP.onUpdateEntity(EntityPlayerMP.java:330) at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:329) at net.minecraft.network.play.client.C03PacketPlayer.processPacket(C03PacketPlayer.java:37) at net.minecraft.network.play.client.C03PacketPlayer.processPacket(C03PacketPlayer.java:111) at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) -- Ticking connection -- Details: Connection: net.minecraft.network.NetworkManager@6b8d3ab5 Stacktrace: at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) The line the crash points to is the 9th line in my item's onEaten() method: public ItemStack onEaten(ItemStack s, World w, EntityPlayer p) { if (!w.isRemote) { ItemStack stack = null; boolean hasRods = false; for (int i = 36; i < 45; i++) // These are the hotbar slots: 36-44, right? { stack = p.inventory.getStackInSlot(i); // ← Crash log points to this line if (stack != null) { if (stack.getItem() instanceof Rod) { hasRods = true; if (stack.getItemDamage() > 0) { stack.setItemDamage(0); p.addChatMessage(new ChatComponentText(stack.getDisplayName() + " was fully charged!")); if (!p.capabilities.isCreativeMode) { --s.stackSize; } return s; } } } } if (hasRods) { p.addChatMessage( new ChatComponentText("All hotbar magic weapons are fully charged. There's no need to use this.")); } else { p.addChatMessage(new ChatComponentText("You need an uncharged magic weapon in your hotbar to use this.")); } } return s; } What did I do wrong? Quote
coolAlias Posted January 12, 2016 Posted January 12, 2016 Hotbar slots are 0 to 8, so (i = 0; i < 9). Quote http://i.imgur.com/NdrFdld.png[/img]
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.