diff --git a/CHANGELOG.md b/CHANGELOG.md index 2fb8d96b4..1e984f323 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Refined Storage Changelog +### 0.8.9 +**Bugfixes** +- Several models / texture tweaks +- Fixed bug where Grid doesn't handle remainder sometimes + ### 0.8.8 **Bugfixes** - Use ore dictionary for recipes with glass diff --git a/src/main/java/refinedstorage/container/slot/SlotGridCraftingResult.java b/src/main/java/refinedstorage/container/slot/SlotGridCraftingResult.java index 842adae4a..391e65560 100755 --- a/src/main/java/refinedstorage/container/slot/SlotGridCraftingResult.java +++ b/src/main/java/refinedstorage/container/slot/SlotGridCraftingResult.java @@ -25,7 +25,7 @@ public class SlotGridCraftingResult extends SlotCrafting { onCrafting(stack); if (!player.worldObj.isRemote) { - grid.onCrafted(); + grid.onCrafted(player); container.sendCraftingSlots(); } diff --git a/src/main/java/refinedstorage/tile/grid/TileGrid.java b/src/main/java/refinedstorage/tile/grid/TileGrid.java index 3e6df548f..62ca1e984 100755 --- a/src/main/java/refinedstorage/tile/grid/TileGrid.java +++ b/src/main/java/refinedstorage/tile/grid/TileGrid.java @@ -126,15 +126,23 @@ public class TileGrid extends TileNode implements IGrid { result.setInventorySlotContents(0, CraftingManager.getInstance().findMatchingRecipe(matrix, worldObj)); } - public void onCrafted() { + public void onCrafted(EntityPlayer player) { ItemStack[] remainder = CraftingManager.getInstance().getRemainingItems(matrix, worldObj); for (int i = 0; i < matrix.getSizeInventory(); ++i) { - if (i < remainder.length && remainder[i] != null) { - matrix.setInventorySlotContents(i, remainder[i].copy()); - } else { - ItemStack slot = matrix.getStackInSlot(i); + ItemStack slot = matrix.getStackInSlot(i); + if (i < remainder.length && remainder[i] != null) { + if (slot != null && slot.stackSize > 1) { + if (!player.inventory.addItemStackToInventory(remainder[i].copy())) { + InventoryHelper.spawnItemStack(player.worldObj, player.getPosition().getX(), player.getPosition().getY(), player.getPosition().getZ(), remainder[i].copy()); + } + + matrix.decrStackSize(i, 1); + } else { + matrix.setInventorySlotContents(i, remainder[i].copy()); + } + } else { if (slot != null) { if (slot.stackSize == 1 && isConnected()) { matrix.setInventorySlotContents(i, RefinedStorageUtils.extractItem(network, slot, 1)); @@ -154,7 +162,7 @@ public class TileGrid extends TileNode implements IGrid { ItemStack crafted = result.getStackInSlot(0); while (true) { - onCrafted(); + onCrafted(player); craftedItemsList.add(crafted.copy());