From 7b4040b70b07787ddc19ca3a55cbcee4fe09cba2 Mon Sep 17 00:00:00 2001 From: Ben Staddon Date: Tue, 31 Oct 2017 17:41:33 +0000 Subject: [PATCH] Improve performance of inserting into inventory wrappers (#4468) --- .../java/net/minecraftforge/items/wrapper/InvWrapper.java | 3 +++ .../net/minecraftforge/items/wrapper/SidedInvWrapper.java | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/minecraftforge/items/wrapper/InvWrapper.java b/src/main/java/net/minecraftforge/items/wrapper/InvWrapper.java index 6a41634830..26cac44d99 100644 --- a/src/main/java/net/minecraftforge/items/wrapper/InvWrapper.java +++ b/src/main/java/net/minecraftforge/items/wrapper/InvWrapper.java @@ -80,6 +80,9 @@ public class InvWrapper implements IItemHandlerModifiable int m; if (!stackInSlot.isEmpty()) { + if (stackInSlot.getCount() >= Math.min(stackInSlot.getMaxStackSize(), getSlotLimit(slot))) + return stack; + if (!ItemHandlerHelper.canItemStacksStack(stack, stackInSlot)) return stack; diff --git a/src/main/java/net/minecraftforge/items/wrapper/SidedInvWrapper.java b/src/main/java/net/minecraftforge/items/wrapper/SidedInvWrapper.java index 641c407e4b..d185bbd649 100644 --- a/src/main/java/net/minecraftforge/items/wrapper/SidedInvWrapper.java +++ b/src/main/java/net/minecraftforge/items/wrapper/SidedInvWrapper.java @@ -98,10 +98,13 @@ public class SidedInvWrapper implements IItemHandlerModifiable int m; if (!stackInSlot.isEmpty()) { + if (stackInSlot.getCount() >= Math.min(stackInSlot.getMaxStackSize(), getSlotLimit(slot))) + return stack; + if (!ItemHandlerHelper.canItemStacksStack(stack, stackInSlot)) return stack; - if (!inv.isItemValidForSlot(slot1, stack) || !inv.canInsertItem(slot1, stack, side)) + if (!inv.canInsertItem(slot1, stack, side) || !inv.isItemValidForSlot(slot1, stack)) return stack; m = Math.min(stack.getMaxStackSize(), getSlotLimit(slot)) - stackInSlot.getCount(); @@ -137,7 +140,7 @@ public class SidedInvWrapper implements IItemHandlerModifiable } else { - if (!inv.isItemValidForSlot(slot1, stack) || !inv.canInsertItem(slot1, stack, side)) + if (!inv.canInsertItem(slot1, stack, side) || !inv.isItemValidForSlot(slot1, stack)) return stack; m = Math.min(stack.getMaxStackSize(), getSlotLimit(slot));