/**
* Copyright (c) Lambda Innovation, 2013-2016
* This file is part of the AcademyCraft mod.
* https://github.com/LambdaInnovation/AcademyCraft
* Licensed under GPLv3, see project root for more information.
*/
package cn.academy.support.rf;
import cn.academy.support.EnergyBlockHelper.IEnergyBlockManager;
import cofh.api.energy.IEnergyReceiver;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;
/**
* @author WeAthFolD
*/
public class RFReceiverManager implements IEnergyBlockManager {
static final ForgeDirection DEFAULT_DIR = ForgeDirection.UP;
@Override
public boolean isSupported(TileEntity tile) {
return asReceiver(tile) != null;
}
private IEnergyReceiver asReceiver(TileEntity tile) {
return tile instanceof IEnergyReceiver ? (IEnergyReceiver) tile : null;
}
@Override
public double getEnergy(TileEntity tile) {
IEnergyReceiver rec = asReceiver(tile);
return rec == null ? 0 : rec.getEnergyStored(DEFAULT_DIR) * RFSupport.CONV_RATE;
}
@Override
public void setEnergy(TileEntity tile, double energy) {
// NOT SUPPORTED
}
@Override
public double charge(TileEntity tile, double amt, boolean ignoreBandwidth) {
IEnergyReceiver rec = asReceiver(tile);
return rec == null ? amt : amt - rec.receiveEnergy(DEFAULT_DIR, (int) amt, false);
}
@Override
public double pull(TileEntity tile, double amt, boolean ignoreBandwidth) {
// NOT SUPPORTED
return 0;
}
}