This commit is contained in:
raoulvdberge
2020-10-04 09:53:21 +02:00
parent c0836f20ed
commit 34d55e14a6
3 changed files with 21 additions and 16 deletions

View File

@@ -7,12 +7,12 @@ import com.refinedmods.refinedstorage.api.network.INetwork;
import com.refinedmods.refinedstorage.api.network.grid.IGrid; import com.refinedmods.refinedstorage.api.network.grid.IGrid;
import com.refinedmods.refinedstorage.api.network.grid.handler.IItemGridHandler; import com.refinedmods.refinedstorage.api.network.grid.handler.IItemGridHandler;
import com.refinedmods.refinedstorage.api.network.security.Permission; import com.refinedmods.refinedstorage.api.network.security.Permission;
import com.refinedmods.refinedstorage.api.storage.cache.IStorageCache;
import com.refinedmods.refinedstorage.api.util.Action; import com.refinedmods.refinedstorage.api.util.Action;
import com.refinedmods.refinedstorage.api.util.IComparer; import com.refinedmods.refinedstorage.api.util.IComparer;
import com.refinedmods.refinedstorage.api.util.StackListEntry; import com.refinedmods.refinedstorage.api.util.StackListEntry;
import com.refinedmods.refinedstorage.apiimpl.API; import com.refinedmods.refinedstorage.apiimpl.API;
import com.refinedmods.refinedstorage.apiimpl.autocrafting.preview.ErrorCraftingPreviewElement; import com.refinedmods.refinedstorage.apiimpl.autocrafting.preview.ErrorCraftingPreviewElement;
import com.refinedmods.refinedstorage.apiimpl.storage.cache.ItemStorageCache;
import com.refinedmods.refinedstorage.container.GridContainer; import com.refinedmods.refinedstorage.container.GridContainer;
import com.refinedmods.refinedstorage.network.grid.GridCraftingPreviewResponseMessage; import com.refinedmods.refinedstorage.network.grid.GridCraftingPreviewResponseMessage;
import com.refinedmods.refinedstorage.network.grid.GridCraftingStartResponseMessage; import com.refinedmods.refinedstorage.network.grid.GridCraftingStartResponseMessage;
@@ -105,12 +105,11 @@ public class ItemGridHandler implements IItemGridHandler {
took.setCount(remainder.getCount()); took.setCount(remainder.getCount());
} }
} }
if (!took.isEmpty()) {
if (ItemHandlerHelper.insertItemStacked(playerInventory.get(), took, true).isEmpty()) {
took = network.extractItem(item, size, Action.PERFORM);
ItemHandlerHelper.insertItemStacked(playerInventory.get(), took, false); if (!took.isEmpty() && ItemHandlerHelper.insertItemStacked(playerInventory.get(), took, true).isEmpty()) {
} took = network.extractItem(item, size, Action.PERFORM);
ItemHandlerHelper.insertItemStacked(playerInventory.get(), took, false);
} }
} }
} else { } else {
@@ -272,15 +271,20 @@ public class ItemGridHandler implements IItemGridHandler {
if (shift) { // shift if (shift) { // shift
flags |= EXTRACT_SHIFT; flags |= EXTRACT_SHIFT;
if (up) { // scroll up
player.inventory.setInventorySlotContents(slot, gridHandler.onInsert(player, stackInSlot, true)); if (!stackInSlot.isEmpty()) {
} else { // scroll down if (up) { // scroll up
gridHandler.onExtract(player, stackInSlot, slot, flags); player.inventory.setInventorySlotContents(slot, gridHandler.onInsert(player, stackInSlot, true));
} else { // scroll down
gridHandler.onExtract(player, stackInSlot, slot, flags);
}
} }
} else { //ctrl } else { //ctrl
if (up) { // scroll up if (up) { // scroll up
gridHandler.onInsert(player, stackOnCursor, true); if (!stackOnCursor.isEmpty()) {
player.updateHeldItem(); gridHandler.onInsert(player, stackOnCursor, true);
player.updateHeldItem();
}
} else { //scroll down } else { //scroll down
if (stackOnCursor.isEmpty()) { if (stackOnCursor.isEmpty()) {
gridHandler.onExtract(player, stackInSlot, -1, flags); gridHandler.onExtract(player, stackInSlot, -1, flags);
@@ -312,7 +316,7 @@ public class ItemGridHandler implements IItemGridHandler {
if (shift && id != null) { if (shift && id != null) {
flags |= EXTRACT_SHIFT; flags |= EXTRACT_SHIFT;
if (up) { //scroll up, insert hovering stack pulled from Inventory if (up) { //scroll up, insert hovering stack pulled from Inventory
ItemStorageCache cache = (ItemStorageCache) grid.getStorageCache(); IStorageCache<ItemStack> cache = grid.getStorageCache();
if (cache == null || cache.getList().get(id) == null) { if (cache == null || cache.getList().get(id) == null) {
return; return;
} }

View File

@@ -4,6 +4,7 @@ import com.refinedmods.refinedstorage.container.GridContainer;
import net.minecraft.network.PacketBuffer; import net.minecraft.network.PacketBuffer;
import net.minecraftforge.fml.network.NetworkEvent; import net.minecraftforge.fml.network.NetworkEvent;
import javax.annotation.Nullable;
import java.util.UUID; import java.util.UUID;
import java.util.function.Supplier; import java.util.function.Supplier;
@@ -12,7 +13,7 @@ public class GridItemGridScrollMessage {
private final boolean shift; private final boolean shift;
private final boolean up; private final boolean up;
public GridItemGridScrollMessage(UUID id, boolean shift, boolean up) { public GridItemGridScrollMessage(@Nullable UUID id, boolean shift, boolean up) {
this.id = id; this.id = id;
this.shift = shift; this.shift = shift;
this.up = up; this.up = up;

View File

@@ -529,7 +529,7 @@ public class GridScreen extends BaseScreen<GridContainer> implements IScreenInfo
} }
if (isOverInventory(x - guiLeft, y - guiTop)) { if (isOverInventory(x - guiLeft, y - guiTop)) {
if (grid.getGridType() != GridType.FLUID && hoveredSlot != null) { if (grid.getGridType() != GridType.FLUID && hoveredSlot != null && hoveredSlot.getHasStack()) {
RS.NETWORK_HANDLER.sendToServer(new GridItemInventoryScrollMessage(hoveredSlot.getSlotIndex(), hasShiftDown(), delta > 0)); RS.NETWORK_HANDLER.sendToServer(new GridItemInventoryScrollMessage(hoveredSlot.getSlotIndex(), hasShiftDown(), delta > 0));
} }
} else if (isOverSlotArea(x - guiLeft, y - guiTop)) { } else if (isOverSlotArea(x - guiLeft, y - guiTop)) {
@@ -599,7 +599,7 @@ public class GridScreen extends BaseScreen<GridContainer> implements IScreenInfo
} }
public boolean canSort() { public boolean canSort() {
return doSort || !hasShiftDown() && !hasControlDown(); return doSort || (!hasShiftDown() && !hasControlDown());
} }
public static List<IGridSorter> getSorters() { public static List<IGridSorter> getSorters() {