diff --git a/src/main/java/refinedstorage/apiimpl/storage/NBTStorage.java b/src/main/java/refinedstorage/apiimpl/storage/NBTStorage.java new file mode 100644 index 000000000..cdf151e17 --- /dev/null +++ b/src/main/java/refinedstorage/apiimpl/storage/NBTStorage.java @@ -0,0 +1,24 @@ +package refinedstorage.apiimpl.storage; + +import net.minecraft.item.ItemStack; +import refinedstorage.RefinedStorageItems; +import refinedstorage.apiimpl.storage.fluid.FluidStorageNBT; +import refinedstorage.apiimpl.storage.item.ItemStorageNBT; + +import java.util.function.Function; + +public class NBTStorage { + public static void constructFromDrive(ItemStack disk, int slot, ItemStorageNBT[] itemStorages, FluidStorageNBT[] fluidStorages, + Function itemStorageSupplier, Function fluidStorageNBTSupplier) { + if (disk == null) { + itemStorages[slot] = null; + fluidStorages[slot] = null; + } else { + if (disk.getItem() == RefinedStorageItems.STORAGE_DISK) { + itemStorages[slot] = itemStorageSupplier.apply(disk); + } else if (disk.getItem() == RefinedStorageItems.FLUID_STORAGE_DISK) { + fluidStorages[slot] = fluidStorageNBTSupplier.apply(disk); + } + } + } +} diff --git a/src/main/java/refinedstorage/tile/TileDiskDrive.java b/src/main/java/refinedstorage/tile/TileDiskDrive.java index 5934a5c3b..0ce030c85 100755 --- a/src/main/java/refinedstorage/tile/TileDiskDrive.java +++ b/src/main/java/refinedstorage/tile/TileDiskDrive.java @@ -17,6 +17,7 @@ import refinedstorage.api.storage.fluid.IFluidStorage; import refinedstorage.api.storage.fluid.IFluidStorageProvider; import refinedstorage.api.storage.item.IItemStorage; import refinedstorage.api.storage.item.IItemStorageProvider; +import refinedstorage.apiimpl.storage.NBTStorage; import refinedstorage.apiimpl.storage.fluid.FluidStorageNBT; import refinedstorage.apiimpl.storage.fluid.FluidUtils; import refinedstorage.apiimpl.storage.item.ItemStorageNBT; @@ -101,18 +102,8 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl super.onContentsChanged(slot); if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) { - ItemStack disk = getStackInSlot(slot); - - if (disk == null) { - itemStorages[slot] = null; - fluidStorages[slot] = null; - } else { - if (disk.getItem() == RefinedStorageItems.STORAGE_DISK) { - itemStorages[slot] = new ItemStorage(disk); - } else if (disk.getItem() == RefinedStorageItems.FLUID_STORAGE_DISK) { - fluidStorages[slot] = new FluidStorage(disk); - } - } + NBTStorage.constructFromDrive(getStackInSlot(slot), slot, itemStorages, fluidStorages, + s -> new ItemStorage(s), s -> new FluidStorage(s)); if (network != null) { network.getItemStorage().rebuild(); diff --git a/src/main/java/refinedstorage/tile/TileDiskManipulator.java b/src/main/java/refinedstorage/tile/TileDiskManipulator.java index a475de2d7..da3d3e58f 100644 --- a/src/main/java/refinedstorage/tile/TileDiskManipulator.java +++ b/src/main/java/refinedstorage/tile/TileDiskManipulator.java @@ -12,6 +12,7 @@ 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; @@ -84,18 +85,8 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte super.onContentsChanged(slot); if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER && slot < 6) { - ItemStack disk = getStackInSlot(slot); - - if (disk == null) { - itemStorages[slot] = null; - fluidStorages[slot] = null; - } else { - if (disk.getItem() == RefinedStorageItems.STORAGE_DISK) { - itemStorages[slot] = new ItemStorage(disk); - } else if (disk.getItem() == RefinedStorageItems.FLUID_STORAGE_DISK) { - fluidStorages[slot] = new FluidStorage(disk); - } - } + NBTStorage.constructFromDrive(getStackInSlot(slot), slot, itemStorages, fluidStorages, + s -> new ItemStorage(s), s -> new FluidStorage(s)); } }