This commit is contained in:
Raoul Van den Berge
2016-08-13 17:13:08 +02:00
parent 1c73f93deb
commit b7c39d6489
6 changed files with 32 additions and 11 deletions

View File

@@ -99,7 +99,7 @@ public final class CompareUtils {
} }
if ((flags & COMPARE_NBT) == COMPARE_NBT) { if ((flags & COMPARE_NBT) == COMPARE_NBT) {
if (!left.tag.equals(right)) { if (left.tag != null && !left.tag.equals(right)) {
return false; return false;
} }
} }

View File

@@ -35,10 +35,10 @@ public class FluidGridHandler implements IFluidGridHandler {
for (int i = 0; i < player.inventory.getSizeInventory(); ++i) { for (int i = 0; i < player.inventory.getSizeInventory(); ++i) {
ItemStack slot = player.inventory.getStackInSlot(i); ItemStack slot = player.inventory.getStackInSlot(i);
if (CompareUtils.compareStack(EMPTY_BUCKET, slot)) { if (CompareUtils.compareStackNoQuantity(EMPTY_BUCKET, slot)) {
bucket = slot; bucket = EMPTY_BUCKET.copy();
player.inventory.setInventorySlotContents(i, null); player.inventory.decrStackSize(i, 1);
break; break;
} }

View File

@@ -5,6 +5,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList; import net.minecraft.nbt.NBTTagList;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import refinedstorage.api.storage.CompareUtils;
import refinedstorage.api.storage.fluid.IFluidStorage; import refinedstorage.api.storage.fluid.IFluidStorage;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@@ -138,8 +139,7 @@ public abstract class FluidStorageNBT implements IFluidStorage {
@Override @Override
public FluidStack extractFluid(FluidStack stack, int size, int flags) { public FluidStack extractFluid(FluidStack stack, int size, int flags) {
for (FluidStack otherStack : stacks) { for (FluidStack otherStack : stacks) {
// @TODO: Use flags everywhere if (CompareUtils.compareStack(otherStack, stack, flags)) {
if (otherStack.isFluidEqual(stack)) {
if (size > otherStack.amount) { if (size > otherStack.amount) {
size = otherStack.amount; size = otherStack.amount;
} }

View File

@@ -6,6 +6,7 @@ import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import refinedstorage.api.network.INetworkMaster; import refinedstorage.api.network.INetworkMaster;
import refinedstorage.api.network.NetworkUtils; import refinedstorage.api.network.NetworkUtils;
import refinedstorage.api.storage.CompareUtils;
import refinedstorage.api.storage.fluid.IFluidStorage; import refinedstorage.api.storage.fluid.IFluidStorage;
import refinedstorage.api.storage.fluid.IFluidStorageProvider; import refinedstorage.api.storage.fluid.IFluidStorageProvider;
import refinedstorage.api.storage.fluid.IGroupedFluidStorage; import refinedstorage.api.storage.fluid.IGroupedFluidStorage;
@@ -86,7 +87,7 @@ public class GroupedFluidStorage implements IGroupedFluidStorage {
@Nullable @Nullable
public FluidStack get(@Nonnull FluidStack stack, int flags) { public FluidStack get(@Nonnull FluidStack stack, int flags) {
for (FluidStack otherStack : stacks.get(stack.getFluid())) { for (FluidStack otherStack : stacks.get(stack.getFluid())) {
if (otherStack.isFluidEqual(stack)) { if (CompareUtils.compareStack(otherStack, stack, flags)) {
return otherStack; return otherStack;
} }
} }

View File

@@ -25,6 +25,7 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
public abstract class GuiBase extends GuiContainer { 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); public static final FluidStackRenderer FLUID_RENDERER = new FluidStackRenderer(Fluid.BUCKET_VOLUME, false, 16, 16, null);
protected static final int SIDE_BUTTON_WIDTH = 20; protected static final int SIDE_BUTTON_WIDTH = 20;

View File

@@ -130,7 +130,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
private static final String NBT_CRAFTING_TASKS = "CraftingTasks"; private static final String NBT_CRAFTING_TASKS = "CraftingTasks";
private static final Comparator<IItemStorage> SIZE_COMPARATOR = (left, right) -> { private static final Comparator<IItemStorage> ITEM_SIZE_COMPARATOR = (left, right) -> {
if (left.getStored() == right.getStored()) { if (left.getStored() == right.getStored()) {
return 0; return 0;
} }
@@ -138,7 +138,23 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
return (left.getStored() > right.getStored()) ? -1 : 1; return (left.getStored() > right.getStored()) ? -1 : 1;
}; };
private static final Comparator<IItemStorage> PRIORITY_COMPARATOR = (left, right) -> { private static final Comparator<IItemStorage> ITEM_PRIORITY_COMPARATOR = (left, right) -> {
if (left.getPriority() == right.getPriority()) {
return 0;
}
return (left.getPriority() > right.getPriority()) ? -1 : 1;
};
private static final Comparator<IFluidStorage> FLUID_SIZE_COMPARATOR = (left, right) -> {
if (left.getStored() == right.getStored()) {
return 0;
}
return (left.getStored() > right.getStored()) ? -1 : 1;
};
private static final Comparator<IFluidStorage> FLUID_PRIORITY_COMPARATOR = (left, right) -> {
if (left.getPriority() == right.getPriority()) { if (left.getPriority() == right.getPriority()) {
return 0; return 0;
} }
@@ -220,8 +236,11 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
energyEU.update(); energyEU.update();
if (canRun()) { if (canRun()) {
Collections.sort(itemStorage.getStorages(), SIZE_COMPARATOR); Collections.sort(itemStorage.getStorages(), ITEM_SIZE_COMPARATOR);
Collections.sort(itemStorage.getStorages(), PRIORITY_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(); boolean craftingTasksChanged = !craftingTasksToAdd.isEmpty() || !craftingTasksToAddAsLast.isEmpty() || !craftingTasksToCancel.isEmpty();