From bc381b92ea5cd4ed9817be76cf9490281038e016 Mon Sep 17 00:00:00 2001 From: James Mitchell Date: Wed, 11 Jan 2017 16:29:49 -0800 Subject: [PATCH] Improve performance of inserting into inventory wrappers (#3622) --- .../net/minecraftforge/items/wrapper/InvWrapper.java | 9 ++++++--- .../minecraftforge/items/wrapper/SidedInvWrapper.java | 9 ++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/minecraftforge/items/wrapper/InvWrapper.java b/src/main/java/net/minecraftforge/items/wrapper/InvWrapper.java index 88c60bbfbb..6a41634830 100644 --- a/src/main/java/net/minecraftforge/items/wrapper/InvWrapper.java +++ b/src/main/java/net/minecraftforge/items/wrapper/InvWrapper.java @@ -75,9 +75,6 @@ public class InvWrapper implements IItemHandlerModifiable if (stack.isEmpty()) return ItemStack.EMPTY; - if (!getInv().isItemValidForSlot(slot, stack)) - return stack; - ItemStack stackInSlot = getInv().getStackInSlot(slot); int m; @@ -86,6 +83,9 @@ public class InvWrapper implements IItemHandlerModifiable if (!ItemHandlerHelper.canItemStacksStack(stack, stackInSlot)) return stack; + if (!getInv().isItemValidForSlot(slot, stack)) + return stack; + m = Math.min(stack.getMaxStackSize(), getSlotLimit(slot)) - stackInSlot.getCount(); if (stack.getCount() <= m) @@ -121,6 +121,9 @@ public class InvWrapper implements IItemHandlerModifiable } else { + if (!getInv().isItemValidForSlot(slot, stack)) + return stack; + m = Math.min(stack.getMaxStackSize(), getSlotLimit(slot)); if (m < stack.getCount()) { diff --git a/src/main/java/net/minecraftforge/items/wrapper/SidedInvWrapper.java b/src/main/java/net/minecraftforge/items/wrapper/SidedInvWrapper.java index c71bedfcc9..8e5e32ff9a 100644 --- a/src/main/java/net/minecraftforge/items/wrapper/SidedInvWrapper.java +++ b/src/main/java/net/minecraftforge/items/wrapper/SidedInvWrapper.java @@ -93,9 +93,6 @@ public class SidedInvWrapper implements IItemHandlerModifiable if (slot1 == -1) return stack; - if (!inv.isItemValidForSlot(slot1, stack) || !inv.canInsertItem(slot1, stack, side)) - return stack; - ItemStack stackInSlot = inv.getStackInSlot(slot1); int m; @@ -104,6 +101,9 @@ public class SidedInvWrapper implements IItemHandlerModifiable if (!ItemHandlerHelper.canItemStacksStack(stack, stackInSlot)) return stack; + if (!inv.isItemValidForSlot(slot1, stack) || !inv.canInsertItem(slot1, stack, side)) + return stack; + m = Math.min(stack.getMaxStackSize(), getSlotLimit(slot)) - stackInSlot.getCount(); if (stack.getCount() <= m) @@ -137,6 +137,9 @@ public class SidedInvWrapper implements IItemHandlerModifiable } else { + if (!inv.isItemValidForSlot(slot1, stack) || !inv.canInsertItem(slot1, stack, side)) + return stack; + m = Math.min(stack.getMaxStackSize(), getSlotLimit(slot)); if (m < stack.getCount()) {