2014-06-14 21:40:45 +02:00
|
|
|
package com.pahimar.ee3.util;
|
|
|
|
|
2023-01-03 17:47:36 +01:00
|
|
|
import java.util.Comparator;
|
|
|
|
|
2015-04-19 21:01:35 +02:00
|
|
|
import com.pahimar.ee3.reference.Names;
|
2014-06-14 21:40:45 +02:00
|
|
|
import net.minecraft.init.Items;
|
|
|
|
import net.minecraft.item.ItemStack;
|
|
|
|
import net.minecraftforge.fluids.Fluid;
|
|
|
|
import net.minecraftforge.fluids.FluidContainerRegistry;
|
|
|
|
import net.minecraftforge.fluids.FluidRegistry;
|
|
|
|
import net.minecraftforge.fluids.FluidStack;
|
|
|
|
|
2016-05-20 03:49:21 +02:00
|
|
|
public class FluidHelper {
|
|
|
|
public static final Comparator<FluidStack> COMPARATOR = new Comparator<FluidStack>() {
|
|
|
|
@Override
|
|
|
|
public int compare(FluidStack fluidStack1, FluidStack fluidStack2) {
|
|
|
|
if (fluidStack1 != null && fluidStack2 != null) {
|
2023-01-03 17:47:36 +01:00
|
|
|
if (fluidStack1.getFluid() != null && fluidStack2.getFluid() != null) {
|
|
|
|
if (FluidRegistry.getFluidName(fluidStack1) != null
|
|
|
|
&& FluidRegistry.getFluidName(fluidStack2) != null) {
|
|
|
|
if (FluidRegistry.getFluidName(fluidStack1)
|
|
|
|
.equalsIgnoreCase(FluidRegistry.getFluidName(fluidStack2)
|
|
|
|
)) {
|
2016-05-25 05:12:49 +02:00
|
|
|
if (fluidStack1.amount == fluidStack2.amount) {
|
|
|
|
if (fluidStack1.tag != null && fluidStack2.tag != null) {
|
2023-01-03 17:47:36 +01:00
|
|
|
return fluidStack1.tag.hashCode()
|
|
|
|
- fluidStack2.tag.hashCode();
|
|
|
|
} else if (fluidStack1.tag != null) {
|
2016-05-25 05:12:49 +02:00
|
|
|
return -1;
|
2023-01-03 17:47:36 +01:00
|
|
|
} else if (fluidStack2.tag != null) {
|
2016-05-25 05:12:49 +02:00
|
|
|
return 1;
|
2023-01-03 17:47:36 +01:00
|
|
|
} else {
|
2016-05-25 05:12:49 +02:00
|
|
|
return 0;
|
|
|
|
}
|
2023-01-03 17:47:36 +01:00
|
|
|
} else {
|
2016-05-25 05:12:49 +02:00
|
|
|
return fluidStack1.amount - fluidStack2.amount;
|
2014-06-14 21:40:45 +02:00
|
|
|
}
|
2023-01-03 17:47:36 +01:00
|
|
|
} else {
|
|
|
|
return FluidRegistry.getFluidName(fluidStack1)
|
|
|
|
.compareToIgnoreCase(
|
|
|
|
FluidRegistry.getFluidName(fluidStack2)
|
|
|
|
);
|
2014-06-14 21:40:45 +02:00
|
|
|
}
|
2023-01-03 17:47:36 +01:00
|
|
|
} else if (FluidRegistry.getFluidName(fluidStack1) != null) {
|
2016-05-25 05:12:49 +02:00
|
|
|
return -1;
|
2023-01-03 17:47:36 +01:00
|
|
|
} else if (FluidRegistry.getFluidName(fluidStack2) != null) {
|
2016-05-25 05:12:49 +02:00
|
|
|
return 1;
|
2023-01-03 17:47:36 +01:00
|
|
|
} else {
|
2016-05-25 05:12:49 +02:00
|
|
|
return 0;
|
2014-06-14 21:40:45 +02:00
|
|
|
}
|
2016-05-25 05:12:49 +02:00
|
|
|
|
2023-01-03 17:47:36 +01:00
|
|
|
} else if (fluidStack1.getFluid() != null) {
|
2014-06-14 21:40:45 +02:00
|
|
|
return -1;
|
2023-01-03 17:47:36 +01:00
|
|
|
} else if (fluidStack2.getFluid() != null) {
|
2014-06-14 21:40:45 +02:00
|
|
|
return 1;
|
2023-01-03 17:47:36 +01:00
|
|
|
} else {
|
2014-06-14 21:40:45 +02:00
|
|
|
return 0;
|
|
|
|
}
|
2023-01-03 17:47:36 +01:00
|
|
|
} else if (fluidStack1 != null) {
|
2016-05-20 03:49:21 +02:00
|
|
|
return -1;
|
2023-01-03 17:47:36 +01:00
|
|
|
} else if (fluidStack2 != null) {
|
2016-05-20 03:49:21 +02:00
|
|
|
return 1;
|
2023-01-03 17:47:36 +01:00
|
|
|
} else {
|
2016-05-20 03:49:21 +02:00
|
|
|
return 0;
|
|
|
|
}
|
2014-06-14 21:40:45 +02:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2016-05-20 03:49:21 +02:00
|
|
|
public static void registerFluids() {
|
2014-06-14 21:40:45 +02:00
|
|
|
// Register Milk in the FluidRegistry if it hasn't already been done
|
2016-05-20 03:49:21 +02:00
|
|
|
if (!FluidRegistry.isFluidRegistered("milk")) {
|
2015-04-19 21:01:35 +02:00
|
|
|
Fluid milk = new Fluid("milk").setUnlocalizedName(Names.Fluids.MILK);
|
2016-05-25 05:12:49 +02:00
|
|
|
if (FluidRegistry.registerFluid(milk)) {
|
2023-01-03 17:47:36 +01:00
|
|
|
FluidContainerRegistry.registerFluidContainer(
|
|
|
|
new FluidStack(milk, 1000),
|
|
|
|
new ItemStack(Items.milk_bucket),
|
|
|
|
new ItemStack(Items.bucket)
|
|
|
|
);
|
2015-05-03 17:48:18 +02:00
|
|
|
}
|
2014-06-14 21:40:45 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-05-20 03:49:21 +02:00
|
|
|
public static int compare(FluidStack fluidStack1, FluidStack fluidStack2) {
|
|
|
|
return COMPARATOR.compare(fluidStack1, fluidStack2);
|
2014-06-14 21:40:45 +02:00
|
|
|
}
|
|
|
|
|
2016-05-20 03:49:21 +02:00
|
|
|
public static String toString(FluidStack fluidStack) {
|
|
|
|
if (fluidStack != null) {
|
2023-01-03 17:47:36 +01:00
|
|
|
return String.format(
|
|
|
|
"%sxfluidStack.%s", fluidStack.amount, fluidStack.getFluid().getName()
|
|
|
|
);
|
2014-06-14 21:40:45 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
return "fluidStack[null]";
|
|
|
|
}
|
|
|
|
}
|