add NBTStorage util class
This commit is contained in:
24
src/main/java/refinedstorage/apiimpl/storage/NBTStorage.java
Normal file
24
src/main/java/refinedstorage/apiimpl/storage/NBTStorage.java
Normal file
@@ -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<ItemStack, ItemStorageNBT> itemStorageSupplier, Function<ItemStack, FluidStorageNBT> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user