From 91a35f051dd7cabb1aea20bf509971446cd0da31 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Sun, 19 Jun 2016 01:56:03 +0200 Subject: [PATCH] Added support for Storage Drawers void upgrade, fixes #123 --- CHANGELOG.md | 3 +++ .../java/refinedstorage/tile/TileDiskDrive.java | 3 ++- .../java/refinedstorage/tile/TileStorage.java | 3 ++- .../tile/externalstorage/DrawerStorage.java | 15 ++++++++++----- .../tile/externalstorage/ItemHandlerStorage.java | 2 +- 5 files changed, 18 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3cc18ca2b..48911eeaf 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Refined Storage Changelog +### 0.7.16 +- Added support for Storage Drawers void upgrade + ### 0.7.15 **Bugfixes** - Fixed not being able to scroll with the scroll wheel using MouseTweaks diff --git a/src/main/java/refinedstorage/tile/TileDiskDrive.java b/src/main/java/refinedstorage/tile/TileDiskDrive.java index 55f6baa21..23f19699d 100755 --- a/src/main/java/refinedstorage/tile/TileDiskDrive.java +++ b/src/main/java/refinedstorage/tile/TileDiskDrive.java @@ -8,6 +8,7 @@ import net.minecraft.util.EnumFacing; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.ItemHandlerHelper; import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorageItems; import refinedstorage.RefinedStorageUtils; @@ -38,7 +39,7 @@ public class TileDiskDrive extends TileMachine implements IStorageProvider, ISto @Override public ItemStack push(ItemStack stack, int size, boolean simulate) { if (!ModeFilter.respectsMode(getFilters(), getModeConfig(), getCompare(), stack)) { - return stack; + return ItemHandlerHelper.copyStackWithSize(stack, size); } return super.push(stack, size, simulate); diff --git a/src/main/java/refinedstorage/tile/TileStorage.java b/src/main/java/refinedstorage/tile/TileStorage.java index d6a828da6..8c41df589 100755 --- a/src/main/java/refinedstorage/tile/TileStorage.java +++ b/src/main/java/refinedstorage/tile/TileStorage.java @@ -7,6 +7,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.ItemHandlerHelper; import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorageBlocks; import refinedstorage.RefinedStorageUtils; @@ -37,7 +38,7 @@ public class TileStorage extends TileMachine implements IStorageProvider, IStora @Override public ItemStack push(ItemStack stack, int size, boolean simulate) { if (!ModeFilter.respectsMode(filters, TileStorage.this, compare, stack)) { - return stack; + return ItemHandlerHelper.copyStackWithSize(stack, size); } return super.push(stack, size, simulate); diff --git a/src/main/java/refinedstorage/tile/externalstorage/DrawerStorage.java b/src/main/java/refinedstorage/tile/externalstorage/DrawerStorage.java index fb9bd0128..317057321 100755 --- a/src/main/java/refinedstorage/tile/externalstorage/DrawerStorage.java +++ b/src/main/java/refinedstorage/tile/externalstorage/DrawerStorage.java @@ -1,6 +1,7 @@ package refinedstorage.tile.externalstorage; import com.jaquadro.minecraft.storagedrawers.api.storage.IDrawer; +import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.IVoidable; import net.minecraft.item.ItemStack; import net.minecraftforge.items.ItemHandlerHelper; import refinedstorage.RefinedStorageUtils; @@ -29,6 +30,10 @@ public class DrawerStorage extends ExternalStorage { } } + public boolean isVoidable() { + return drawer instanceof IVoidable && ((IVoidable) drawer).isVoid(); + } + @Override public ItemStack push(ItemStack stack, int size, boolean simulate) { if (ModeFilter.respectsMode(externalStorage.getFilters(), externalStorage, externalStorage.getCompare(), stack) && drawer.canItemBeStored(stack)) { @@ -37,14 +42,14 @@ public class DrawerStorage extends ExternalStorage { int remainingSpace = getCapacity() - getStored(); if (remainingSpace <= 0) { - return ItemHandlerHelper.copyStackWithSize(stack, size); + return isVoidable() ? null : ItemHandlerHelper.copyStackWithSize(stack, size); } if (!simulate) { drawer.setStoredItemCount(drawer.getStoredItemCount() + remainingSpace); } - return ItemHandlerHelper.copyStackWithSize(stack, size - remainingSpace); + return isVoidable() ? null : ItemHandlerHelper.copyStackWithSize(stack, size - remainingSpace); } else { if (!simulate) { drawer.setStoredItemCount(drawer.getStoredItemCount() + size); @@ -57,14 +62,14 @@ public class DrawerStorage extends ExternalStorage { int remainingSpace = getCapacity() - getStored(); if (remainingSpace <= 0) { - return ItemHandlerHelper.copyStackWithSize(stack, size); + return isVoidable() ? null : ItemHandlerHelper.copyStackWithSize(stack, size); } if (!simulate) { drawer.setStoredItem(stack, remainingSpace); } - return ItemHandlerHelper.copyStackWithSize(stack, size - remainingSpace); + return isVoidable() ? null : ItemHandlerHelper.copyStackWithSize(stack, size - remainingSpace); } else { if (!simulate) { drawer.setStoredItem(stack, size); @@ -75,7 +80,7 @@ public class DrawerStorage extends ExternalStorage { } } - return stack; + return ItemHandlerHelper.copyStackWithSize(stack, size); } @Override diff --git a/src/main/java/refinedstorage/tile/externalstorage/ItemHandlerStorage.java b/src/main/java/refinedstorage/tile/externalstorage/ItemHandlerStorage.java index 6bff2b7dd..18cf07341 100755 --- a/src/main/java/refinedstorage/tile/externalstorage/ItemHandlerStorage.java +++ b/src/main/java/refinedstorage/tile/externalstorage/ItemHandlerStorage.java @@ -37,7 +37,7 @@ public class ItemHandlerStorage extends ExternalStorage { return ItemHandlerHelper.insertItem(handler, ItemHandlerHelper.copyStackWithSize(stack, size), simulate); } - return stack; + return ItemHandlerHelper.copyStackWithSize(stack, size); } @Override