aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/GoodGenerator/Blocks/TEs/MetaTE/YottaFluidTankOutputHatch.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/GoodGenerator/Blocks/TEs/MetaTE/YottaFluidTankOutputHatch.java')
-rw-r--r--src/main/java/GoodGenerator/Blocks/TEs/MetaTE/YottaFluidTankOutputHatch.java133
1 files changed, 133 insertions, 0 deletions
diff --git a/src/main/java/GoodGenerator/Blocks/TEs/MetaTE/YottaFluidTankOutputHatch.java b/src/main/java/GoodGenerator/Blocks/TEs/MetaTE/YottaFluidTankOutputHatch.java
new file mode 100644
index 0000000000..d53a01408e
--- /dev/null
+++ b/src/main/java/GoodGenerator/Blocks/TEs/MetaTE/YottaFluidTankOutputHatch.java
@@ -0,0 +1,133 @@
+package GoodGenerator.Blocks.TEs.MetaTE;
+
+import GoodGenerator.Blocks.TEs.YottaFluidTank;
+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.minecraft.entity.player.EntityPlayer;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraftforge.common.util.ForgeDirection;
+import net.minecraftforge.fluids.FluidRegistry;
+import net.minecraftforge.fluids.FluidStack;
+import net.minecraftforge.fluids.IFluidHandler;
+
+import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_PIPE_OUT;
+
+public class YottaFluidTankOutputHatch extends GT_MetaTileEntity_Hatch {
+
+ private String mFluidName = "";
+ private int mOutputSpeed = 0;
+ private int mX, mZ, mY;
+ private boolean isBound = false;
+
+ @Override
+ public void loadNBTData(NBTTagCompound aNBT) {
+ mFluidName = aNBT.getString("mFluidName");
+ mOutputSpeed = aNBT.getInteger("mOutputSpeed");
+ mX = aNBT.getInteger("mX");
+ mZ = aNBT.getInteger("mZ");
+ mY = aNBT.getInteger("mY");
+ isBound = aNBT.getBoolean("isBound");
+ super.loadNBTData(aNBT);
+ }
+
+ @Override
+ public void saveNBTData(NBTTagCompound aNBT) {
+ aNBT.setString("mFluidName", mFluidName);
+ aNBT.setInteger("mOutputSpeed", mOutputSpeed);
+ aNBT.setInteger("mX", mX);
+ aNBT.setInteger("mZ", mZ);
+ aNBT.setInteger("mY", mY);
+ aNBT.setBoolean("isBound", isBound);
+ super.saveNBTData(aNBT);
+ }
+
+ public YottaFluidTankOutputHatch(int aID, String aName, String aNameRegional, int aTier) {
+ super(aID, aName, aNameRegional, aTier, 0, "Output Fluid From YOTTank.");
+ }
+
+ public YottaFluidTankOutputHatch(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures) {
+ super(aName, aTier, 0, aDescription, aTextures);
+ }
+
+ public void setFluid(FluidStack output) {
+ if (output == null) {
+ mFluidName = "";
+ mOutputSpeed = 0;
+ return;
+ }
+ mFluidName = output.getFluid().getName();
+ mOutputSpeed = output.amount;
+ }
+
+ public void setControl(int x, int y, int z) {
+ mX = x;
+ mY = y;
+ mZ = z;
+ isBound = true;
+ }
+
+ public void unBounded() {
+ isBound = false;
+ }
+
+ public boolean isBounded() {
+ return isBound;
+ }
+
+ @Override
+ public boolean isFacingValid(byte aFacing) {
+ return true;
+ }
+
+ @Override
+ public boolean isLiquidInput(byte aSide) {
+ return false;
+ }
+
+ @Override
+ public boolean isSimpleMachine() {
+ return true;
+ }
+
+ @Override
+ public boolean isAccessAllowed(EntityPlayer aPlayer) {
+ return true;
+ }
+
+ @Override
+ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
+ super.onPostTick(aBaseMetaTileEntity, aTick);
+ if (aBaseMetaTileEntity.isServerSide()) {
+ IFluidHandler tTileEntity = aBaseMetaTileEntity.getITankContainerAtSide(aBaseMetaTileEntity.getFrontFacing());
+ FluidStack tOutput = FluidRegistry.getFluidStack(mFluidName, mOutputSpeed);
+ IGregTechTileEntity tController = aBaseMetaTileEntity.getIGregTechTileEntity(mX, mY, mZ);
+ if (tTileEntity != null && tOutput != null && tController.getMetaTileEntity() instanceof YottaFluidTank && isBound) {
+ int tAmount = Math.min(tTileEntity.fill(ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()), tOutput, false), mOutputSpeed);
+ if (tAmount > 0) {
+ tOutput.amount = tAmount;
+ if (((YottaFluidTank) tController).reduceFluid(tAmount))
+ tTileEntity.fill(ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()), tOutput, true);
+ }
+ }
+ if (tController == null || !(tController.getMetaTileEntity() instanceof YottaFluidTank)) isBound = false;
+ }
+ }
+
+ @Override
+ public ITexture[] getTexturesActive(ITexture aBaseTexture) {
+ return new ITexture[]{aBaseTexture, TextureFactory.of(OVERLAY_PIPE_OUT)};
+ }
+
+ @Override
+ public ITexture[] getTexturesInactive(ITexture aBaseTexture) {
+ return new ITexture[]{aBaseTexture, TextureFactory.of(OVERLAY_PIPE_OUT)};
+ }
+
+ @Override
+ public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
+ return new YottaFluidTankOutputHatch(mName, mTier, mDescriptionArray, mTextures);
+ }
+}