BloodMagic/src/main/java/WayofTime/bloodmagic/tile/TileBloodTank.java

96 lines
2.4 KiB
Java
Raw Normal View History

package WayofTime.bloodmagic.tile;
import net.minecraft.nbt.NBTTagCompound;
2016-05-28 04:53:19 -07:00
import net.minecraft.network.NetworkManager;
import net.minecraft.network.play.server.SPacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraftforge.fluids.*;
public class TileBloodTank extends TileEntity implements IFluidHandler
{
public static int capacity;
public FluidTank tank;
public TileBloodTank()
{
capacity = 32 * FluidContainerRegistry.BUCKET_VOLUME;
tank = new FluidTank(capacity);
}
@Override
public int fill(EnumFacing from, FluidStack resource, boolean doFill)
{
return tank.fill(resource, doFill);
}
@Override
public FluidStack drain(EnumFacing from, FluidStack resource, boolean doDrain)
{
return tank.drain(resource.amount, doDrain);
}
@Override
public FluidStack drain(EnumFacing from, int maxDrain, boolean doDrain)
{
return tank.drain(maxDrain, doDrain);
}
@Override
public boolean canFill(EnumFacing from, Fluid fluid)
{
return true;
}
@Override
public boolean canDrain(EnumFacing from, Fluid fluid)
{
return true;
}
@Override
public FluidTankInfo[] getTankInfo(EnumFacing from)
{
2016-03-16 18:41:06 -04:00
return new FluidTankInfo[] { tank.getInfo() };
}
@Override
public void readFromNBT(NBTTagCompound tagCompound)
{
super.readFromNBT(tagCompound);
tank.readFromNBT(tagCompound.getCompoundTag("tank"));
capacity = tagCompound.getInteger("capacity");
}
@Override
public NBTTagCompound writeToNBT(NBTTagCompound tagCompound)
{
super.writeToNBT(tagCompound);
2016-03-16 18:41:06 -04:00
if (tank.getFluidAmount() != 0)
tagCompound.setTag("tank", tank.writeToNBT(new NBTTagCompound()));
tagCompound.setInteger("capacity", capacity);
return tagCompound;
}
2016-05-28 04:53:19 -07:00
@Override
public SPacketUpdateTileEntity getUpdatePacket()
{
NBTTagCompound nbt = new NBTTagCompound();
writeToNBT(nbt);
return new SPacketUpdateTileEntity(getPos(), -999, nbt);
}
@Override
public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt)
{
super.onDataPacket(net, pkt);
readFromNBT(pkt.getNbtCompound());
}
@Override
public NBTTagCompound getUpdateTag()
{
return writeToNBT(new NBTTagCompound());
}
}