Merge remote-tracking branch 'origin/mc1.10' into mc1.10
This commit is contained in:
23
src/main/java/refinedstorage/apiimpl/storage/NBTStorage.java
Normal file
23
src/main/java/refinedstorage/apiimpl/storage/NBTStorage.java
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
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 final 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,29 @@
|
|||||||
package refinedstorage.inventory;
|
package refinedstorage.inventory;
|
||||||
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import refinedstorage.RefinedStorageItems;
|
||||||
|
import refinedstorage.apiimpl.storage.fluid.FluidStorageNBT;
|
||||||
|
import refinedstorage.apiimpl.storage.item.ItemStorageNBT;
|
||||||
|
|
||||||
public interface IItemValidator {
|
public interface IItemValidator {
|
||||||
|
IItemValidator ITEM_STORAGE_DISK = new ItemValidatorBasic(RefinedStorageItems.STORAGE_DISK) {
|
||||||
|
@Override
|
||||||
|
public boolean isValid(ItemStack disk) {
|
||||||
|
return super.isValid(disk) && ItemStorageNBT.isValid(disk);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
IItemValidator FLUID_STORAGE_DISK = new ItemValidatorBasic(RefinedStorageItems.FLUID_STORAGE_DISK) {
|
||||||
|
@Override
|
||||||
|
public boolean isValid(ItemStack disk) {
|
||||||
|
return super.isValid(disk) && FluidStorageNBT.isValid(disk);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
IItemValidator STORAGE_DISK = new IItemValidator() {
|
||||||
|
@Override
|
||||||
|
public boolean isValid(ItemStack stack) {
|
||||||
|
return ITEM_STORAGE_DISK.isValid(stack) || FLUID_STORAGE_DISK.isValid(stack);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
boolean isValid(ItemStack stack);
|
boolean isValid(ItemStack stack);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,14 +17,15 @@ 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;
|
||||||
import refinedstorage.block.EnumFluidStorageType;
|
import refinedstorage.block.EnumFluidStorageType;
|
||||||
import refinedstorage.block.EnumItemStorageType;
|
import refinedstorage.block.EnumItemStorageType;
|
||||||
|
import refinedstorage.inventory.IItemValidator;
|
||||||
import refinedstorage.inventory.ItemHandlerBasic;
|
import refinedstorage.inventory.ItemHandlerBasic;
|
||||||
import refinedstorage.inventory.ItemHandlerFluid;
|
import refinedstorage.inventory.ItemHandlerFluid;
|
||||||
import refinedstorage.inventory.ItemValidatorBasic;
|
|
||||||
import refinedstorage.tile.config.IComparable;
|
import refinedstorage.tile.config.IComparable;
|
||||||
import refinedstorage.tile.config.IFilterable;
|
import refinedstorage.tile.config.IFilterable;
|
||||||
import refinedstorage.tile.config.IPrioritizable;
|
import refinedstorage.tile.config.IPrioritizable;
|
||||||
@@ -85,34 +86,13 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
|
|||||||
private static final String NBT_STORED = "Stored";
|
private static final String NBT_STORED = "Stored";
|
||||||
private static final String NBT_TYPE = "Type";
|
private static final String NBT_TYPE = "Type";
|
||||||
|
|
||||||
private ItemHandlerBasic disks = new ItemHandlerBasic(8, this, new ItemValidatorBasic(RefinedStorageItems.STORAGE_DISK) {
|
private ItemHandlerBasic disks = new ItemHandlerBasic(8, this, IItemValidator.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);
|
|
||||||
}
|
|
||||||
}) {
|
|
||||||
@Override
|
@Override
|
||||||
protected void onContentsChanged(int slot) {
|
protected void onContentsChanged(int slot) {
|
||||||
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();
|
||||||
|
|||||||
@@ -11,15 +11,15 @@ import net.minecraftforge.fml.relauncher.Side;
|
|||||||
import net.minecraftforge.items.CapabilityItemHandler;
|
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.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;
|
||||||
import refinedstorage.block.EnumFluidStorageType;
|
import refinedstorage.block.EnumFluidStorageType;
|
||||||
import refinedstorage.block.EnumItemStorageType;
|
import refinedstorage.block.EnumItemStorageType;
|
||||||
|
import refinedstorage.inventory.IItemValidator;
|
||||||
import refinedstorage.inventory.ItemHandlerBasic;
|
import refinedstorage.inventory.ItemHandlerBasic;
|
||||||
import refinedstorage.inventory.ItemHandlerFluid;
|
import refinedstorage.inventory.ItemHandlerFluid;
|
||||||
import refinedstorage.inventory.ItemValidatorBasic;
|
|
||||||
import refinedstorage.tile.config.IComparable;
|
import refinedstorage.tile.config.IComparable;
|
||||||
import refinedstorage.tile.config.IFilterable;
|
import refinedstorage.tile.config.IFilterable;
|
||||||
import refinedstorage.tile.config.IType;
|
import refinedstorage.tile.config.IType;
|
||||||
@@ -68,34 +68,13 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte
|
|||||||
fluidStorages = new FluidStorage[6];
|
fluidStorages = new FluidStorage[6];
|
||||||
}
|
}
|
||||||
|
|
||||||
private ItemHandlerBasic disks = new ItemHandlerBasic(12, this, new ItemValidatorBasic(RefinedStorageItems.STORAGE_DISK) {
|
private ItemHandlerBasic disks = new ItemHandlerBasic(12, this, IItemValidator.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);
|
|
||||||
}
|
|
||||||
}) {
|
|
||||||
@Override
|
@Override
|
||||||
protected void onContentsChanged(int slot) {
|
protected void onContentsChanged(int slot) {
|
||||||
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