diff --git a/src/main/java/refinedstorage/inventory/IItemValidator.java b/src/main/java/refinedstorage/inventory/IItemValidator.java index c86888705..418af7f62 100755 --- a/src/main/java/refinedstorage/inventory/IItemValidator.java +++ b/src/main/java/refinedstorage/inventory/IItemValidator.java @@ -1,7 +1,29 @@ package refinedstorage.inventory; import net.minecraft.item.ItemStack; +import refinedstorage.RefinedStorageItems; +import refinedstorage.apiimpl.storage.fluid.FluidStorageNBT; +import refinedstorage.apiimpl.storage.item.ItemStorageNBT; public interface IItemValidator { + IItemValidator itemStorageDisk = new ItemValidatorBasic(RefinedStorageItems.STORAGE_DISK) { + @Override + public boolean isValid(ItemStack disk) { + return super.isValid(disk) && ItemStorageNBT.isValid(disk); + } + }; + IItemValidator fluidStorageDisk = new ItemValidatorBasic(RefinedStorageItems.FLUID_STORAGE_DISK) { + @Override + public boolean isValid(ItemStack disk) { + return super.isValid(disk) && FluidStorageNBT.isValid(disk); + } + }; + IItemValidator storageDisk = new IItemValidator() { + @Override + public boolean isValid(ItemStack stack) { + return itemStorageDisk.isValid(stack) || fluidStorageDisk.isValid(stack); + } + }; + boolean isValid(ItemStack stack); } diff --git a/src/main/java/refinedstorage/tile/TileDiskDrive.java b/src/main/java/refinedstorage/tile/TileDiskDrive.java index c210866bb..caf0bab31 100755 --- a/src/main/java/refinedstorage/tile/TileDiskDrive.java +++ b/src/main/java/refinedstorage/tile/TileDiskDrive.java @@ -23,9 +23,9 @@ import refinedstorage.apiimpl.storage.fluid.FluidUtils; import refinedstorage.apiimpl.storage.item.ItemStorageNBT; import refinedstorage.block.EnumFluidStorageType; import refinedstorage.block.EnumItemStorageType; +import refinedstorage.inventory.IItemValidator; import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemHandlerFluid; -import refinedstorage.inventory.ItemValidatorBasic; import refinedstorage.tile.config.IComparable; import refinedstorage.tile.config.IFilterable; import refinedstorage.tile.config.IPrioritizable; @@ -86,17 +86,7 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl private static final String NBT_STORED = "Stored"; private static final String NBT_TYPE = "Type"; - private ItemHandlerBasic disks = new ItemHandlerBasic(8, this, new ItemValidatorBasic(RefinedStorageItems.STORAGE_DISK) { - @Override - public boolean isValid(ItemStack disk) { - return super.isValid(disk) && ItemStorageNBT.isValid(disk); - } - }, new ItemValidatorBasic(RefinedStorageItems.FLUID_STORAGE_DISK) { - @Override - public boolean isValid(ItemStack disk) { - return super.isValid(disk) && FluidStorageNBT.isValid(disk); - } - }) { + private ItemHandlerBasic disks = new ItemHandlerBasic(8, this, IItemValidator.storageDisk) { @Override protected void onContentsChanged(int slot) { super.onContentsChanged(slot); diff --git a/src/main/java/refinedstorage/tile/TileDiskManipulator.java b/src/main/java/refinedstorage/tile/TileDiskManipulator.java index 2d3b8c662..ba3d706a9 100644 --- a/src/main/java/refinedstorage/tile/TileDiskManipulator.java +++ b/src/main/java/refinedstorage/tile/TileDiskManipulator.java @@ -11,16 +11,15 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemHandlerHelper; -import refinedstorage.RefinedStorageItems; import refinedstorage.apiimpl.storage.NBTStorage; import refinedstorage.apiimpl.storage.fluid.FluidStorageNBT; import refinedstorage.apiimpl.storage.fluid.FluidUtils; import refinedstorage.apiimpl.storage.item.ItemStorageNBT; import refinedstorage.block.EnumFluidStorageType; import refinedstorage.block.EnumItemStorageType; +import refinedstorage.inventory.IItemValidator; import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemHandlerFluid; -import refinedstorage.inventory.ItemValidatorBasic; import refinedstorage.tile.config.IComparable; import refinedstorage.tile.config.IFilterable; import refinedstorage.tile.config.IType; @@ -69,17 +68,7 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte fluidStorages = new FluidStorage[6]; } - private ItemHandlerBasic disks = new ItemHandlerBasic(12, this, new ItemValidatorBasic(RefinedStorageItems.STORAGE_DISK) { - @Override - public boolean isValid(ItemStack disk) { - return super.isValid(disk) && ItemStorageNBT.isValid(disk); - } - }, new ItemValidatorBasic(RefinedStorageItems.FLUID_STORAGE_DISK) { - @Override - public boolean isValid(ItemStack disk) { - return super.isValid(disk) && FluidStorageNBT.isValid(disk); - } - }) { + private ItemHandlerBasic disks = new ItemHandlerBasic(12, this, IItemValidator.storageDisk) { @Override protected void onContentsChanged(int slot) { super.onContentsChanged(slot);