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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
package goodgenerator.blocks.tileEntity.GTMetaTileEntity;
import goodgenerator.blocks.tileEntity.YottaFluidTank;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.IIconContainer;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
import gregtech.api.render.TextureFactory;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTankInfo;
import java.math.BigInteger;
public class YOTTAHatch extends GT_MetaTileEntity_Hatch {
private static final IIconContainer textureFont = new Textures.BlockIcons.CustomIcon("icons/YOTTAHatch");
private YottaFluidTank host;
public YOTTAHatch(int aID, String aName, String aNameRegional, int aTier) {
super(aID, aName, aNameRegional, aTier, 0, "Special I/O port for EC2 Fluid Storage Bus.");
}
public YOTTAHatch(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures) {
super(aName, aTier, 0, aDescription, aTextures);
}
public void setTank(YottaFluidTank te) {
this.host = te;
}
@Override
public int getCapacity() {
if (host == null || host.getBaseMetaTileEntity() == null || !host.getBaseMetaTileEntity().isActive()) return 0;
if (host.mStorage.compareTo(BigInteger.valueOf(Integer.MAX_VALUE)) >= 0) {
return Integer.MAX_VALUE;
}
else return host.mStorage.intValue();
}
@Override
public int fill(ForgeDirection from, FluidStack resource, boolean doFill) {
if (host == null || host.getBaseMetaTileEntity() == null || !host.getBaseMetaTileEntity().isActive()) return 0;
if (host.mFluidName == null || host.mFluidName.equals("") || host.mFluidName.equals(resource.getFluid().getName())) {
host.mFluidName = resource.getFluid().getName();
if (host.mStorage.subtract(host.mStorageCurrent).compareTo(BigInteger.valueOf(resource.amount)) >= 0) {
if (doFill)
host.addFluid(resource.amount);
return resource.amount;
}
else {
int added = host.mStorage.subtract(host.mStorageCurrent).intValue();
if (doFill)
host.addFluid(added);
return added;
}
}
return 0;
}
@Override
public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) {
if (host == null || host.getBaseMetaTileEntity() == null || !host.getBaseMetaTileEntity().isActive())
return null;
if (host.mFluidName == null || host.mFluidName.equals("") || !host.mFluidName.equals(resource.getFluid().getName()))
return null;
int ready;
if (host.mStorageCurrent.compareTo(BigInteger.valueOf(Integer.MAX_VALUE)) > 0) {
ready = Integer.MAX_VALUE;
}
else ready = host.mStorageCurrent.intValue();
ready = Math.min(ready, resource.amount);
if (doDrain) {
host.reduceFluid(ready);
}
return new FluidStack(resource.getFluid(), ready);
}
@Override
public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) {
if (host == null || host.getBaseMetaTileEntity() == null || !host.getBaseMetaTileEntity().isActive())
return null;
if (host.mFluidName == null || host.mFluidName.equals(""))
return null;
return this.drain(from, FluidRegistry.getFluidStack(host.mFluidName, maxDrain), doDrain);
}
@Override
public FluidTankInfo[] getTankInfo(ForgeDirection from) {
FluidTankInfo[] tankInfo = new FluidTankInfo[1];
tankInfo[0] = new FluidTankInfo(null, 0);
if (host == null || host.getBaseMetaTileEntity() == null || !host.getBaseMetaTileEntity().isActive())
return tankInfo;
FluidStack fluid = null;
if (host.mFluidName != null && !host.mFluidName.equals("")) {
int camt;
if (host.mStorageCurrent.compareTo(BigInteger.valueOf(Integer.MAX_VALUE)) > 0)
camt = Integer.MAX_VALUE;
else camt = host.mStorageCurrent.intValue();
fluid = FluidRegistry.getFluidStack(host.mFluidName, camt);
}
tankInfo[0] = new FluidTankInfo(fluid, getCapacity());
return tankInfo;
}
@Override
public boolean canTankBeFilled() {
return true;
}
@Override
public boolean canTankBeEmptied() {
return true;
}
@Override
public ITexture[] getTexturesActive(ITexture aBaseTexture) {
return new ITexture[] {
aBaseTexture,
TextureFactory.of(textureFont),
};
}
@Override
public ITexture[] getTexturesInactive(ITexture aBaseTexture) {
return new ITexture[] {
aBaseTexture,
TextureFactory.of(textureFont),
};
}
@Override
public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
return new YOTTAHatch(mName, mTier, mDescriptionArray, mTextures);
}
}
|