diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/network/grid/IFluidGridHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/api/network/grid/IFluidGridHandler.java index 069a61415..09ee5e156 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/network/grid/IFluidGridHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/network/grid/IFluidGridHandler.java @@ -35,4 +35,13 @@ public interface IFluidGridHandler { * @param player the player that is attempting the insert */ void onInsertHeldContainer(EntityPlayerMP player); + + /** + * Called when the player shift clicks a container into the grid. + * + * @param player the player + * @param container the container + * @return the remainder container + */ + ItemStack onShiftClick(EntityPlayerMP player, ItemStack container); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/network/grid/IItemGridHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/api/network/grid/IItemGridHandler.java index 0f2d3da71..b9c18538a 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/network/grid/IItemGridHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/network/grid/IItemGridHandler.java @@ -41,6 +41,15 @@ public interface IItemGridHandler { */ void onInsertHeldItem(EntityPlayerMP player, boolean single); + /** + * Called when the player shift clicks an item into the grid. + * + * @param player the player + * @param stack the stack + * @return the remainder stack + */ + ItemStack onShiftClick(EntityPlayerMP player, ItemStack stack); + /** * Called when a player requests the crafting preview window to be opened. * diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/FluidGridHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/FluidGridHandler.java index 1dc6c2c83..d216897d7 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/FluidGridHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/FluidGridHandler.java @@ -92,4 +92,9 @@ public class FluidGridHandler implements IFluidGridHandler { player.inventory.setItemStack(RSUtils.transformNullToEmpty(onInsert(player, player.inventory.getItemStack()))); player.updateHeldItem(); } + + @Override + public ItemStack onShiftClick(EntityPlayerMP player, ItemStack container) { + return RSUtils.transformNullToEmpty(onInsert(player, container)); + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/ItemGridHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/ItemGridHandler.java index f0975c4cf..2c0e1e803 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/ItemGridHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/ItemGridHandler.java @@ -149,6 +149,11 @@ public class ItemGridHandler implements IItemGridHandler { } } + @Override + public ItemStack onShiftClick(EntityPlayerMP player, ItemStack stack) { + return RSUtils.transformNullToEmpty(onInsert(player, stack)); + } + @Override public void onCraftingPreviewRequested(EntityPlayerMP player, int hash, int quantity, boolean noPreview) { if (!network.getSecurityManager().hasPermission(Permission.AUTOCRAFTING, player)) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeGrid.java index efba66568..21d3f5d69 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeGrid.java @@ -52,7 +52,7 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid { public static final int SORTING_TYPE_QUANTITY = 0; public static final int SORTING_TYPE_NAME = 1; - public static final int SORTING_TYPE_ID= 2; + public static final int SORTING_TYPE_ID = 2; public static final int SEARCH_BOX_MODE_NORMAL = 0; public static final int SEARCH_BOX_MODE_NORMAL_AUTOSELECTED = 1; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerGrid.java index ebbcbb8c7..f87981eea 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerGrid.java @@ -1,7 +1,6 @@ package com.raoulvdberge.refinedstorage.container; import com.raoulvdberge.refinedstorage.RSItems; -import com.raoulvdberge.refinedstorage.RSUtils; import com.raoulvdberge.refinedstorage.api.network.grid.IFluidGridHandler; import com.raoulvdberge.refinedstorage.api.network.grid.IItemGridHandler; import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid; @@ -44,7 +43,7 @@ public class ContainerGrid extends ContainerBase { this.inventoryItemStacks.clear(); int headerAndSlots = getTabDelta() + display.getHeader() + (display.getVisibleRows() * 18); - + if (grid.getType() != GridType.FLUID) { for (int i = 0; i < 4; ++i) { addSlotToContainer(new SlotItemHandler(grid.getFilter(), i, 204, 6 + (18 * i) + getTabDelta())); @@ -182,18 +181,21 @@ public class ContainerGrid extends ContainerBase { } } - if (grid.getNetwork() != null) { - IItemGridHandler itemHandler = grid.getNetwork().getItemGridHandler(); - IFluidGridHandler fluidHandler = grid.getNetwork().getFluidGridHandler(); + if (grid.getType() == GridType.FLUID) { + IFluidGridHandler fluidHandler = grid.getFluidHandler(); - if (grid.getType() != GridType.FLUID && itemHandler != null) { - slot.putStack(RSUtils.transformNullToEmpty(itemHandler.onInsert((EntityPlayerMP) player, stack))); - } else if (grid.getType() == GridType.FLUID && fluidHandler != null) { - slot.putStack(RSUtils.transformNullToEmpty(fluidHandler.onInsert((EntityPlayerMP) player, stack))); + if (fluidHandler != null) { + slot.putStack(fluidHandler.onShiftClick((EntityPlayerMP) player, stack)); } + } else { + IItemGridHandler itemHandler = grid.getItemHandler(); - detectAndSendChanges(); + if (itemHandler != null) { + slot.putStack(itemHandler.onShiftClick((EntityPlayerMP) player, stack)); + } } + + detectAndSendChanges(); } } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridCraftingPreview.java b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridCraftingPreview.java index c7e3fa979..bcbff6be9 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridCraftingPreview.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridCraftingPreview.java @@ -42,8 +42,8 @@ public class MessageGridCraftingPreview extends MessageHandlerPlayerToServer