-
Notifications
You must be signed in to change notification settings - Fork 497
/
FluidUtils.java
43 lines (36 loc) · 1.49 KB
/
FluidUtils.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package buildcraft.core.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.FluidStack;
import net.minecraftforge.fluids.IFluidBlock;
import net.minecraftforge.fluids.IFluidContainerItem;
public final class FluidUtils {
private FluidUtils () {
}
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 && b instanceof IFluidBlock && ((IFluidBlock) b).getFluid() != null) {
return new FluidStack(((IFluidBlock) b).getFluid(), 1000);
}
}
}
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));
}
}