package buildcraftAdditions.tileEntities; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.util.Constants; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidHandler; import buildcraftAdditions.config.ConfigurationHandler; import buildcraftAdditions.reference.Variables; import buildcraftAdditions.tileEntities.Bases.TileCoilBase; import buildcraftAdditions.utils.fluids.RestrictedTank; import buildcraftAdditions.utils.fluids.WhitelistedTank; /** * Copyright (c) 2014-2015, AEnterprise * http://buildcraftadditions.wordpress.com/ * Buildcraft Additions is distributed under the terms of GNU GPL v3.0 * Please check the contents of the license located in * http://buildcraftadditions.wordpress.com/wiki/licensing-stuff/ */ public class TileLavaCoil extends TileCoilBase implements IFluidHandler { private final RestrictedTank tank = new WhitelistedTank("LavaTank", 3 * FluidContainerRegistry.BUCKET_VOLUME, this, FluidRegistry.LAVA); public TileLavaCoil() { super(Variables.SyncIDs.LAVA_COIL.ordinal()); burnTime = 0; fullBurnTime = 0; shouldHeat = false; burning = false; } public int getLavaAmount() { return tank.getFluidAmount(); } public int getLavaCapacity() { return tank.getCapacity(); } @Override public void readFromNBT(NBTTagCompound tag) { super.readFromNBT(tag); if (tag.hasKey("LavaTank", Constants.NBT.TAG_COMPOUND)) tank.readFromNBT(tag.getCompoundTag("LavaTank")); // TODO: Remove once everybody has updated if (tag.hasKey("lava", Constants.NBT.TAG_INT)) tank.setFluid(new FluidStack(FluidRegistry.LAVA, tag.getInteger("lava"))); } @Override public void writeToNBT(NBTTagCompound tag) { super.writeToNBT(tag); tag.setTag("LavaTank", tank.writeToNBT(new NBTTagCompound())); } @Override public void updateEntity() { super.updateEntity(); if (isBurning() && burnTime > 0) burnTime--; if (burnTime == 0) burning = false; if (!isBurning() && shouldHeat && tank.getFluidAmount() >= 100) { tank.drain(100, true); burnTime = 5000; increment = ConfigurationHandler.lavaCoilHeat; burning = true; } if (!isBurning()) increment = 0; } @Override public int fill(ForgeDirection from, FluidStack resource, boolean doFill) { return tank.fill(resource, doFill); } @Override public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) { return tank.drain(resource, doDrain); } @Override public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) { return tank.drain(maxDrain, doDrain); } @Override public boolean canFill(ForgeDirection from, Fluid fluid) { return tank.canFill(fluid); } @Override public boolean canDrain(ForgeDirection from, Fluid fluid) { return true; } @Override public FluidTankInfo[] getTankInfo(ForgeDirection from) { return new FluidTankInfo[]{tank.getInfo()}; } }