equivalent-exchange-3/src/main/java/com/pahimar/ee3/util/FluidHelper.java
Pahimar 30c0eb46b7 Fix a possible NPE in the FluidStack comparator
Post calculation energy values set by command now send the new energy value mapping to all currently logged in players
Added methods for devs to see what items are currently blacklisted in the blacklist registry proxy
Added methods for devs to see what energy values are currently assigned in the energy value registry proxy
BlacklistRegistry contents are now synchronized with players when they log into a server, enabling players to play on different servers with different blacklist configurations without needing to update their own configs
Fixed issue in synching of all energy values where the incorrect map was used to synch against on the client side
2016-05-24 23:12:49 -04:00

103 lines
3.8 KiB
Java

package com.pahimar.ee3.util;
import com.pahimar.ee3.reference.Names;
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;
import java.util.Comparator;
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) {
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;
}
}
};
public static void registerFluids() {
// Register Milk in the FluidRegistry if it hasn't already been done
if (!FluidRegistry.isFluidRegistered("milk")) {
Fluid milk = new Fluid("milk").setUnlocalizedName(Names.Fluids.MILK);
if (FluidRegistry.registerFluid(milk)) {
FluidContainerRegistry.registerFluidContainer(new FluidStack(milk, 1000), new ItemStack(Items.milk_bucket), new ItemStack(Items.bucket));
}
}
}
public static int compare(FluidStack fluidStack1, FluidStack fluidStack2) {
return COMPARATOR.compare(fluidStack1, fluidStack2);
}
public static String toString(FluidStack fluidStack) {
if (fluidStack != null) {
return String.format("%sxfluidStack.%s", fluidStack.amount, fluidStack.getFluid().getName());
}
return "fluidStack[null]";
}
}