It is now possible to use middle click multiple times for the same item in grid, fixes #134
This commit is contained in:
@@ -5,6 +5,6 @@ package refinedstorage.api.network;
|
||||
*/
|
||||
public class GridPullFlags {
|
||||
public static final int PULL_HALF = 1;
|
||||
public static final int PULL_ONE = 2;
|
||||
public static final int PULL_SINGLE = 2;
|
||||
public static final int PULL_SHIFT = 4;
|
||||
}
|
||||
|
||||
@@ -22,7 +22,15 @@ public class GridHandler implements IGridHandler {
|
||||
|
||||
@Override
|
||||
public void onPull(ItemStack stack, int flags, EntityPlayerMP player) {
|
||||
if (player.inventory.getItemStack() != null) {
|
||||
boolean single = (flags & GridPullFlags.PULL_SINGLE) == GridPullFlags.PULL_SINGLE;
|
||||
|
||||
ItemStack held = player.inventory.getItemStack();
|
||||
|
||||
if (single) {
|
||||
if (held != null && (!RefinedStorageUtils.compareStackNoQuantity(stack, held) || held.stackSize + 1 > held.getMaxStackSize())) {
|
||||
return;
|
||||
}
|
||||
} else if (player.inventory.getItemStack() != null) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -34,7 +42,7 @@ public class GridHandler implements IGridHandler {
|
||||
if (size > 32) {
|
||||
size = 32;
|
||||
}
|
||||
} else if ((flags & GridPullFlags.PULL_ONE) == GridPullFlags.PULL_ONE) {
|
||||
} else if (single) {
|
||||
size = 1;
|
||||
} else if ((flags & GridPullFlags.PULL_SHIFT) == GridPullFlags.PULL_SHIFT) {
|
||||
// NO OP, the quantity already set (64) is needed for shift
|
||||
@@ -50,7 +58,12 @@ public class GridHandler implements IGridHandler {
|
||||
InventoryHelper.spawnItemStack(player.worldObj, player.getPosition().getX(), player.getPosition().getY(), player.getPosition().getZ(), took);
|
||||
}
|
||||
} else {
|
||||
player.inventory.setItemStack(took);
|
||||
if (held != null) {
|
||||
held.stackSize++;
|
||||
} else {
|
||||
player.inventory.setItemStack(took);
|
||||
}
|
||||
|
||||
player.updateHeldItem();
|
||||
}
|
||||
|
||||
|
||||
@@ -357,11 +357,13 @@ public class GuiGrid extends GuiBase {
|
||||
RefinedStorage.NETWORK.sendToServer(new MessageGridCraftingClear((TileGrid) grid));
|
||||
}
|
||||
|
||||
if (isOverSlotArea(mouseX - guiLeft, mouseY - guiTop) && container.getPlayer().inventory.getItemStack() != null && (clickedButton == 0 || clickedButton == 1)) {
|
||||
ItemStack held = container.getPlayer().inventory.getItemStack();
|
||||
|
||||
if (isOverSlotArea(mouseX - guiLeft, mouseY - guiTop) && held != null && (clickedButton == 0 || clickedButton == 1)) {
|
||||
RefinedStorage.NETWORK.sendToServer(new MessageGridHeldPush(clickedButton == 1));
|
||||
}
|
||||
|
||||
if (isOverSlotWithItem() && container.getPlayer().inventory.getItemStack() == null) {
|
||||
if (isOverSlotWithItem() && (held == null || (held != null && clickedButton == 2))) {
|
||||
if (items.get(slotNumber).stackSize == 0 || (GuiScreen.isShiftKeyDown() && GuiScreen.isCtrlKeyDown())) {
|
||||
FMLCommonHandler.instance().showGuiScreen(new GuiCraftingSettings(this, container.getPlayer(), items.get(slotNumber)));
|
||||
} else {
|
||||
@@ -376,7 +378,7 @@ public class GuiGrid extends GuiBase {
|
||||
}
|
||||
|
||||
if (clickedButton == 2) {
|
||||
flags |= GridPullFlags.PULL_ONE;
|
||||
flags |= GridPullFlags.PULL_SINGLE;
|
||||
}
|
||||
|
||||
RefinedStorage.NETWORK.sendToServer(new MessageGridPull(items.get(slotNumber), flags));
|
||||
|
||||
Reference in New Issue
Block a user