diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/storage/externalstorage/FluidExternalStorage.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/storage/externalstorage/FluidExternalStorage.java index ea40e6ca3..fca466741 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/storage/externalstorage/FluidExternalStorage.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/storage/externalstorage/FluidExternalStorage.java @@ -117,19 +117,7 @@ public class FluidExternalStorage implements IExternalStorage { @Override public int getStored() { - IFluidHandler fluidHandler = handlerSupplier.get(); - - if (fluidHandler != null) { - int stored = 0; - - for (int i = 0; i < fluidHandler.getTanks(); ++i) { - stored += fluidHandler.getFluidInTank(i).getAmount(); - } - - return stored; - } - - return 0; + return cache.getStored(); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/storage/externalstorage/FluidExternalStorageCache.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/storage/externalstorage/FluidExternalStorageCache.java index 51f21efbb..cfefeb21c 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/storage/externalstorage/FluidExternalStorageCache.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/storage/externalstorage/FluidExternalStorageCache.java @@ -12,24 +12,36 @@ import java.util.List; public class FluidExternalStorageCache { private List cache; + private int stored = 0; + + public int getStored() { + return stored; + } public void update(INetwork network, @Nullable IFluidHandler handler) { if (handler == null) { + stored = 0; return; } if (cache == null) { cache = new ArrayList<>(); + int stored = 0; for (int i = 0; i < handler.getTanks(); ++i) { - cache.add(handler.getFluidInTank(i).copy()); + FluidStack stack = handler.getFluidInTank(i).copy(); + cache.add(stack); + stored += stack.getAmount(); } + this.stored = stored; return; } + int stored = 0; for (int i = 0; i < handler.getTanks(); ++i) { FluidStack actual = handler.getFluidInTank(i); + stored += actual.getAmount(); if (i >= cache.size()) { // ENLARGED if (!actual.isEmpty()) { @@ -70,6 +82,7 @@ public class FluidExternalStorageCache { cached.setAmount(actual.getAmount()); } } + this.stored = stored; if (cache.size() > handler.getTanks()) { // SHRUNK for (int i = cache.size() - 1; i >= handler.getTanks(); --i) { // Reverse order for the remove call. diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/storage/externalstorage/ItemExternalStorage.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/storage/externalstorage/ItemExternalStorage.java index b54fea94e..60a3493e6 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/storage/externalstorage/ItemExternalStorage.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/storage/externalstorage/ItemExternalStorage.java @@ -137,19 +137,7 @@ public class ItemExternalStorage implements IExternalStorage { @Override public int getStored() { - IItemHandler handler = handlerSupplier.get(); - - if (handler == null) { - return 0; - } - - int size = 0; - - for (int i = 0; i < handler.getSlots(); ++i) { - size += handler.getStackInSlot(i).getCount(); - } - - return size; + return cache.getStored(); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/storage/externalstorage/ItemExternalStorageCache.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/storage/externalstorage/ItemExternalStorageCache.java index a23d6d316..62dcce712 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/storage/externalstorage/ItemExternalStorageCache.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/storage/externalstorage/ItemExternalStorageCache.java @@ -11,24 +11,36 @@ import java.util.List; public class ItemExternalStorageCache { private List cache; + private int stored = 0; + + public int getStored() { + return stored; + } public void update(INetwork network, @Nullable IItemHandler handler) { if (handler == null) { + stored = 0; return; } if (cache == null) { cache = new ArrayList<>(); + int stored = 0; for (int i = 0; i < handler.getSlots(); ++i) { - cache.add(handler.getStackInSlot(i).copy()); + ItemStack stack = handler.getStackInSlot(i).copy(); + cache.add(stack); + stored += stack.getCount(); } + this.stored = stored; return; } + int stored = 0; for (int i = 0; i < handler.getSlots(); ++i) { ItemStack actual = handler.getStackInSlot(i); + stored += actual.getCount(); if (i >= cache.size()) { // ENLARGED if (!actual.isEmpty()) { @@ -69,6 +81,7 @@ public class ItemExternalStorageCache { } } } + this.stored = stored; if (cache.size() > handler.getSlots()) { // SHRUNK for (int i = cache.size() - 1; i >= handler.getSlots(); --i) { // Reverse order for the remove call.