From 9b576cd93835ab6ecd52f4addddf0e4f07103466 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Sat, 17 Sep 2016 18:20:31 +0200 Subject: [PATCH] Fixed shift clicking from Grid when player inventory is full throwing items in the world, fixes #355 --- CHANGELOG.md | 1 + .../apiimpl/network/grid/ItemGridHandler.java | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a3fd242e..ff863c5ac 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ### 1.0.5 - Fixed crafting a complex item causes the process to flow off the Crafting Monitor's GUI (raoulvdberge) +- Fixed shift clicking from Grid when player inventory is full throwing items in the world (raoulvdberge) ### 1.0.4 - Fixed lag caused by Crafter (raoulvdberge) diff --git a/src/main/java/refinedstorage/apiimpl/network/grid/ItemGridHandler.java b/src/main/java/refinedstorage/apiimpl/network/grid/ItemGridHandler.java index f49817ac1..fa59c7f93 100755 --- a/src/main/java/refinedstorage/apiimpl/network/grid/ItemGridHandler.java +++ b/src/main/java/refinedstorage/apiimpl/network/grid/ItemGridHandler.java @@ -1,8 +1,10 @@ package refinedstorage.apiimpl.network.grid; import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.inventory.InventoryHelper; import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumFacing; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.items.ItemHandlerHelper; import refinedstorage.RefinedStorage; import refinedstorage.api.autocrafting.ICraftingPattern; import refinedstorage.api.autocrafting.task.ICraftingTask; @@ -60,8 +62,10 @@ public class ItemGridHandler implements IItemGridHandler { if (took != null) { if ((flags & EXTRACT_SHIFT) == EXTRACT_SHIFT) { - if (!player.inventory.addItemStackToInventory(took.copy())) { - InventoryHelper.spawnItemStack(player.worldObj, player.getPosition().getX(), player.getPosition().getY(), player.getPosition().getZ(), took); + ItemStack remainder = ItemHandlerHelper.insertItem(player.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, EnumFacing.UP), took, false); + + if (remainder != null) { + network.insertItem(remainder, remainder.stackSize, false); } } else { if (single && held != null) {