Added support for Storage Drawers void upgrade, fixes #123
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user