From 2aab253a680e287b24fc3bdc6c8255460081012d Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Mon, 10 Oct 2016 23:54:48 +0200 Subject: [PATCH] More fixes. --- src/main/java/refinedstorage/RSUtils.java | 20 +++++++++++ .../api/storage/AccessType.java | 35 +++++++++++++++++++ .../api/storage/fluid/IFluidStorage.java | 9 +++-- .../api/storage/fluid/IFluidStorageCache.java | 4 +-- .../api/storage/item/IItemStorage.java | 9 +++-- .../api/storage/item/IItemStorageCache.java | 4 +-- .../apiimpl/network/NetworkNodeGraph.java | 4 +-- .../storage/fluid/FluidStorageCache.java | 6 ++-- .../storage/item/ItemStorageCache.java | 6 ++-- .../java/refinedstorage/gui/GuiHandler.java | 2 +- .../item/ItemFluidStorageDisk.java | 6 ---- .../refinedstorage/item/ItemStorageDisk.java | 6 ---- .../refinedstorage/tile/TileController.java | 21 +++++------ .../refinedstorage/tile/TileDiskDrive.java | 33 +++++++++-------- .../tile/TileDiskManipulator.java | 11 ------ .../refinedstorage/tile/TileFluidStorage.java | 25 +++++++------ .../java/refinedstorage/tile/TileStorage.java | 21 ++++++----- .../tile/config/IAccessType.java | 12 +++---- .../externalstorage/FluidStorageExternal.java | 5 +-- .../tile/externalstorage/ItemStorageDSU.java | 3 +- .../externalstorage/ItemStorageDrawer.java | 3 +- .../ItemStorageItemHandler.java | 3 +- .../externalstorage/TileExternalStorage.java | 34 +++++++++--------- 23 files changed, 159 insertions(+), 123 deletions(-) create mode 100755 src/main/java/refinedstorage/api/storage/AccessType.java diff --git a/src/main/java/refinedstorage/RSUtils.java b/src/main/java/refinedstorage/RSUtils.java index 4d23b7838..c055b7d19 100755 --- a/src/main/java/refinedstorage/RSUtils.java +++ b/src/main/java/refinedstorage/RSUtils.java @@ -25,6 +25,7 @@ import net.minecraftforge.items.wrapper.InvWrapper; import net.minecraftforge.items.wrapper.SidedInvWrapper; import org.apache.commons.lang3.tuple.Pair; import refinedstorage.api.network.INetworkMaster; +import refinedstorage.api.storage.AccessType; import refinedstorage.apiimpl.API; import refinedstorage.apiimpl.storage.fluid.FluidStorageNBT; import refinedstorage.apiimpl.storage.item.ItemStorageNBT; @@ -37,6 +38,7 @@ public final class RSUtils { private static final String NBT_INVENTORY = "Inventory_%d"; private static final String NBT_SLOT = "Slot"; + private static final String NBT_ACCESS_TYPE = "AccessType"; public static void writeItemStack(ByteBuf buf, INetworkMaster network, ItemStack stack) { buf.writeInt(Item.getIdFromItem(stack.getItem())); @@ -141,6 +143,24 @@ public final class RSUtils { } } + public static void writeAccessType(NBTTagCompound tag, AccessType type) { + tag.setInteger(NBT_ACCESS_TYPE, type.getId()); + } + + public static AccessType readAccessType(NBTTagCompound tag) { + return tag.hasKey(NBT_ACCESS_TYPE) ? getAccessType(tag.getInteger(NBT_ACCESS_TYPE)) : AccessType.READ_WRITE; + } + + public static AccessType getAccessType(int id) { + for (AccessType type : AccessType.values()) { + if (type.getId() == id) { + return type; + } + } + + return AccessType.READ_WRITE; + } + public static IItemHandler getItemHandler(TileEntity tile, EnumFacing side) { if (tile == null) { return null; diff --git a/src/main/java/refinedstorage/api/storage/AccessType.java b/src/main/java/refinedstorage/api/storage/AccessType.java new file mode 100755 index 000000000..8acab22d4 --- /dev/null +++ b/src/main/java/refinedstorage/api/storage/AccessType.java @@ -0,0 +1,35 @@ +package refinedstorage.api.storage; + +/** + * The access type of a storage. + */ +public enum AccessType { + /** + * Read and write access. + */ + READ_WRITE(0), + /** + * Only read access. + */ + READ(1), + /** + * Only write access. + */ + WRITE(2); + + private int id; + + /** + * @param id the id of this access type + */ + AccessType(int id) { + this.id = id; + } + + /** + * @return the id of this access type + */ + public int getId() { + return id; + } +} diff --git a/src/main/java/refinedstorage/api/storage/fluid/IFluidStorage.java b/src/main/java/refinedstorage/api/storage/fluid/IFluidStorage.java index b8d609065..e311247cf 100755 --- a/src/main/java/refinedstorage/api/storage/fluid/IFluidStorage.java +++ b/src/main/java/refinedstorage/api/storage/fluid/IFluidStorage.java @@ -1,6 +1,7 @@ package refinedstorage.api.storage.fluid; import net.minecraftforge.fluids.FluidStack; +import refinedstorage.api.storage.AccessType; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -51,11 +52,9 @@ public interface IFluidStorage { int getPriority(); /** - * READ(0) : Can see the fluid stored in this storage - * WRITE(1) : Can insert and/or extract fluid from this storage - * READ_WRITE(2) : Can see, insert and extract fluid from this storage - * * @return the access type of this storage */ - int getAccessType(); + default AccessType getAccessType() { + return AccessType.READ_WRITE; + } } diff --git a/src/main/java/refinedstorage/api/storage/fluid/IFluidStorageCache.java b/src/main/java/refinedstorage/api/storage/fluid/IFluidStorageCache.java index df0c8fa6d..249756005 100755 --- a/src/main/java/refinedstorage/api/storage/fluid/IFluidStorageCache.java +++ b/src/main/java/refinedstorage/api/storage/fluid/IFluidStorageCache.java @@ -16,10 +16,10 @@ import java.util.List; */ public interface IFluidStorageCache { /** - * Rebuilds the cache. + * Invalidates the cache. * Typically called when a {@link IFluidStorageProvider} is added or removed from the network. */ - void rebuild(); + void invalidate(); /** * Adds an item to the cache. diff --git a/src/main/java/refinedstorage/api/storage/item/IItemStorage.java b/src/main/java/refinedstorage/api/storage/item/IItemStorage.java index a6a0a4b46..ac6257c7f 100755 --- a/src/main/java/refinedstorage/api/storage/item/IItemStorage.java +++ b/src/main/java/refinedstorage/api/storage/item/IItemStorage.java @@ -1,6 +1,7 @@ package refinedstorage.api.storage.item; import net.minecraft.item.ItemStack; +import refinedstorage.api.storage.AccessType; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -51,11 +52,9 @@ public interface IItemStorage { int getPriority(); /** - * READ(0) : Can see the items stored in this storage - * WRITE(1) : Can insert and/or extract items from this storage - * READ_WRITE(2) : Can see, insert and extract items from this storage - * * @return the access type of this storage */ - int getAccessType(); + default AccessType getAccessType() { + return AccessType.READ_WRITE; + } } diff --git a/src/main/java/refinedstorage/api/storage/item/IItemStorageCache.java b/src/main/java/refinedstorage/api/storage/item/IItemStorageCache.java index 87e60b9d7..5ce8f18d1 100755 --- a/src/main/java/refinedstorage/api/storage/item/IItemStorageCache.java +++ b/src/main/java/refinedstorage/api/storage/item/IItemStorageCache.java @@ -16,10 +16,10 @@ import java.util.List; */ public interface IItemStorageCache { /** - * Rebuilds the cache. + * Invalidates the cache. * Typically called when a {@link IItemStorageProvider} is added or removed from the network. */ - void rebuild(); + void invalidate(); /** * Adds an item to the cache. diff --git a/src/main/java/refinedstorage/apiimpl/network/NetworkNodeGraph.java b/src/main/java/refinedstorage/apiimpl/network/NetworkNodeGraph.java index 01a47a53c..9441ed8b1 100755 --- a/src/main/java/refinedstorage/apiimpl/network/NetworkNodeGraph.java +++ b/src/main/java/refinedstorage/apiimpl/network/NetworkNodeGraph.java @@ -155,11 +155,11 @@ public class NetworkNodeGraph implements INetworkNodeGraph { } if (node instanceof IItemStorageProvider) { - controller.getItemStorageCache().rebuild(); + controller.getItemStorageCache().invalidate(); } if (node instanceof IFluidStorageProvider) { - controller.getFluidStorageCache().rebuild(); + controller.getFluidStorageCache().invalidate(); } controller.getDataManager().sendParameterToWatchers(TileController.NODES); diff --git a/src/main/java/refinedstorage/apiimpl/storage/fluid/FluidStorageCache.java b/src/main/java/refinedstorage/apiimpl/storage/fluid/FluidStorageCache.java index b90638aa8..4bcc85c8a 100755 --- a/src/main/java/refinedstorage/apiimpl/storage/fluid/FluidStorageCache.java +++ b/src/main/java/refinedstorage/apiimpl/storage/fluid/FluidStorageCache.java @@ -2,12 +2,12 @@ package refinedstorage.apiimpl.storage.fluid; import net.minecraftforge.fluids.FluidStack; import refinedstorage.api.network.INetworkMaster; +import refinedstorage.api.storage.AccessType; import refinedstorage.api.storage.fluid.IFluidStorage; import refinedstorage.api.storage.fluid.IFluidStorageCache; import refinedstorage.api.storage.fluid.IFluidStorageProvider; import refinedstorage.api.util.IFluidStackList; import refinedstorage.apiimpl.API; -import refinedstorage.tile.config.IAccessType; import javax.annotation.Nonnull; import java.util.ArrayList; @@ -23,7 +23,7 @@ public class FluidStorageCache implements IFluidStorageCache { } @Override - public synchronized void rebuild() { + public synchronized void invalidate() { storages.clear(); network.getNodeGraph().all().stream() @@ -33,7 +33,7 @@ public class FluidStorageCache implements IFluidStorageCache { list.clear(); for (IFluidStorage storage : storages) { - if (storage.getAccessType() == IAccessType.WRITE) { + if (storage.getAccessType() == AccessType.WRITE) { continue; } diff --git a/src/main/java/refinedstorage/apiimpl/storage/item/ItemStorageCache.java b/src/main/java/refinedstorage/apiimpl/storage/item/ItemStorageCache.java index ca5593c86..dfb8dcfb8 100755 --- a/src/main/java/refinedstorage/apiimpl/storage/item/ItemStorageCache.java +++ b/src/main/java/refinedstorage/apiimpl/storage/item/ItemStorageCache.java @@ -3,12 +3,12 @@ package refinedstorage.apiimpl.storage.item; import net.minecraft.item.ItemStack; import refinedstorage.api.autocrafting.ICraftingPattern; import refinedstorage.api.network.INetworkMaster; +import refinedstorage.api.storage.AccessType; import refinedstorage.api.storage.item.IItemStorage; import refinedstorage.api.storage.item.IItemStorageCache; import refinedstorage.api.storage.item.IItemStorageProvider; import refinedstorage.api.util.IItemStackList; import refinedstorage.apiimpl.API; -import refinedstorage.tile.config.IAccessType; import javax.annotation.Nonnull; import java.util.ArrayList; @@ -24,7 +24,7 @@ public class ItemStorageCache implements IItemStorageCache { } @Override - public synchronized void rebuild() { + public synchronized void invalidate() { storages.clear(); network.getNodeGraph().all().stream() @@ -34,7 +34,7 @@ public class ItemStorageCache implements IItemStorageCache { list.clear(); for (IItemStorage storage : storages) { - if (storage.getAccessType() == IAccessType.WRITE) { + if (storage.getAccessType() == AccessType.WRITE) { continue; } diff --git a/src/main/java/refinedstorage/gui/GuiHandler.java b/src/main/java/refinedstorage/gui/GuiHandler.java index 38e9dc85d..db10a7eda 100755 --- a/src/main/java/refinedstorage/gui/GuiHandler.java +++ b/src/main/java/refinedstorage/gui/GuiHandler.java @@ -108,7 +108,7 @@ public class GuiHandler implements IGuiHandler { case RSGui.DETECTOR: return new GuiDetector((ContainerDetector) getContainer(ID, player, tile)); case RSGui.SOLDERER: - return new GuiSolderer((ContainerSolderer) getContainer(ID, player, tile), (TileSolderer) tile); + return new GuiSolderer((ContainerSolderer) getContainer(ID, player, tile)); case RSGui.DESTRUCTOR: return new GuiDestructor((ContainerDestructor) getContainer(ID, player, tile)); case RSGui.CONSTRUCTOR: diff --git a/src/main/java/refinedstorage/item/ItemFluidStorageDisk.java b/src/main/java/refinedstorage/item/ItemFluidStorageDisk.java index d808e1c62..b0b1630b2 100755 --- a/src/main/java/refinedstorage/item/ItemFluidStorageDisk.java +++ b/src/main/java/refinedstorage/item/ItemFluidStorageDisk.java @@ -18,7 +18,6 @@ import net.minecraftforge.fluids.FluidStack; import refinedstorage.RSItems; import refinedstorage.apiimpl.storage.fluid.FluidStorageNBT; import refinedstorage.block.EnumFluidStorageType; -import refinedstorage.tile.config.IAccessType; import java.util.List; @@ -56,11 +55,6 @@ public class ItemFluidStorageDisk extends ItemBase { public int getPriority() { return 0; } - - @Override - public int getAccessType() { - return IAccessType.READ_WRITE; - } }; for (Fluid fluid : FluidRegistry.getRegisteredFluids().values()) { diff --git a/src/main/java/refinedstorage/item/ItemStorageDisk.java b/src/main/java/refinedstorage/item/ItemStorageDisk.java index f8236ff09..e793eade6 100755 --- a/src/main/java/refinedstorage/item/ItemStorageDisk.java +++ b/src/main/java/refinedstorage/item/ItemStorageDisk.java @@ -15,7 +15,6 @@ import net.minecraft.world.World; import refinedstorage.RSItems; import refinedstorage.apiimpl.storage.item.ItemStorageNBT; import refinedstorage.block.EnumItemStorageType; -import refinedstorage.tile.config.IAccessType; import java.util.ArrayList; import java.util.Iterator; @@ -68,11 +67,6 @@ public class ItemStorageDisk extends ItemBase { public int getPriority() { return 0; } - - @Override - public int getAccessType() { - return IAccessType.READ_WRITE; - } }; Iterator it = Item.REGISTRY.iterator(); diff --git a/src/main/java/refinedstorage/tile/TileController.java b/src/main/java/refinedstorage/tile/TileController.java index 562fe4fc6..1e71f0765 100755 --- a/src/main/java/refinedstorage/tile/TileController.java +++ b/src/main/java/refinedstorage/tile/TileController.java @@ -34,6 +34,7 @@ import refinedstorage.api.network.INetworkNodeGraph; import refinedstorage.api.network.IWirelessGridHandler; import refinedstorage.api.network.grid.IFluidGridHandler; import refinedstorage.api.network.grid.IItemGridHandler; +import refinedstorage.api.storage.AccessType; import refinedstorage.api.storage.fluid.IFluidStorage; import refinedstorage.api.storage.fluid.IFluidStorageCache; import refinedstorage.api.storage.item.IItemStorage; @@ -61,7 +62,6 @@ import refinedstorage.network.MessageGridFluidDelta; import refinedstorage.network.MessageGridFluidUpdate; import refinedstorage.network.MessageGridItemDelta; import refinedstorage.network.MessageGridItemUpdate; -import refinedstorage.tile.config.IAccessType; import refinedstorage.tile.config.IRedstoneConfigurable; import refinedstorage.tile.config.RedstoneMode; import refinedstorage.tile.data.ITileDataProducer; @@ -459,7 +459,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR } } - itemStorage.rebuild(); + itemStorage.invalidate(); } @Override @@ -519,13 +519,13 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR } int orginalSize = size; - int accessType = IAccessType.READ_WRITE; + AccessType accessType = AccessType.READ_WRITE; ItemStack remainder = stack; for (IItemStorage storage : this.itemStorage.getStorages()) { accessType = storage.getAccessType(); - if (accessType != IAccessType.READ) { + if (accessType != AccessType.READ) { remainder = storage.insertItem(remainder, size, simulate); } @@ -553,7 +553,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR inserted = orginalSize - remainder.stackSize; } - if (!simulate && inserted > 0 && accessType != IAccessType.WRITE) { + if (!simulate && inserted > 0 && accessType != AccessType.WRITE) { itemStorage.add(ItemHandlerHelper.copyStackWithSize(stack, inserted), false); for (int i = 0; i < inserted; ++i) { @@ -587,7 +587,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR for (IItemStorage storage : this.itemStorage.getStorages()) { ItemStack took = null; - if (storage.getAccessType() != IAccessType.READ) { + if (storage.getAccessType() != AccessType.READ) { took = storage.extractItem(stack, requested - received, flags); } @@ -625,13 +625,13 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR } int orginalSize = size; - int accessType = IAccessType.READ_WRITE; + AccessType accessType = AccessType.READ_WRITE; FluidStack remainder = stack; for (IFluidStorage storage : this.fluidStorage.getStorages()) { accessType = storage.getAccessType(); - if (accessType != IAccessType.READ) { + if (accessType != AccessType.READ) { remainder = storage.insertFluid(remainder, size, simulate); } @@ -658,7 +658,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR inserted = orginalSize - remainder.amount; } - if (!simulate && inserted > 0 && accessType != IAccessType.WRITE) { + if (!simulate && inserted > 0 && accessType != AccessType.WRITE) { fluidStorage.add(RSUtils.copyStackWithSize(stack, inserted), false); } @@ -674,7 +674,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR for (IFluidStorage storage : this.fluidStorage.getStorages()) { FluidStack took = null; - if (storage.getAccessType() != IAccessType.READ) { + + if (storage.getAccessType() != AccessType.READ) { took = storage.extractFluid(stack, requested - received, flags); } diff --git a/src/main/java/refinedstorage/tile/TileDiskDrive.java b/src/main/java/refinedstorage/tile/TileDiskDrive.java index fdd9f5d56..559eff309 100755 --- a/src/main/java/refinedstorage/tile/TileDiskDrive.java +++ b/src/main/java/refinedstorage/tile/TileDiskDrive.java @@ -14,6 +14,7 @@ import refinedstorage.RS; import refinedstorage.RSItems; import refinedstorage.RSUtils; import refinedstorage.api.network.INetworkMaster; +import refinedstorage.api.storage.AccessType; import refinedstorage.api.storage.fluid.IFluidStorage; import refinedstorage.api.storage.fluid.IFluidStorageProvider; import refinedstorage.api.storage.item.IItemStorage; @@ -66,7 +67,7 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl } @Override - public int getAccessType() { + public AccessType getAccessType() { return accessType; } } @@ -98,7 +99,7 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl } @Override - public int getAccessType() { + public AccessType getAccessType() { return accessType; } } @@ -108,7 +109,6 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl private static final String NBT_MODE = "Mode"; private static final String NBT_TYPE = "Type"; private static final String NBT_VOID_EXCESS = "VoidExcess"; - private static final String NBT_ACCESS_TYPE = "AccessType"; private ItemHandlerBasic disks = new ItemHandlerBasic(8, this, IItemValidator.STORAGE_DISK) { @Override @@ -119,8 +119,8 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl RSUtils.constructFromDrive(getStackInSlot(slot), slot, itemStorages, fluidStorages, ItemStorage::new, FluidStorage::new); if (network != null) { - network.getItemStorageCache().rebuild(); - network.getFluidStorageCache().rebuild(); + network.getItemStorageCache().invalidate(); + network.getFluidStorageCache().invalidate(); } if (worldObj != null) { @@ -149,7 +149,7 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl private ItemStorage itemStorages[] = new ItemStorage[8]; private FluidStorage fluidStorages[] = new FluidStorage[8]; - private int accessType = IAccessType.READ_WRITE; + private AccessType accessType = AccessType.READ_WRITE; private int priority = 0; private int compare = IComparer.COMPARE_NBT | IComparer.COMPARE_DAMAGE; private int mode = IFilterable.WHITELIST; @@ -200,8 +200,8 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl public void onConnectionChange(INetworkMaster network, boolean state) { super.onConnectionChange(network, state); - network.getItemStorageCache().rebuild(); - network.getFluidStorageCache().rebuild(); + network.getItemStorageCache().invalidate(); + network.getFluidStorageCache().invalidate(); } @Override @@ -250,9 +250,7 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl voidExcess = tag.getBoolean(NBT_VOID_EXCESS); } - if (tag.hasKey(NBT_ACCESS_TYPE)) { - accessType = tag.getInteger(NBT_ACCESS_TYPE); - } + accessType = RSUtils.readAccessType(tag); } @Override @@ -278,7 +276,8 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl tag.setInteger(NBT_MODE, mode); tag.setInteger(NBT_TYPE, type); tag.setBoolean(NBT_VOID_EXCESS, voidExcess); - tag.setInteger(NBT_ACCESS_TYPE, accessType); + + RSUtils.writeAccessType(tag, accessType); return tag; } @@ -353,16 +352,16 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl } @Override - public int getAccessType() { + public AccessType getAccessType() { return accessType; } @Override - public void setAccessType(int value) { - accessType = value; + public void setAccessType(AccessType value) { + this.accessType = value; - network.getFluidStorageCache().rebuild(); - network.getItemStorageCache().rebuild(); + network.getFluidStorageCache().invalidate(); + network.getItemStorageCache().invalidate(); markDirty(); } diff --git a/src/main/java/refinedstorage/tile/TileDiskManipulator.java b/src/main/java/refinedstorage/tile/TileDiskManipulator.java index 8676979f8..67f31f630 100755 --- a/src/main/java/refinedstorage/tile/TileDiskManipulator.java +++ b/src/main/java/refinedstorage/tile/TileDiskManipulator.java @@ -23,7 +23,6 @@ import refinedstorage.inventory.ItemHandlerBasic; import refinedstorage.inventory.ItemHandlerFluid; import refinedstorage.inventory.ItemHandlerUpgrade; import refinedstorage.item.ItemUpgrade; -import refinedstorage.tile.config.IAccessType; import refinedstorage.tile.config.IComparable; import refinedstorage.tile.config.IFilterable; import refinedstorage.tile.config.IType; @@ -128,11 +127,6 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte return super.extractItem(stack, size, flags); } - - @Override - public int getAccessType() { - return IAccessType.READ_WRITE; - } } public class FluidStorage extends FluidStorageNBT { @@ -162,11 +156,6 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte return super.extractFluid(stack, size, flags); } - - @Override - public int getAccessType() { - return IAccessType.READ_WRITE; - } } private ItemHandlerBasic itemFilters = new ItemHandlerBasic(9, this); diff --git a/src/main/java/refinedstorage/tile/TileFluidStorage.java b/src/main/java/refinedstorage/tile/TileFluidStorage.java index 85cd35b1d..e2fe1c0bc 100755 --- a/src/main/java/refinedstorage/tile/TileFluidStorage.java +++ b/src/main/java/refinedstorage/tile/TileFluidStorage.java @@ -7,6 +7,7 @@ import refinedstorage.RS; import refinedstorage.RSBlocks; import refinedstorage.RSUtils; import refinedstorage.api.network.INetworkMaster; +import refinedstorage.api.storage.AccessType; import refinedstorage.api.storage.fluid.IFluidStorage; import refinedstorage.api.storage.fluid.IFluidStorageProvider; import refinedstorage.api.util.IComparer; @@ -60,7 +61,7 @@ public class TileFluidStorage extends TileNode implements IFluidStorageProvider, } @Override - public int getAccessType() { + public AccessType getAccessType() { return accessType; } } @@ -71,7 +72,6 @@ public class TileFluidStorage extends TileNode implements IFluidStorageProvider, private static final String NBT_COMPARE = "Compare"; private static final String NBT_MODE = "Mode"; private static final String NBT_VOID_EXCESS = "VoidExcess"; - private static final String NBT_ACCESS_TYPE = "AccessType"; private ItemHandlerFluid filters = new ItemHandlerFluid(9, this); @@ -81,7 +81,7 @@ public class TileFluidStorage extends TileNode implements IFluidStorageProvider, private EnumFluidStorageType type; - private int accessType = IAccessType.READ_WRITE; + private AccessType accessType = AccessType.READ_WRITE; private int priority = 0; private int compare = IComparer.COMPARE_NBT; private int mode = IFilterable.WHITELIST; @@ -113,7 +113,7 @@ public class TileFluidStorage extends TileNode implements IFluidStorageProvider, storage = new FluidStorage(); if (network != null) { - network.getFluidStorageCache().rebuild(); + network.getFluidStorageCache().invalidate(); } } } @@ -128,7 +128,7 @@ public class TileFluidStorage extends TileNode implements IFluidStorageProvider, public void onConnectionChange(INetworkMaster network, boolean state) { super.onConnectionChange(network, state); - network.getFluidStorageCache().rebuild(); + network.getFluidStorageCache().invalidate(); } @Override @@ -164,9 +164,7 @@ public class TileFluidStorage extends TileNode implements IFluidStorageProvider, voidExcess = tag.getBoolean(NBT_VOID_EXCESS); } - if (tag.hasKey(NBT_ACCESS_TYPE)) { - accessType = tag.getInteger(NBT_ACCESS_TYPE); - } + accessType = RSUtils.readAccessType(tag); } @Override @@ -185,7 +183,8 @@ public class TileFluidStorage extends TileNode implements IFluidStorageProvider, tag.setInteger(NBT_COMPARE, compare); tag.setInteger(NBT_MODE, mode); tag.setBoolean(NBT_VOID_EXCESS, voidExcess); - tag.setInteger(NBT_ACCESS_TYPE, accessType); + + RSUtils.writeAccessType(tag, accessType); return tag; } @@ -284,15 +283,15 @@ public class TileFluidStorage extends TileNode implements IFluidStorageProvider, } @Override - public int getAccessType() { + public AccessType getAccessType() { return accessType; } @Override - public void setAccessType(int value) { - accessType = value; + public void setAccessType(AccessType value) { + this.accessType = value; - network.getFluidStorageCache().rebuild(); + network.getFluidStorageCache().invalidate(); markDirty(); } diff --git a/src/main/java/refinedstorage/tile/TileStorage.java b/src/main/java/refinedstorage/tile/TileStorage.java index e0084672f..e9dae1222 100755 --- a/src/main/java/refinedstorage/tile/TileStorage.java +++ b/src/main/java/refinedstorage/tile/TileStorage.java @@ -8,6 +8,7 @@ import refinedstorage.RS; import refinedstorage.RSBlocks; import refinedstorage.RSUtils; import refinedstorage.api.network.INetworkMaster; +import refinedstorage.api.storage.AccessType; import refinedstorage.api.storage.item.IItemStorage; import refinedstorage.api.storage.item.IItemStorageProvider; import refinedstorage.api.util.IComparer; @@ -61,7 +62,7 @@ public class TileStorage extends TileNode implements IItemStorageProvider, IStor } @Override - public int getAccessType() { + public AccessType getAccessType() { return accessType; } } @@ -81,7 +82,7 @@ public class TileStorage extends TileNode implements IItemStorageProvider, IStor private EnumItemStorageType type; - private int accessType = IAccessType.READ_WRITE; + private AccessType accessType = AccessType.READ_WRITE; private int priority = 0; private int compare = IComparer.COMPARE_NBT | IComparer.COMPARE_DAMAGE; private int mode = IFilterable.WHITELIST; @@ -113,7 +114,7 @@ public class TileStorage extends TileNode implements IItemStorageProvider, IStor storage = new ItemStorage(); if (network != null) { - network.getItemStorageCache().rebuild(); + network.getItemStorageCache().invalidate(); } } } @@ -128,7 +129,7 @@ public class TileStorage extends TileNode implements IItemStorageProvider, IStor public void onConnectionChange(INetworkMaster network, boolean state) { super.onConnectionChange(network, state); - network.getItemStorageCache().rebuild(); + network.getItemStorageCache().invalidate(); } @Override @@ -163,6 +164,8 @@ public class TileStorage extends TileNode implements IItemStorageProvider, IStor if (tag.hasKey(NBT_VOID_EXCESS)) { voidExcess = tag.getBoolean(NBT_VOID_EXCESS); } + + RSUtils.writeAccessType(tag, accessType); } @Override @@ -182,6 +185,8 @@ public class TileStorage extends TileNode implements IItemStorageProvider, IStor tag.setInteger(NBT_MODE, mode); tag.setBoolean(NBT_VOID_EXCESS, voidExcess); + accessType = RSUtils.readAccessType(tag); + return tag; } @@ -291,15 +296,15 @@ public class TileStorage extends TileNode implements IItemStorageProvider, IStor } @Override - public int getAccessType() { + public AccessType getAccessType() { return accessType; } @Override - public void setAccessType(int value) { - accessType = value; + public void setAccessType(AccessType value) { + this.accessType = value; - network.getItemStorageCache().rebuild(); + network.getItemStorageCache().invalidate(); markDirty(); } diff --git a/src/main/java/refinedstorage/tile/config/IAccessType.java b/src/main/java/refinedstorage/tile/config/IAccessType.java index a35eb6442..36b1169a6 100755 --- a/src/main/java/refinedstorage/tile/config/IAccessType.java +++ b/src/main/java/refinedstorage/tile/config/IAccessType.java @@ -3,6 +3,8 @@ package refinedstorage.tile.config; import net.minecraft.network.datasync.DataSerializers; import net.minecraft.tileentity.TileEntity; +import refinedstorage.RSUtils; +import refinedstorage.api.storage.AccessType; import refinedstorage.tile.data.ITileDataConsumer; import refinedstorage.tile.data.ITileDataProducer; import refinedstorage.tile.data.TileDataParameter; @@ -16,19 +18,17 @@ public interface IAccessType { return new TileDataParameter<>(DataSerializers.VARINT, READ_WRITE, new ITileDataProducer() { @Override public Integer getValue(T tile) { - return ((IAccessType) tile).getAccessType(); + return ((IAccessType) tile).getAccessType().getId(); } }, new ITileDataConsumer() { @Override public void setValue(T tile, Integer value) { - if (value == READ || value == WRITE || value == READ_WRITE) { - ((IAccessType) tile).setAccessType(value); - } + ((IAccessType) tile).setAccessType(RSUtils.getAccessType(value)); } }); } - int getAccessType(); + AccessType getAccessType(); - void setAccessType(int accessType); + void setAccessType(AccessType accessType); } \ No newline at end of file diff --git a/src/main/java/refinedstorage/tile/externalstorage/FluidStorageExternal.java b/src/main/java/refinedstorage/tile/externalstorage/FluidStorageExternal.java index c9dc46476..e909e5d0b 100755 --- a/src/main/java/refinedstorage/tile/externalstorage/FluidStorageExternal.java +++ b/src/main/java/refinedstorage/tile/externalstorage/FluidStorageExternal.java @@ -4,6 +4,7 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.fluids.capability.IFluidTankProperties; import refinedstorage.RSUtils; +import refinedstorage.api.storage.AccessType; import refinedstorage.api.storage.fluid.IFluidStorage; import refinedstorage.api.util.IComparer; import refinedstorage.apiimpl.API; @@ -80,7 +81,7 @@ public class FluidStorageExternal implements IFluidStorage { return externalStorage.getPriority(); } - public int getAccessType() { + public AccessType getAccessType() { return externalStorage.getAccessType(); } @@ -89,7 +90,7 @@ public class FluidStorageExternal implements IFluidStorage { if (cache == null) { cache = RSUtils.copyStack(stack); - } else if (!API.instance().getComparer().isEqual(stack, cache, IComparer.COMPARE_NBT | API.instance().getComparer().COMPARE_QUANTITY)) { + } else if (!API.instance().getComparer().isEqual(stack, cache, IComparer.COMPARE_NBT | IComparer.COMPARE_QUANTITY)) { cache = RSUtils.copyStack(stack); return true; diff --git a/src/main/java/refinedstorage/tile/externalstorage/ItemStorageDSU.java b/src/main/java/refinedstorage/tile/externalstorage/ItemStorageDSU.java index 33aa86475..74b6d2fd2 100755 --- a/src/main/java/refinedstorage/tile/externalstorage/ItemStorageDSU.java +++ b/src/main/java/refinedstorage/tile/externalstorage/ItemStorageDSU.java @@ -3,6 +3,7 @@ package refinedstorage.tile.externalstorage; import net.minecraft.item.ItemStack; import net.minecraftforge.items.ItemHandlerHelper; import powercrystals.minefactoryreloaded.api.IDeepStorageUnit; +import refinedstorage.api.storage.AccessType; import refinedstorage.apiimpl.API; import refinedstorage.tile.config.IFilterable; @@ -112,7 +113,7 @@ public class ItemStorageDSU extends ItemStorageExternal { } @Override - public int getAccessType() { + public AccessType getAccessType() { return externalStorage.getAccessType(); } } diff --git a/src/main/java/refinedstorage/tile/externalstorage/ItemStorageDrawer.java b/src/main/java/refinedstorage/tile/externalstorage/ItemStorageDrawer.java index b00419c2f..0e114aff4 100755 --- a/src/main/java/refinedstorage/tile/externalstorage/ItemStorageDrawer.java +++ b/src/main/java/refinedstorage/tile/externalstorage/ItemStorageDrawer.java @@ -4,6 +4,7 @@ import com.jaquadro.minecraft.storagedrawers.api.storage.IDrawer; import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.IVoidable; import net.minecraft.item.ItemStack; import net.minecraftforge.items.ItemHandlerHelper; +import refinedstorage.api.storage.AccessType; import refinedstorage.apiimpl.API; import refinedstorage.tile.config.IFilterable; @@ -114,7 +115,7 @@ public class ItemStorageDrawer extends ItemStorageExternal { } @Override - public int getAccessType() { + public AccessType getAccessType() { return externalStorage.getAccessType(); } } diff --git a/src/main/java/refinedstorage/tile/externalstorage/ItemStorageItemHandler.java b/src/main/java/refinedstorage/tile/externalstorage/ItemStorageItemHandler.java index d130bf4ff..5b4823492 100755 --- a/src/main/java/refinedstorage/tile/externalstorage/ItemStorageItemHandler.java +++ b/src/main/java/refinedstorage/tile/externalstorage/ItemStorageItemHandler.java @@ -3,6 +3,7 @@ package refinedstorage.tile.externalstorage; import net.minecraft.item.ItemStack; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemHandlerHelper; +import refinedstorage.api.storage.AccessType; import refinedstorage.apiimpl.API; import refinedstorage.tile.config.IFilterable; @@ -95,7 +96,7 @@ public class ItemStorageItemHandler extends ItemStorageExternal { } @Override - public int getAccessType() { + public AccessType getAccessType() { return externalStorage.getAccessType(); } } diff --git a/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java b/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java index 247382e1f..4b19d4d91 100755 --- a/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java +++ b/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java @@ -13,6 +13,7 @@ import powercrystals.minefactoryreloaded.api.IDeepStorageUnit; import refinedstorage.RS; import refinedstorage.RSUtils; import refinedstorage.api.network.INetworkMaster; +import refinedstorage.api.storage.AccessType; import refinedstorage.api.storage.fluid.IFluidStorage; import refinedstorage.api.storage.fluid.IFluidStorageProvider; import refinedstorage.api.storage.item.IItemStorage; @@ -74,7 +75,6 @@ public class TileExternalStorage extends TileMultipartNode implements IItemStora private static final String NBT_COMPARE = "Compare"; private static final String NBT_MODE = "Mode"; private static final String NBT_TYPE = "Type"; - private static final String NBT_ACCESS_TYPE = "AccessType"; private ItemHandlerBasic itemFilters = new ItemHandlerBasic(9, this); private ItemHandlerFluid fluidFilters = new ItemHandlerFluid(9, this); @@ -83,7 +83,7 @@ public class TileExternalStorage extends TileMultipartNode implements IItemStora private int compare = IComparer.COMPARE_NBT | IComparer.COMPARE_DAMAGE; private int mode = IFilterable.WHITELIST; private int type = IType.ITEMS; - private int accessType = IAccessType.READ_WRITE; + private AccessType accessType = AccessType.READ_WRITE; private List itemStorages = new ArrayList<>(); private List fluidStorages = new ArrayList<>(); @@ -120,8 +120,8 @@ public class TileExternalStorage extends TileMultipartNode implements IItemStora updateStorage(network); - network.getItemStorageCache().rebuild(); - network.getFluidStorageCache().rebuild(); + network.getItemStorageCache().invalidate(); + network.getFluidStorageCache().invalidate(); } @Override @@ -142,11 +142,11 @@ public class TileExternalStorage extends TileMultipartNode implements IItemStora } if (itemChangeDetected) { - network.getItemStorageCache().rebuild(); + network.getItemStorageCache().invalidate(); } if (fluidChangeDetected) { - network.getFluidStorageCache().rebuild(); + network.getFluidStorageCache().invalidate(); } if (getFacingTile() instanceof IDrawerGroup && lastDrawerCount != ((IDrawerGroup) getFacingTile()).getDrawerCount()) { @@ -182,9 +182,7 @@ public class TileExternalStorage extends TileMultipartNode implements IItemStora type = tag.getInteger(NBT_TYPE); } - if (tag.hasKey(NBT_ACCESS_TYPE)) { - accessType = tag.getInteger(NBT_ACCESS_TYPE); - } + accessType = RSUtils.readAccessType(tag); } @Override @@ -198,7 +196,8 @@ public class TileExternalStorage extends TileMultipartNode implements IItemStora tag.setInteger(NBT_COMPARE, compare); tag.setInteger(NBT_MODE, mode); tag.setInteger(NBT_TYPE, type); - tag.setInteger(NBT_ACCESS_TYPE, accessType); + + RSUtils.writeAccessType(tag, accessType); return tag; } @@ -273,8 +272,8 @@ public class TileExternalStorage extends TileMultipartNode implements IItemStora } } - network.getItemStorageCache().rebuild(); - network.getFluidStorageCache().rebuild(); + network.getItemStorageCache().invalidate(); + network.getFluidStorageCache().invalidate(); } @Override @@ -338,17 +337,16 @@ public class TileExternalStorage extends TileMultipartNode implements IItemStora } @Override - public int getAccessType() { + public AccessType getAccessType() { return accessType; } @Override - public void setAccessType(int type) { - accessType = type; + public void setAccessType(AccessType type) { + this.accessType = type; - // Refresh item/fluid cache - network.getItemStorageCache().rebuild(); - network.getFluidStorageCache().rebuild(); + network.getItemStorageCache().invalidate(); + network.getFluidStorageCache().invalidate(); markDirty(); }