Added support for Storage Drawers void upgrade, fixes #123

This commit is contained in:
Raoul Van den Berge
2016-06-19 01:56:03 +02:00
parent 240872fb54
commit 91a35f051d
5 changed files with 18 additions and 8 deletions

View File

@@ -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);

View File

@@ -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);

View File

@@ -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

View File

@@ -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