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.fluid.IFluidStorageProvider;
|
||||||
import refinedstorage.api.storage.item.IItemStorage;
|
import refinedstorage.api.storage.item.IItemStorage;
|
||||||
import refinedstorage.api.storage.item.IItemStorageProvider;
|
import refinedstorage.api.storage.item.IItemStorageProvider;
|
||||||
|
import refinedstorage.apiimpl.storage.NBTStorage;
|
||||||
import refinedstorage.apiimpl.storage.fluid.FluidStorageNBT;
|
import refinedstorage.apiimpl.storage.fluid.FluidStorageNBT;
|
||||||
import refinedstorage.apiimpl.storage.fluid.FluidUtils;
|
import refinedstorage.apiimpl.storage.fluid.FluidUtils;
|
||||||
import refinedstorage.apiimpl.storage.item.ItemStorageNBT;
|
import refinedstorage.apiimpl.storage.item.ItemStorageNBT;
|
||||||
@@ -101,18 +102,8 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
|
|||||||
super.onContentsChanged(slot);
|
super.onContentsChanged(slot);
|
||||||
|
|
||||||
if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) {
|
if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) {
|
||||||
ItemStack disk = getStackInSlot(slot);
|
NBTStorage.constructFromDrive(getStackInSlot(slot), slot, itemStorages, fluidStorages,
|
||||||
|
s -> new ItemStorage(s), s -> new FluidStorage(s));
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (network != null) {
|
if (network != null) {
|
||||||
network.getItemStorage().rebuild();
|
network.getItemStorage().rebuild();
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import net.minecraftforge.items.CapabilityItemHandler;
|
|||||||
import net.minecraftforge.items.IItemHandler;
|
import net.minecraftforge.items.IItemHandler;
|
||||||
import net.minecraftforge.items.ItemHandlerHelper;
|
import net.minecraftforge.items.ItemHandlerHelper;
|
||||||
import refinedstorage.RefinedStorageItems;
|
import refinedstorage.RefinedStorageItems;
|
||||||
|
import refinedstorage.apiimpl.storage.NBTStorage;
|
||||||
import refinedstorage.apiimpl.storage.fluid.FluidStorageNBT;
|
import refinedstorage.apiimpl.storage.fluid.FluidStorageNBT;
|
||||||
import refinedstorage.apiimpl.storage.fluid.FluidUtils;
|
import refinedstorage.apiimpl.storage.fluid.FluidUtils;
|
||||||
import refinedstorage.apiimpl.storage.item.ItemStorageNBT;
|
import refinedstorage.apiimpl.storage.item.ItemStorageNBT;
|
||||||
@@ -84,18 +85,8 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte
|
|||||||
super.onContentsChanged(slot);
|
super.onContentsChanged(slot);
|
||||||
|
|
||||||
if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER && slot < 6) {
|
if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER && slot < 6) {
|
||||||
ItemStack disk = getStackInSlot(slot);
|
NBTStorage.constructFromDrive(getStackInSlot(slot), slot, itemStorages, fluidStorages,
|
||||||
|
s -> new ItemStorage(s), s -> new FluidStorage(s));
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user