add NBTStorage util class

This commit is contained in:
way2muchnoise
2016-09-17 14:53:51 +02:00
parent 3b27bef1f7
commit 6129420627
3 changed files with 30 additions and 24 deletions

View 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);
}
}
}
}

View File

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

View File

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