From a83e4b7c3dcfcc5252b27e4f68a1b41b626e7bb9 Mon Sep 17 00:00:00 2001 From: yueh Date: Sun, 15 Mar 2015 19:55:58 +0100 Subject: [PATCH] Fixes #1030 IndexOutOfBoundsException caused by using wrong index --- .../core/sync/packets/PacketNEIRecipe.java | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/main/java/appeng/core/sync/packets/PacketNEIRecipe.java b/src/main/java/appeng/core/sync/packets/PacketNEIRecipe.java index 4aa7d7c4e..be2ffbcec 100644 --- a/src/main/java/appeng/core/sync/packets/PacketNEIRecipe.java +++ b/src/main/java/appeng/core/sync/packets/PacketNEIRecipe.java @@ -195,23 +195,26 @@ public class PacketNEIRecipe extends AppEngPacket // If that doesn't work, grab from the player's inventory if ( whichItem == null && playerInventory != null ) { - ItemStack playerItemStack = null; - for ( int y = 0; y < playerInventory.getSizeInventory(); y++ ) + for ( int y = 0; y < this.recipe[x].length; y++ ) { - // check if the item in slot y matches the required item. - playerItemStack = playerInventory.getStackInSlot( y ); - if ( playerItemStack != null && playerItemStack.getItem() == this.recipe[x][y].getItem() ) + ItemStack playerItemStack = null; + for ( int i = 0; i < playerInventory.getSizeInventory(); i++ ) { - if ( realForFake == Actionable.SIMULATE ) + // check if the item in slot y matches the required item. + playerItemStack = playerInventory.getStackInSlot( i ); + if ( playerItemStack != null && playerItemStack.getItem() == this.recipe[x][y].getItem() ) { - whichItem = playerInventory.getStackInSlot( y ).copy(); - whichItem.stackSize = 1; + if ( realForFake == Actionable.SIMULATE ) + { + whichItem = playerInventory.getStackInSlot( i ).copy(); + whichItem.stackSize = 1; + } + else + { + whichItem = playerInventory.decrStackSize( i, 1 ); + } + break; } - else - { - whichItem = playerInventory.decrStackSize( y, 1 ); - } - break; } } }