package com.pahimar.ee.util;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import javax.annotation.Nullable;
import java.util.Comparator;
public class FluidStackUtils {
@Nullable
public static FluidStack clone(FluidStack fluidStack, int amount) {
if (fluidStack != null) {
FluidStack clonedFluidStack = fluidStack.copy();
clonedFluidStack.amount = amount;
return clonedFluidStack;
}
else {
return null;
}
}
public static final Comparator<FluidStack> COMPARATOR = (fluidStack1, fluidStack2) -> {
if (fluidStack1 != null && fluidStack2 != null) {
if (fluidStack1.getFluid() != null && fluidStack2.getFluid() != null) {
if (FluidRegistry.getFluidName(fluidStack1) != null && FluidRegistry.getFluidName(fluidStack2) != null) {
if (FluidRegistry.getFluidName(fluidStack1).equalsIgnoreCase(FluidRegistry.getFluidName(fluidStack2))) {
if (fluidStack1.amount == fluidStack2.amount) {
if (fluidStack1.tag != null && fluidStack2.tag != null) {
return fluidStack1.tag.hashCode() - fluidStack2.tag.hashCode();
}
else if (fluidStack1.tag != null) {
return -1;
}
else if (fluidStack2.tag != null) {
return 1;
}
else {
return 0;
}
}
else {
return fluidStack1.amount - fluidStack2.amount;
}
}
else {
return FluidRegistry.getFluidName(fluidStack1).compareToIgnoreCase(FluidRegistry.getFluidName(fluidStack2));
}
}
else if (FluidRegistry.getFluidName(fluidStack1) != null) {
return -1;
}
else if (FluidRegistry.getFluidName(fluidStack2) != null) {
return 1;
}
else {
return 0;
}
}
else if (fluidStack1.getFluid() != null) {
return -1;
}
else if (fluidStack2.getFluid() != null) {
return 1;
}
else {
return 0;
}
}
else if (fluidStack1 != null) {
return -1;
}
else if (fluidStack2 != null) {
return 1;
}
else {
return 0;
}
};
/**
* TODO Finish JavaDoc
*
* @param fluidStack1
* @param fluidStack2
* @return
*/
public static int compare(FluidStack fluidStack1, FluidStack fluidStack2) {
return COMPARATOR.compare(fluidStack1, fluidStack2);
}
/**
* TODO Finish JavaDoc
*
* @param fluidStack1
* @param fluidStack2
* @return
*/
public static boolean equals(FluidStack fluidStack1, FluidStack fluidStack2) {
return compare(fluidStack1, fluidStack2) == 0;
}
/**
* TODO Finish JavaDoc
*
* @param fluidStack
* @return
*/
public static String toString(FluidStack fluidStack) {
if (fluidStack != null) {
return String.format("%sxfluidStack.%s", fluidStack.amount, fluidStack.getFluid().getName());
}
return "fluidStack[null]";
}
}