From b7c39d64898f5d296af226466e9aa3eb18fc5ef9 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Sat, 13 Aug 2016 17:13:08 +0200 Subject: [PATCH] Fixes --- .../api/storage/CompareUtils.java | 2 +- .../network/grid/FluidGridHandler.java | 6 ++--- .../storage/fluid/FluidStorageNBT.java | 4 +-- .../storage/fluid/GroupedFluidStorage.java | 3 ++- src/main/java/refinedstorage/gui/GuiBase.java | 1 + .../refinedstorage/tile/TileController.java | 27 ++++++++++++++++--- 6 files changed, 32 insertions(+), 11 deletions(-) diff --git a/src/main/java/refinedstorage/api/storage/CompareUtils.java b/src/main/java/refinedstorage/api/storage/CompareUtils.java index 9b4a77c80..83a5e7f28 100755 --- a/src/main/java/refinedstorage/api/storage/CompareUtils.java +++ b/src/main/java/refinedstorage/api/storage/CompareUtils.java @@ -99,7 +99,7 @@ public final class CompareUtils { } if ((flags & COMPARE_NBT) == COMPARE_NBT) { - if (!left.tag.equals(right)) { + if (left.tag != null && !left.tag.equals(right)) { return false; } } diff --git a/src/main/java/refinedstorage/apiimpl/network/grid/FluidGridHandler.java b/src/main/java/refinedstorage/apiimpl/network/grid/FluidGridHandler.java index e22fd83fb..b1b092987 100755 --- a/src/main/java/refinedstorage/apiimpl/network/grid/FluidGridHandler.java +++ b/src/main/java/refinedstorage/apiimpl/network/grid/FluidGridHandler.java @@ -35,10 +35,10 @@ public class FluidGridHandler implements IFluidGridHandler { for (int i = 0; i < player.inventory.getSizeInventory(); ++i) { ItemStack slot = player.inventory.getStackInSlot(i); - if (CompareUtils.compareStack(EMPTY_BUCKET, slot)) { - bucket = slot; + if (CompareUtils.compareStackNoQuantity(EMPTY_BUCKET, slot)) { + bucket = EMPTY_BUCKET.copy(); - player.inventory.setInventorySlotContents(i, null); + player.inventory.decrStackSize(i, 1); break; } diff --git a/src/main/java/refinedstorage/apiimpl/storage/fluid/FluidStorageNBT.java b/src/main/java/refinedstorage/apiimpl/storage/fluid/FluidStorageNBT.java index 9a86008e8..3ec3e60fd 100755 --- a/src/main/java/refinedstorage/apiimpl/storage/fluid/FluidStorageNBT.java +++ b/src/main/java/refinedstorage/apiimpl/storage/fluid/FluidStorageNBT.java @@ -5,6 +5,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.fluids.FluidStack; +import refinedstorage.api.storage.CompareUtils; import refinedstorage.api.storage.fluid.IFluidStorage; import javax.annotation.Nullable; @@ -138,8 +139,7 @@ public abstract class FluidStorageNBT implements IFluidStorage { @Override public FluidStack extractFluid(FluidStack stack, int size, int flags) { for (FluidStack otherStack : stacks) { - // @TODO: Use flags everywhere - if (otherStack.isFluidEqual(stack)) { + if (CompareUtils.compareStack(otherStack, stack, flags)) { if (size > otherStack.amount) { size = otherStack.amount; } diff --git a/src/main/java/refinedstorage/apiimpl/storage/fluid/GroupedFluidStorage.java b/src/main/java/refinedstorage/apiimpl/storage/fluid/GroupedFluidStorage.java index 99ee93854..f143a562e 100755 --- a/src/main/java/refinedstorage/apiimpl/storage/fluid/GroupedFluidStorage.java +++ b/src/main/java/refinedstorage/apiimpl/storage/fluid/GroupedFluidStorage.java @@ -6,6 +6,7 @@ import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import refinedstorage.api.network.INetworkMaster; import refinedstorage.api.network.NetworkUtils; +import refinedstorage.api.storage.CompareUtils; import refinedstorage.api.storage.fluid.IFluidStorage; import refinedstorage.api.storage.fluid.IFluidStorageProvider; import refinedstorage.api.storage.fluid.IGroupedFluidStorage; @@ -86,7 +87,7 @@ public class GroupedFluidStorage implements IGroupedFluidStorage { @Nullable public FluidStack get(@Nonnull FluidStack stack, int flags) { for (FluidStack otherStack : stacks.get(stack.getFluid())) { - if (otherStack.isFluidEqual(stack)) { + if (CompareUtils.compareStack(otherStack, stack, flags)) { return otherStack; } } diff --git a/src/main/java/refinedstorage/gui/GuiBase.java b/src/main/java/refinedstorage/gui/GuiBase.java index 4495c42c2..9bb783161 100755 --- a/src/main/java/refinedstorage/gui/GuiBase.java +++ b/src/main/java/refinedstorage/gui/GuiBase.java @@ -25,6 +25,7 @@ import java.util.Arrays; import java.util.List; public abstract class GuiBase extends GuiContainer { + // @TODO: Don't depend on JEI public static final FluidStackRenderer FLUID_RENDERER = new FluidStackRenderer(Fluid.BUCKET_VOLUME, false, 16, 16, null); protected static final int SIDE_BUTTON_WIDTH = 20; diff --git a/src/main/java/refinedstorage/tile/TileController.java b/src/main/java/refinedstorage/tile/TileController.java index a2add346b..5c03467bf 100755 --- a/src/main/java/refinedstorage/tile/TileController.java +++ b/src/main/java/refinedstorage/tile/TileController.java @@ -130,7 +130,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR private static final String NBT_CRAFTING_TASKS = "CraftingTasks"; - private static final Comparator SIZE_COMPARATOR = (left, right) -> { + private static final Comparator ITEM_SIZE_COMPARATOR = (left, right) -> { if (left.getStored() == right.getStored()) { return 0; } @@ -138,7 +138,23 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR return (left.getStored() > right.getStored()) ? -1 : 1; }; - private static final Comparator PRIORITY_COMPARATOR = (left, right) -> { + private static final Comparator ITEM_PRIORITY_COMPARATOR = (left, right) -> { + if (left.getPriority() == right.getPriority()) { + return 0; + } + + return (left.getPriority() > right.getPriority()) ? -1 : 1; + }; + + private static final Comparator FLUID_SIZE_COMPARATOR = (left, right) -> { + if (left.getStored() == right.getStored()) { + return 0; + } + + return (left.getStored() > right.getStored()) ? -1 : 1; + }; + + private static final Comparator FLUID_PRIORITY_COMPARATOR = (left, right) -> { if (left.getPriority() == right.getPriority()) { return 0; } @@ -220,8 +236,11 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR energyEU.update(); if (canRun()) { - Collections.sort(itemStorage.getStorages(), SIZE_COMPARATOR); - Collections.sort(itemStorage.getStorages(), PRIORITY_COMPARATOR); + Collections.sort(itemStorage.getStorages(), ITEM_SIZE_COMPARATOR); + Collections.sort(itemStorage.getStorages(), ITEM_PRIORITY_COMPARATOR); + + Collections.sort(fluidStorage.getStorages(), FLUID_SIZE_COMPARATOR); + Collections.sort(fluidStorage.getStorages(), FLUID_PRIORITY_COMPARATOR); boolean craftingTasksChanged = !craftingTasksToAdd.isEmpty() || !craftingTasksToAddAsLast.isEmpty() || !craftingTasksToCancel.isEmpty();