aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech')
-rw-r--r--src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalChestBase.java54
1 files changed, 27 insertions, 27 deletions
diff --git a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalChestBase.java b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalChestBase.java
index 7d1d49ee02..d8d4483cb9 100644
--- a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalChestBase.java
+++ b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalChestBase.java
@@ -214,37 +214,37 @@ public abstract class GT_MetaTileEntity_DigitalChestBase extends GT_MetaTileEnti
@Override
public IAEItemStack injectItems(final IAEItemStack input, final appeng.api.config.Actionable mode,
final appeng.api.networking.security.BaseActionSource src) {
- final ItemStack inputStack = input.getItemStack();
- if (inputStack == null) return null;
if (getBaseMetaTileEntity() == null) return input;
- if (mode != appeng.api.config.Actionable.SIMULATE) getBaseMetaTileEntity().markDirty();
- ItemStack storedStack = getItemStack();
- if (storedStack != null) {
- if (GT_Utility.areStacksEqual(storedStack, inputStack)) {
- if (input.getStackSize() + getItemCount() > getMaxItemCount()) {
- if (mVoidOverflow) {
- if (mode != appeng.api.config.Actionable.SIMULATE) setItemCount(getMaxItemCount());
- return null;
- }
- return createOverflowStack(input.getStackSize() + getItemCount(), mode);
- }
- if (mode != appeng.api.config.Actionable.SIMULATE)
- setItemCount(getItemCount() + (int) input.getStackSize());
- return null;
- }
+
+ final ItemStack inputStack = input.getItemStack();
+ final int maxCapacity = getMaxItemCount();
+ final int itemCount = getItemCount();
+ final long toAdd = input.getStackSize();
+ final ItemStack storedStack = getItemStack();
+
+ if (storedStack != null && !GT_Utility.areStacksEqual(storedStack, inputStack)) {
+ // Can't stack with existing item, just return the input.
return input;
}
- if (mode != appeng.api.config.Actionable.SIMULATE) setItemStack(inputStack.copy());
- if (input.getStackSize() > getMaxItemCount()) return createOverflowStack(input.getStackSize(), mode);
- if (mode != appeng.api.config.Actionable.SIMULATE) setItemCount((int) input.getStackSize());
- return null;
- }
- private IAEItemStack createOverflowStack(long size, appeng.api.config.Actionable mode) {
- final IAEItemStack overflow = AEItemStack.create(getItemStack());
- overflow.setStackSize(size - getMaxItemCount());
- if (mode != appeng.api.config.Actionable.SIMULATE) setItemCount(getMaxItemCount());
- return overflow;
+ // Number of items not added because there's too much to add.
+ final long notAdded = itemCount + toAdd - maxCapacity;
+
+ if (mode == appeng.api.config.Actionable.MODULATE) {
+ final int newCount = (int) Math.min((long) maxCapacity, itemCount + toAdd);
+
+ if (storedStack == null) {
+ setItemStack(inputStack.copy());
+ }
+ setItemCount(newCount);
+ getBaseMetaTileEntity().markDirty();
+ }
+ if (mVoidOverflow || notAdded <= 0) {
+ return null;
+ } else {
+ return input.copy()
+ .setStackSize(notAdded);
+ }
}
@Override