buildcraft/common/buildcraft/core/lib/utils/FluidUtils.java
2017-04-08 10:29:40 +02:00

59 lines
1.9 KiB
Java

package buildcraft.core.lib.utils;
import net.minecraft.block.Block;
import net.minecraft.item.ItemBlock;
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 net.minecraftforge.fluids.IFluidBlock;
import net.minecraftforge.fluids.IFluidContainerItem;
public final class FluidUtils {
private FluidUtils () {
}
public static FluidStack getFluidStackFromBlock(Block b) {
if (b != null) {
if (b instanceof IFluidBlock && ((IFluidBlock) b).getFluid() != null) {
return new FluidStack(((IFluidBlock) b).getFluid(), 1000);
} else {
Fluid f = FluidRegistry.lookupFluidForBlock(b);
if (f != null && FluidRegistry.isFluidRegistered(f)) {
return new FluidStack(f, 1000);
}
}
}
return null;
}
public static FluidStack getFluidStackFromItemStack(ItemStack stack) {
if (stack != null) {
if (stack.getItem() instanceof IFluidContainerItem) {
IFluidContainerItem ctr = (IFluidContainerItem) stack.getItem();
return ctr.getFluid(stack);
} else if (FluidContainerRegistry.isFilledContainer(stack)) {
return FluidContainerRegistry.getFluidForFilledItem(stack);
} else if (stack.getItem() instanceof ItemBlock) {
Block b = Block.getBlockFromItem(stack.getItem());
if (b != null) {
return getFluidStackFromBlock(b);
}
}
}
return null;
}
public static Fluid getFluidFromItemStack(ItemStack stack) {
FluidStack fluidStack = getFluidStackFromItemStack(stack);
return fluidStack != null ? fluidStack.getFluid() : null;
}
public static boolean isFluidContainer(ItemStack stack) {
return stack != null && stack.getItem() != null && (stack.getItem() instanceof IFluidContainerItem || FluidContainerRegistry.isFilledContainer(stack));
}
}