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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
package tileentities;
import java.util.List;
import kekztech.MultiFluidHandler;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidHandler;
public class TE_TFFTMultiHatch extends TileEntity implements IFluidHandler {
private MultiFluidHandler mfh;
public void setMultiFluidHandler(MultiFluidHandler mfh) {
this.mfh = mfh;
}
@Override
public int fill(ForgeDirection from, FluidStack resource, boolean doFill) {
return (mfh != null) ? mfh.pushFluid(resource, doFill) : 0;
}
@Override
public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) {
return (mfh != null) ? new FluidStack(resource.getFluid(), mfh.pullFluid(resource, doDrain)) : null;
}
/**
* Drains fluid out of 0th internal tank.
*
* @param from
* Orientation the fluid is drained to.
* @param maxDrain
* Maximum amount of fluid to drain.
* @param doDrain
* If false, drain will only be simulated.
* @return FluidStack representing the Fluid and amount that was (or would have been, if
* simulated) drained.
*/
@Override
public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) {
if(mfh != null) {
final FluidStack drain = mfh.getFluid(0);
if(drain != null) {
return new FluidStack(
drain.getFluid(),
mfh.pullFluid(new FluidStack(drain.getFluid(), maxDrain), 0, doDrain)
);
}
}
return null;
}
@Override
public boolean canFill(ForgeDirection from, Fluid fluid) {
return (mfh != null) ? mfh.couldPush(new FluidStack(fluid, 1)) : false;
}
@Override
public boolean canDrain(ForgeDirection from, Fluid fluid) {
return (mfh != null) ? mfh.contains(new FluidStack(fluid, 1)) : false;
}
@Override
public FluidTankInfo[] getTankInfo(ForgeDirection from) {
if(mfh == null) {
return null;
}
final List<FluidStack> fluids = mfh.getFluids();
final FluidTankInfo[] tankInfo = new FluidTankInfo[fluids.size()];
for(int i = 0; i < tankInfo.length; i++) {
tankInfo[i] = new FluidTankInfo(fluids.get(i), mfh.getCapacity());
}
return tankInfo;
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
nbt = (nbt == null) ? new NBTTagCompound() : nbt;
super.writeToNBT(nbt);
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
nbt = (nbt == null) ? new NBTTagCompound() : nbt;
super.readFromNBT(nbt);
}
}
|