/**
* 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.IEnergyProvider;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;
/**
* @author WeAthFolD
*/
public class RFProviderManager implements IEnergyBlockManager {
static final ForgeDirection dir = ForgeDirection.UP;
@Override
public boolean isSupported(TileEntity tile) {
return asProvider(tile) != null;
}
private IEnergyProvider asProvider(TileEntity te) {
return te instanceof IEnergyProvider ? (IEnergyProvider) te : null;
}
@Override
public double getEnergy(TileEntity tile) {
IEnergyProvider provider = asProvider(tile);
return provider.getEnergyStored(dir) * RFSupport.CONV_RATE;
}
@Override
public void setEnergy(TileEntity tile, double energy) {
// NOT SUPPORTED
}
@Override
public double charge(TileEntity tile, double amt, boolean ignoreBandwidth) {
// NOT SUPPORTED
return amt;
}
@Override
public double pull(TileEntity tile, double amt, boolean ignoreBandwidth) {
IEnergyProvider provider = asProvider(tile);
return provider == null ? 0 : RFSupport.CONV_RATE * provider.extractEnergy(dir, (int) (amt / RFSupport.CONV_RATE), false);
}
}