59 lines
1.9 KiB
Java
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));
|
|
}
|
|
}
|